From cc6a7d02d6142699d714bf93af971290e83107d4 Mon Sep 17 00:00:00 2001 From: kriks7raptor Date: Thu, 25 Apr 2024 12:19:26 +0530 Subject: [PATCH 001/190] added skeleton for user graoup revamp --- .../1714015513342-AddGroupPermissionsTable.ts | 36 ++++++++++ .../1714015541245-AddGroupUsersTable.ts | 23 ++++++ ...14015564318-AddGranularPermissionsTable.ts | 30 ++++++++ ...4015596201-AddAppsGroupPermissionsTable.ts | 24 +++++++ .../1714015615904-AddGroupAppsTable.ts | 23 ++++++ .../group_permissions.controller.v2.ts | 10 +++ server/src/dto/group_permissions.dto.ts | 51 ++++++++++++++ server/src/entities/app.entity.ts | 6 +- .../entities/apps_group_permissions.entity.ts | 44 ++++++++++++ .../entities/granular_permissions.entity.ts | 49 +++++++++++++ server/src/entities/group_apps.entity.ts | 38 ++++++++++ .../src/entities/group_permissions.entity.ts | 70 +++++++++++++++++++ server/src/entities/group_users.entity.ts | 38 ++++++++++ server/src/entities/organization.entity.ts | 7 +- server/src/entities/user.entity.ts | 6 +- .../group_permissions.constant.ts | 10 +++ .../services/group_permissions.service.v2.ts | 22 ++++++ server/tsconfig.json | 3 +- 18 files changed, 479 insertions(+), 11 deletions(-) create mode 100644 server/migrations/1714015513342-AddGroupPermissionsTable.ts create mode 100644 server/migrations/1714015541245-AddGroupUsersTable.ts create mode 100644 server/migrations/1714015564318-AddGranularPermissionsTable.ts create mode 100644 server/migrations/1714015596201-AddAppsGroupPermissionsTable.ts create mode 100644 server/migrations/1714015615904-AddGroupAppsTable.ts create mode 100644 server/src/controllers/group_permissions.controller.v2.ts create mode 100644 server/src/dto/group_permissions.dto.ts create mode 100644 server/src/entities/apps_group_permissions.entity.ts create mode 100644 server/src/entities/granular_permissions.entity.ts create mode 100644 server/src/entities/group_apps.entity.ts create mode 100644 server/src/entities/group_permissions.entity.ts create mode 100644 server/src/entities/group_users.entity.ts create mode 100644 server/src/modules/group_permissions/group_permissions.constant.ts create mode 100644 server/src/services/group_permissions.service.v2.ts diff --git a/server/migrations/1714015513342-AddGroupPermissionsTable.ts b/server/migrations/1714015513342-AddGroupPermissionsTable.ts new file mode 100644 index 0000000000..471a425360 --- /dev/null +++ b/server/migrations/1714015513342-AddGroupPermissionsTable.ts @@ -0,0 +1,36 @@ +import { MigrationInterface, QueryRunner } from 'typeorm'; + +export class AddGroupPermissionsTable1714015513342 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + ` + CREATE TYPE group_permissions_type AS ENUM ('custom', 'default'); + ` + ); + + await queryRunner.query(` + CREATE TABLE IF NOT EXISTS group_permissions ( + id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), + organization_id UUID, + name VARCHAR NOT NULL, + type group_permissions_type NOT NULL, + editable BOOLEAN NOT NULL, + only_builders BOOLEAN NOT NULL, + app_create BOOLEAN DEFAULT false, + app_delete BOOLEAN DEFAULT false, + folder_crud BOOLEAN DEFAULT false, + org_constant_crud BOOLEAN DEFAULT false, + data_source_create BOOLEAN DEFAULT false, + data_source_delete BOOLEAN DEFAULT false, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + CONSTRAINT fk_organization_id FOREIGN KEY (organization_id) REFERENCES organizations(id) ON DELETE CASCADE + ); + `); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`DROP TABLE IF EXISTS group_permissions`); + await queryRunner.query(`DROP TYPE IF EXISTS group_permissions_type;`); + } +} diff --git a/server/migrations/1714015541245-AddGroupUsersTable.ts b/server/migrations/1714015541245-AddGroupUsersTable.ts new file mode 100644 index 0000000000..3d7798cc4c --- /dev/null +++ b/server/migrations/1714015541245-AddGroupUsersTable.ts @@ -0,0 +1,23 @@ +import { MigrationInterface, QueryRunner } from 'typeorm'; + +export class AddGroupUsersTable1714015541245 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + ` + CREATE TABLE IF NOT EXISTS group_users ( + id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), + user_id UUID, + group_id UUID, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + CONSTRAINT fk_user_id FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE, + CONSTRAINT fk_group_id FOREIGN KEY (group_id) REFERENCES group_permissions(id) ON DELETE CASCADE + ); + ` + ); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`DROP TABLE IF EXISTS group_users`); + } +} diff --git a/server/migrations/1714015564318-AddGranularPermissionsTable.ts b/server/migrations/1714015564318-AddGranularPermissionsTable.ts new file mode 100644 index 0000000000..1998db36fc --- /dev/null +++ b/server/migrations/1714015564318-AddGranularPermissionsTable.ts @@ -0,0 +1,30 @@ +import { MigrationInterface, QueryRunner } from 'typeorm'; + +export class AddGranularPermissionsTable1714015564318 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + ` + CREATE TYPE resource_type AS ENUM ('app', 'data_source'); + ` + ); + + await queryRunner.query( + ` + CREATE TABLE granular_permissions ( + id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), + group_id UUID, + name VARCHAR NOT NULL, + type resource_type NOT NULL, + is_all BOOLEAN DEFAULT false, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + CONSTRAINT fk_group_id FOREIGN KEY (group_id) REFERENCES group_permissions(id) ON DELETE CASCADE + ); + ` + ); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`DROP TABLE IF EXISTS granular_permissions`); + } +} diff --git a/server/migrations/1714015596201-AddAppsGroupPermissionsTable.ts b/server/migrations/1714015596201-AddAppsGroupPermissionsTable.ts new file mode 100644 index 0000000000..8bc23cc697 --- /dev/null +++ b/server/migrations/1714015596201-AddAppsGroupPermissionsTable.ts @@ -0,0 +1,24 @@ +import { MigrationInterface, QueryRunner } from 'typeorm'; + +export class AddAppsGroupPermissionsTable1714015596201 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + ` + CREATE TABLE IF NOT EXISTS apps_group_permissions ( + id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), + granular_permission_id UUID, + can_edit BOOLEAN DEFAULT false, + can_view BOOLEAN DEFAULT false, + hide_from_dashboard BOOLEAN DEFAULT false, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + CONSTRAINT fk_granular_permission_id FOREIGN KEY (granular_permission_id) REFERENCES granular_permissions(id) ON DELETE CASCADE + ); + ` + ); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`DROP TABLE IF EXISTS apps_group_permissions`); + } +} diff --git a/server/migrations/1714015615904-AddGroupAppsTable.ts b/server/migrations/1714015615904-AddGroupAppsTable.ts new file mode 100644 index 0000000000..cf1428db9c --- /dev/null +++ b/server/migrations/1714015615904-AddGroupAppsTable.ts @@ -0,0 +1,23 @@ +import { MigrationInterface, QueryRunner } from 'typeorm'; + +export class AddGroupAppsTable1714015615904 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + ` + CREATE TABLE IF NOT EXISTS group_apps ( + id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), + app_id UUID, + apps_group_permissions_id UUID, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + CONSTRAINT fk_app_id FOREIGN KEY (app_id) REFERENCES app(id) ON DELETE CASCADE, + CONSTRAINT fk_apps_group_permissions_id FOREIGN KEY (apps_group_permissions_id) REFERENCES apps_group_permissions(id) ON DELETE CASCADE +); + ` + ); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`DROP TABLE IF EXISTS group_apps`); + } +} diff --git a/server/src/controllers/group_permissions.controller.v2.ts b/server/src/controllers/group_permissions.controller.v2.ts new file mode 100644 index 0000000000..0d99c2f457 --- /dev/null +++ b/server/src/controllers/group_permissions.controller.v2.ts @@ -0,0 +1,10 @@ +import { Controller } from '@nestjs/common'; +import { GroupPermissionsServiceV2 } from '@services/group_permissions.service.v2'; + +@Controller({ + path: 'group_permissions', + version: '2', +}) +export class GroupPermissionsControllerV2 { + constructor(private groupPermissionsService: GroupPermissionsServiceV2) {} +} diff --git a/server/src/dto/group_permissions.dto.ts b/server/src/dto/group_permissions.dto.ts new file mode 100644 index 0000000000..ae2aba80bd --- /dev/null +++ b/server/src/dto/group_permissions.dto.ts @@ -0,0 +1,51 @@ +import { Transform } from 'class-transformer'; +import { IsString, IsNotEmpty, IsBoolean, IsOptional } from 'class-validator'; + +export class CreateGroupPermissionDto { + @IsString() + @Transform(({ value }) => value.trim()) + @IsNotEmpty() + name: string; +} + +export class UpdateGroupPermissionDto { + @IsString() + @Transform(({ value }) => value.trim()) + @IsNotEmpty() + name: string; + + @IsBoolean() + @IsOptional() + appCreate: boolean; + + @IsBoolean() + @IsOptional() + appDelete: boolean; + + @IsBoolean() + @IsOptional() + folderCRUD: boolean; + + @IsBoolean() + @IsOptional() + orgConstantCRUD: boolean; + + @IsBoolean() + @IsOptional() + dataSourceCreate: boolean; + + @IsBoolean() + @IsOptional() + dataSourceDelete: boolean; +} + +export class DuplucateGroupDto { + @IsBoolean() + addPermission; + + @IsBoolean() + addApps; + + @IsBoolean() + addUsers; +} diff --git a/server/src/entities/app.entity.ts b/server/src/entities/app.entity.ts index a6c42dcc4b..19211fde5b 100644 --- a/server/src/entities/app.entity.ts +++ b/server/src/entities/app.entity.ts @@ -16,9 +16,9 @@ import { BaseEntity, } from 'typeorm'; import { AppVersion } from './app_version.entity'; -import { AppGroupPermission } from './app_group_permission.entity'; import { GroupPermission } from './group_permission.entity'; import { User } from './user.entity'; +import { GroupApps } from './group_apps.entity'; @Entity({ name: 'apps' }) export class App extends BaseEntity { @@ -76,8 +76,8 @@ export class App extends BaseEntity { }) groupPermissions: GroupPermission[]; - @OneToMany(() => AppGroupPermission, (appGroupPermission) => appGroupPermission.app, { onDelete: 'CASCADE' }) - appGroupPermissions: AppGroupPermission[]; + @OneToMany(() => GroupApps, (groupApps) => groupApps.app, { onDelete: 'CASCADE' }) + appGroups: GroupApps[]; public editingVersion; diff --git a/server/src/entities/apps_group_permissions.entity.ts b/server/src/entities/apps_group_permissions.entity.ts new file mode 100644 index 0000000000..a2e033efab --- /dev/null +++ b/server/src/entities/apps_group_permissions.entity.ts @@ -0,0 +1,44 @@ +import { + BaseEntity, + Column, + CreateDateColumn, + Entity, + JoinColumn, + ManyToOne, + OneToMany, + PrimaryGeneratedColumn, + UpdateDateColumn, +} from 'typeorm'; +import { GranularPermissions } from './granular_permissions.entity'; +import { GroupApps } from './group_apps.entity'; + +@Entity({ name: 'granular_permissions' }) +export class AppsGroupPermissions extends BaseEntity { + @PrimaryGeneratedColumn('uuid') + id: string; + + @Column({ name: 'granular_permission_id' }) + granularPermissionId: string; + + @Column({ name: 'can_edit', nullable: false, default: false }) + canEdit: boolean; + + @Column({ name: 'can_view', nullable: false, default: false }) + canView: boolean; + + @Column({ name: 'hide_from_dashboard', nullable: false, default: false }) + hideFromDashboard: boolean; + + @CreateDateColumn({ default: () => 'now()', name: 'created_at' }) + createdAt: Date; + + @UpdateDateColumn({ default: () => 'now()', name: 'updated_at' }) + updatedAt: Date; + + @ManyToOne(() => GranularPermissions, (granularPermission) => granularPermission.id) + @JoinColumn({ name: 'granular_permission_id' }) + granularPermissions: GranularPermissions; + + @OneToMany(() => GroupApps, (groupApps) => groupApps.appsPermissions, { onDelete: 'CASCADE' }) + groupApps: GroupApps[]; +} diff --git a/server/src/entities/granular_permissions.entity.ts b/server/src/entities/granular_permissions.entity.ts new file mode 100644 index 0000000000..3a7f2ec6e9 --- /dev/null +++ b/server/src/entities/granular_permissions.entity.ts @@ -0,0 +1,49 @@ +import { + BaseEntity, + Column, + CreateDateColumn, + Entity, + JoinColumn, + ManyToOne, + OneToMany, + PrimaryGeneratedColumn, + UpdateDateColumn, +} from 'typeorm'; +import { ResourceType } from '@module/group_permissions/group_permissions.constant'; +import { GroupPermissions } from './group_permissions.entity'; +import { AppsGroupPermissions } from './apps_group_permissions.entity'; + +@Entity({ name: 'granular_permissions' }) +export class GranularPermissions extends BaseEntity { + @PrimaryGeneratedColumn('uuid') + id: string; + + @Column({ name: 'group_id' }) + groupId: string; + + @Column({ name: 'name', nullable: false }) + name: string; + + @Column({ name: 'type', nullable: false, type: 'enum', enum: ResourceType }) + type: ResourceType; + + @Column({ name: 'is_all', nullable: false, default: false }) + isAll: boolean; + + @CreateDateColumn({ default: () => 'now()', name: 'created_at' }) + createdAt: Date; + + @UpdateDateColumn({ default: () => 'now()', name: 'updated_at' }) + updatedAt: Date; + + @ManyToOne(() => GroupPermissions, (group) => group.id) + @JoinColumn({ name: 'group_id' }) + group: GroupPermissions; + + @ManyToOne(() => GroupPermissions, (group) => group.id) + @JoinColumn({ name: 'group_id' }) + @OneToMany(() => AppsGroupPermissions, (appsGroupPermission) => appsGroupPermission.granularPermissions, { + onDelete: 'CASCADE', + }) + appsGroupPermissions: AppsGroupPermissions[]; +} diff --git a/server/src/entities/group_apps.entity.ts b/server/src/entities/group_apps.entity.ts new file mode 100644 index 0000000000..28f6113f4f --- /dev/null +++ b/server/src/entities/group_apps.entity.ts @@ -0,0 +1,38 @@ +import { + BaseEntity, + Column, + CreateDateColumn, + Entity, + JoinColumn, + ManyToOne, + PrimaryGeneratedColumn, + UpdateDateColumn, +} from 'typeorm'; +import { App } from './app.entity'; +import { AppsGroupPermissions } from './apps_group_permissions.entity'; + +@Entity({ name: 'group_apps' }) +export class GroupApps extends BaseEntity { + @PrimaryGeneratedColumn('uuid') + id: string; + + @Column({ name: 'app_id' }) + appId: string; + + @Column({ name: 'apps_group_permissions_id' }) + appsGroupPermissionsId: string; + + @CreateDateColumn({ default: () => 'now()', name: 'created_at' }) + createdAt: Date; + + @UpdateDateColumn({ default: () => 'now()', name: 'updated_at' }) + updatedAt: Date; + + @ManyToOne(() => App, (app) => app.id) + @JoinColumn({ name: 'app_id' }) + app: App; + + @ManyToOne(() => AppsGroupPermissions, (appsPermissions) => appsPermissions.id) + @JoinColumn({ name: 'apps_group_permissions_id' }) + appsPermissions: AppsGroupPermissions; +} diff --git a/server/src/entities/group_permissions.entity.ts b/server/src/entities/group_permissions.entity.ts new file mode 100644 index 0000000000..7564e4fb3c --- /dev/null +++ b/server/src/entities/group_permissions.entity.ts @@ -0,0 +1,70 @@ +import { + BaseEntity, + Column, + CreateDateColumn, + Entity, + JoinColumn, + ManyToOne, + OneToMany, + PrimaryGeneratedColumn, + UpdateDateColumn, +} from 'typeorm'; +import { Organization } from './organization.entity'; +import { GroupUsers } from './group_users.entity'; +import { GroupPermissionType } from '@module/group_permissions/group_permissions.constant'; +import { GranularPermissions } from './granular_permissions.entity'; + +@Entity({ name: 'group_permissions' }) +export class GroupPermissions extends BaseEntity { + @PrimaryGeneratedColumn('uuid') + id: string; + + @Column({ name: 'organization_id' }) + organizationId: string; + + @Column({ name: 'name', nullable: false }) + name: string; + + @Column({ name: 'type', nullable: false, type: 'enum', enum: GroupPermissionType }) + type: GroupPermissionType; + + @Column({ name: 'editable', nullable: false }) + editable: boolean; + + @Column({ name: 'only_builders', nullable: false }) + onlyBuilders: boolean; + + @Column({ name: 'app_create', default: false }) + appCreate: boolean; + + @Column({ name: 'app_delete', default: false }) + appDelete: boolean; + + @Column({ name: 'folder_crud', default: false }) + folderCRUD: boolean; + + @Column({ name: 'org_constant_crud', default: false }) + orgConstantCRUD: boolean; + + @Column({ name: 'data_source_create', default: false }) + dataSourceCreate: boolean; + + @Column({ name: 'data_source_delete', default: false }) + dataSourceDelete: boolean; + + @CreateDateColumn({ default: () => 'now()', name: 'created_at' }) + createdAt: Date; + + @UpdateDateColumn({ default: () => 'now()', name: 'updated_at' }) + updatedAt: Date; + + @ManyToOne(() => Organization, (organization) => organization.id) + @JoinColumn({ name: 'organization_id' }) + organization: Organization; + + @OneToMany(() => GroupUsers, (groupUsers) => groupUsers.group, { onDelete: 'CASCADE' }) + groupUsers: GroupUsers[]; + + @OneToMany(() => GranularPermissions, (granularPermissions) => granularPermissions.group, { onDelete: 'CASCADE' }) + groupGranularPermissions: GranularPermissions[]; +} diff --git a/server/src/entities/group_users.entity.ts b/server/src/entities/group_users.entity.ts new file mode 100644 index 0000000000..92e58a9b3b --- /dev/null +++ b/server/src/entities/group_users.entity.ts @@ -0,0 +1,38 @@ +import { + BaseEntity, + Column, + CreateDateColumn, + Entity, + JoinColumn, + ManyToOne, + PrimaryGeneratedColumn, + UpdateDateColumn, +} from 'typeorm'; +import { GroupPermissions } from './group_permissions.entity'; +import { User } from './user.entity'; + +@Entity({ name: 'group_users' }) +export class GroupUsers extends BaseEntity { + @PrimaryGeneratedColumn('uuid') + id: string; + + @Column({ name: 'user_id' }) + userId: string; + + @Column({ name: 'group_id' }) + groupId: string; + + @CreateDateColumn({ default: () => 'now()', name: 'created_at' }) + createdAt: Date; + + @UpdateDateColumn({ default: () => 'now()', name: 'updated_at' }) + updatedAt: Date; + + @ManyToOne(() => User, (user) => user.id) + @JoinColumn({ name: 'user_id' }) + user: User; + + @ManyToOne(() => GroupPermissions, (group) => group.id) + @JoinColumn({ name: 'group_id' }) + group: GroupPermissions; +} diff --git a/server/src/entities/organization.entity.ts b/server/src/entities/organization.entity.ts index 291356c4f1..b942901728 100644 --- a/server/src/entities/organization.entity.ts +++ b/server/src/entities/organization.entity.ts @@ -8,11 +8,11 @@ import { JoinColumn, BaseEntity, } from 'typeorm'; -import { GroupPermission } from './group_permission.entity'; import { SSOConfigs } from './sso_config.entity'; import { OrganizationUser } from './organization_user.entity'; import { InternalTable } from './internal_table.entity'; import { AppEnvironment } from './app_environments.entity'; +import { GroupPermissions } from './group_permissions.entity'; @Entity({ name: 'organizations' }) export class Organization extends BaseEntity { @@ -40,9 +40,8 @@ export class Organization extends BaseEntity { @UpdateDateColumn({ default: () => 'now()', name: 'updated_at' }) updatedAt: Date; - @OneToMany(() => GroupPermission, (groupPermission) => groupPermission.organization, { onDelete: 'CASCADE' }) - @JoinColumn({ name: 'organization_id' }) - groupPermissions: GroupPermission[]; + @OneToMany(() => GroupPermissions, (groupPermissions) => groupPermissions.organization, { onDelete: 'CASCADE' }) + groupPermissions: GroupPermissions[]; @OneToMany(() => SSOConfigs, (ssoConfigs) => ssoConfigs.organization, { cascade: ['insert'] }) ssoConfigs: SSOConfigs[]; diff --git a/server/src/entities/user.entity.ts b/server/src/entities/user.entity.ts index 3b4852a06f..077b6123d8 100644 --- a/server/src/entities/user.entity.ts +++ b/server/src/entities/user.entity.ts @@ -18,9 +18,9 @@ import { App } from './app.entity'; import { GroupPermission } from './group_permission.entity'; const bcrypt = require('bcrypt'); import { OrganizationUser } from './organization_user.entity'; -import { UserGroupPermission } from './user_group_permission.entity'; import { File } from './file.entity'; import { Organization } from './organization.entity'; +import { GroupUsers } from './group_users.entity'; @Entity({ name: 'users' }) export class User extends BaseEntity { @@ -123,8 +123,8 @@ export class User extends BaseEntity { }) groupPermissions: GroupPermission[]; - @OneToMany(() => UserGroupPermission, (userGroupPermission) => userGroupPermission.user, { onDelete: 'CASCADE' }) - userGroupPermissions: UserGroupPermission[]; + @OneToMany(() => GroupUsers, (groupUsers) => groupUsers.user, { onDelete: 'CASCADE' }) + userGroups: GroupUsers[]; @OneToMany(() => App, (app) => app.user) apps: App[]; diff --git a/server/src/modules/group_permissions/group_permissions.constant.ts b/server/src/modules/group_permissions/group_permissions.constant.ts new file mode 100644 index 0000000000..013a2dcf31 --- /dev/null +++ b/server/src/modules/group_permissions/group_permissions.constant.ts @@ -0,0 +1,10 @@ +export enum ResourceType { + APP = 'app', + DATA_SOURCE = 'data_source', +} + +// enum table - group_permission_type +export enum GroupPermissionType { + DEFAULT = 'default', + CUSTOM_GROUP = 'custom_group', +} diff --git a/server/src/services/group_permissions.service.v2.ts b/server/src/services/group_permissions.service.v2.ts new file mode 100644 index 0000000000..499725a30e --- /dev/null +++ b/server/src/services/group_permissions.service.v2.ts @@ -0,0 +1,22 @@ +import { Injectable } from '@nestjs/common'; +import { GroupPermissions } from 'src/entities/group_permissions.entity'; +import { UpdateGroupPermissionDto } from '@dto/group-permission.dto'; + +@Injectable() +export class GroupPermissionsServiceV2 { + constructor() {} + + async create(name: string, organizationId: string) {} + + //Should be part of organization of group user service + async createDefaultGroup(organizationId: string) {} + async defaultGroupCheck(groupObject: GroupPermissions) {} + async deleteGroup(groupId: string) {} + async updateGroup(groupId: string, updateGroupPermissionDto: UpdateGroupPermissionDto) { + //Is editable only in paid plan builder group + } + async getGroup(groupId: string) {} + async getAllGroup(organizationId: string) {} + async createGroupUser(groupId: string, organizationId: string) {} + async deleteGroupUser(groupId: string, organizationId: string) {} +} diff --git a/server/tsconfig.json b/server/tsconfig.json index d7ffc05161..3462dcfb48 100644 --- a/server/tsconfig.json +++ b/server/tsconfig.json @@ -17,7 +17,8 @@ "@services/*": ["src/services/*"], "@controllers/*": ["src/controllers/*"], "@repositories/*": ["src/repositories/*"], - "@dto/*": ["src/dto/*"] + "@dto/*": ["src/dto/*"], + "@module/*": ["src/modules/*"] }, }, "exclude": ["node_modules", "dist"] From 461a05208afd58d7337cfccd42edd0dc63f9debf Mon Sep 17 00:00:00 2001 From: kriks7raptor Date: Mon, 29 Apr 2024 11:36:43 +0530 Subject: [PATCH 002/190] Added services for granular and group permissions --- .../1714015513342-AddGroupPermissionsTable.ts | 6 +- ...14015564318-AddGranularPermissionsTable.ts | 2 +- .../group_permissions.controller.v2.ts | 24 ++- server/src/dto/granular-permissions.dto.ts | 46 +++++ server/src/dto/group_permissions.dto.ts | 13 +- .../entities/granular_permissions.entity.ts | 18 +- .../src/entities/group_permissions.entity.ts | 6 +- .../helpers/db-utility/db-search.helper.ts | 16 ++ .../db-utility/db-utility.interface.ts | 8 + .../src/helpers/db_constraints.constants.ts | 1 + .../granular-permissions.constant.ts | 9 + .../constants/group-permissions.constant.ts | 67 +++++++ .../group_permissions.constant.ts | 10 - .../granular-permissions.interface.ts | 26 +++ .../interface/group-permissions.interface.ts | 23 +++ .../services/granular_permissions.service.ts | 83 +++++++++ .../services/group_permissions.service.v2.ts | 173 ++++++++++++++++-- server/tsconfig.json | 3 +- 18 files changed, 480 insertions(+), 54 deletions(-) create mode 100644 server/src/dto/granular-permissions.dto.ts create mode 100644 server/src/helpers/db-utility/db-search.helper.ts create mode 100644 server/src/helpers/db-utility/db-utility.interface.ts create mode 100644 server/src/modules/group_permissions/constants/granular-permissions.constant.ts create mode 100644 server/src/modules/group_permissions/constants/group-permissions.constant.ts delete mode 100644 server/src/modules/group_permissions/group_permissions.constant.ts create mode 100644 server/src/modules/group_permissions/interface/granular-permissions.interface.ts create mode 100644 server/src/modules/group_permissions/interface/group-permissions.interface.ts create mode 100644 server/src/services/granular_permissions.service.ts diff --git a/server/migrations/1714015513342-AddGroupPermissionsTable.ts b/server/migrations/1714015513342-AddGroupPermissionsTable.ts index 471a425360..5850fa4b7a 100644 --- a/server/migrations/1714015513342-AddGroupPermissionsTable.ts +++ b/server/migrations/1714015513342-AddGroupPermissionsTable.ts @@ -1,4 +1,5 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; +import { DATA_BASE_CONSTRAINTS } from '@module/group_permissions/constants/group-permissions.constant'; export class AddGroupPermissionsTable1714015513342 implements MigrationInterface { public async up(queryRunner: QueryRunner): Promise { @@ -13,8 +14,8 @@ export class AddGroupPermissionsTable1714015513342 implements MigrationInterface id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), organization_id UUID, name VARCHAR NOT NULL, - type group_permissions_type NOT NULL, - editable BOOLEAN NOT NULL, + type group_permissions_type NOT NULL DEFAULT 'custom', + editable BOOLEAN NOT NULL DEFAULT true, only_builders BOOLEAN NOT NULL, app_create BOOLEAN DEFAULT false, app_delete BOOLEAN DEFAULT false, @@ -25,6 +26,7 @@ export class AddGroupPermissionsTable1714015513342 implements MigrationInterface created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, CONSTRAINT fk_organization_id FOREIGN KEY (organization_id) REFERENCES organizations(id) ON DELETE CASCADE + CONSTRAINT ${DATA_BASE_CONSTRAINTS.GROUP_NAME_UNIQUE} UNIQUE (organization_id, name) ); `); } diff --git a/server/migrations/1714015564318-AddGranularPermissionsTable.ts b/server/migrations/1714015564318-AddGranularPermissionsTable.ts index 1998db36fc..aee4ecb88d 100644 --- a/server/migrations/1714015564318-AddGranularPermissionsTable.ts +++ b/server/migrations/1714015564318-AddGranularPermissionsTable.ts @@ -15,7 +15,7 @@ export class AddGranularPermissionsTable1714015564318 implements MigrationInterf group_id UUID, name VARCHAR NOT NULL, type resource_type NOT NULL, - is_all BOOLEAN DEFAULT false, + is_all BOOLEAN DEFAULT true, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, CONSTRAINT fk_group_id FOREIGN KEY (group_id) REFERENCES group_permissions(id) ON DELETE CASCADE diff --git a/server/src/controllers/group_permissions.controller.v2.ts b/server/src/controllers/group_permissions.controller.v2.ts index 0d99c2f457..fc8c4b52c4 100644 --- a/server/src/controllers/group_permissions.controller.v2.ts +++ b/server/src/controllers/group_permissions.controller.v2.ts @@ -1,5 +1,8 @@ -import { Controller } from '@nestjs/common'; +import { CreateGroupPermissionDto } from '@dto/group_permissions.dto'; +import { JwtAuthGuard } from '@module/auth/jwt-auth.guard'; +import { Body, Controller, Get, Param, Post, UseGuards } from '@nestjs/common'; import { GroupPermissionsServiceV2 } from '@services/group_permissions.service.v2'; +import { User } from 'src/decorators/user.decorator'; @Controller({ path: 'group_permissions', @@ -7,4 +10,23 @@ import { GroupPermissionsServiceV2 } from '@services/group_permissions.service.v }) export class GroupPermissionsControllerV2 { constructor(private groupPermissionsService: GroupPermissionsServiceV2) {} + + @UseGuards(JwtAuthGuard) + @Post() + async create(@User() user, @Body() createGroupPermissionDto: CreateGroupPermissionDto) { + return await this.groupPermissionsService.create(user, createGroupPermissionDto); + } + + @UseGuards(JwtAuthGuard) + @Get(':id') + async getGroup(@User() user, @Param('id') id: string) { + return await this.groupPermissionsService.getGroup(id); + } + + @UseGuards(JwtAuthGuard) + @Get() + async getAllGroups(@User() user, @Param('id') id: string) { + const { organizationId } = user; + return await this.groupPermissionsService.getAllGroup(organizationId); + } } diff --git a/server/src/dto/granular-permissions.dto.ts b/server/src/dto/granular-permissions.dto.ts new file mode 100644 index 0000000000..c2401f544e --- /dev/null +++ b/server/src/dto/granular-permissions.dto.ts @@ -0,0 +1,46 @@ +import { Transform } from 'class-transformer'; +import { IsString, IsNotEmpty, IsBoolean, IsOptional, IsEnum } from 'class-validator'; +import { ResourceType } from '@module/group_permissions/constants/granular-permissions.constant'; +import { + AppsGroupPermissionsActions, + GranularPermissionResourceItem, +} from '@module/group_permissions/interface/granular-permissions.interface'; + +export class CreateGranularPermissionDto { + @IsString() + @Transform(({ value }) => value.trim()) + @IsNotEmpty() + name: string; + + @IsString() + @IsNotEmpty() + groupId: string; + + @IsEnum(ResourceType) + @IsNotEmpty() + type: ResourceType; +} + +export class UpdateGranularPermissionDto { + @IsString() + @Transform(({ value }) => value.trim()) + @IsOptional() + name: string; + + @IsEnum(ResourceType) + @IsNotEmpty() + type: ResourceType; + + @IsBoolean() + @IsOptional() + isAll: boolean; + + @IsOptional() + resourceActions: AppsGroupPermissionsActions; + + @IsOptional() + resourcesToAdd: GranularPermissionResourceItem[]; + + @IsOptional() + resourcesToDelete: GranularPermissionResourceItem[]; +} diff --git a/server/src/dto/group_permissions.dto.ts b/server/src/dto/group_permissions.dto.ts index ae2aba80bd..ec914e6c5c 100644 --- a/server/src/dto/group_permissions.dto.ts +++ b/server/src/dto/group_permissions.dto.ts @@ -11,7 +11,7 @@ export class CreateGroupPermissionDto { export class UpdateGroupPermissionDto { @IsString() @Transform(({ value }) => value.trim()) - @IsNotEmpty() + @IsOptional() name: string; @IsBoolean() @@ -38,14 +38,3 @@ export class UpdateGroupPermissionDto { @IsOptional() dataSourceDelete: boolean; } - -export class DuplucateGroupDto { - @IsBoolean() - addPermission; - - @IsBoolean() - addApps; - - @IsBoolean() - addUsers; -} diff --git a/server/src/entities/granular_permissions.entity.ts b/server/src/entities/granular_permissions.entity.ts index 3a7f2ec6e9..b73dd1e6e4 100644 --- a/server/src/entities/granular_permissions.entity.ts +++ b/server/src/entities/granular_permissions.entity.ts @@ -5,13 +5,11 @@ import { Entity, JoinColumn, ManyToOne, - OneToMany, PrimaryGeneratedColumn, UpdateDateColumn, } from 'typeorm'; -import { ResourceType } from '@module/group_permissions/group_permissions.constant'; +import { ResourceType } from '@module/group_permissions/constants/granular-permissions.constant'; import { GroupPermissions } from './group_permissions.entity'; -import { AppsGroupPermissions } from './apps_group_permissions.entity'; @Entity({ name: 'granular_permissions' }) export class GranularPermissions extends BaseEntity { @@ -27,7 +25,7 @@ export class GranularPermissions extends BaseEntity { @Column({ name: 'type', nullable: false, type: 'enum', enum: ResourceType }) type: ResourceType; - @Column({ name: 'is_all', nullable: false, default: false }) + @Column({ name: 'is_all', nullable: false, default: true }) isAll: boolean; @CreateDateColumn({ default: () => 'now()', name: 'created_at' }) @@ -39,11 +37,9 @@ export class GranularPermissions extends BaseEntity { @ManyToOne(() => GroupPermissions, (group) => group.id) @JoinColumn({ name: 'group_id' }) group: GroupPermissions; - - @ManyToOne(() => GroupPermissions, (group) => group.id) - @JoinColumn({ name: 'group_id' }) - @OneToMany(() => AppsGroupPermissions, (appsGroupPermission) => appsGroupPermission.granularPermissions, { - onDelete: 'CASCADE', - }) - appsGroupPermissions: AppsGroupPermissions[]; } + +// @OneToOne(() => AppsGroupPermissions, (appsGroupPermission) => appsGroupPermission.granularPermissions, { +// onDelete: 'CASCADE', +// }) +// appsGroupPermissions: AppsGroupPermissions; diff --git a/server/src/entities/group_permissions.entity.ts b/server/src/entities/group_permissions.entity.ts index 7564e4fb3c..3608f43436 100644 --- a/server/src/entities/group_permissions.entity.ts +++ b/server/src/entities/group_permissions.entity.ts @@ -11,7 +11,7 @@ import { } from 'typeorm'; import { Organization } from './organization.entity'; import { GroupUsers } from './group_users.entity'; -import { GroupPermissionType } from '@module/group_permissions/group_permissions.constant'; +import { GROUP_PERMISSIONS_TYPE } from '@module/group_permissions/constants/group-permissions.constant'; import { GranularPermissions } from './granular_permissions.entity'; @Entity({ name: 'group_permissions' }) @@ -25,8 +25,8 @@ export class GroupPermissions extends BaseEntity { @Column({ name: 'name', nullable: false }) name: string; - @Column({ name: 'type', nullable: false, type: 'enum', enum: GroupPermissionType }) - type: GroupPermissionType; + @Column({ name: 'type', nullable: false, type: 'enum', enum: GROUP_PERMISSIONS_TYPE }) + type: GROUP_PERMISSIONS_TYPE; @Column({ name: 'editable', nullable: false }) editable: boolean; diff --git a/server/src/helpers/db-utility/db-search.helper.ts b/server/src/helpers/db-utility/db-search.helper.ts new file mode 100644 index 0000000000..ef86d5219b --- /dev/null +++ b/server/src/helpers/db-utility/db-search.helper.ts @@ -0,0 +1,16 @@ +import { Like } from 'typeorm'; +import { ConditionObject } from './db-utility.interface'; + +export const createWhereConditions = (searchParamObject: ConditionObject): object => { + const whereConditions = {}; + if (searchParamObject) return whereConditions; + for (const key of Object.keys(searchParamObject)) { + const condItem = searchParamObject[key]; + if (typeof condItem === 'object' && 'useLike' in condItem && 'value' in condItem) { + whereConditions[key] = condItem?.useLike ? Like(`%${condItem.value}%`) : condItem.value; + } else { + whereConditions[key] = condItem; + } + } + return whereConditions; +}; diff --git a/server/src/helpers/db-utility/db-utility.interface.ts b/server/src/helpers/db-utility/db-utility.interface.ts new file mode 100644 index 0000000000..6ec605238c --- /dev/null +++ b/server/src/helpers/db-utility/db-utility.interface.ts @@ -0,0 +1,8 @@ +export interface SearchParamItem { + value: string; + useLike: boolean; +} + +export type ConditionObject = { + [key: string]: SearchParamItem | boolean | string | number; +}; diff --git a/server/src/helpers/db_constraints.constants.ts b/server/src/helpers/db_constraints.constants.ts index 90e6dbab8d..e38567ad44 100644 --- a/server/src/helpers/db_constraints.constants.ts +++ b/server/src/helpers/db_constraints.constants.ts @@ -5,4 +5,5 @@ export enum DataBaseConstraints { WORKSPACE_NAME_UNIQUE = 'name_organizations_unique', WORKSPACE_SLUG_UNIQUE = 'slug_organizations_unique', USER_ORGANIZATION_UNIQUE = 'user_organization_unique', + GROUP_NAME_UNIQUE = 'group_name_organization_id_unique', } diff --git a/server/src/modules/group_permissions/constants/granular-permissions.constant.ts b/server/src/modules/group_permissions/constants/granular-permissions.constant.ts new file mode 100644 index 0000000000..acf13ce26e --- /dev/null +++ b/server/src/modules/group_permissions/constants/granular-permissions.constant.ts @@ -0,0 +1,9 @@ +export enum ResourceType { + APP = 'app', + DATA_SOURCE = 'data_source', +} + +export enum DEFAULT_GRANULAR_PERMISSIONS_NAME { + APPS = 'Apps', + DATA_SOURCE = 'Data source', +} diff --git a/server/src/modules/group_permissions/constants/group-permissions.constant.ts b/server/src/modules/group_permissions/constants/group-permissions.constant.ts new file mode 100644 index 0000000000..3ff9a84301 --- /dev/null +++ b/server/src/modules/group_permissions/constants/group-permissions.constant.ts @@ -0,0 +1,67 @@ +import { DataBaseConstraints } from '@helpers/db_constraints.constants'; +import { CreateDefaultGroupObject } from '../interface/group-permissions.interface'; + +// enum table - group_permission_type +export enum GROUP_PERMISSIONS_TYPE { + DEFAULT = 'default', + CUSTOM_GROUP = 'custom_group', +} + +export enum USER_ROLE { + END_USER = 'end-user', + ADMIN = 'admin', + BUILDER = 'builder', +} + +export const DATA_BASE_CONSTRAINTS = { + GROUP_NAME_UNIQUE: { + dbConstraint: DataBaseConstraints.GROUP_NAME_UNIQUE, + message: 'Group name should be unique in workspace', + }, +}; + +export const DEFAULT_GROUP_PERMISSIONS = { + ADMIN: { + name: USER_ROLE.ADMIN, + type: GROUP_PERMISSIONS_TYPE.DEFAULT, + editable: false, + onlyBuilders: true, + appCreate: true, + appDelete: true, + folderCRUD: true, + orgConstantCRUD: true, + dataSourceCreate: true, + dataSourceDelete: true, + }, + BUILDER: { + name: USER_ROLE.BUILDER, + type: GROUP_PERMISSIONS_TYPE.DEFAULT, + editable: false, + onlyBuilders: true, + appCreate: true, + appDelete: true, + folderCRUD: true, + orgConstantCRUD: true, + dataSourceCreate: true, + dataSourceDelete: true, + }, + END_USER: { + name: USER_ROLE.END_USER, + type: GROUP_PERMISSIONS_TYPE.DEFAULT, + editable: false, + onlyBuilders: false, + appCreate: false, + appDelete: false, + folderCRUD: false, + orgConstantCRUD: false, + dataSourceCreate: false, + dataSourceDelete: false, + }, +} as Record; + +export const ERROR_HANDLER = { + DEFAULT_GROUP_NAME: 'Name cannot be same as user role group', + NON_EDITABLE_GROUP_UPDATE: 'Group cannot be update because its not allowed', + NON_BUILDER_PERMISSION_UPDATE: 'End user cannot have this builder level permissions', + DEFAULT_GROUP_UPDATE_NOT_ALLOWED: 'Defaults group cant be deleted', +}; diff --git a/server/src/modules/group_permissions/group_permissions.constant.ts b/server/src/modules/group_permissions/group_permissions.constant.ts deleted file mode 100644 index 013a2dcf31..0000000000 --- a/server/src/modules/group_permissions/group_permissions.constant.ts +++ /dev/null @@ -1,10 +0,0 @@ -export enum ResourceType { - APP = 'app', - DATA_SOURCE = 'data_source', -} - -// enum table - group_permission_type -export enum GroupPermissionType { - DEFAULT = 'default', - CUSTOM_GROUP = 'custom_group', -} diff --git a/server/src/modules/group_permissions/interface/granular-permissions.interface.ts b/server/src/modules/group_permissions/interface/granular-permissions.interface.ts new file mode 100644 index 0000000000..1695741711 --- /dev/null +++ b/server/src/modules/group_permissions/interface/granular-permissions.interface.ts @@ -0,0 +1,26 @@ +import { AppsGroupPermissions } from 'src/entities/apps_group_permissions.entity'; +import { SearchParamItem } from '@helpers/db-utility/db-utility.interface'; + +export interface GranularPermissionResourceItem { + id: string; +} + +export interface AppsGroupPermissionsActions { + canEdit: boolean; + canView: boolean; + hideFromDashboard: boolean; +} + +export interface UpdateAppsGroupPermissionObject { + actions: AppsGroupPermissionsActions; + appsToAdd: GranularPermissionResourceItem[]; + appsToDelete: GranularPermissionResourceItem[]; +} + +export interface GranularPermissionQuerySearchParam { + [key: string]: SearchParamItem | boolean | string | number; + name?: SearchParamItem; + type?: string; +} + +export type GranularResourcePermissions = AppsGroupPermissions; diff --git a/server/src/modules/group_permissions/interface/group-permissions.interface.ts b/server/src/modules/group_permissions/interface/group-permissions.interface.ts new file mode 100644 index 0000000000..a65a41cbc0 --- /dev/null +++ b/server/src/modules/group_permissions/interface/group-permissions.interface.ts @@ -0,0 +1,23 @@ +import { GROUP_PERMISSIONS_TYPE } from '../constants/group-permissions.constant'; +import { SearchParamItem } from '@helpers/db-utility/db-utility.interface'; + +export interface CreateDefaultGroupObject { + type: GROUP_PERMISSIONS_TYPE; + name: string; + editable: boolean; + onlyBuilders: boolean; + appCreate: boolean; + appDelete: boolean; + folderCRUD: boolean; + orgConstantCRUD: boolean; + dataSourceCreate: boolean; + dataSourceDelete: boolean; +} + +export interface GroupQuerySearchParamObject { + [key: string]: SearchParamItem | boolean | string | number; + name?: SearchParamItem; + type?: string; + editable?: boolean; + onlyBuilder?: boolean; +} diff --git a/server/src/services/granular_permissions.service.ts b/server/src/services/granular_permissions.service.ts new file mode 100644 index 0000000000..082bef3078 --- /dev/null +++ b/server/src/services/granular_permissions.service.ts @@ -0,0 +1,83 @@ +import { Injectable } from '@nestjs/common'; +import { GroupPermissions } from 'src/entities/group_permissions.entity'; +import { CreateGranularPermissionDto, UpdateGranularPermissionDto } from '@dto/granular-permissions.dto'; +import { ResourceType } from '@module/group_permissions/constants/granular-permissions.constant'; +import { + UpdateAppsGroupPermissionObject, + GranularResourcePermissions, +} from '@module/group_permissions/interface/granular-permissions.interface'; +import { GroupPermissionsServiceV2 } from './group_permissions.service.v2'; +import { EntityManager, getManager } from 'typeorm'; +import { GranularPermissions } from 'src/entities/granular_permissions.entity'; +import { AppsGroupPermissions } from 'src/entities/apps_group_permissions.entity'; +import { GranularPermissionQuerySearchParam } from '@module/group_permissions/interface/granular-permissions.interface'; +import { createWhereConditions } from '@helpers/db-utility/db-search.helper'; +import { dbTransactionWrap } from '@helpers/utils.helper'; + +@Injectable() +export class GranularPermissionsService { + constructor(private groupPermissionsService: GroupPermissionsServiceV2) {} + async create(manager: EntityManager, createGranularPermissionDto: CreateGranularPermissionDto) { + const granularPermissions = manager.create(GranularPermissions, createGranularPermissionDto); + return await manager.save(granularPermissions); + } + + async getAll(groupId: string, searchParam?: GranularPermissionQuerySearchParam) { + const manager: EntityManager = getManager(); + const whereConditions = createWhereConditions(searchParam); + return await manager.find(GroupPermissions, { + where: { groupId, ...whereConditions }, + }); + } + + async get(id: string, searchParam?: GranularPermissionQuerySearchParam) { + const manager: EntityManager = getManager(); + const whereConditions = createWhereConditions(searchParam); + return await manager.find(GranularPermissions, { + where: { id, ...whereConditions }, + }); + } + + async update(id: string, updateGranularPermissionsDto: UpdateGranularPermissionDto) {} + + async delete(id: string) { + return await dbTransactionWrap(async (manager: EntityManager) => { + return await manager.delete(GranularPermissions, id); + }); + } + + async createResourceGroupPermission( + manager: EntityManager, + isOnlyBuilder: boolean, + granularPermissions: GranularPermissions + ): Promise { + let resourceGranularPermissions; + const { type } = granularPermissions; + switch (type) { + case ResourceType.APP: + resourceGranularPermissions = await this.createAppGroupPermission(manager, isOnlyBuilder, granularPermissions); + break; + } + return resourceGranularPermissions; + } + + async createAppGroupPermission( + manager: EntityManager, + isOnlyBuilder: boolean, + granularPermissions: GranularPermissions + ): Promise { + return await manager.create(AppsGroupPermissions, { + canEdit: isOnlyBuilder, + canView: !isOnlyBuilder, + granularPermissionId: granularPermissions.id, + }); + } + + async updateAppsGroupPermission( + granularPermissionId: string, + updateAppsGroupPermissionObject: UpdateAppsGroupPermissionObject + ) {} + + async findAddableResource() {} + 1; +} diff --git a/server/src/services/group_permissions.service.v2.ts b/server/src/services/group_permissions.service.v2.ts index 499725a30e..fda472945e 100644 --- a/server/src/services/group_permissions.service.v2.ts +++ b/server/src/services/group_permissions.service.v2.ts @@ -1,22 +1,169 @@ -import { Injectable } from '@nestjs/common'; +import { Injectable, BadRequestException, MethodNotAllowedException } from '@nestjs/common'; import { GroupPermissions } from 'src/entities/group_permissions.entity'; -import { UpdateGroupPermissionDto } from '@dto/group-permission.dto'; +import { UpdateGroupPermissionDto, CreateGroupPermissionDto } from '@dto/group_permissions.dto'; +import { User } from 'src/entities/user.entity'; +import { + USER_ROLE, + ERROR_HANDLER, + DATA_BASE_CONSTRAINTS, + DEFAULT_GROUP_PERMISSIONS, + GROUP_PERMISSIONS_TYPE, +} from '@module/group_permissions/constants/group-permissions.constant'; +import { dbTransactionWrap, catchDbException } from 'src/helpers/utils.helper'; +import { EntityManager, getManager } from 'typeorm'; +import { + CreateDefaultGroupObject, + GroupQuerySearchParamObject, +} from '@module/group_permissions/interface/group-permissions.interface'; +import { createWhereConditions } from '@helpers/db-utility/db-search.helper'; +import { GroupUsers } from 'src/entities/group_users.entity'; +import { GranularPermissionsService } from './granular_permissions.service'; +import { + DEFAULT_GRANULAR_PERMISSIONS_NAME, + ResourceType, +} from '@module/group_permissions/constants/granular-permissions.constant'; @Injectable() export class GroupPermissionsServiceV2 { - constructor() {} + constructor(private granularPermissionsService: GranularPermissionsService) {} - async create(name: string, organizationId: string) {} + /** + * Creates a new group permission for a specified organization. + * + * @param organizationId The ID of the organization for which the group permission is being created. + * @param createGroupObject An object containing the data to create the new group permission. + * @returns A Promise that resolves when the group permission is successfully created. + * @throws BadRequestException if the group name already exists in the USER_ROLE enum. + */ + async create( + organizationId: string, + createGroupObject: CreateGroupPermissionDto | CreateDefaultGroupObject + ): Promise { + this.defaultGroupCheck(createGroupObject); - //Should be part of organization of group user service - async createDefaultGroup(organizationId: string) {} - async defaultGroupCheck(groupObject: GroupPermissions) {} - async deleteGroup(groupId: string) {} - async updateGroup(groupId: string, updateGroupPermissionDto: UpdateGroupPermissionDto) { + return await dbTransactionWrap(async (manager: EntityManager) => { + return await catchDbException(async () => { + const group = manager.create(GroupPermissions, { ...createGroupObject, organizationId }); + return await manager.save(group); + }, [DATA_BASE_CONSTRAINTS.GROUP_NAME_UNIQUE]); + }); + } + + async createDefaultGroups(user: User): Promise { + const { organizationId } = user; + + const defaultGroups: GroupPermissions[] = []; + + // Create all default groups + for (const defaultGroup of Object.keys(USER_ROLE)) { + const newGroup = await this.create(organizationId, DEFAULT_GROUP_PERMISSIONS[defaultGroup]); + defaultGroups.push(newGroup); + } + + //Add admin user to default group + return await dbTransactionWrap(async (manager: EntityManager) => { + await this.addUserToRole(manager, user, USER_ROLE.ADMIN); + + //Add granular permissions to default group + for (const group of defaultGroups) { + const isOnlyBuilder = group.onlyBuilders; + const granularPermissions = await this.granularPermissionsService.create(manager, { + name: DEFAULT_GRANULAR_PERMISSIONS_NAME.APPS, + groupId: group.id, + type: ResourceType.APP, + }); + await this.granularPermissionsService.createResourceGroupPermission( + manager, + isOnlyBuilder, + granularPermissions + ); + } + }); + } + + defaultGroupCheck(groupObject: GroupPermissions | CreateGroupPermissionDto | UpdateGroupPermissionDto) { + if (groupObject.name in USER_ROLE) throw new BadRequestException(ERROR_HANDLER.DEFAULT_GROUP_NAME); + } + + async deleteGroup(id: string): Promise { + return await dbTransactionWrap(async (manager: EntityManager) => { + const group = await this.getGroup(id, manager); + if (group.type == GROUP_PERMISSIONS_TYPE.DEFAULT) + throw new BadRequestException(ERROR_HANDLER.DEFAULT_GROUP_UPDATE_NOT_ALLOWED); + return await manager.delete(GroupPermissions, id); + }); + } + + //Need more work + async updateGroup(id: string, updateGroupPermissionDto: UpdateGroupPermissionDto) { + return await dbTransactionWrap(async (manager: EntityManager) => { + const group = await this.getGroup(id, manager); + const { editable } = group; + //add complex logic for only builder + // this.validateUpdatePermissions(onlyBuilders,updateGroupPermissionDto); + if (!editable) throw new MethodNotAllowedException(ERROR_HANDLER.NON_EDITABLE_GROUP_UPDATE); + + return await manager.delete(GroupPermissions, id); + }); //Is editable only in paid plan builder group } - async getGroup(groupId: string) {} - async getAllGroup(organizationId: string) {} - async createGroupUser(groupId: string, organizationId: string) {} - async deleteGroupUser(groupId: string, organizationId: string) {} + + //Need more work + validateUpdatePermissions(isOnlyBuilder, updateGroupPermissionDto: UpdateGroupPermissionDto) { + const trueValues = Object.keys(updateGroupPermissionDto).filter( + (key) => key != 'name' && updateGroupPermissionDto[key] + ); + if (!isOnlyBuilder && trueValues.length > 1) + throw new BadRequestException(ERROR_HANDLER.NON_BUILDER_PERMISSION_UPDATE); + } + + async getGroup( + id: string, + manager?: EntityManager, + searchParam?: GroupQuerySearchParamObject + ): Promise { + const entityManager: EntityManager = manager ? manager : getManager(); + const whereConditions = createWhereConditions(searchParam); + return await entityManager.findOne(GroupPermissions, { + where: { id, ...whereConditions }, + }); + } + + async getRoleGroup(manager: EntityManager, role: USER_ROLE, organizationId: string) { + return await manager.findOne(GroupPermissions, { + where: { name: role, organizationId, type: GROUP_PERMISSIONS_TYPE.DEFAULT }, + }); + } + async getAllGroup(organizationId: string) { + const manager: EntityManager = getManager(); + return await manager.findAndCount(GroupPermissions, { + where: { organizationId }, + }); + } + + //Need work for group updation + async addGroupUser(groupId: string, userId: string) { + //Add complex logic of only builder\ + } + + //Need for for group updation + private async createGroupUser(manager: EntityManager, user: User, group: GroupPermissions): Promise { + //update only builder + const groupUser = manager.create(GroupUsers, { groupId: group.id, userId: user.id }); + return await manager.save(groupUser); + } + + async deleteGroupUser(groupId: string, organizationId: string) { + //update only builder + } + + async getAllGroupUser(manager: EntityManager, groupId: string) {} + + async editDefaultGroupUserRole(user: User, currentRole: USER_ROLE, newRole: USER_ROLE) {} + + private async addUserToRole(manager: EntityManager, user: User, role: USER_ROLE) { + const { organizationId } = user; + const adminGroup = await this.getRoleGroup(manager, role, organizationId); + return await this.createGroupUser(manager, user, adminGroup); + } } diff --git a/server/tsconfig.json b/server/tsconfig.json index 3462dcfb48..1e5d8d0483 100644 --- a/server/tsconfig.json +++ b/server/tsconfig.json @@ -18,7 +18,8 @@ "@controllers/*": ["src/controllers/*"], "@repositories/*": ["src/repositories/*"], "@dto/*": ["src/dto/*"], - "@module/*": ["src/modules/*"] + "@module/*": ["src/modules/*"], + "@helpers/*": ["src/helpers/*"] }, }, "exclude": ["node_modules", "dist"] From ccaa17250d5fd757929df763e8596a6f2364ce00 Mon Sep 17 00:00:00 2001 From: kriks7iitk Date: Thu, 2 May 2024 10:38:07 +0530 Subject: [PATCH 003/190] added function in group revamo --- .../services/group_permissions.service.v2.ts | 32 ++++++++++++++++--- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/server/src/services/group_permissions.service.v2.ts b/server/src/services/group_permissions.service.v2.ts index fda472945e..16d1bf2db5 100644 --- a/server/src/services/group_permissions.service.v2.ts +++ b/server/src/services/group_permissions.service.v2.ts @@ -94,16 +94,28 @@ export class GroupPermissionsServiceV2 { }); } - //Need more work async updateGroup(id: string, updateGroupPermissionDto: UpdateGroupPermissionDto) { + const group = await this.getGroup(id); + const { editable, name } = group; + const { name: newName } = updateGroupPermissionDto; + + if (newName && newName in USER_ROLE) { + throw new MethodNotAllowedException(ERROR_HANDLER.NON_EDITABLE_GROUP_UPDATE); + } + + if (!editable) { + throw new MethodNotAllowedException(ERROR_HANDLER.NON_EDITABLE_GROUP_UPDATE); + } + + if (name in [USER_ROLE.ADMIN, USER_ROLE.END_USER]) { + throw new MethodNotAllowedException(ERROR_HANDLER.NON_EDITABLE_GROUP_UPDATE); + } + return await dbTransactionWrap(async (manager: EntityManager) => { - const group = await this.getGroup(id, manager); const { editable } = group; //add complex logic for only builder // this.validateUpdatePermissions(onlyBuilders,updateGroupPermissionDto); - if (!editable) throw new MethodNotAllowedException(ERROR_HANDLER.NON_EDITABLE_GROUP_UPDATE); - - return await manager.delete(GroupPermissions, id); + if (!editable) return await manager.delete(GroupPermissions, id); }); //Is editable only in paid plan builder group } @@ -117,6 +129,16 @@ export class GroupPermissionsServiceV2 { throw new BadRequestException(ERROR_HANDLER.NON_BUILDER_PERMISSION_UPDATE); } + // async getUsersWithRole(role:USER_ROLE):Promise{ + // const manager: EntityManager = getManager(); + // return await manager + // .createQueryBuilder(GroupUsers, 'group_users') + // .innerJoinAndSelect('group_users.group', 'group') + // .where('group.type = :role', { + // versionId: appVersions.map((v) => v.id), + // }) + // } + async getGroup( id: string, manager?: EntityManager, From ac6bc8d16f318995e45f282233432e573fe11754 Mon Sep 17 00:00:00 2001 From: kriks7iitk Date: Mon, 6 May 2024 07:54:47 +0530 Subject: [PATCH 004/190] Add apis for group permissions --- .../1714015513342-AddGroupPermissionsTable.ts | 10 +- .../1714015541245-AddGroupUsersTable.ts | 2 +- ...14015564318-AddGranularPermissionsTable.ts | 2 +- ...4015596201-AddAppsGroupPermissionsTable.ts | 2 +- .../1714015615904-AddGroupAppsTable.ts | 4 +- server/src/app.module.ts | 2 + .../group_permissions.controller.v2.ts | 55 ++++- server/src/dto/granular-permissions.dto.ts | 4 +- server/src/dto/group_permissions.dto.ts | 23 +- server/src/entities/app.entity.ts | 5 + .../entities/granular_permissions.entity.ts | 2 +- .../src/entities/group_permissions.entity.ts | 8 +- server/src/entities/organization.entity.ts | 8 +- server/src/entities/user.entity.ts | 5 + .../granular-permissions.constant.ts | 9 - .../granular-permissions.constant.ts | 36 +++ .../constants/group-permissions.constant.ts | 18 +- .../granular-permissions.interface.ts | 8 + .../interface/group-permissions.interface.ts | 7 +- .../user_resource_permissions.module.ts | 11 + .../utility/group-permissions.utility.ts | 110 +++++++++ .../services/granular_permissions.service.ts | 48 ++-- .../services/group_permissions.service.v2.ts | 209 +++++++----------- server/src/services/user-role.service.ts | 111 ++++++++++ 24 files changed, 513 insertions(+), 186 deletions(-) delete mode 100644 server/src/modules/group_permissions/constants/granular-permissions.constant.ts create mode 100644 server/src/modules/user_resource_permissions/constants/granular-permissions.constant.ts rename server/src/modules/{group_permissions => user_resource_permissions}/constants/group-permissions.constant.ts (62%) rename server/src/modules/{group_permissions => user_resource_permissions}/interface/granular-permissions.interface.ts (79%) rename server/src/modules/{group_permissions => user_resource_permissions}/interface/group-permissions.interface.ts (77%) create mode 100644 server/src/modules/user_resource_permissions/user_resource_permissions.module.ts create mode 100644 server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts create mode 100644 server/src/services/user-role.service.ts diff --git a/server/migrations/1714015513342-AddGroupPermissionsTable.ts b/server/migrations/1714015513342-AddGroupPermissionsTable.ts index 5850fa4b7a..44910034a6 100644 --- a/server/migrations/1714015513342-AddGroupPermissionsTable.ts +++ b/server/migrations/1714015513342-AddGroupPermissionsTable.ts @@ -1,5 +1,5 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import { DATA_BASE_CONSTRAINTS } from '@module/group_permissions/constants/group-permissions.constant'; +import { DATA_BASE_CONSTRAINTS } from '@module/user_resource_permissions/constants/group-permissions.constant'; export class AddGroupPermissionsTable1714015513342 implements MigrationInterface { public async up(queryRunner: QueryRunner): Promise { @@ -11,12 +11,10 @@ export class AddGroupPermissionsTable1714015513342 implements MigrationInterface await queryRunner.query(` CREATE TABLE IF NOT EXISTS group_permissions ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), organization_id UUID, name VARCHAR NOT NULL, type group_permissions_type NOT NULL DEFAULT 'custom', - editable BOOLEAN NOT NULL DEFAULT true, - only_builders BOOLEAN NOT NULL, app_create BOOLEAN DEFAULT false, app_delete BOOLEAN DEFAULT false, folder_crud BOOLEAN DEFAULT false, @@ -25,8 +23,8 @@ export class AddGroupPermissionsTable1714015513342 implements MigrationInterface data_source_delete BOOLEAN DEFAULT false, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - CONSTRAINT fk_organization_id FOREIGN KEY (organization_id) REFERENCES organizations(id) ON DELETE CASCADE - CONSTRAINT ${DATA_BASE_CONSTRAINTS.GROUP_NAME_UNIQUE} UNIQUE (organization_id, name) + CONSTRAINT fk_organization_id FOREIGN KEY (organization_id) REFERENCES organizations(id) ON DELETE CASCADE, + CONSTRAINT ${DATA_BASE_CONSTRAINTS.GROUP_NAME_UNIQUE.dbConstraint} UNIQUE (organization_id, name) ); `); } diff --git a/server/migrations/1714015541245-AddGroupUsersTable.ts b/server/migrations/1714015541245-AddGroupUsersTable.ts index 3d7798cc4c..0ab0a51998 100644 --- a/server/migrations/1714015541245-AddGroupUsersTable.ts +++ b/server/migrations/1714015541245-AddGroupUsersTable.ts @@ -5,7 +5,7 @@ export class AddGroupUsersTable1714015541245 implements MigrationInterface { await queryRunner.query( ` CREATE TABLE IF NOT EXISTS group_users ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), user_id UUID, group_id UUID, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, diff --git a/server/migrations/1714015564318-AddGranularPermissionsTable.ts b/server/migrations/1714015564318-AddGranularPermissionsTable.ts index aee4ecb88d..24a7305f66 100644 --- a/server/migrations/1714015564318-AddGranularPermissionsTable.ts +++ b/server/migrations/1714015564318-AddGranularPermissionsTable.ts @@ -11,7 +11,7 @@ export class AddGranularPermissionsTable1714015564318 implements MigrationInterf await queryRunner.query( ` CREATE TABLE granular_permissions ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), group_id UUID, name VARCHAR NOT NULL, type resource_type NOT NULL, diff --git a/server/migrations/1714015596201-AddAppsGroupPermissionsTable.ts b/server/migrations/1714015596201-AddAppsGroupPermissionsTable.ts index 8bc23cc697..a755529dda 100644 --- a/server/migrations/1714015596201-AddAppsGroupPermissionsTable.ts +++ b/server/migrations/1714015596201-AddAppsGroupPermissionsTable.ts @@ -5,7 +5,7 @@ export class AddAppsGroupPermissionsTable1714015596201 implements MigrationInter await queryRunner.query( ` CREATE TABLE IF NOT EXISTS apps_group_permissions ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), granular_permission_id UUID, can_edit BOOLEAN DEFAULT false, can_view BOOLEAN DEFAULT false, diff --git a/server/migrations/1714015615904-AddGroupAppsTable.ts b/server/migrations/1714015615904-AddGroupAppsTable.ts index cf1428db9c..67c46d6287 100644 --- a/server/migrations/1714015615904-AddGroupAppsTable.ts +++ b/server/migrations/1714015615904-AddGroupAppsTable.ts @@ -5,12 +5,12 @@ export class AddGroupAppsTable1714015615904 implements MigrationInterface { await queryRunner.query( ` CREATE TABLE IF NOT EXISTS group_apps ( - id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), app_id UUID, apps_group_permissions_id UUID, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - CONSTRAINT fk_app_id FOREIGN KEY (app_id) REFERENCES app(id) ON DELETE CASCADE, + CONSTRAINT fk_app_id FOREIGN KEY (app_id) REFERENCES apps(id) ON DELETE CASCADE, CONSTRAINT fk_apps_group_permissions_id FOREIGN KEY (apps_group_permissions_id) REFERENCES apps_group_permissions(id) ON DELETE CASCADE ); ` diff --git a/server/src/app.module.ts b/server/src/app.module.ts index 0b28ef675c..5266d8e05c 100644 --- a/server/src/app.module.ts +++ b/server/src/app.module.ts @@ -47,6 +47,7 @@ import { ScheduleModule } from '@nestjs/schedule'; import { ImportExportResourcesModule } from './modules/import_export_resources/import_export_resources.module'; import { MailerModule } from '@nestjs-modules/mailer'; import { HandlebarsAdapter } from '@nestjs-modules/mailer/dist/adapters/handlebars.adapter'; +import { UserResourcePermissions } from '@module/user_resource_permissions/user_resource_permissions.module'; const imports = [ ScheduleModule.forRoot(), @@ -131,6 +132,7 @@ const imports = [ MetaModule, LibraryAppModule, GroupPermissionsModule, + UserResourcePermissions, FilesModule, PluginsModule, EventsModule, diff --git a/server/src/controllers/group_permissions.controller.v2.ts b/server/src/controllers/group_permissions.controller.v2.ts index fc8c4b52c4..86e37440d6 100644 --- a/server/src/controllers/group_permissions.controller.v2.ts +++ b/server/src/controllers/group_permissions.controller.v2.ts @@ -1,7 +1,14 @@ -import { CreateGroupPermissionDto } from '@dto/group_permissions.dto'; +import { + AddGroupUserDto, + CreateGroupPermissionDto, + EditUserRoleDto, + UpdateGroupPermissionDto, +} from '@dto/group_permissions.dto'; import { JwtAuthGuard } from '@module/auth/jwt-auth.guard'; -import { Body, Controller, Get, Param, Post, UseGuards } from '@nestjs/common'; +import { validateCreateGroupOperation } from '@module/user_resource_permissions/utility/group-permissions.utility'; +import { Body, Controller, Delete, Get, Param, Post, Put, UseGuards } from '@nestjs/common'; import { GroupPermissionsServiceV2 } from '@services/group_permissions.service.v2'; +import { UserRoleService } from '@services/user-role.service'; import { User } from 'src/decorators/user.decorator'; @Controller({ @@ -9,24 +16,62 @@ import { User } from 'src/decorators/user.decorator'; version: '2', }) export class GroupPermissionsControllerV2 { - constructor(private groupPermissionsService: GroupPermissionsServiceV2) {} + constructor(private groupPermissionsService: GroupPermissionsServiceV2, private userRoleService: UserRoleService) {} @UseGuards(JwtAuthGuard) @Post() async create(@User() user, @Body() createGroupPermissionDto: CreateGroupPermissionDto) { + validateCreateGroupOperation(createGroupPermissionDto); return await this.groupPermissionsService.create(user, createGroupPermissionDto); } @UseGuards(JwtAuthGuard) @Get(':id') - async getGroup(@User() user, @Param('id') id: string) { + async get(@User() user, @Param('id') id: string) { return await this.groupPermissionsService.getGroup(id); } @UseGuards(JwtAuthGuard) @Get() - async getAllGroups(@User() user, @Param('id') id: string) { + async getAll(@User() user) { const { organizationId } = user; return await this.groupPermissionsService.getAllGroup(organizationId); } + + @UseGuards(JwtAuthGuard) + @Put() + async update(@User() user, @Param('id') id: string, @Body() updateGroupDto: UpdateGroupPermissionDto) { + return await this.groupPermissionsService.updateGroup(id, updateGroupDto); + } + @UseGuards(JwtAuthGuard) + @Delete(':id') + async delete(@User() user, @Param('id') id: string) { + return await this.groupPermissionsService.deleteGroup(id); + } + + @UseGuards(JwtAuthGuard) + @Post('group-user') + async createGroupUser(@User() user, @Body() addGroupUserDto: AddGroupUserDto) { + const { organizationId } = user; + return await this.groupPermissionsService.addGroupUser(addGroupUserDto, organizationId); + } + + @UseGuards(JwtAuthGuard) + @Get(':groupId/group-user') + async getAllGroupUser(@User() user, @Param('groupId') groupId: string) { + return await this.groupPermissionsService.getAllGroupUsers(groupId); + } + + @UseGuards(JwtAuthGuard) + @Delete('group-user/:id') + async deleteGroupUser(@User() user, @Param('id') id: string) { + return await this.groupPermissionsService.deleteGroupUser(id); + } + + @UseGuards(JwtAuthGuard) + @Put('user-role') + async updateUserRole(@User() user, @Body() editRoleDto: EditUserRoleDto) { + const { organizationId } = user; + return await this.userRoleService.editDefaultGroupUserRole(editRoleDto, organizationId); + } } diff --git a/server/src/dto/granular-permissions.dto.ts b/server/src/dto/granular-permissions.dto.ts index c2401f544e..367c341b50 100644 --- a/server/src/dto/granular-permissions.dto.ts +++ b/server/src/dto/granular-permissions.dto.ts @@ -1,10 +1,10 @@ import { Transform } from 'class-transformer'; import { IsString, IsNotEmpty, IsBoolean, IsOptional, IsEnum } from 'class-validator'; -import { ResourceType } from '@module/group_permissions/constants/granular-permissions.constant'; +import { ResourceType } from '@module/user_resource_permissions/constants/granular-permissions.constant'; import { AppsGroupPermissionsActions, GranularPermissionResourceItem, -} from '@module/group_permissions/interface/granular-permissions.interface'; +} from '@module/user_resource_permissions/interface/granular-permissions.interface'; export class CreateGranularPermissionDto { @IsString() diff --git a/server/src/dto/group_permissions.dto.ts b/server/src/dto/group_permissions.dto.ts index ec914e6c5c..672bf70254 100644 --- a/server/src/dto/group_permissions.dto.ts +++ b/server/src/dto/group_permissions.dto.ts @@ -1,5 +1,6 @@ +import { USER_ROLE } from '@module/user_resource_permissions/constants/group-permissions.constant'; import { Transform } from 'class-transformer'; -import { IsString, IsNotEmpty, IsBoolean, IsOptional } from 'class-validator'; +import { IsString, IsNotEmpty, IsBoolean, IsOptional, IsEnum } from 'class-validator'; export class CreateGroupPermissionDto { @IsString() @@ -38,3 +39,23 @@ export class UpdateGroupPermissionDto { @IsOptional() dataSourceDelete: boolean; } + +export class EditUserRoleDto { + @IsEnum(USER_ROLE) + @IsNotEmpty() + newRole: USER_ROLE; + + @IsString() + @IsNotEmpty() + userId: string; +} + +export class AddGroupUserDto { + @IsString() + @IsNotEmpty() + userId: string; + + @IsString() + @IsNotEmpty() + groupId: string; +} diff --git a/server/src/entities/app.entity.ts b/server/src/entities/app.entity.ts index 19211fde5b..de3ccfbf14 100644 --- a/server/src/entities/app.entity.ts +++ b/server/src/entities/app.entity.ts @@ -19,6 +19,7 @@ import { AppVersion } from './app_version.entity'; import { GroupPermission } from './group_permission.entity'; import { User } from './user.entity'; import { GroupApps } from './group_apps.entity'; +import { AppGroupPermission } from './app_group_permission.entity'; @Entity({ name: 'apps' }) export class App extends BaseEntity { @@ -79,6 +80,10 @@ export class App extends BaseEntity { @OneToMany(() => GroupApps, (groupApps) => groupApps.app, { onDelete: 'CASCADE' }) appGroups: GroupApps[]; + //Depreciated + @OneToMany(() => AppGroupPermission, (appGroupPermission) => appGroupPermission.app, { onDelete: 'CASCADE' }) + appGroupPermissions: AppGroupPermission[]; + public editingVersion; @AfterInsert() diff --git a/server/src/entities/granular_permissions.entity.ts b/server/src/entities/granular_permissions.entity.ts index b73dd1e6e4..ed6c3d0b6c 100644 --- a/server/src/entities/granular_permissions.entity.ts +++ b/server/src/entities/granular_permissions.entity.ts @@ -8,7 +8,7 @@ import { PrimaryGeneratedColumn, UpdateDateColumn, } from 'typeorm'; -import { ResourceType } from '@module/group_permissions/constants/granular-permissions.constant'; +import { ResourceType } from '@module/user_resource_permissions/constants/granular-permissions.constant'; import { GroupPermissions } from './group_permissions.entity'; @Entity({ name: 'granular_permissions' }) diff --git a/server/src/entities/group_permissions.entity.ts b/server/src/entities/group_permissions.entity.ts index 3608f43436..6012dd8fd5 100644 --- a/server/src/entities/group_permissions.entity.ts +++ b/server/src/entities/group_permissions.entity.ts @@ -11,7 +11,7 @@ import { } from 'typeorm'; import { Organization } from './organization.entity'; import { GroupUsers } from './group_users.entity'; -import { GROUP_PERMISSIONS_TYPE } from '@module/group_permissions/constants/group-permissions.constant'; +import { GROUP_PERMISSIONS_TYPE } from '@module/user_resource_permissions/constants/group-permissions.constant'; import { GranularPermissions } from './granular_permissions.entity'; @Entity({ name: 'group_permissions' }) @@ -28,12 +28,6 @@ export class GroupPermissions extends BaseEntity { @Column({ name: 'type', nullable: false, type: 'enum', enum: GROUP_PERMISSIONS_TYPE }) type: GROUP_PERMISSIONS_TYPE; - @Column({ name: 'editable', nullable: false }) - editable: boolean; - - @Column({ name: 'only_builders', nullable: false }) - onlyBuilders: boolean; - @Column({ name: 'app_create', default: false }) appCreate: boolean; diff --git a/server/src/entities/organization.entity.ts b/server/src/entities/organization.entity.ts index b942901728..c76812725a 100644 --- a/server/src/entities/organization.entity.ts +++ b/server/src/entities/organization.entity.ts @@ -13,6 +13,7 @@ import { OrganizationUser } from './organization_user.entity'; import { InternalTable } from './internal_table.entity'; import { AppEnvironment } from './app_environments.entity'; import { GroupPermissions } from './group_permissions.entity'; +import { GroupPermission } from './group_permission.entity'; @Entity({ name: 'organizations' }) export class Organization extends BaseEntity { @@ -41,7 +42,12 @@ export class Organization extends BaseEntity { updatedAt: Date; @OneToMany(() => GroupPermissions, (groupPermissions) => groupPermissions.organization, { onDelete: 'CASCADE' }) - groupPermissions: GroupPermissions[]; + permissionGroups: GroupPermissions[]; + + //Depreciated + @OneToMany(() => GroupPermission, (groupPermission) => groupPermission.organization, { onDelete: 'CASCADE' }) + @JoinColumn({ name: 'organization_id' }) + groupPermissions: GroupPermission[]; @OneToMany(() => SSOConfigs, (ssoConfigs) => ssoConfigs.organization, { cascade: ['insert'] }) ssoConfigs: SSOConfigs[]; diff --git a/server/src/entities/user.entity.ts b/server/src/entities/user.entity.ts index 077b6123d8..b46b78570e 100644 --- a/server/src/entities/user.entity.ts +++ b/server/src/entities/user.entity.ts @@ -21,6 +21,7 @@ import { OrganizationUser } from './organization_user.entity'; import { File } from './file.entity'; import { Organization } from './organization.entity'; import { GroupUsers } from './group_users.entity'; +import { UserGroupPermission } from './user_group_permission.entity'; @Entity({ name: 'users' }) export class User extends BaseEntity { @@ -126,6 +127,10 @@ export class User extends BaseEntity { @OneToMany(() => GroupUsers, (groupUsers) => groupUsers.user, { onDelete: 'CASCADE' }) userGroups: GroupUsers[]; + //Depreciated + @OneToMany(() => UserGroupPermission, (userGroupPermission) => userGroupPermission.user, { onDelete: 'CASCADE' }) + userGroupPermissions: UserGroupPermission[]; + @OneToMany(() => App, (app) => app.user) apps: App[]; diff --git a/server/src/modules/group_permissions/constants/granular-permissions.constant.ts b/server/src/modules/group_permissions/constants/granular-permissions.constant.ts deleted file mode 100644 index acf13ce26e..0000000000 --- a/server/src/modules/group_permissions/constants/granular-permissions.constant.ts +++ /dev/null @@ -1,9 +0,0 @@ -export enum ResourceType { - APP = 'app', - DATA_SOURCE = 'data_source', -} - -export enum DEFAULT_GRANULAR_PERMISSIONS_NAME { - APPS = 'Apps', - DATA_SOURCE = 'Data source', -} diff --git a/server/src/modules/user_resource_permissions/constants/granular-permissions.constant.ts b/server/src/modules/user_resource_permissions/constants/granular-permissions.constant.ts new file mode 100644 index 0000000000..883843bbcb --- /dev/null +++ b/server/src/modules/user_resource_permissions/constants/granular-permissions.constant.ts @@ -0,0 +1,36 @@ +import { CreateResourcePermissionObject } from '../interface/granular-permissions.interface'; +import { USER_ROLE } from './group-permissions.constant'; + +export enum ResourceType { + APP = 'app', + DATA_SOURCE = 'data_source', +} + +export enum DEFAULT_GRANULAR_PERMISSIONS_NAME { + APP = 'Apps', + DATA_SOURCE = 'Data sources', +} + +export const DEFAULT_RESOURCE_PERMISSIONS = { + [USER_ROLE.ADMIN]: { + [ResourceType.APP]: { + canEdit: true, + canView: true, + hideFromDashboard: false, + }, + }, + [USER_ROLE.END_USER]: { + [ResourceType.APP]: { + canEdit: false, + canView: false, + hideFromDashboard: false, + }, + }, + [USER_ROLE.BUILDER]: { + [ResourceType.APP]: { + canEdit: true, + canView: true, + hideFromDashboard: false, + }, + }, +} as Record>; diff --git a/server/src/modules/group_permissions/constants/group-permissions.constant.ts b/server/src/modules/user_resource_permissions/constants/group-permissions.constant.ts similarity index 62% rename from server/src/modules/group_permissions/constants/group-permissions.constant.ts rename to server/src/modules/user_resource_permissions/constants/group-permissions.constant.ts index 3ff9a84301..d400f4aeb4 100644 --- a/server/src/modules/group_permissions/constants/group-permissions.constant.ts +++ b/server/src/modules/user_resource_permissions/constants/group-permissions.constant.ts @@ -48,7 +48,7 @@ export const DEFAULT_GROUP_PERMISSIONS = { END_USER: { name: USER_ROLE.END_USER, type: GROUP_PERMISSIONS_TYPE.DEFAULT, - editable: false, + editable: true, onlyBuilders: false, appCreate: false, appDelete: false, @@ -60,8 +60,22 @@ export const DEFAULT_GROUP_PERMISSIONS = { } as Record; export const ERROR_HANDLER = { - DEFAULT_GROUP_NAME: 'Name cannot be same as user role group', + GROUP_NOT_EXIST: "Group doesn't exist", + DEFAULT_GROUP_NAME: 'Name cannot be same as user default group', + DEFAULT_GROUP_NAME_UPDATE: 'Not allowed to change default group name', + DEFAULT_GROUP_NAME_DELETE: 'Not allowed to delete default group', NON_EDITABLE_GROUP_UPDATE: 'Group cannot be update because its not allowed', NON_BUILDER_PERMISSION_UPDATE: 'End user cannot have this builder level permissions', DEFAULT_GROUP_UPDATE_NOT_ALLOWED: 'Defaults group cant be deleted', + UPDATE_EDITABLE_PERMISSION_END_USER_GROUP: + 'End-users can only be granted permission to view apps. If you wish to add this permission, kindly change the following users role from end-user to builder- ', + GROUP_USERS_EDITABLE_GROUP_ADDITION: (userEmail) => { + return `The user ${userEmail} is an end-user and can only be granted permission to view apps. Kindly change their user role to be able to add them.`; + }, + ADD_GROUP_USER_NON_EXISTING_USER: 'User is not present in this organization', + DEFAULT_GROUP_ADD_USER_ROLE_EXIST: (role: USER_ROLE) => { + return `User is already ${role}`; + }, + ADD_GROUP_USER_DEFAULT_GROUP: 'Adding user to default group is not allowed', + DELETING_DEFAULT_GROUP_USER: 'Deleting default user from default group is not allowed', }; diff --git a/server/src/modules/group_permissions/interface/granular-permissions.interface.ts b/server/src/modules/user_resource_permissions/interface/granular-permissions.interface.ts similarity index 79% rename from server/src/modules/group_permissions/interface/granular-permissions.interface.ts rename to server/src/modules/user_resource_permissions/interface/granular-permissions.interface.ts index 1695741711..c9a7fe4c98 100644 --- a/server/src/modules/group_permissions/interface/granular-permissions.interface.ts +++ b/server/src/modules/user_resource_permissions/interface/granular-permissions.interface.ts @@ -23,4 +23,12 @@ export interface GranularPermissionQuerySearchParam { type?: string; } +export interface CreateAppsPermissionsObject { + canEdit?: boolean; + canView?: boolean; + hideFromDashboard?: boolean; +} + +export type CreateResourcePermissionObject = CreateAppsPermissionsObject; + export type GranularResourcePermissions = AppsGroupPermissions; diff --git a/server/src/modules/group_permissions/interface/group-permissions.interface.ts b/server/src/modules/user_resource_permissions/interface/group-permissions.interface.ts similarity index 77% rename from server/src/modules/group_permissions/interface/group-permissions.interface.ts rename to server/src/modules/user_resource_permissions/interface/group-permissions.interface.ts index a65a41cbc0..36bf097507 100644 --- a/server/src/modules/group_permissions/interface/group-permissions.interface.ts +++ b/server/src/modules/user_resource_permissions/interface/group-permissions.interface.ts @@ -1,4 +1,4 @@ -import { GROUP_PERMISSIONS_TYPE } from '../constants/group-permissions.constant'; +import { GROUP_PERMISSIONS_TYPE, USER_ROLE } from '../constants/group-permissions.constant'; import { SearchParamItem } from '@helpers/db-utility/db-utility.interface'; export interface CreateDefaultGroupObject { @@ -21,3 +21,8 @@ export interface GroupQuerySearchParamObject { editable?: boolean; onlyBuilder?: boolean; } + +export interface AddUserRoleObject { + role: USER_ROLE; + userId: string; +} diff --git a/server/src/modules/user_resource_permissions/user_resource_permissions.module.ts b/server/src/modules/user_resource_permissions/user_resource_permissions.module.ts new file mode 100644 index 0000000000..35e16dca50 --- /dev/null +++ b/server/src/modules/user_resource_permissions/user_resource_permissions.module.ts @@ -0,0 +1,11 @@ +import { Module } from '@nestjs/common'; +import { GroupPermissionsControllerV2 } from '@controllers/group_permissions.controller.v2'; +import { GroupPermissionsServiceV2 } from '@services/group_permissions.service.v2'; +import { GranularPermissionsService } from '@services/granular_permissions.service'; + +@Module({ + controllers: [GroupPermissionsControllerV2], + imports: [], + providers: [GroupPermissionsServiceV2, GranularPermissionsService], +}) +export class UserResourcePermissions {} diff --git a/server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts b/server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts new file mode 100644 index 0000000000..bdedf7cee2 --- /dev/null +++ b/server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts @@ -0,0 +1,110 @@ +import { SelectQueryBuilder, createQueryBuilder } from 'typeorm'; +import { USER_ROLE, GROUP_PERMISSIONS_TYPE } from '../constants/group-permissions.constant'; +import { User } from 'src/entities/user.entity'; +import { GroupPermissions } from 'src/entities/group_permissions.entity'; +import { BadRequestException, MethodNotAllowedException } from '@nestjs/common'; +import { CreateGroupPermissionDto, UpdateGroupPermissionDto } from '@dto/group_permissions.dto'; +import { ERROR_HANDLER } from '@module/user_resource_permissions/constants/group-permissions.constant'; +import { GroupUsers } from 'src/entities/group_users.entity'; + +export function getRoleUsersListQuery( + role: USER_ROLE, + organizationId: string, + groupPermissionId?: string +): SelectQueryBuilder { + const query = createQueryBuilder(User, 'user') + .select([ + 'users.id', + 'users.firstName', + 'users.lastName', + 'users.email', + 'user.userGroup.groupId', + 'user.userGroup.group.name', + 'user.userGroup.group.type', + ]) + .innerJoin('user.userGroups', 'userGroups') + .innerJoin('userGroups.group', 'group', 'group.organizationId = :organizationId', { organizationId }) + .andWhere('group.type = :type', { type: GROUP_PERMISSIONS_TYPE.DEFAULT }) + .andWhere('group.name = :name', { name: role }); + + if (groupPermissionId) { + query.andWhere( + 'user.id IN ' + + query + .subQuery() + .select('user.id') + .from('User', 'user') + .innerJoin('user.userGroups', 'subUserGroup') + .where('subUserGroup.groupId = :groupId', { groupId: groupPermissionId }) + .getQuery() + ); + } + + return query; +} + +export function getUserDetailQuery(userId: string, organizationId: string): SelectQueryBuilder { + const query = createQueryBuilder(User, 'user') + .innerJoin('user.organizationUsers', 'organizationUsers', 'organizationUsers.organizationId = :organizationId', { + organizationId, + }) + .where('user.id = = :userId', { + userId, + }); + + return query; +} + +export function getUserRoleQuery(userId: string, organizationId: string): SelectQueryBuilder { + const query = createQueryBuilder(GroupPermissions, 'role') + .innerJoin('role.groupUsers', 'groupUsers', 'groupUsers.userId = :userId', { userId }) + .where('role.type = :type', { type: GROUP_PERMISSIONS_TYPE.DEFAULT }) + .andWhere('role.organizationId = :organizationId', { organizationId }); + + return query; +} + +export function validateUpdateGroupOperation( + group: GroupPermissions, + updateGroupPermissionDto: UpdateGroupPermissionDto +): void { + const { name } = group; + const { name: newName } = updateGroupPermissionDto; + + if (newName && (newName in USER_ROLE || group.type == GROUP_PERMISSIONS_TYPE.DEFAULT)) { + throw new MethodNotAllowedException(ERROR_HANDLER.DEFAULT_GROUP_NAME_UPDATE); + } + if (name in [USER_ROLE.ADMIN, USER_ROLE.END_USER]) { + throw new MethodNotAllowedException(ERROR_HANDLER.NON_EDITABLE_GROUP_UPDATE); + } +} + +export function validateDeleteGroupUserOperation(group: GroupPermissions) { + if (!group) throw new BadRequestException(ERROR_HANDLER.GROUP_NOT_EXIST); + + if (group.type == GROUP_PERMISSIONS_TYPE.DEFAULT) + throw new MethodNotAllowedException(ERROR_HANDLER.DELETING_DEFAULT_GROUP_USER); +} + +export function validateAddGroupUserOperation(group: GroupPermissions, user: User) { + if (!user) throw new BadRequestException(ERROR_HANDLER.ADD_GROUP_USER_NON_EXISTING_USER); + if (!group) throw new BadRequestException(ERROR_HANDLER.GROUP_NOT_EXIST); + if (group.type == GROUP_PERMISSIONS_TYPE.DEFAULT) + throw new MethodNotAllowedException(ERROR_HANDLER.ADD_GROUP_USER_DEFAULT_GROUP); +} + +export function getAllUserGroupsQuery(userId: string, organizationId: string): SelectQueryBuilder { + const query = createQueryBuilder(GroupUsers, 'userGroups') + .innerJoin('userGroups.group', 'group', 'group.organizationId = :organizationId', { organizationId }) + .where('userGroups.userId = :userId', { + userId, + }) + .andWhere('group.type = :type', { + type: GROUP_PERMISSIONS_TYPE.DEFAULT, + }); + return query; +} + +export function validateCreateGroupOperation(createGroupPermissionDto: CreateGroupPermissionDto) { + if (createGroupPermissionDto.name in USER_ROLE) throw new BadRequestException(ERROR_HANDLER.DEFAULT_GROUP_NAME); +} diff --git a/server/src/services/granular_permissions.service.ts b/server/src/services/granular_permissions.service.ts index 082bef3078..b435606ce2 100644 --- a/server/src/services/granular_permissions.service.ts +++ b/server/src/services/granular_permissions.service.ts @@ -1,40 +1,39 @@ import { Injectable } from '@nestjs/common'; -import { GroupPermissions } from 'src/entities/group_permissions.entity'; import { CreateGranularPermissionDto, UpdateGranularPermissionDto } from '@dto/granular-permissions.dto'; -import { ResourceType } from '@module/group_permissions/constants/granular-permissions.constant'; +import { ResourceType } from '@module/user_resource_permissions/constants/granular-permissions.constant'; import { UpdateAppsGroupPermissionObject, GranularResourcePermissions, -} from '@module/group_permissions/interface/granular-permissions.interface'; -import { GroupPermissionsServiceV2 } from './group_permissions.service.v2'; + CreateResourcePermissionObject, + CreateAppsPermissionsObject, +} from '@module/user_resource_permissions/interface/granular-permissions.interface'; import { EntityManager, getManager } from 'typeorm'; import { GranularPermissions } from 'src/entities/granular_permissions.entity'; import { AppsGroupPermissions } from 'src/entities/apps_group_permissions.entity'; -import { GranularPermissionQuerySearchParam } from '@module/group_permissions/interface/granular-permissions.interface'; +import { GranularPermissionQuerySearchParam } from '@module/user_resource_permissions/interface/granular-permissions.interface'; import { createWhereConditions } from '@helpers/db-utility/db-search.helper'; import { dbTransactionWrap } from '@helpers/utils.helper'; @Injectable() export class GranularPermissionsService { - constructor(private groupPermissionsService: GroupPermissionsServiceV2) {} + constructor() {} async create(manager: EntityManager, createGranularPermissionDto: CreateGranularPermissionDto) { const granularPermissions = manager.create(GranularPermissions, createGranularPermissionDto); return await manager.save(granularPermissions); } - async getAll(groupId: string, searchParam?: GranularPermissionQuerySearchParam) { - const manager: EntityManager = getManager(); - const whereConditions = createWhereConditions(searchParam); - return await manager.find(GroupPermissions, { - where: { groupId, ...whereConditions }, - }); - } - - async get(id: string, searchParam?: GranularPermissionQuerySearchParam) { + async getAll(searchParam: GranularPermissionQuerySearchParam) { const manager: EntityManager = getManager(); const whereConditions = createWhereConditions(searchParam); return await manager.find(GranularPermissions, { - where: { id, ...whereConditions }, + where: whereConditions, + }); + } + + async get(id: string) { + const manager: EntityManager = getManager(); + return await manager.find(GranularPermissions, { + where: { id }, }); } @@ -48,14 +47,18 @@ export class GranularPermissionsService { async createResourceGroupPermission( manager: EntityManager, - isOnlyBuilder: boolean, - granularPermissions: GranularPermissions + granularPermissions: GranularPermissions, + createResourcePermissionsObj?: CreateResourcePermissionObject ): Promise { let resourceGranularPermissions; const { type } = granularPermissions; switch (type) { case ResourceType.APP: - resourceGranularPermissions = await this.createAppGroupPermission(manager, isOnlyBuilder, granularPermissions); + resourceGranularPermissions = await this.createAppGroupPermission( + manager, + granularPermissions, + createResourcePermissionsObj + ); break; } return resourceGranularPermissions; @@ -63,12 +66,11 @@ export class GranularPermissionsService { async createAppGroupPermission( manager: EntityManager, - isOnlyBuilder: boolean, - granularPermissions: GranularPermissions + granularPermissions: GranularPermissions, + createAppPermissionsObj?: CreateAppsPermissionsObject ): Promise { return await manager.create(AppsGroupPermissions, { - canEdit: isOnlyBuilder, - canView: !isOnlyBuilder, + ...createAppPermissionsObj, granularPermissionId: granularPermissions.id, }); } diff --git a/server/src/services/group_permissions.service.v2.ts b/server/src/services/group_permissions.service.v2.ts index 16d1bf2db5..8e062ecfcc 100644 --- a/server/src/services/group_permissions.service.v2.ts +++ b/server/src/services/group_permissions.service.v2.ts @@ -1,27 +1,27 @@ import { Injectable, BadRequestException, MethodNotAllowedException } from '@nestjs/common'; import { GroupPermissions } from 'src/entities/group_permissions.entity'; -import { UpdateGroupPermissionDto, CreateGroupPermissionDto } from '@dto/group_permissions.dto'; +import { UpdateGroupPermissionDto, CreateGroupPermissionDto, AddGroupUserDto } from '@dto/group_permissions.dto'; import { User } from 'src/entities/user.entity'; import { USER_ROLE, ERROR_HANDLER, DATA_BASE_CONSTRAINTS, - DEFAULT_GROUP_PERMISSIONS, GROUP_PERMISSIONS_TYPE, -} from '@module/group_permissions/constants/group-permissions.constant'; +} from '@module/user_resource_permissions/constants/group-permissions.constant'; import { dbTransactionWrap, catchDbException } from 'src/helpers/utils.helper'; import { EntityManager, getManager } from 'typeorm'; -import { - CreateDefaultGroupObject, - GroupQuerySearchParamObject, -} from '@module/group_permissions/interface/group-permissions.interface'; -import { createWhereConditions } from '@helpers/db-utility/db-search.helper'; +import { CreateDefaultGroupObject } from '@module/user_resource_permissions/interface/group-permissions.interface'; import { GroupUsers } from 'src/entities/group_users.entity'; import { GranularPermissionsService } from './granular_permissions.service'; import { - DEFAULT_GRANULAR_PERMISSIONS_NAME, - ResourceType, -} from '@module/group_permissions/constants/granular-permissions.constant'; + getAllUserGroupsQuery, + getRoleUsersListQuery, + getUserDetailQuery, + getUserRoleQuery, + validateAddGroupUserOperation, + validateDeleteGroupUserOperation, + validateUpdateGroupOperation, +} from '@module/user_resource_permissions/utility/group-permissions.utility'; @Injectable() export class GroupPermissionsServiceV2 { @@ -37,52 +37,55 @@ export class GroupPermissionsServiceV2 { */ async create( organizationId: string, - createGroupObject: CreateGroupPermissionDto | CreateDefaultGroupObject + createGroupObject: CreateGroupPermissionDto | CreateDefaultGroupObject, + manager?: EntityManager ): Promise { - this.defaultGroupCheck(createGroupObject); - return await dbTransactionWrap(async (manager: EntityManager) => { return await catchDbException(async () => { const group = manager.create(GroupPermissions, { ...createGroupObject, organizationId }); return await manager.save(group); }, [DATA_BASE_CONSTRAINTS.GROUP_NAME_UNIQUE]); + }, manager); + } + + async getAllGroup(organizationId: string) { + const manager: EntityManager = getManager(); + return await manager.findAndCount(GroupPermissions, { + where: { organizationId }, + order: { type: 'DESC' }, }); } - async createDefaultGroups(user: User): Promise { - const { organizationId } = user; + async getGroup(id: string, manager?: EntityManager): Promise { + const entityManager: EntityManager = manager ? manager : getManager(); + return await entityManager.findOne(GroupPermissions, { + where: { id }, + }); + } - const defaultGroups: GroupPermissions[] = []; + async updateGroup(id: string, updateGroupPermissionDto: UpdateGroupPermissionDto, manager?: EntityManager) { + //License level validation at controller level - // Create all default groups - for (const defaultGroup of Object.keys(USER_ROLE)) { - const newGroup = await this.create(organizationId, DEFAULT_GROUP_PERMISSIONS[defaultGroup]); - defaultGroups.push(newGroup); + const group = await this.getGroup(id); + if (!group) throw new BadRequestException(ERROR_HANDLER.GROUP_NOT_EXIST); + + validateUpdateGroupOperation(group, updateGroupPermissionDto); + const getEndUsersList = await this.getRoleUsersList(USER_ROLE.END_USER, group.organizationId, group.id); + const editPermissionsPresent = Object.values(updateGroupPermissionDto).some( + (value) => typeof value === 'boolean' && value === true + ); + + if (getEndUsersList.length && editPermissionsPresent) { + throw new MethodNotAllowedException({ + message: ERROR_HANDLER.UPDATE_EDITABLE_PERMISSION_END_USER_GROUP, + data: getEndUsersList, + }); } - - //Add admin user to default group return await dbTransactionWrap(async (manager: EntityManager) => { - await this.addUserToRole(manager, user, USER_ROLE.ADMIN); - - //Add granular permissions to default group - for (const group of defaultGroups) { - const isOnlyBuilder = group.onlyBuilders; - const granularPermissions = await this.granularPermissionsService.create(manager, { - name: DEFAULT_GRANULAR_PERMISSIONS_NAME.APPS, - groupId: group.id, - type: ResourceType.APP, - }); - await this.granularPermissionsService.createResourceGroupPermission( - manager, - isOnlyBuilder, - granularPermissions - ); - } - }); - } - - defaultGroupCheck(groupObject: GroupPermissions | CreateGroupPermissionDto | UpdateGroupPermissionDto) { - if (groupObject.name in USER_ROLE) throw new BadRequestException(ERROR_HANDLER.DEFAULT_GROUP_NAME); + return await catchDbException(async () => { + await manager.update(GroupPermissions, id, updateGroupPermissionDto); + }, [DATA_BASE_CONSTRAINTS.GROUP_NAME_UNIQUE]); + }, manager); } async deleteGroup(id: string): Promise { @@ -94,98 +97,58 @@ export class GroupPermissionsServiceV2 { }); } - async updateGroup(id: string, updateGroupPermissionDto: UpdateGroupPermissionDto) { - const group = await this.getGroup(id); - const { editable, name } = group; - const { name: newName } = updateGroupPermissionDto; - - if (newName && newName in USER_ROLE) { - throw new MethodNotAllowedException(ERROR_HANDLER.NON_EDITABLE_GROUP_UPDATE); - } - - if (!editable) { - throw new MethodNotAllowedException(ERROR_HANDLER.NON_EDITABLE_GROUP_UPDATE); - } - - if (name in [USER_ROLE.ADMIN, USER_ROLE.END_USER]) { - throw new MethodNotAllowedException(ERROR_HANDLER.NON_EDITABLE_GROUP_UPDATE); - } - + private async createGroupUser(user: User, group: GroupPermissions, manager?: EntityManager): Promise { return await dbTransactionWrap(async (manager: EntityManager) => { - const { editable } = group; - //add complex logic for only builder - // this.validateUpdatePermissions(onlyBuilders,updateGroupPermissionDto); - if (!editable) return await manager.delete(GroupPermissions, id); - }); - //Is editable only in paid plan builder group + const groupUser = manager.create(GroupUsers, { groupId: group.id, userId: user.id }); + return await manager.save(groupUser); + }, manager); } - //Need more work - validateUpdatePermissions(isOnlyBuilder, updateGroupPermissionDto: UpdateGroupPermissionDto) { - const trueValues = Object.keys(updateGroupPermissionDto).filter( - (key) => key != 'name' && updateGroupPermissionDto[key] - ); - if (!isOnlyBuilder && trueValues.length > 1) - throw new BadRequestException(ERROR_HANDLER.NON_BUILDER_PERMISSION_UPDATE); - } - - // async getUsersWithRole(role:USER_ROLE):Promise{ - // const manager: EntityManager = getManager(); - // return await manager - // .createQueryBuilder(GroupUsers, 'group_users') - // .innerJoinAndSelect('group_users.group', 'group') - // .where('group.type = :role', { - // versionId: appVersions.map((v) => v.id), - // }) - // } - - async getGroup( - id: string, - manager?: EntityManager, - searchParam?: GroupQuerySearchParamObject - ): Promise { - const entityManager: EntityManager = manager ? manager : getManager(); - const whereConditions = createWhereConditions(searchParam); - return await entityManager.findOne(GroupPermissions, { - where: { id, ...whereConditions }, - }); - } - - async getRoleGroup(manager: EntityManager, role: USER_ROLE, organizationId: string) { - return await manager.findOne(GroupPermissions, { - where: { name: role, organizationId, type: GROUP_PERMISSIONS_TYPE.DEFAULT }, - }); - } - async getAllGroup(organizationId: string) { + async getAllGroupUsers(groupId: string): Promise { const manager: EntityManager = getManager(); - return await manager.findAndCount(GroupPermissions, { - where: { organizationId }, + return await manager.find(GroupUsers, { + where: { + groupId, + }, + relations: ['user'], }); } - //Need work for group updation - async addGroupUser(groupId: string, userId: string) { - //Add complex logic of only builder\ + async getAllUserGroups(userId: string, organizationId: string): Promise { + return await getAllUserGroupsQuery(userId, organizationId).getMany(); } - //Need for for group updation - private async createGroupUser(manager: EntityManager, user: User, group: GroupPermissions): Promise { - //update only builder - const groupUser = manager.create(GroupUsers, { groupId: group.id, userId: user.id }); - return await manager.save(groupUser); + async deleteGroupUser(id: string, manager?: EntityManager): Promise { + const group = await this.getGroup(id); + validateDeleteGroupUserOperation(group); + return await dbTransactionWrap(async (manager: EntityManager) => { + return await manager.delete(GroupUsers, id); + }, manager); } - async deleteGroupUser(groupId: string, organizationId: string) { - //update only builder + async addGroupUser(addGroupUserDto: AddGroupUserDto, organizationId: string) { + const { userId, groupId } = addGroupUserDto; + const user = await getUserDetailQuery(userId, organizationId).getOne(); + const group = await this.getGroup(groupId); + validateAddGroupUserOperation(group, user); + + const role = await this.getUserRole(userId, organizationId); + const editPermissionsPresent = Object.values(group).some((value) => typeof value === 'boolean' && value === true); + //NEED TO CHECK FOR EDITOR LEVEL PERMISSION IN GRANULAR PERMISSIONS + + if (editPermissionsPresent && role.name == USER_ROLE.END_USER) { + throw new MethodNotAllowedException(ERROR_HANDLER.GROUP_USERS_EDITABLE_GROUP_ADDITION(user)); + } + + return await this.createGroupUser(user, group); } - async getAllGroupUser(manager: EntityManager, groupId: string) {} + async getRoleUsersList(role: USER_ROLE, organizationId: string, groupPermissionId?: string): Promise { + const query = getRoleUsersListQuery(role, organizationId, groupPermissionId); + return await query.getMany(); + } - async editDefaultGroupUserRole(user: User, currentRole: USER_ROLE, newRole: USER_ROLE) {} - - private async addUserToRole(manager: EntityManager, user: User, role: USER_ROLE) { - const { organizationId } = user; - const adminGroup = await this.getRoleGroup(manager, role, organizationId); - return await this.createGroupUser(manager, user, adminGroup); + async getUserRole(userId: string, organizationId: string): Promise { + return await getUserRoleQuery(userId, organizationId).getOne(); } } diff --git a/server/src/services/user-role.service.ts b/server/src/services/user-role.service.ts new file mode 100644 index 0000000000..11e1cfed52 --- /dev/null +++ b/server/src/services/user-role.service.ts @@ -0,0 +1,111 @@ +import { Injectable, BadRequestException } from '@nestjs/common'; +import { GroupPermissions } from 'src/entities/group_permissions.entity'; +import { EditUserRoleDto } from '@dto/group_permissions.dto'; +import { User } from 'src/entities/user.entity'; +import { + USER_ROLE, + ERROR_HANDLER, + DEFAULT_GROUP_PERMISSIONS, + GROUP_PERMISSIONS_TYPE, +} from '@module/user_resource_permissions/constants/group-permissions.constant'; +import { dbTransactionWrap } from 'src/helpers/utils.helper'; +import { EntityManager, getManager } from 'typeorm'; +import { GroupUsers } from 'src/entities/group_users.entity'; +import { GranularPermissionsService } from './granular_permissions.service'; +import { + DEFAULT_GRANULAR_PERMISSIONS_NAME, + DEFAULT_RESOURCE_PERMISSIONS, + ResourceType, +} from '@module/user_resource_permissions/constants/granular-permissions.constant'; +import { CreateResourcePermissionObject } from '@module/user_resource_permissions/interface/granular-permissions.interface'; +import { GroupPermissionsServiceV2 } from './group_permissions.service.v2'; +import { AddUserRoleObject } from '@module/user_resource_permissions/interface/group-permissions.interface'; + +@Injectable() +export class UserRoleService { + constructor( + private groupPermissionsService: GroupPermissionsServiceV2, + private granularPermissionsService: GranularPermissionsService + ) {} + + async createDefaultGroups(user: User): Promise { + const { organizationId } = user; + const defaultGroups: GroupPermissions[] = []; + + return await dbTransactionWrap(async (manager: EntityManager) => { + // Create all default groups + for (const defaultGroup of Object.keys(USER_ROLE)) { + const newGroup = await this.groupPermissionsService.create( + organizationId, + DEFAULT_GROUP_PERMISSIONS[defaultGroup], + manager + ); + defaultGroups.push(newGroup); + } + + //Add granular permissions to default group + for (const group of defaultGroups) { + const groupGranularPermissions: Record = + DEFAULT_RESOURCE_PERMISSIONS[group.name]; + for (const resource of Object.keys(groupGranularPermissions)) { + const granularPermissions = await this.granularPermissionsService.create(manager, { + name: DEFAULT_GRANULAR_PERMISSIONS_NAME[resource], + groupId: group.id, + type: ResourceType[resource], + }); + const createResourcePermissionObj: CreateResourcePermissionObject = groupGranularPermissions[resource]; + + await this.granularPermissionsService.createResourceGroupPermission( + manager, + granularPermissions, + createResourcePermissionObj + ); + } + } + }); + } + + async getRoleGroup(role: USER_ROLE, organizationId: string) { + const manager: EntityManager = getManager(); + return await manager.findOne(GroupPermissions, { + where: { name: role, organizationId, type: GROUP_PERMISSIONS_TYPE.DEFAULT }, + }); + } + + async editDefaultGroupUserRole(editRoleDto: EditUserRoleDto, organizationId: string): Promise { + const { newRole, userId } = editRoleDto; + const userRole = await this.groupPermissionsService.getUserRole(userId, organizationId); + const userGroup = userRole.groupUsers[0]; + if (!userRole) throw new BadRequestException(ERROR_HANDLER.ADD_GROUP_USER_NON_EXISTING_USER); + + const newRoleGroup = await this.getRoleGroup(newRole, organizationId); + + if (userRole.name == newRole) + throw new BadRequestException(ERROR_HANDLER.DEFAULT_GROUP_ADD_USER_ROLE_EXIST(newRole)); + + return await dbTransactionWrap(async (manager: EntityManager) => { + await this.groupPermissionsService.deleteGroupUser(userGroup.id, manager); + if (newRole == USER_ROLE.END_USER) { + const userGroups = await this.groupPermissionsService.getAllUserGroups(userId, organizationId); + for (const customUserGroup of userGroups) { + const editPermissionsPresent = Object.values(customUserGroup).some( + (value) => typeof value === 'boolean' && value === true + ); + //NEED TO CHECK FOR ALL GRANULAR PERMISSIONS AS WELL FOR THAT GROUP + if (editPermissionsPresent) await this.groupPermissionsService.deleteGroupUser(customUserGroup.id, manager); + } + } + const newUserRole = manager.create(GroupUsers, { groupId: newRoleGroup.id, userId }); + await manager.save(newUserRole); + }); + } + + async addUserRole(addUserRoleObject: AddUserRoleObject, organizationId: string, manager?: EntityManager) { + const { role, userId } = addUserRoleObject; + return await dbTransactionWrap(async (manager: EntityManager) => { + const roleGroup = await this.getRoleGroup(role, organizationId); + const newUserRole = manager.create(GroupUsers, { groupId: roleGroup.id, userId }); + await manager.save(newUserRole); + }); + } +} From ce2d72d4bbe134d4650edd3a2d554a4c660f28b5 Mon Sep 17 00:00:00 2001 From: kriks7iitk Date: Mon, 6 May 2024 07:56:48 +0530 Subject: [PATCH 005/190] Add user role service in permissions module --- server/src/app.module.ts | 4 ++-- .../user_resource_permissions.module.ts | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/server/src/app.module.ts b/server/src/app.module.ts index 5266d8e05c..fc7af8b491 100644 --- a/server/src/app.module.ts +++ b/server/src/app.module.ts @@ -47,7 +47,7 @@ import { ScheduleModule } from '@nestjs/schedule'; import { ImportExportResourcesModule } from './modules/import_export_resources/import_export_resources.module'; import { MailerModule } from '@nestjs-modules/mailer'; import { HandlebarsAdapter } from '@nestjs-modules/mailer/dist/adapters/handlebars.adapter'; -import { UserResourcePermissions } from '@module/user_resource_permissions/user_resource_permissions.module'; +import { UserResourcePermissionsModule } from '@module/user_resource_permissions/user_resource_permissions.module'; const imports = [ ScheduleModule.forRoot(), @@ -132,7 +132,7 @@ const imports = [ MetaModule, LibraryAppModule, GroupPermissionsModule, - UserResourcePermissions, + UserResourcePermissionsModule, FilesModule, PluginsModule, EventsModule, diff --git a/server/src/modules/user_resource_permissions/user_resource_permissions.module.ts b/server/src/modules/user_resource_permissions/user_resource_permissions.module.ts index 35e16dca50..88469d1380 100644 --- a/server/src/modules/user_resource_permissions/user_resource_permissions.module.ts +++ b/server/src/modules/user_resource_permissions/user_resource_permissions.module.ts @@ -2,10 +2,11 @@ import { Module } from '@nestjs/common'; import { GroupPermissionsControllerV2 } from '@controllers/group_permissions.controller.v2'; import { GroupPermissionsServiceV2 } from '@services/group_permissions.service.v2'; import { GranularPermissionsService } from '@services/granular_permissions.service'; +import { UserRoleService } from '@services/user-role.service'; @Module({ controllers: [GroupPermissionsControllerV2], imports: [], - providers: [GroupPermissionsServiceV2, GranularPermissionsService], + providers: [GroupPermissionsServiceV2, GranularPermissionsService, UserRoleService], }) -export class UserResourcePermissions {} +export class UserResourcePermissionsModule {} From e5c89916c9eae5e806e0bb5d5a2038ca21bbc9f9 Mon Sep 17 00:00:00 2001 From: Vijaykant Yadav Date: Tue, 7 May 2024 16:51:57 +0530 Subject: [PATCH 006/190] initial setup --- frontend/src/App/App.jsx | 9 + frontend/src/ManageGranularAccess/index.jsx | 193 ++++ .../index.jsx | 1005 +++++++++++++++++ .../ManageGroupPermissionsV2.jsx | 626 ++++++++++ .../src/OrganizationSettingsPage/index.jsx | 4 +- frontend/src/_components/MultiSelectUser.jsx | 4 +- .../_services/groupPermission.v2.service.js | 137 +++ frontend/src/_services/index.js | 1 + frontend/src/_styles/groups-permissions.scss | 57 + frontend/src/_styles/theme.scss | 32 +- .../_ui/Icon/solidIcons/GranularAccess.jsx | 19 + frontend/src/_ui/Icon/solidIcons/UserGear.jsx | 19 + frontend/src/_ui/Icon/solidIcons/index.js | 6 + frontend/src/_ui/Modal/AppsSelect.jsx | 189 ++++ frontend/src/_ui/Modal/index.jsx | 6 +- 15 files changed, 2301 insertions(+), 6 deletions(-) create mode 100644 frontend/src/ManageGranularAccess/index.jsx create mode 100644 frontend/src/ManageGroupPermissionResourcesV2/index.jsx create mode 100644 frontend/src/ManageGroupPermissionsV2/ManageGroupPermissionsV2.jsx create mode 100644 frontend/src/_services/groupPermission.v2.service.js create mode 100644 frontend/src/_styles/groups-permissions.scss create mode 100644 frontend/src/_ui/Icon/solidIcons/GranularAccess.jsx create mode 100644 frontend/src/_ui/Icon/solidIcons/UserGear.jsx create mode 100644 frontend/src/_ui/Modal/AppsSelect.jsx diff --git a/frontend/src/App/App.jsx b/frontend/src/App/App.jsx index 0f1043c2dd..bf735d61fc 100644 --- a/frontend/src/App/App.jsx +++ b/frontend/src/App/App.jsx @@ -38,6 +38,7 @@ import { ManageGroupPermissions } from '@/ManageGroupPermissions'; import OrganizationLogin from '@/_components/OrganizationLogin/OrganizationLogin'; import { ManageOrgVars } from '@/ManageOrgVars'; import { useAppDataStore } from '@/_stores/appDataStore'; +import { ManageGroupPermissionsV2 } from '@/ManageGroupPermissionsV2/ManageGroupPermissionsV2'; const AppWrapper = (props) => { const { isAppDarkMode } = useAppDarkMode(); @@ -275,6 +276,14 @@ class AppComponent extends React.Component { } /> + + + + } + /> } diff --git a/frontend/src/ManageGranularAccess/index.jsx b/frontend/src/ManageGranularAccess/index.jsx new file mode 100644 index 0000000000..61900381b8 --- /dev/null +++ b/frontend/src/ManageGranularAccess/index.jsx @@ -0,0 +1,193 @@ +import { ButtonSolid } from '@/_ui/AppButton/AppButton'; +import SolidIcon from '@/_ui/Icon/SolidIcons'; +import ModalBase from '@/_ui/Modal'; +import { AppsSelect } from '@/_ui/Modal/AppsSelect'; +import Multiselect from '@/_ui/Multiselect/Multiselect'; +import React from 'react'; +import { OverlayTrigger } from 'react-bootstrap'; +import { withTranslation } from 'react-i18next'; + +class ManageGranularAccessComponent extends React.Component { + constructor(props) { + super(props); + + this.state = { + isEmpty: true, + showAddPermissionModal: false, + errors: {}, + values: {}, + customSelected: true, + selectedApps: [], + }; + } + + openAddPermissionModal = () => this.setState({ showAddPermissionModal: true }); + + clsoseAddPermissionModal = () => this.setState({ showAddPermissionModal: false }); + + setSelectedApps = (values) => this.setState({ selectedApps: values }); + + render() { + const { isEmpty, showAddPermissionModal, errors, selectedApps } = this.state; + const apps = [ + { name: 'App 1', value: 'App1', label: 'app 1' }, + { name: 'App Long name 1', value: 'App2', label: 'app long name 1' }, + { name: 'App very long name', value: 'App3', label: 'app very long name' }, + { name: 'App 4', value: 'App4', label: 'app 4' }, + { name: 'App5veryverylongname', value: 'App5veryverylongname', label: 'App5veryverylongname' }, + { name: 'App 6', value: 'App6', label: '6' }, + { name: 'App 7', value: 'App 7', label: 'app 7' }, + { name: 'App 8', value: 'App 8', label: 'app 8' }, + { name: 'App 9', value: 'App 9', label: 'app 9' }, + { name: 'App 10', value: 'App 10', label: 'app 10' }, + { name: 'App 11', value: 'App 11', label: 'app 11' }, + { name: 'App 12', value: 'App 12', label: 'app 12' }, + ]; + + return ( +
+ + + + +
+ Add app permissions +
+
+ } + confirmBtnProps={{ title: 'Add', iconLeft: 'plus' }} + darkMode={this.props.darkMode} + > +
+ +
+ + {errors['permissionName']} +
+
+
Permission name must be unique and max 50 characters
+
+
+
+ +
+
+ +
+
+ + +
+
+
+
+ +
+ + + +
+
+ + {isEmpty ? ( +
+
+ +
+

No permissions added yet

+

+ Add assets to configure granular, asset-level permissions for this user group +

+ + { + this.openAddPermissionModal(); + }} + > + Apps + +
+ } + > +
+ { + // this.openChangeRoleModal(user); + }} + > + Add permission + +
+ + + ) : ( +
+ )} + + ); + } +} + +export const ManageGranularAccess = withTranslation()(ManageGranularAccessComponent); diff --git a/frontend/src/ManageGroupPermissionResourcesV2/index.jsx b/frontend/src/ManageGroupPermissionResourcesV2/index.jsx new file mode 100644 index 0000000000..1333b474e8 --- /dev/null +++ b/frontend/src/ManageGroupPermissionResourcesV2/index.jsx @@ -0,0 +1,1005 @@ +import React from 'react'; +import cx from 'classnames'; +import { groupPermissionService } from '@/_services'; +import { toast } from 'react-hot-toast'; +import { Link } from 'react-router-dom'; +import { withTranslation } from 'react-i18next'; +import ErrorBoundary from '@/Editor/ErrorBoundary'; +import { Loader } from '../ManageSSO/Loader'; +import SolidIcon from '@/_ui/Icon/solidIcons/index'; +import BulkIcon from '@/_ui/Icon/bulkIcons/index'; +import Multiselect from '@/_ui/Multiselect/Multiselect'; +import { FilterPreview, MultiSelectUser } from '@/_components'; +import { ButtonSolid } from '@/_ui/AppButton/AppButton'; +import ModalBase from '@/_ui/Modal'; +import Select from '@/_ui/Select'; +import { ManageGranularAccess } from '@/ManageGranularAccess'; + +class ManageGroupPermissionResourcesComponent extends React.Component { + constructor(props) { + super(props); + + this.state = { + isLoadingGroup: true, + isLoadingApps: true, + isAddingApps: false, + isLoadingUsers: true, + isAddingUsers: false, + groupPermission: null, + usersInGroup: [], + appsInGroup: [], + usersNotInGroup: [], + appsNotInGroup: [], + selectedAppIds: [], + removeAppIds: [], + currentTab: 'users', + selectedUsers: [], + isChangeRoleModalOpen: false, + updatingUserRole: null, + isAddUsersToRoleModalOpen: false, + }; + } + + componentDidMount() { + if (this.props.groupPermissionId) this.fetchGroupAndResources(this.props.groupPermissionId); + } + + componentDidUpdate(prevProps) { + if (this.props.groupPermissionId && this.props.groupPermissionId !== prevProps.groupPermissionId) { + this.fetchGroupAndResources(this.props.groupPermissionId); + } + } + + fetchGroupPermission = (groupPermissionId) => { + groupPermissionService.getGroup(groupPermissionId).then((data) => { + this.setState((prevState) => { + return { + groupPermission: data, + currentTab: prevState.currentTab, + isLoadingGroup: false, + }; + }); + }); + }; + + fetchGroupAndResources = (groupPermissionId) => { + this.setState({ isLoadingGroup: true }); + this.fetchGroupPermission(groupPermissionId); + this.fetchUsersInGroup(groupPermissionId); + this.fetchAppsNotInGroup(groupPermissionId); + this.fetchAppsInGroup(groupPermissionId); + }; + + userFullName = (user) => { + return `${user?.first_name} ${user?.last_name ?? ''}`; + }; + + searchUsersNotInGroup = async (query, groupPermissionId) => { + return new Promise((resolve, reject) => { + groupPermissionService + .getUsersNotInGroup(query, groupPermissionId) + .then(({ users }) => { + resolve( + users.map((user) => { + return { + name: `${this.userFullName(user)} (${user.email})`, + value: user.id, + first_name: user.first_name, + last_name: user.last_name, + email: user.email, + }; + }) + ); + }) + .catch(reject); + }); + }; + + fetchUsersInGroup = (groupPermissionId) => { + groupPermissionService.getUsersInGroup(groupPermissionId).then((data) => { + this.setState({ + usersInGroup: data.users, + isLoadingUsers: false, + }); + }); + }; + + fetchAppsNotInGroup = (groupPermissionId) => { + groupPermissionService.getAppsNotInGroup(groupPermissionId).then((data) => { + this.setState({ + appsNotInGroup: data.apps, + }); + }); + }; + + fetchAppsInGroup = (groupPermissionId) => { + groupPermissionService.getAppsInGroup(groupPermissionId).then((data) => { + this.setState({ + appsInGroup: data.apps, + isLoadingApps: false, + }); + }); + }; + + updateGroupPermission = (groupPermissionId, params) => { + groupPermissionService + .update(groupPermissionId, params) + .then(() => { + toast.success('Group permissions updated'); + this.fetchGroupPermission(groupPermissionId); + }) + .catch(({ error }) => { + toast.error(error); + }); + }; + + updateAppGroupPermission = (app, groupPermissionId, action) => { + const appGroupPermission = app.app_group_permissions.find( + (permission) => permission.group_permission_id === groupPermissionId + ); + + let actionParams = { + read: true, + update: action === 'edit', + }; + + if (action === 'hideFromDashboard') { + actionParams['hideFromDashboard'] = !this.canAppGroupPermission(app, groupPermissionId, 'hideFromDashboard'); + } + + if (action === 'edit') actionParams['hideFromDashboard'] = false; + + groupPermissionService + .updateAppGroupPermission(groupPermissionId, appGroupPermission.id, actionParams) + .then(() => { + toast.success('App permissions updated'); + + this.fetchAppsInGroup(groupPermissionId); + }) + .catch(({ error }) => { + toast.error(error); + }); + }; + + canAppGroupPermission = (app, groupPermissionId, action) => { + let appGroupPermission = this.findAppGroupPermission(app, groupPermissionId); + switch (action) { + case 'edit': + return appGroupPermission?.read && appGroupPermission?.update; + case 'view': + return appGroupPermission?.read && !appGroupPermission?.update; + case 'hideFromDashboard': + return appGroupPermission?.read && appGroupPermission?.read_on_dashboard; + default: + return false; + } + }; + + findAppGroupPermission = (app, groupPermissionId) => { + return app.app_group_permissions.find((permission) => permission.group_permission_id === groupPermissionId); + }; + + setSelectedUsers = (value) => { + this.setState({ + selectedUsers: value, + }); + }; + + setSelectedApps = (value) => { + this.setState({ + selectedAppIds: value, + }); + }; + + addSelectedAppsToGroup = (groupPermissionId) => { + this.setState({ isAddingApps: true }); + const updateParams = { + add_apps: this.state.selectedAppIds.map((app) => app.value), + }; + groupPermissionService + .update(groupPermissionId, updateParams) + .then(() => { + this.setState({ + selectedAppIds: [], + isLoadingApps: true, + isAddingApps: false, + }); + this.fetchAppsNotInGroup(groupPermissionId); + this.fetchAppsInGroup(groupPermissionId); + }) + .then(() => { + toast.success('Apps added to the group'); + this.setState({ + selectedApps: [], + }); + }) + .catch(({ error }) => { + toast.error(error); + }); + }; + + removeAppFromGroup = (groupPermissionId, appId, appName) => { + if (window.confirm(`Are you sure you want to delete this app - ${appName}?`) === false) return; + const updateParams = { + remove_apps: [appId], + }; + groupPermissionService + .update(groupPermissionId, updateParams) + .then(() => { + this.setState({ removeAppIds: [], isLoadingApps: true }); + this.fetchAppsNotInGroup(groupPermissionId); + this.fetchAppsInGroup(groupPermissionId); + }) + .then(() => { + toast.success('App removed from the group'); + }) + .catch(({ error }) => { + toast.error(error); + }); + }; + + addSelectedUsersToGroup = (groupPermissionId, selectedUsers) => { + this.setState({ isAddingUsers: true }); + const updateParams = { + add_users: selectedUsers.map((user) => user.value), + }; + groupPermissionService + .update(groupPermissionId, updateParams) + .then(() => { + this.setState({ + selectedUsers: [], + isLoadingUsers: true, + isAddingUsers: false, + }); + this.fetchUsersInGroup(groupPermissionId); + }) + .then(() => { + toast.success('Users added to the group'); + }) + .catch(({ error }) => { + toast.error(error); + }); + }; + + removeUserFromGroup = (groupPermissionId, userId) => { + const updateParams = { + remove_users: [userId], + }; + groupPermissionService + .update(groupPermissionId, updateParams) + .then(() => { + this.setState({ removeUserIds: [], isLoadingUsers: true }); + this.fetchUsersInGroup(groupPermissionId); + }) + .then(() => { + toast.success('User removed from the group'); + }) + .catch(({ error }) => { + toast.error(error); + }); + }; + + removeSelection = (selected, value) => { + const updatedData = selected.filter((d) => d.value !== value); + this.setSelectedUsers([...updatedData]); + }; + + openChangeRoleModal = (updatingUser) => + this.setState({ isChangeRoleModalOpen: true, updatingUserRole: updatingUser }); + + closeChangeRoleModal = () => this.setState({ isChangeRoleModalOpen: false, updatingUserRole: null }); + + toggleAddUsersToRoleModal = () => this.setState({ isAddUsersToRoleModalOpen: !this.state.isAddUsersToRoleModalOpen }); + + render() { + if (!this.props.groupPermissionId) return null; + + const { + isLoadingGroup, + isLoadingApps, + isAddingApps, + isLoadingUsers, + isAddingUsers, + appsInGroup, + appsNotInGroup, + usersInGroup, + groupPermission, + currentTab, + selectedAppIds, + selectedUsers, + isChangeRoleModalOpen, + isAddUsersToRoleModalOpen, + updatingUserRole, + } = this.state; + + const searchSelectClass = this.props.darkMode ? 'select-search-dark' : 'select-search'; + + const folder_permission = groupPermission + ? groupPermission.folder_create && groupPermission.folder_delete && groupPermission.folder_update + : false; + + const appSelectOptions = appsNotInGroup.map((app) => { + return { name: app.name, value: app.id }; + }); + + const orgEnvironmentPermission = groupPermission + ? groupPermission.org_environment_variable_create && + groupPermission.org_environment_variable_update && + groupPermission.org_environment_variable_delete + : false; + + return ( + + + Edit user role +
+ {updatingUserRole?.email} +
+ + } + show={isChangeRoleModalOpen} + handleClose={this.closeChangeRoleModal} + confirmBtnProps={{ title: 'Save changes' }} + darkMode={this.props.darkMode} + > + + { + this.updateAppGroupPermission(app, groupPermission.id, 'view'); + }} + disabled={groupPermission.group === 'admin'} + checked={this.canAppGroupPermission(app, groupPermission.id, 'view')} + data-cy="checkbox-view-app" + /> + + {this.props.t('globals.view', 'view')} + + + + +
+ +
+ + + {groupPermission.group !== 'admin' && ( + { + this.removeAppFromGroup(groupPermission.id, app.id, app.name); + }} + className="delete-link" + > + + Remove + + + )} + + + )) + ) : ( +
+
+ +
+

+ No apps are added to the group +

+ + Add app to the group to control permissions +
for users in this group +
+
+ )} + + )} + + + + + + + {/* Users Tab */} +
+ {groupPermission?.group !== 'all_users' && ( +
+
+ this.searchUsersNotInGroup(query, groupPermission.id)} + selectedValues={selectedUsers} + onReset={() => this.setSelectedUsers([])} + placeholder="Select users to add to the group" + searchLabel="Enter name or email" + /> +
+
+ + Add users + +
+
+ )} +
+
+ {groupPermission.group == 'all_users' && ( +
+

+ All users within the workspace are included + in this list. This list cannot be edited. +

+
+ )} +
+

+ User name +

+

+ Email id +

+

{/* DO NOT REMOVE FOR TABLE ALIGNMENT */} +
+
+ {isLoadingGroup || isLoadingUsers ? ( + + +
+
+
+ + +
+ + +
+ + + ) : usersInGroup.length > 0 ? ( + usersInGroup.map((user) => ( +
+

+

+ {`${user?.first_name?.[0] ?? ''} ${user?.last_name?.[0] ?? ''}`} +
+ {`${user?.first_name ?? ''} ${user?.last_name ?? ''}`} +

+

+ {user.email} +

+

+ {groupPermission.group !== 'all_users' && ( + + { + this.removeUserFromGroup(groupPermission.id, user.id); + }} + > + {this.props.t('globals.delete', 'Delete')} + + + )} +

+

+ { + this.openChangeRoleModal(user); + }} + > + Edit role + +

+
+ )) + ) : ( +
+
+ +
+

+ No users added yet +

+ + Add users to this group to configure +
permissions for them! +
+
+ )} +
+
+
+ + {/* Permissions Tab */} + + + + {/* Granular Access */} + + + + + )} + +
+ ); + } +} + +export const ManageGroupPermissionResourcesV2 = withTranslation()(ManageGroupPermissionResourcesComponent); diff --git a/frontend/src/ManageGroupPermissionsV2/ManageGroupPermissionsV2.jsx b/frontend/src/ManageGroupPermissionsV2/ManageGroupPermissionsV2.jsx new file mode 100644 index 0000000000..c334f0ea18 --- /dev/null +++ b/frontend/src/ManageGroupPermissionsV2/ManageGroupPermissionsV2.jsx @@ -0,0 +1,626 @@ +import React from 'react'; +import { groupPermissionService } from '@/_services'; +import { Tooltip } from 'react-tooltip'; +import { ConfirmDialog } from '@/_components'; +import { toast } from 'react-hot-toast'; +import { withTranslation } from 'react-i18next'; +import ErrorBoundary from '@/Editor/ErrorBoundary'; +import Modal from '../HomePage/Modal'; +import { ButtonSolid } from '@/_ui/AppButton/AppButton'; +import FolderList from '@/_ui/FolderList/FolderList'; +import { Loader } from '../ManageSSO/Loader'; +import Popover from 'react-bootstrap/Popover'; +import SolidIcon from '@/_ui/Icon/solidIcons/index'; +import ModalBase from '@/_ui/Modal'; +import OverflowTooltip from '@/_components/OverflowTooltip'; +import { ManageGroupPermissionResourcesV2 } from '@/ManageGroupPermissionResourcesV2'; +class ManageGroupPermissionsComponent extends React.Component { + constructor(props) { + super(props); + + this.state = { + isLoading: true, + groups: [], + creatingGroup: false, + showNewGroupForm: false, + newGroupName: null, + isDeletingGroup: false, + isUpdatingGroupName: false, + showGroupDeletionConfirmation: false, + showGroupNameUpdateForm: false, + groupToBeUpdated: null, + isSaveBtnDisabled: false, + selectedGroupPermissionId: null, + selectedGroup: 'All users', + isDuplicatingGroup: false, + groupDuplicateOption: { addPermission: true, addApps: true, addUsers: true }, + showDuplicateGroupModal: false, + groupToDuplicate: '', + }; + } + + componentDidMount() { + this.fetchGroups(); + } + + findCurrentGroupDetails = (data) => { + let currentUpdatedGroup = data.group_permissions.find((item) => { + return item.group == this.state.newGroupName; + }); + this.setState({ selectedGroup: currentUpdatedGroup.group }); + return currentUpdatedGroup.id; + }; + + duplicateGroup = () => { + const { groupDuplicateOption, groupToDuplicate } = this.state; + this.setState({ isDuplicatingGroup: true, creatingGroup: true }); + groupPermissionService + .duplicate(groupToDuplicate, groupDuplicateOption) + .then((data) => { + this.setState({ + newGroupName: data?.group, + }); + this.fetchGroups('current', () => { + this.setState({ + newGroupName: '', + creatingGroup: false, + selectedGroupPermissionId: data?.id, + selectedGroup: data?.group, + isDuplicatingGroup: false, + showDuplicateGroupModal: false, + groupDuplicateOption: { addPermission: true, addApps: true, addUsers: true }, + }); + }); + + toast.success('Group duplicated successfully!'); + }) + .catch((err) => { + this.setState({ + isDuplicatingGroup: false, + groupDuplicateOption: { addPermission: true, addApps: true, addUsers: true }, + }); + console.error('Error occured in duplicating: ', err); + toast.error('Could not duplicate group.\nPlease try again!'); + }); + }; + + toggleShowDuplicateModal = () => { + this.setState((prevState) => ({ + showDuplicateGroupModal: !prevState.showDuplicateGroupModal, + groupToDuplicate: '', + groupDuplicateOption: { addPermission: true, addApps: true, addUsers: true }, + })); + }; + + renderPopoverContent = (props, compoParam) => { + const { groupName, id } = compoParam; + const deleteGroup = () => { + this.deleteGroup(id); + }; + + const duplicateGroup = () => { + this.showDuplicateDiologBox(id); + }; + + const isDefaultGroup = groupName == 'all_users' || groupName == 'admin'; + + return ( +
+ + +
+ + +
+
+
+ {(groupName == 'all_users' || groupName == 'admin') && ( + + )} +
+ ); + }; + + fetchGroups = (type = 'admin', callback = () => {}) => { + this.setState({ + isLoading: true, + }); + + groupPermissionService + .getGroups() + .then((data) => { + this.setState( + { + groups: data.group_permissions, + isLoading: false, + selectedGroupPermissionId: + type == 'admin' + ? data.group_permissions[0].id + : type == 'current' + ? this.findCurrentGroupDetails(data) + : data.group_permissions.at(-1).id, + }, + callback + ); + }) + .catch(({ error }) => { + toast.error(error); + this.setState({ + isLoading: false, + }); + }); + }; + + changeNewGroupName = (value) => { + this.setState({ + newGroupName: value, + isSaveBtnDisabled: false, + }); + if ((this.state.groupToBeUpdated && this.state.groupToBeUpdated.group === value) || !value) { + this.setState({ + isSaveBtnDisabled: true, + }); + } + }; + + humanizeifDefaultGroupName = (groupName) => { + switch (groupName) { + case 'all_users': + return 'All users'; + + case 'admin': + return 'Admin'; + + default: + return groupName; + } + }; + + createGroup = () => { + this.setState({ creatingGroup: true }); + groupPermissionService + .create(this.state.newGroupName) + .then(() => { + this.setState({ + creatingGroup: false, + showNewGroupForm: false, + newGroupName: null, + selectedGroup: this.state.newGroupName, + }); + toast.success('Group has been created'); + this.fetchGroups('new'); + }) + .catch(({ error }) => { + toast.error(error); + this.setState({ + creatingGroup: false, + showNewGroupForm: true, + }); + }); + }; + + deleteGroup = (groupPermissionId) => { + this.setState({ + showGroupDeletionConfirmation: true, + groupToBeDeleted: groupPermissionId, + }); + }; + + updateGroupName = (groupPermission) => { + this.setState({ + showGroupNameUpdateForm: true, + groupToBeUpdated: groupPermission, + newGroupName: groupPermission.group, + isSaveBtnDisabled: true, + }); + }; + + cancelDeleteGroupDialog = () => { + this.setState({ + isDeletingGroup: false, + groupToBeDeleted: null, + showGroupDeletionConfirmation: false, + }); + }; + + executeGroupDeletion = () => { + this.setState({ isDeletingGroup: true }); + groupPermissionService + .del(this.state.groupToBeDeleted) + .then(() => { + toast.success('Group deleted successfully'); + this.fetchGroups(); + this.setState({ selectedGroup: 'All users', isDeletingGroup: false }); + }) + .catch(({ error }) => { + toast.error(error); + }) + .finally(() => { + this.cancelDeleteGroupDialog(); + }); + }; + + showDuplicateDiologBox = (id) => { + this.setState({ groupToDuplicate: id, showDuplicateGroupModal: true, isDuplicatingGroup: false }); + }; + + executeGroupUpdation = () => { + this.setState({ isUpdatingGroupName: true, selectedGroup: this.state.newGroupName }); + groupPermissionService + .update(this.state.groupToBeUpdated?.id, { name: this.state.newGroupName }) + .then(() => { + toast.success('Group name updated successfully'); + this.fetchGroups('current'); + this.setState({ + isUpdatingGroupName: false, + groupToBeUpdated: null, + showGroupNameUpdateForm: false, + }); + }) + .catch(({ error }) => { + toast.error(error); + this.setState({ + isUpdatingGroupName: false, + }); + }); + }; + + render() { + const { + isLoading, + showNewGroupForm, + showGroupNameUpdateForm, + creatingGroup, + isUpdatingGroupName, + groups, + isDeletingGroup, + showGroupDeletionConfirmation, + showDuplicateGroupModal, + isDuplicatingGroup, + groupDuplicateOption, + } = this.state; + + const { addPermission, addApps, addUsers } = groupDuplicateOption; + const allFalse = [addPermission, addApps, addUsers].every((value) => !value); + + return ( + +
+
+ this.executeGroupDeletion()} + onCancel={() => this.cancelDeleteGroupDialog()} + darkMode={this.props.darkMode} + /> + +
+ Duplicate the following parts of the group +
+
+
+
+ { + this.setState((prevState) => ({ + groupDuplicateOption: { + ...prevState.groupDuplicateOption, + addUsers: !prevState.groupDuplicateOption.addUsers, + }, + })); + }} + data-cy="users-check-input" + /> +
+
+
+ Users +
+
+
+
+
+ { + this.setState((prevState) => ({ + groupDuplicateOption: { + ...prevState.groupDuplicateOption, + addPermission: !prevState.groupDuplicateOption.addPermission, + }, + })); + }} + data-cy="permissions-check-input" + /> +
+
+
+ Permissions +
+
+
+
+
+ { + this.setState((prevState) => ({ + groupDuplicateOption: { + ...prevState.groupDuplicateOption, + addApps: !prevState.groupDuplicateOption.addApps, + }, + })); + }} + data-cy="apps-check-input" + /> +
+
+
+ Apps +
+
+
+
+
+
+

+ {groups?.length} Groups +

+ {!showNewGroupForm && !showGroupNameUpdateForm && ( + { + e.preventDefault(); + this.setState({ newGroupName: null, showNewGroupForm: true, isSaveBtnDisabled: true }); + }} + data-cy="create-new-group-button" + leftIcon="plus" + isLoading={isLoading} + iconWidth="16" + fill={'#FDFDFE'} + > + {this.props.t( + 'header.organization.menus.manageGroups.permissions.createNewGroup', + 'Create new group' + )} + + )} +
+ + + this.setState({ + showNewGroupForm: false, + showGroupNameUpdateForm: false, + newGroupName: null, + }) + } + title={ + showGroupNameUpdateForm + ? this.props.t('header.organization.menus.manageGroups.permissions.updateGroup', 'Update group') + : this.props.t('header.organization.menus.manageGroups.permissions.addNewGroup', 'Add new group') + } + > +
{ + e.preventDefault(); + if (showNewGroupForm) { + this.createGroup(); + } else { + this.executeGroupUpdation(); + } + }} + > +
+
+
+ { + this.changeNewGroupName(e.target.value); + }} + value={this.state.newGroupName} + data-cy="group-name-input" + autoFocus + /> +
+
+
+
+ + this.setState({ + showNewGroupForm: false, + showGroupNameUpdateForm: false, + newGroupName: null, + }) + } + disabled={creatingGroup} + data-cy="cancel-button" + variant="tertiary" + > + {this.props.t('globals.cancel', 'Cancel')} + + + {showGroupNameUpdateForm + ? this.props.t('globals.save', 'Save') + : this.props.t('header.organization.menus.manageGroups.permissions.createGroup', 'Create Group')} + +
+
+
+ + {!showNewGroupForm && !showGroupNameUpdateForm && ( +
+
+
+ + USER ROLE +
+ {groups.map((permissionGroup) => { + return ( + { + this.setState({ + selectedGroupPermissionId: permissionGroup.id, + selectedGroup: this.humanizeifDefaultGroupName(permissionGroup.group), + }); + }} + toolTipText={this.humanizeifDefaultGroupName(permissionGroup.group)} + overLayComponent={this.renderPopoverContent} + className="groups-folder-list" + dataCy={this.humanizeifDefaultGroupName(permissionGroup.group) + .toLowerCase() + .replace(/\s+/g, '-')} + > + + {this.humanizeifDefaultGroupName(permissionGroup.group)} + + + ); + })} +
+ +
+ {isLoading ? ( + + ) : ( + + )} +
+
+ )} +
+
+
+ ); + } +} + +export const ManageGroupPermissionsV2 = withTranslation()(ManageGroupPermissionsComponent); + +const Field = ({ + text, + onClick, + customClass, + leftIcon, + leftIconWidth, + leftIconHeight = '18', + leftIconClassName, + buttonDisable = false, + tooltipContent = '', + tooltipId = '', + darkMode = false, +}) => { + return ( +
+ +
+ {leftIcon && ( + + )} +
+
{text}
+
+
+ ); +}; diff --git a/frontend/src/OrganizationSettingsPage/index.jsx b/frontend/src/OrganizationSettingsPage/index.jsx index accdc7bf1d..f40d07df4c 100644 --- a/frontend/src/OrganizationSettingsPage/index.jsx +++ b/frontend/src/OrganizationSettingsPage/index.jsx @@ -17,13 +17,15 @@ export function OrganizationSettings(props) { const { updateSidebarNAV } = useContext(BreadCrumbContext); const { workspaceId } = useParams(); - const sideBarNavs = ['Users', 'Groups', 'Workspace login', 'Workspace variables']; + const sideBarNavs = ['Users', 'Groups', 'Groups V2', 'Workspace login', 'Workspace variables']; const defaultOrgName = (groupName) => { switch (groupName) { case 'users': return 'Users'; case 'groups': return 'Groups'; + case 'groups2': + return 'Groups V2'; case 'workspace-login': return 'Workspace login'; case 'workspace-variables': diff --git a/frontend/src/_components/MultiSelectUser.jsx b/frontend/src/_components/MultiSelectUser.jsx index 525b340087..28773c1a3c 100644 --- a/frontend/src/_components/MultiSelectUser.jsx +++ b/frontend/src/_components/MultiSelectUser.jsx @@ -19,7 +19,7 @@ function MultiSelectUser({ const listOfOptions = useRef([]); useEffect(() => { - setOptions(filterOptions(listOfOptions.current)); + setOptions(listOfOptions.current); // eslint-disable-next-line react-hooks/exhaustive-deps }, [selectedValues, listOfOptions.current]); @@ -68,7 +68,7 @@ function MultiSelectUser({ ); return (
- + {/* */} +
{children}
+ + ); + }; + + const MultiValue = (props) => ( + +
{props.data.name}
+
+ ); + + const selectStyles = { + indicatorSeparator: (base) => ({ + ...base, + display: 'none', + }), + option: (base) => ({ + ...base, + '.select-option': { + margin: '0px 10px', + }, + }), + multiValue: (base) => ({ + ...base, + borderRadius: '6px', + backgroundColor: 'var(--slate3)', + color: 'var(--slate11)', + '.selected-value': { + padding: '0px 6px 1px 3px', + color: 'var(--slate11)', + }, + }), + multiValueRemove: (base, state) => ({ + ...base, + '&:hover': { + backgroundColor: 'var(--tomato3)', + color: 'var(--tomato9)', + }, + paddingLeft: '0px', + ...(state.data.isFixed && { display: 'none' }), + }), + input: (base) => ({ + ...base, + input: { + height: '25px !important', + color: 'var(--slate11) !important', + }, + }), + control: (base) => ({ + ...base, + outline: 'none', + border: '1px solid var(--slate7)', + boxShadow: 'none', + borderRadius: '6px', + background: 'unset', + '&:hover': { + border: '1px solid var(--slate8)', + }, + }), + menuList: (base) => ({ + ...base, + maxHeight: '200px', + }), + menu: (base) => ({ + ...base, + background: 'var(--slate1)', + '.add-group-btn': { + display: 'flex', + justifyContent: 'flex-end', + padding: '8px', + borderTop: '1px solid var(--slate5)', + '.create-group': { + background: 'none !important', + '.rectangle-add-icon': { + width: '20px', + height: '20px', + }, + }, + }, + }), + }; + + return ( + + { + this.setState((prevState) => ({ + initialPermissionState: { + ...prevState.initialPermissionState, + canEdit: !prevState.initialPermissionState.canEdit, + }, + })); + }} + /> +
Edit Access to app builder @@ -94,14 +381,38 @@ class ManageGranularAccessComponent extends React.Component {
); diff --git a/frontend/src/ManageGroupPermissionResources/ManageGroupPermissionResources.jsx b/frontend/src/ManageGroupPermissionResources/ManageGroupPermissionResources.jsx index a8b5dcd023..c5fd6d775c 100644 --- a/frontend/src/ManageGroupPermissionResources/ManageGroupPermissionResources.jsx +++ b/frontend/src/ManageGroupPermissionResources/ManageGroupPermissionResources.jsx @@ -73,6 +73,8 @@ class ManageGroupPermissionResourcesComponent extends React.Component { groupPermissionService .getUsersNotInGroup(query, groupPermissionId) .then(({ users }) => { + console.log('logging users'); + console.log(users); resolve( users.map((user) => { return { diff --git a/frontend/src/ManageGroupPermissionResourcesV2/constant.js b/frontend/src/ManageGroupPermissionResourcesV2/constant.js new file mode 100644 index 0000000000..a440f15e01 --- /dev/null +++ b/frontend/src/ManageGroupPermissionResourcesV2/constant.js @@ -0,0 +1,64 @@ +import React from 'react'; + +export const EDIT_ROLE_MESSAGE = { + admin: { + builder: () => { + return ( +
+

+ Changing your user group from admin to builder will revoke your access to settings. +

+

Are you sure you want to continue?

+
+ ); + }, + 'end-user': () => { + return ( +
+

+ Changing your user group from admin to end-user will revoke your access to settings. This will also affect + the count of users covered by your plan. +

+

Are you sure you want to continue?

+
+ ); + }, + }, + builder: { + 'end-user': () => { + return ( +
+

+ Changing user default group from builder to end-user will affect the count of users covered by your plan. +

+

+ This will also remove the user from any custom groups with builder-like permissions. +

+

Are you sure you want to continue?

+
+ ); + }, + }, + 'end-user': { + builder: () => { + return ( +
+

+ CChanging user default group from end-user to builder will affect the count of users covered by your plan. +

+

Are you sure you want to continue?

+
+ ); + }, + admin: () => { + return ( +
+

+ CChanging user default group from end-user to admin will affect the count of users covered by your plan. +

+

Are you sure you want to continue?

+
+ ); + }, + }, +}; diff --git a/frontend/src/ManageGroupPermissionResourcesV2/grpPermissionResc.theme.scss b/frontend/src/ManageGroupPermissionResourcesV2/grpPermissionResc.theme.scss new file mode 100644 index 0000000000..9690f4f697 --- /dev/null +++ b/frontend/src/ManageGroupPermissionResourcesV2/grpPermissionResc.theme.scss @@ -0,0 +1,125 @@ +@import '../_styles/colors.scss'; + + +.check-label-disable{ + color: var(--slate10) !important; +} + +.info-container { + display: flex; + width: auto; + height: auto; + padding: 10px 12px 8px 12px; + border: 1px solid var(--slate5); + background: var(--slate2); + border-radius: 6px 6px 6px 6px; + margin-top: 13px; + + + .info-btn { + padding: 0px; + flex: 0 0 24px; + } + + .message { + margin-left: 5px; + display: inline-block; + word-wrap: break-word; + width: auto; + height: auto; + font-size: 12px; + line-height: 13px; + color: var(--slate11); + + p{ + padding: 0; + margin: 0; + } + + .open-git-btn { + margin-top: 5px; + color: var(--indigo9); + font-size: 10px; + font-weight: 500; + display: inline-block; + + .open-icn { + margin-right: 2px; + } + } + } +} + +.search-user-group-btn { + width: 20px; + margin-left: 2px; + margin-right: 7px; + height: 20px; + padding: 0 0; + background: none !important; + background-color: none !important; + box-shadow: none; + +} + + +.searchbox-custom{ + .tj-common-search-input-user { + width: 600px; + .input-icon-addon { + padding-right: 8px; + padding-left: 8px; + + } + + input { + box-sizing: border-box; + display: flex; + flex-direction: row; + align-items: center; + padding: 4px 8px !important; + gap: 16px; + width: 600px !important; + height: 28px !important; + background: var(--base); + border: 1px solid var(--slate7); + border-radius: 6px; + color: var(--slate12); + padding-left: 33px !important; + + + ::placeholder { + color: var(--slate9); + margin-left: 5px !important; + padding-left: 5px !important; + background-color: red !important; + } + + &:hover { + background: var(--slate2); + border: 1px solid var(--slate8); + } + + &:active { + background: var(--indigo2); + border: 2px solid var(--indigo11); + box-shadow: 0px 0px 0px 2px #C6D4F9; + outline: none; + } + + &:focus-visible { + background: var(--slate2); + border: 1px solid var(--slate8); + border-radius: 6px; + outline: none; + padding-left: 12px !important; + } + + &:disabled { + background: var(--slate3); + border: 1px solid var(--slate7); + } + } + } + +} \ No newline at end of file diff --git a/frontend/src/ManageGroupPermissionResourcesV2/index.jsx b/frontend/src/ManageGroupPermissionResourcesV2/index.jsx index 1333b474e8..9b22d8ae7e 100644 --- a/frontend/src/ManageGroupPermissionResourcesV2/index.jsx +++ b/frontend/src/ManageGroupPermissionResourcesV2/index.jsx @@ -1,6 +1,6 @@ import React from 'react'; import cx from 'classnames'; -import { groupPermissionService } from '@/_services'; +import { groupPermissionService, groupPermissionV2Service } from '@/_services'; import { toast } from 'react-hot-toast'; import { Link } from 'react-router-dom'; import { withTranslation } from 'react-i18next'; @@ -14,7 +14,10 @@ import { ButtonSolid } from '@/_ui/AppButton/AppButton'; import ModalBase from '@/_ui/Modal'; import Select from '@/_ui/Select'; import { ManageGranularAccess } from '@/ManageGranularAccess'; - +import './grpPermissionResc.theme.scss'; +import { EDIT_ROLE_MESSAGE } from './constant'; +import { SearchBox } from '@/_components/SearchBox'; +import EditRoleErrorModal from '@/ManageGroupPermissionsV2/ErrorModal/ErrorModal'; class ManageGroupPermissionResourcesComponent extends React.Component { constructor(props) { super(props); @@ -28,6 +31,7 @@ class ManageGroupPermissionResourcesComponent extends React.Component { groupPermission: null, usersInGroup: [], appsInGroup: [], + addableApps: [], usersNotInGroup: [], appsNotInGroup: [], selectedAppIds: [], @@ -37,6 +41,15 @@ class ManageGroupPermissionResourcesComponent extends React.Component { isChangeRoleModalOpen: false, updatingUserRole: null, isAddUsersToRoleModalOpen: false, + isRoleGroup: false, + selectedNewRole: '', + showRoleEditMessage: false, + showUserSearchBox: false, + errorListItems: [], + errorMessage: '', + errorTitle: '', + showEditRoleErrorModal: false, + errorIconName: '', }; } @@ -51,9 +64,10 @@ class ManageGroupPermissionResourcesComponent extends React.Component { } fetchGroupPermission = (groupPermissionId) => { - groupPermissionService.getGroup(groupPermissionId).then((data) => { + groupPermissionV2Service.getGroup(groupPermissionId).then((data) => { this.setState((prevState) => { return { + isRoleGroup: data.type === 'default', groupPermission: data, currentTab: prevState.currentTab, isLoadingGroup: false, @@ -66,8 +80,8 @@ class ManageGroupPermissionResourcesComponent extends React.Component { this.setState({ isLoadingGroup: true }); this.fetchGroupPermission(groupPermissionId); this.fetchUsersInGroup(groupPermissionId); - this.fetchAppsNotInGroup(groupPermissionId); - this.fetchAppsInGroup(groupPermissionId); + // this.fetchAppsNotInGroup(groupPermissionId); + // this.fetchAppsInGroup(groupPermissionId); }; userFullName = (user) => { @@ -76,16 +90,16 @@ class ManageGroupPermissionResourcesComponent extends React.Component { searchUsersNotInGroup = async (query, groupPermissionId) => { return new Promise((resolve, reject) => { - groupPermissionService + groupPermissionV2Service .getUsersNotInGroup(query, groupPermissionId) - .then(({ users }) => { + .then((users) => { resolve( users.map((user) => { return { name: `${this.userFullName(user)} (${user.email})`, value: user.id, - first_name: user.first_name, - last_name: user.last_name, + first_name: user.firstName, + last_name: user.lastName, email: user.email, }; }) @@ -95,10 +109,10 @@ class ManageGroupPermissionResourcesComponent extends React.Component { }); }; - fetchUsersInGroup = (groupPermissionId) => { - groupPermissionService.getUsersInGroup(groupPermissionId).then((data) => { + fetchUsersInGroup = (groupPermissionId, searchString = '') => { + groupPermissionV2Service.getUsersInGroup(groupPermissionId, searchString).then((data) => { this.setState({ - usersInGroup: data.users, + usersInGroup: data, isLoadingUsers: false, }); }); @@ -121,15 +135,35 @@ class ManageGroupPermissionResourcesComponent extends React.Component { }); }; + clearErrorState = () => { + this.setState({ + errorMessage: '', + showEditRoleErrorModal: false, + errorListItems: [], + errorTitle: '', + errorIconName: '', + selectedUsers: [], + isLoadingUsers: false, + isAddingUsers: false, + }); + }; + updateGroupPermission = (groupPermissionId, params) => { - groupPermissionService + groupPermissionV2Service .update(groupPermissionId, params) .then(() => { toast.success('Group permissions updated'); this.fetchGroupPermission(groupPermissionId); }) .catch(({ error }) => { - toast.error(error); + console.log(error); + this.setState({ + errorMessage: error?.error, + showEditRoleErrorModal: true, + errorListItems: error?.data, + errorTitle: 'Cannot add this permission to the group', + errorIconName: 'lock', + }); }); }; @@ -180,6 +214,8 @@ class ManageGroupPermissionResourcesComponent extends React.Component { }; setSelectedUsers = (value) => { + console.log('user value'); + console.log(value); this.setState({ selectedUsers: value, }); @@ -240,36 +276,41 @@ class ManageGroupPermissionResourcesComponent extends React.Component { addSelectedUsersToGroup = (groupPermissionId, selectedUsers) => { this.setState({ isAddingUsers: true }); - const updateParams = { - add_users: selectedUsers.map((user) => user.value), + const body = { + userIds: selectedUsers.map((user) => user.value), + groupId: groupPermissionId, }; - groupPermissionService - .update(groupPermissionId, updateParams) + groupPermissionV2Service + .addUsersInGroups(body) .then(() => { + console.log('this is running'); this.setState({ selectedUsers: [], isLoadingUsers: true, isAddingUsers: false, }); + toast.success('Users added to the group'); this.fetchUsersInGroup(groupPermissionId); }) - .then(() => { - toast.success('Users added to the group'); - }) .catch(({ error }) => { - toast.error(error); + console.log(error); + this.setState({ + showEditRoleErrorModal: true, + errorTitle: error?.title, + errorMessage: error?.error, + errorIconName: 'usergear', + isAddingUsers: false, + }); }); }; - removeUserFromGroup = (groupPermissionId, userId) => { - const updateParams = { - remove_users: [userId], - }; - groupPermissionService - .update(groupPermissionId, updateParams) + removeUserFromGroup = (groupUserId) => { + const { groupPermission } = this.state; + groupPermissionV2Service + .deleteUserFromGroup(groupUserId) .then(() => { this.setState({ removeUserIds: [], isLoadingUsers: true }); - this.fetchUsersInGroup(groupPermissionId); + this.fetchUsersInGroup(groupPermission.id); }) .then(() => { toast.success('User removed from the group'); @@ -279,15 +320,105 @@ class ManageGroupPermissionResourcesComponent extends React.Component { }); }; + showPermissionText = () => { + const { groupPermission } = this.state; + const text = + groupPermission.name === 'admin' + ? 'Admin has edit access to all apps. These are not editable' + : 'End-user can only have permission to view apps'; + return ( +
+

+ {text} + Read Documentation to + know more +

+
+ ); + }; + removeSelection = (selected, value) => { const updatedData = selected.filter((d) => d.value !== value); this.setSelectedUsers([...updatedData]); }; + setErrorState = (state = {}) => { + this.setState({ + ...state, + }); + }; + + updateUserRole = () => { + console.log('logging update user'); + const { updatingUserRole, groupPermission, selectedNewRole } = this.state; + this.setState({ + isLoadingUsers: true, + }); + const body = { + newRole: selectedNewRole, + userId: updatingUserRole.id, + }; + groupPermissionV2Service + .updateUserRole(body) + .then(() => { + this.fetchUsersInGroup(groupPermission.id); + toast.success('Role updated successfully'); + }) + .catch(({ error }) => { + this.setState({ + showEditRoleErrorModal: true, + errorTitle: error?.title ? error?.title : 'Cannot remove last admin', + errorMessage: error.error, + errorIconName: 'usergear', + errorListItems: error.data, + }); + }) + .finally(() => { + this.closeChangeRoleModal(); + }); + }; + closeChangeRoleModal = () => + this.setState({ + isChangeRoleModalOpen: false, + showRoleEditMessage: false, + updatingUserRole: null, + selectedNewRole: null, + isLoadingUsers: false, + }); + + generateSelection = (selected) => { + return selected?.map((d) => { + return ( +
+ this.removeSelection(selected, d.value)} /> +
+ ); + }); + }; + openChangeRoleModal = (updatingUser) => this.setState({ isChangeRoleModalOpen: true, updatingUserRole: updatingUser }); - closeChangeRoleModal = () => this.setState({ isChangeRoleModalOpen: false, updatingUserRole: null }); + showChangeRoleModalMessage = () => { + this.setState({ showRoleEditMessage: true }); + }; + + handleUserSearchInGroup = (e) => { + this.fetchUsersInGroup(this.props.groupPermissionId, e?.target?.value); + }; + + toggleUserTabSearchBox = () => { + this.fetchUsersInGroup(this.props.groupPermissionId); + this.setState((prevState) => ({ + showUserSearchBox: !prevState.showUserSearchBox, + })); + }; + + hand; toggleAddUsersToRoleModal = () => this.setState({ isAddUsersToRoleModalOpen: !this.state.isAddUsersToRoleModalOpen }); @@ -296,40 +427,47 @@ class ManageGroupPermissionResourcesComponent extends React.Component { const { isLoadingGroup, - isLoadingApps, - isAddingApps, isLoadingUsers, isAddingUsers, - appsInGroup, appsNotInGroup, usersInGroup, groupPermission, currentTab, - selectedAppIds, selectedUsers, isChangeRoleModalOpen, isAddUsersToRoleModalOpen, updatingUserRole, + isRoleGroup, + selectedNewRole, + showRoleEditMessage, + showUserSearchBox, + errorListItems, + errorMessage, + errorTitle, + showEditRoleErrorModal, + errorIconName, + addableApps, + granularPermissions, } = this.state; const searchSelectClass = this.props.darkMode ? 'select-search-dark' : 'select-search'; - - const folder_permission = groupPermission - ? groupPermission.folder_create && groupPermission.folder_delete && groupPermission.folder_update - : false; + const showPermissionInfo = isRoleGroup && (groupPermission.name === 'admin' || groupPermission.name === 'end-user'); const appSelectOptions = appsNotInGroup.map((app) => { return { name: app.name, value: app.id }; }); - const orgEnvironmentPermission = groupPermission - ? groupPermission.org_environment_variable_create && - groupPermission.org_environment_variable_update && - groupPermission.org_environment_variable_delete - : false; - return ( + @@ -339,18 +477,48 @@ class ManageGroupPermissionResourcesComponent extends React.Component {
} + handleConfirm={ + EDIT_ROLE_MESSAGE?.[groupPermission?.name]?.[selectedNewRole] && !showRoleEditMessage + ? this.showChangeRoleModalMessage + : this.updateUserRole + } show={isChangeRoleModalOpen} + isLoading={isLoadingUsers} handleClose={this.closeChangeRoleModal} - confirmBtnProps={{ title: 'Save changes' }} + confirmBtnProps={{ title: 'Continue' }} darkMode={this.props.darkMode} > - - group.value !== groupPermission?.name)} + value={selectedNewRole} + width={'100%'} + useMenuPortal={false} + onChange={(selectedOption) => { + this.setState({ + selectedNewRole: selectedOption, + }); + }} + placeholder="Select new role of user" + /> +
+
+ +
+
+
+

+ Users must be always be part of one default group. This will define the user count in your plan. +

+
+
+
+ + )}

{this.props.selectedGroup}

- {(groupPermission.group == 'admin' || groupPermission.group == 'all_users') && ( + {groupPermission.type === 'default' && (

@@ -394,7 +562,7 @@ class ManageGroupPermissionResourcesComponent extends React.Component {

)} - {groupPermission.group !== 'admin' && groupPermission.group !== 'all_users' && ( + {groupPermission.type === 'custom' && (
this.props.updateGroupName(groupPermission)} @@ -456,229 +624,13 @@ class ManageGroupPermissionResourcesComponent extends React.Component { > Granular Access - this.setState({ currentTab: 'apps' })} - className={cx('nav-item nav-link', { active: currentTab === 'apps' })} - data-cy="apps-link" - > - - {this.props.t('header.organization.menus.manageGroups.permissionResources.apps', 'Apps')} -
- {/* Apps Tab */} - -
- {groupPermission?.group !== 'admin' && ( -
-
- -
- -
- this.addSelectedAppsToGroup(groupPermission.id)} - data-cy="add-button" - disabled={selectedAppIds?.length == 0} - iconWidth="16" - fill={selectedAppIds.length != 0 ? '#FDFDFE' : this.props.darkMode ? '#4C5155' : '#C1C8CD'} - isLoading={isAddingApps} - > - Add apps - -
-
- )} -
-
-
- - {groupPermission.group == 'admin' && ( -
-

- Admin has edit access to all apps. These - are not editable -

-
- )} -
-

- App name -

-

- Permissions -

-
- - {isLoadingGroup || isLoadingApps ? ( - - - - - - ) : ( - <> - {appsInGroup?.length > 0 ? ( - appsInGroup.map((app) => ( - - - - - - )) - ) : ( -
-
- -
-

- No apps are added to the group -

- - Add app to the group to control permissions -
for users in this group -
-
- )} - - )} - -
-
-
-
-
-
-
-
-
- {app.name} - -
- - -
-
- -
-
- {groupPermission.group !== 'admin' && ( - { - this.removeAppFromGroup(groupPermission.id, app.id, app.name); - }} - className="delete-link" - > - - Remove - - - )} -
-
-
-
- {/* Users Tab */}
- {groupPermission?.group !== 'all_users' && ( + {!isRoleGroup && (
this.addSelectedUsersToGroup(groupPermission?.id, selectedUsers)} disabled={selectedUsers.length === 0} leftIcon="plus" fill={selectedUsers.length !== 0 ? '#3E63DD' : this.props.darkMode ? '#131620' : '#C1C8CD'} @@ -723,27 +675,50 @@ class ManageGroupPermissionResourcesComponent extends React.Component { Add users
+
+
+
Selected Users:
+ {this.generateSelection(selectedUsers)} +
+
)}
- {groupPermission.group == 'all_users' && ( -
-

- All users within the workspace are included - in this list. This list cannot be edited. + {showUserSearchBox ? ( +

+ +
+ ) : ( +
+ { + e.preventDefault(); + this.toggleUserTabSearchBox(); + }} + size="xsm" + rightIcon="search" + iconWidth="15" + className="search-user-group-btn" + /> +

+ User name

+

+ Email id +

+
{/* DO NOT REMOVE FOR TABLE ALIGNMENT */}
)} -
-

- User name -

-

- Email id -

-

{/* DO NOT REMOVE FOR TABLE ALIGNMENT */} -
+
{isLoadingGroup || isLoadingUsers ? ( @@ -759,53 +734,60 @@ class ManageGroupPermissionResourcesComponent extends React.Component {
- ) : usersInGroup.length > 0 ? ( - usersInGroup.map((user) => ( -
-

-

- {`${user?.first_name?.[0] ?? ''} ${user?.last_name?.[0] ?? ''}`} + ) : usersInGroup.length > 0 || showUserSearchBox ? ( + usersInGroup.map((item) => { + const user = item.user; + const groupUserId = item.id; + console.log(user); + return ( +
+

+

+ {`${user?.firstName?.[0] ?? ''} ${user?.lastName?.[0] ?? ''}`} +
+ {`${user?.firstName ?? ''} ${user?.lastName ?? ''}`} +

+

+ {user.email} +

+
+ {!isRoleGroup && ( + + { + this.removeUserFromGroup(groupUserId); + }} + > + {this.props.t('globals.delete', 'Delete')} + + + )}
- {`${user?.first_name ?? ''} ${user?.last_name ?? ''}`} -

-

- {user.email} -

-

- {groupPermission.group !== 'all_users' && ( - + {isRoleGroup && ( +

{ - this.removeUserFromGroup(groupPermission.id, user.id); + this.openChangeRoleModal(user); }} > - {this.props.t('globals.delete', 'Delete')} + Edit role - +
)} -

-

- { - this.openChangeRoleModal(user); - }} - > - Edit role - -

-
- )) +
+ ); + }) ) : (
@@ -830,13 +812,7 @@ class ManageGroupPermissionResourcesComponent extends React.Component {
- {groupPermission.group == 'admin' && ( -
-

- Admin has all permissions -

-
- )} + {showPermissionInfo && this.showPermissionText()}

{this.props.t( @@ -883,16 +859,19 @@ class ManageGroupPermissionResourcesComponent extends React.Component { type="checkbox" onChange={() => { this.updateGroupPermission(groupPermission.id, { - app_create: !groupPermission.app_create, + appCreate: !groupPermission.appCreate, }); }} - checked={groupPermission.app_create} - disabled={groupPermission.group === 'admin'} + checked={groupPermission.appCreate} + disabled={isRoleGroup} data-cy="app-create-checkbox" /> {this.props.t('globals.create', 'Create')} + + Create apps in this workspace +

@@ -930,13 +912,11 @@ class ManageGroupPermissionResourcesComponent extends React.Component { type="checkbox" onChange={() => { this.updateGroupPermission(groupPermission.id, { - folder_create: !folder_permission, - folder_delete: !folder_permission, - folder_update: !folder_permission, + folderCRUD: !groupPermission.folderCRUD, }); }} - checked={folder_permission} - disabled={groupPermission.group === 'admin'} + checked={groupPermission.folderCRUD} + disabled={isRoleGroup} data-cy="folder-create-checkbox" /> @@ -945,6 +925,9 @@ class ManageGroupPermissionResourcesComponent extends React.Component { 'Create/Update/Delete' )} + + All operations on folders +
@@ -961,13 +944,11 @@ class ManageGroupPermissionResourcesComponent extends React.Component { type="checkbox" onChange={() => { this.updateGroupPermission(groupPermission.id, { - org_environment_variable_create: !orgEnvironmentPermission, - org_environment_variable_update: !orgEnvironmentPermission, - org_environment_variable_delete: !orgEnvironmentPermission, + orgConstantCRUD: !groupPermission.orgConstantCRUD, }); }} - checked={orgEnvironmentPermission} - disabled={groupPermission.group === 'admin'} + checked={groupPermission.orgConstantCRUD} + disabled={isRoleGroup} data-cy="env-variable-checkbox" /> @@ -976,6 +957,9 @@ class ManageGroupPermissionResourcesComponent extends React.Component { 'Create/Update/Delete' )} + + All operations on workspace constants +
@@ -990,7 +974,11 @@ class ManageGroupPermissionResourcesComponent extends React.Component { {/* Granular Access */}
diff --git a/frontend/src/ManageGroupPermissionsV2/ErrorModal/ErrorModal.jsx b/frontend/src/ManageGroupPermissionsV2/ErrorModal/ErrorModal.jsx new file mode 100644 index 0000000000..7571cf8c28 --- /dev/null +++ b/frontend/src/ManageGroupPermissionsV2/ErrorModal/ErrorModal.jsx @@ -0,0 +1,55 @@ +import React from 'react'; +import { Modal } from 'react-bootstrap'; +import { useTranslation } from 'react-i18next'; +import SolidIcon from '@/_ui/Icon/SolidIcons'; +import { ButtonSolid } from '@/_ui/AppButton/AppButton'; +import '../groupPermissions.theme.scss'; + +function EditRoleErrorModal({ + darkMode, + errorTitle = '', + listItems = [], + errorMessage = '', + show = false, + iconName = '', + onClose, +}) { + const { t } = useTranslation(); + + return ( + + +
+ onClose()} + data-cy="close-button" + iconWidth="20" + /> +
+
+ +
+ {errorTitle} +

{errorMessage}

+
+ +
+ {listItems.map((item, index) => ( +
+ {`${index + 1}. ${item}`} +
+ ))} +
+
+
+ ); +} + +export default EditRoleErrorModal; diff --git a/frontend/src/ManageGroupPermissionsV2/ManageGroupPermissionsV2.jsx b/frontend/src/ManageGroupPermissionsV2/ManageGroupPermissionsV2.jsx index c334f0ea18..c72cc5618b 100644 --- a/frontend/src/ManageGroupPermissionsV2/ManageGroupPermissionsV2.jsx +++ b/frontend/src/ManageGroupPermissionsV2/ManageGroupPermissionsV2.jsx @@ -1,5 +1,5 @@ import React from 'react'; -import { groupPermissionService } from '@/_services'; +import { groupPermissionV2Service } from '@/_services'; import { Tooltip } from 'react-tooltip'; import { ConfirmDialog } from '@/_components'; import { toast } from 'react-hot-toast'; @@ -14,6 +14,8 @@ import SolidIcon from '@/_ui/Icon/solidIcons/index'; import ModalBase from '@/_ui/Modal'; import OverflowTooltip from '@/_components/OverflowTooltip'; import { ManageGroupPermissionResourcesV2 } from '@/ManageGroupPermissionResourcesV2'; +import './groupPermissions.theme.scss'; +import { SearchBox } from '@/_components/SearchBox'; class ManageGroupPermissionsComponent extends React.Component { constructor(props) { super(props); @@ -21,6 +23,7 @@ class ManageGroupPermissionsComponent extends React.Component { this.state = { isLoading: true, groups: [], + defaultGroups: [], creatingGroup: false, showNewGroupForm: false, newGroupName: null, @@ -31,11 +34,14 @@ class ManageGroupPermissionsComponent extends React.Component { groupToBeUpdated: null, isSaveBtnDisabled: false, selectedGroupPermissionId: null, - selectedGroup: 'All users', + selectedGroup: 'Admin', isDuplicatingGroup: false, + selectedGroupObject: null, groupDuplicateOption: { addPermission: true, addApps: true, addUsers: true }, showDuplicateGroupModal: false, groupToDuplicate: '', + showGroupSearchBar: false, + filteredGroup: [], }; } @@ -44,45 +50,45 @@ class ManageGroupPermissionsComponent extends React.Component { } findCurrentGroupDetails = (data) => { - let currentUpdatedGroup = data.group_permissions.find((item) => { - return item.group == this.state.newGroupName; + let currentUpdatedGroup = data.find((item) => { + return item.name == this.state.newGroupName; }); - this.setState({ selectedGroup: currentUpdatedGroup.group }); + this.setState({ selectedGroup: currentUpdatedGroup.name }); return currentUpdatedGroup.id; }; - duplicateGroup = () => { - const { groupDuplicateOption, groupToDuplicate } = this.state; - this.setState({ isDuplicatingGroup: true, creatingGroup: true }); - groupPermissionService - .duplicate(groupToDuplicate, groupDuplicateOption) - .then((data) => { - this.setState({ - newGroupName: data?.group, - }); - this.fetchGroups('current', () => { - this.setState({ - newGroupName: '', - creatingGroup: false, - selectedGroupPermissionId: data?.id, - selectedGroup: data?.group, - isDuplicatingGroup: false, - showDuplicateGroupModal: false, - groupDuplicateOption: { addPermission: true, addApps: true, addUsers: true }, - }); - }); + // duplicateGroup = () => { + // const { groupDuplicateOption, groupToDuplicate } = this.state; + // this.setState({ isDuplicatingGroup: true, creatingGroup: true }); + // groupPermissionService + // .duplicate(groupToDuplicate, groupDuplicateOption) + // .then((data) => { + // this.setState({ + // newGroupName: data?.group, + // }); + // this.fetchGroups('current', () => { + // this.setState({ + // newGroupName: '', + // creatingGroup: false, + // selectedGroupPermissionId: data?.id, + // selectedGroup: data?.group, + // isDuplicatingGroup: false, + // showDuplicateGroupModal: false, + // groupDuplicateOption: { addPermission: true, addApps: true, addUsers: true }, + // }); + // }); - toast.success('Group duplicated successfully!'); - }) - .catch((err) => { - this.setState({ - isDuplicatingGroup: false, - groupDuplicateOption: { addPermission: true, addApps: true, addUsers: true }, - }); - console.error('Error occured in duplicating: ', err); - toast.error('Could not duplicate group.\nPlease try again!'); - }); - }; + // toast.success('Group duplicated successfully!'); + // }) + // .catch((err) => { + // this.setState({ + // isDuplicatingGroup: false, + // groupDuplicateOption: { addPermission: true, addApps: true, addUsers: true }, + // }); + // console.error('Error occured in duplicating: ', err); + // toast.error('Could not duplicate group.\nPlease try again!'); + // }); + // }; toggleShowDuplicateModal = () => { this.setState((prevState) => ({ @@ -102,7 +108,7 @@ class ManageGroupPermissionsComponent extends React.Component { this.showDuplicateDiologBox(id); }; - const isDefaultGroup = groupName == 'all_users' || groupName == 'admin'; + const isDefaultGroup = groupName == 'end-user' || groupName == 'admin' || groupName == 'builder'; return (
); }; + sortDefaultGroup = (list) => { + const priority = { + admin: 1, + builder: 2, + 'end-user': 3, + }; + list.sort((a, b) => { + const priorityA = priority[a.name] || 4; // default to 4 if not found + const priorityB = priority[b.name] || 4; // default to 4 if not found + return priorityA - priorityB; + }); + return list; + }; fetchGroups = (type = 'admin', callback = () => {}) => { this.setState({ isLoading: true, }); - groupPermissionService + groupPermissionV2Service .getGroups() .then((data) => { + const groupPermissions = data.groupPermissions; + const defaultGroups = this.sortDefaultGroup(groupPermissions.filter((group) => group.type === 'default')); + console.log('logging group'); + + const currentGroupId = + type == 'admin' + ? defaultGroups[0].id + : type == 'current' + ? this.findCurrentGroupDetails(groupPermissions) + : groupPermissions.at(-1).id; + console.log(groupPermissions.find((group) => group.id === currentGroupId)); this.setState( { - groups: data.group_permissions, + groups: groupPermissions.filter((group) => group.type === 'custom'), + defaultGroups: defaultGroups, + filteredGroup: groupPermissions.filter((group) => group.type === 'custom'), isLoading: false, - selectedGroupPermissionId: - type == 'admin' - ? data.group_permissions[0].id - : type == 'current' - ? this.findCurrentGroupDetails(data) - : data.group_permissions.at(-1).id, + selectedGroupPermissionId: currentGroupId, + selectedGroupObject: groupPermissions.find((group) => group.id === currentGroupId), }, callback ); @@ -188,12 +216,24 @@ class ManageGroupPermissionsComponent extends React.Component { }); }; + handleGroupSearch = (e) => { + const { groups } = this.state; + let filteredGroup = groups; + const value = e?.target?.value; + if (value) { + filteredGroup = groups.filter((group) => group.name.toLowerCase().includes(value.toLowerCase())); + } + this.setState({ + filteredGroup, + }); + }; + changeNewGroupName = (value) => { this.setState({ newGroupName: value, isSaveBtnDisabled: false, }); - if ((this.state.groupToBeUpdated && this.state.groupToBeUpdated.group === value) || !value) { + if ((this.state.groupToBeUpdated && this.state.groupToBeUpdated.name === value) || !value) { this.setState({ isSaveBtnDisabled: true, }); @@ -202,12 +242,12 @@ class ManageGroupPermissionsComponent extends React.Component { humanizeifDefaultGroupName = (groupName) => { switch (groupName) { - case 'all_users': - return 'All users'; - + case 'end-user': + return 'End users'; case 'admin': return 'Admin'; - + case 'builder': + return 'Builders'; default: return groupName; } @@ -215,7 +255,7 @@ class ManageGroupPermissionsComponent extends React.Component { createGroup = () => { this.setState({ creatingGroup: true }); - groupPermissionService + groupPermissionV2Service .create(this.state.newGroupName) .then(() => { this.setState({ @@ -247,7 +287,7 @@ class ManageGroupPermissionsComponent extends React.Component { this.setState({ showGroupNameUpdateForm: true, groupToBeUpdated: groupPermission, - newGroupName: groupPermission.group, + newGroupName: groupPermission.name, isSaveBtnDisabled: true, }); }; @@ -262,7 +302,7 @@ class ManageGroupPermissionsComponent extends React.Component { executeGroupDeletion = () => { this.setState({ isDeletingGroup: true }); - groupPermissionService + groupPermissionV2Service .del(this.state.groupToBeDeleted) .then(() => { toast.success('Group deleted successfully'); @@ -277,13 +317,20 @@ class ManageGroupPermissionsComponent extends React.Component { }); }; + handleGroupSearchClose = () => { + this.setState((prevState) => ({ + showGroupSearchBar: false, + filteredGroup: prevState.groups, + })); + }; + showDuplicateDiologBox = (id) => { this.setState({ groupToDuplicate: id, showDuplicateGroupModal: true, isDuplicatingGroup: false }); }; executeGroupUpdation = () => { this.setState({ isUpdatingGroupName: true, selectedGroup: this.state.newGroupName }); - groupPermissionService + groupPermissionV2Service .update(this.state.groupToBeUpdated?.id, { name: this.state.newGroupName }) .then(() => { toast.success('Group name updated successfully'); @@ -315,6 +362,9 @@ class ManageGroupPermissionsComponent extends React.Component { showDuplicateGroupModal, isDuplicatingGroup, groupDuplicateOption, + defaultGroups, + filteredGroup, + showGroupSearchBar, } = this.state; const { addPermission, addApps, addUsers } = groupDuplicateOption; @@ -525,41 +575,126 @@ class ManageGroupPermissionsComponent extends React.Component { {!showNewGroupForm && !showGroupNameUpdateForm && (
-
- - USER ROLE +
+
+ + USER ROLE +
+ {defaultGroups.map((permissionGroup) => { + return ( + { + this.setState({ + selectedGroupPermissionId: permissionGroup.id, + selectedGroup: this.humanizeifDefaultGroupName(permissionGroup.name), + selectedGroupObject: permissionGroup, + }); + }} + toolTipText={this.humanizeifDefaultGroupName(permissionGroup.name)} + overLayComponent={this.renderPopoverContent} + className="groups-folder-list" + dataCy={this.humanizeifDefaultGroupName(permissionGroup.name) + .toLowerCase() + .replace(/\s+/g, '-')} + > + + {this.humanizeifDefaultGroupName(permissionGroup.name)} + + + ); + })} +
+
+ {!showGroupSearchBar ? ( +
+ + CUSTOM GROUPS +
+ { + e.preventDefault(); + this.setState({ showGroupSearchBar: true }); + }} + size="xsm" + rightIcon="search" + iconWidth="15" + className="create-group-custom" + /> + { + e.preventDefault(); + this.setState({ newGroupName: null, showNewGroupForm: true, isSaveBtnDisabled: true }); + }} + size="sm" + rightIcon="plus" + iconWidth="20" + className="create-group-custom" + /> +
+
+ ) : ( +
+ +
+ )} + + {groups.length ? ( + filteredGroup.map((permissionGroup) => { + return ( + { + this.setState({ + selectedGroupPermissionId: permissionGroup.id, + selectedGroup: this.humanizeifDefaultGroupName(permissionGroup.name), + selectedGroupObject: permissionGroup, + }); + }} + toolTipText={this.humanizeifDefaultGroupName(permissionGroup.name)} + overLayComponent={this.renderPopoverContent} + className="groups-folder-list" + dataCy={this.humanizeifDefaultGroupName(permissionGroup.name) + .toLowerCase() + .replace(/\s+/g, '-')} + > + + {this.humanizeifDefaultGroupName(permissionGroup.name)} + + + ); + }) + ) : ( +
+ + No custom groups added +
+ )}
- {groups.map((permissionGroup) => { - return ( - { - this.setState({ - selectedGroupPermissionId: permissionGroup.id, - selectedGroup: this.humanizeifDefaultGroupName(permissionGroup.group), - }); - }} - toolTipText={this.humanizeifDefaultGroupName(permissionGroup.group)} - overLayComponent={this.renderPopoverContent} - className="groups-folder-list" - dataCy={this.humanizeifDefaultGroupName(permissionGroup.group) - .toLowerCase() - .replace(/\s+/g, '-')} - > - - {this.humanizeifDefaultGroupName(permissionGroup.group)} - - - ); - })}
@@ -570,8 +705,15 @@ class ManageGroupPermissionsComponent extends React.Component { groupPermissionId={this.state.selectedGroupPermissionId} darkMode={this.props.darkMode} selectedGroup={this.state.selectedGroup} + selectedGroupObject={this.state.selectedGroupObject} updateGroupName={this.updateGroupName} deleteGroup={this.deleteGroup} + roleOptions={defaultGroups.map((group) => { + return { + name: this.humanizeifDefaultGroupName(group.name), + value: group.name, + }; + })} /> )}
diff --git a/frontend/src/ManageGroupPermissionsV2/ResourceChip.jsx b/frontend/src/ManageGroupPermissionsV2/ResourceChip.jsx new file mode 100644 index 0000000000..0c3404e430 --- /dev/null +++ b/frontend/src/ManageGroupPermissionsV2/ResourceChip.jsx @@ -0,0 +1,104 @@ +import React, { useEffect, useState, useRef } from 'react'; +import cx from 'classnames'; // Assuming you're using the classnames package +import { humanizeifDefaultGroupName } from '@/_helpers/utils'; +import './groupPermissions.theme.scss'; + +const GroupChipTD = ({ groups = [] }) => { + const [showAllGroups, setShowAllGroups] = useState(false); + const groupsListRef = useRef(); + + useEffect(() => { + const onCloseHandler = (e) => { + if (groupsListRef.current && !groupsListRef.current.contains(e.target)) { + setShowAllGroups(false); + } + }; + + window.addEventListener('click', onCloseHandler); + return () => { + window.removeEventListener('click', onCloseHandler); + }; + }, [showAllGroups]); + + function moveValuesToLast(arr, valuesToMove) { + const validValuesToMove = valuesToMove.filter((value) => arr.includes(value)); + + validValuesToMove.forEach((value) => { + const index = arr.indexOf(value); + if (index !== -1) { + const removedItem = arr.splice(index, 1); + arr.push(removedItem[0]); + } + }); + + return arr; + } + + const orderedArray = groups; + + const toggleAllGroupsList = (e) => { + setShowAllGroups(!showAllGroups); + }; + + const renderGroupChip = (group, index) => ( + + {humanizeifDefaultGroupName(group)} + + ); + + return ( +
{ + orderedArray.length > 2 && toggleAllGroupsList(e); + }} + className={cx('text-muted resource-name-cell', { 'groups-hover': orderedArray.length > 2 })} + ref={groupsListRef} + > +
+ {orderedArray.length === 0 ? ( + renderGroupChip('-', null) + ) : ( + <> +
+ {orderedArray.slice(0, 2).map((group, index) => { + return renderGroupChip(group, index); + })} +
+
+ {orderedArray.slice(2, 4).map((group, index) => { + return renderGroupChip(group, index); + })} +
+ {orderedArray.length > 4 && ( + +
+ +{orderedArray.length - 4} more +
+ {showAllGroups && ( +
+ {orderedArray.slice(2).map((group, index) => renderGroupChip(group, index))} +
+ )} +
+ )} + + {/* orderedArray.slice(0, 2).map((group, index) => { + if (orderedArray.length <= 2) { + return renderGroupChip(group, index); + } + + if (orderedArray.length > 2 && index === 1) { + + } + + return renderGroupChip(group, index); + }) */} + + )} +
+
+ ); +}; + +export default GroupChipTD; diff --git a/frontend/src/ManageGroupPermissionsV2/groupPermissions.theme.scss b/frontend/src/ManageGroupPermissionsV2/groupPermissions.theme.scss new file mode 100644 index 0000000000..0635ab09b5 --- /dev/null +++ b/frontend/src/ManageGroupPermissionsV2/groupPermissions.theme.scss @@ -0,0 +1,311 @@ +@import "../_styles/colors.scss"; + +.default-group-list-container { + margin-bottom: 20px; +} + +.empty-custom-group-info{ + margin-top: 15px; + border-radius: 6px; + border: 1px dashed var(--slate8) !important; + width: 100%; + height: 32px; + + padding: 6px 15px; + display: flex; + flex-direction: row; + + .info-label{ + margin-left: 8px; + color: var(--slate9); + } +} + +.group-title { + font-weight: 500; + color: var(--slate11); + font-size: 12px; + margin-left: 5px; + } + +.create-group-cont { + margin-left:10px ; + margin-right: auto; + display: flex; + flex-direction: row; + .create-group-custom { + width: 20px; + margin-left: 2px; + margin-right: 2px; + height: 20px; + padding: 0 0; + background: none !important; + background-color: none !important; + box-shadow: none; + + } + } + + +.searchbox-custom{ + margin-bottom: 10px; + .tj-common-search-input-group { + .input-icon-addon { + padding-right: 8px; + padding-left: 8px; + + } + + input { + box-sizing: border-box; + display: flex; + flex-direction: row; + align-items: center; + padding: 4px 8px !important; + gap: 16px; + width: 190px !important; + height: 28px !important; + background: var(--base); + border: 1px solid var(--slate7); + border-radius: 6px; + color: var(--slate12); + padding-left: 33px !important; + + + ::placeholder { + color: var(--slate9); + margin-left: 5px !important; + padding-left: 5px !important; + background-color: red !important; + } + + &:hover { + background: var(--slate2); + border: 1px solid var(--slate8); + } + + &:active { + background: var(--indigo2); + border: 2px solid var(--indigo11); + box-shadow: 0px 0px 0px 2px #C6D4F9; + outline: none; + } + + &:focus-visible { + background: var(--slate2); + border: 1px solid var(--slate8); + border-radius: 6px; + outline: none; + padding-left: 12px !important; + } + + &:disabled { + background: var(--slate3); + border: 1px solid var(--slate7); + } + } + } + +} + +.edit-role-modal { + font-family: 'IBM Plex Sans'; + + .modal-dialog { + width: 320px; + } + + .modal-content { + background: linear-gradient(0deg, #FFFFFF, #FFFFFF), + linear-gradient(0deg, #DFE3E6, #DFE3E6); + } + + .modal-header { + justify-content: center !important; + flex-direction: column; + padding: 30px 32px 20px 32px; + border: none; + + .remove-icon-container{ + display: flex; + justify-content: end; + margin-right: 10px; + + .close-btn { + + width: 20px; + margin: 5px 5px 5px 5px; + height: 20px; + padding: 0 0; + background: none !important; + background-color: none !important; + box-shadow: none; + } + } + .icon-class { + display: flex; /* Enable flexbox */ + justify-content: center; /* Center items horizontally */ + align-items: center; /* Center items vertically */ + justify-content: center; + width: 64px; + height: 64px; + background-color: var(--tomato3); + border-radius: 6px; + } + + .header-text { + font-style: normal; + font-weight: 600; + font-size: 16px; + text-align: center; + // line-height: 36px; + margin: 12px 0 5px 0; + } + + p { + font-style: normal; + font-weight: 400; + font-size: 14px; + color: #687076; + text-align: Center; + margin-bottom: 0px; + } + } + + .modal-body { + border: none; + padding: 12px 12px; + margin-left: 15px; + margin-bottom: 10px; + + .item-list { + display: flex; + flex-direction: column; + max-height: 100px; /* Set a fixed height or max-height */ + overflow-y: auto; /* Enable vertical scrolling */ + } + } +} + +.edit-role-modal.dark-mode { + + .modal-footer, + .modal-header { + border-color: #232e3c !important; + + p { + color: rgba(255, 255, 255, 0.5) !important; + } + } + + .modal-body, + .modal-footer, + .modal-header, + .modal-content { + color: white; + background-color: #2b394a; + } + + .modal-content { + border: none; + } +} + + +.resource-name-cell { + transition: 0.3s all; + border-radius: 6px; + max-width: 180px; + position: relative !important; + overflow: visible !important; + + .groups-name-container { + padding-left: 10px; + display: flex; + flex-direction: column; + row-gap: 8px; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + max-height: 200px; + + + .groups-name-row { + display: flex; + column-gap: 8px; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + max-width: 130px; + } + } + + .group-chip { + padding: 2px 8px; + margin: 0; + border-radius: 6px; + background-color: var(--slate3); + color: var(--slate11); + min-height: 24px; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + max-width: 95px; + } + + .all-groups-list { + position: absolute; + width: 100%; + top: 41px; + display: flex; + flex-direction: column; + background: var(--slate1); + align-items: flex-start; + border-radius: 6px; + border: 1px solid var(--slate1); + box-shadow: 0px 4px 6px -2px rgba(16, 24, 40, 0.03), 0px 12px 16px -4px rgba(16, 24, 40, 0.08); + padding: 9px 10px; + gap: 10px; + cursor: default; + max-height: 240px; + overflow: auto; + left: 0px; + z-index: 1; + } +} + +.groups-name-cell[data-active="true"] { + background: var(--gray5) !important; + + .groups-name-container { + padding-left: 6px; + } + + .group-chip { + max-width: unset !important; + } +} + + +.edit-icon-container{ + max-width: 10px; + display: flex; + justify-content: end; + align-items: flex-start; + padding: 0; + height: 100%; + margin-bottom: auto; +} + + +.edit-permission-custom { + width: 20px; + margin-left: 2px; + margin-right: 2px; + height: 20px; + padding: 0 0; + background: none !important; + background-color: none !important; + box-shadow: none; + + } \ No newline at end of file diff --git a/frontend/src/ManageOrgUsers/InviteUsersForm.jsx b/frontend/src/ManageOrgUsers/InviteUsersForm.jsx index 8fe5c71c20..f847ce357d 100644 --- a/frontend/src/ManageOrgUsers/InviteUsersForm.jsx +++ b/frontend/src/ManageOrgUsers/InviteUsersForm.jsx @@ -29,23 +29,38 @@ function InviteUsersForm({ const [activeTab, setActiveTab] = useState(1); const [selectedGroups, setSelectedGroups] = useState([]); const [existingGroups, setExistingGroups] = useState([]); + const customGroups = groups.filter((group) => group.groupType === 'custom'); + const roleGroups = groups.filter((group) => group.groupType === 'default'); + const groupedOptions = [ + { + label: 'default', + options: roleGroups, + }, + { + label: 'custom', + options: customGroups, + }, + ]; const hiddenFileInput = useRef(null); useEffect(() => { if (currentEditingUser && groups.length) { - const { first_name, last_name, email, groups: addedToGroups } = currentEditingUser; + const { first_name, last_name, email, groups: addedToCustomGroups, role_group } = currentEditingUser; + const addedToGroups = [...addedToCustomGroups, ...role_group]; setUserValues({ fullName: `${first_name}${last_name && ` ${last_name}`}`, email: email, }); const preSelectedGroups = groups - .filter((group) => addedToGroups.includes(group.value)) + .filter((group) => addedToGroups.map((group) => group.name).includes(group.value)) .map((filteredGroup) => ({ ...filteredGroup, label: filteredGroup.name, })); - setExistingGroups(groups.filter((group) => addedToGroups.includes(group.value)).map((g) => g.value)); + setExistingGroups( + groups.filter((group) => addedToCustomGroups.map((gp) => gp.name).includes(group.value)).map((g) => g.id) + ); onChangeHandler(preSelectedGroups); } }, [currentEditingUser, groups]); @@ -65,28 +80,38 @@ function InviteUsersForm({ }; const onChangeHandler = (items) => { - setSelectedGroups(items); + let finalGroup = items; + const roleGroups = items.filter((group) => group.groupType === 'default'); + const currentRole = selectedGroups.find((group) => group.groupType === 'default'); + if (roleGroups.length == 2) { + finalGroup = items.filter((group) => group.value !== currentRole.value); + } + setSelectedGroups(finalGroup); }; const handleCreateUser = (e) => { e.preventDefault(); - const selectedGroupsIds = selectedGroups.map((group) => group.value); - manageUser(currentEditingUser?.id, selectedGroupsIds); + const role = selectedGroups.find((group) => group.groupType === 'default').value; + const selectedGroupsIds = selectedGroups.filter((group) => group.groupType !== 'default').map((group) => group.id); + manageUser(currentEditingUser?.id, selectedGroupsIds, role); }; const handleEditUser = (e) => { e.preventDefault(); - const selectedGroupsIds = selectedGroups.map((group) => group.value); - const newGroupsToAdd = selectedGroupsIds.filter((selectedGroupId) => !existingGroups.includes(selectedGroupId)); - const groupsToRemove = existingGroups.filter((existingGroup) => !selectedGroupsIds.includes(existingGroup)); - manageUser(currentEditingUser.id, selectedGroupsIds, newGroupsToAdd, groupsToRemove); + const { newGroupsToAdd, groupsToRemove, selectedGroupsIds, role } = getEditedGroups(); + manageUser(currentEditingUser.id, selectedGroupsIds, role, newGroupsToAdd, groupsToRemove); }; const getEditedGroups = () => { - const selectedGroupsIds = selectedGroups.map((group) => group.value); + let role = null; + if (currentEditingUser) + role = selectedGroups.find( + (group) => group.groupType === 'default' && !currentEditingUser.role_group.includes(group.value) + )?.value; + const selectedGroupsIds = selectedGroups.filter((group) => group.groupType !== 'default').map((group) => group.id); const newGroupsToAdd = selectedGroupsIds.filter((selectedGroupId) => !existingGroups.includes(selectedGroupId)); const groupsToRemove = existingGroups.filter((existingGroup) => !selectedGroupsIds.includes(existingGroup)); - return { newGroupsToAdd, groupsToRemove }; + return { newGroupsToAdd, groupsToRemove, selectedGroupsIds, role }; }; const isEdited = () => { @@ -100,6 +125,8 @@ function InviteUsersForm({ }; const isEditing = userDrawerMode === USER_DRAWER_MODES.EDIT; + const containRoleGroup = + selectedGroups.filter((item) => ['admin', 'end-user', 'builder'].includes(item.value)).length > 0; return (
@@ -216,7 +243,7 @@ function InviteUsersForm({ ? 'User groups' : t('header.organization.menus.manageUsers.selectGroup', 'Select Group')} - +
@@ -274,7 +301,7 @@ function InviteUsersForm({ form={activeTab == 1 ? 'inviteByEmail' : 'inviteBulkUsers'} type="submit" variant="primary" - disabled={uploadingUsers || creatingUser || !isEdited()} + disabled={uploadingUsers || creatingUser || !isEdited() || !containRoleGroup} data-cy={activeTab == 1 ? 'button-invite-users' : 'button-upload-users'} leftIcon={activeTab == 1 ? 'sent' : 'fileupload'} width="20" diff --git a/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx b/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx index 41d81b7fcf..45f26a37cc 100644 --- a/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx +++ b/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx @@ -127,6 +127,7 @@ class ManageOrgUsersComponent extends React.Component { }); }; + //Need to work on that inviteBulkUsers = (event) => { event.preventDefault(); if (this.handleFileValidation()) { @@ -170,7 +171,7 @@ class ManageOrgUsersComponent extends React.Component { }); }; - manageUser = (currentOrgUserId, selectedGroups, groupsToAdd, groupsToRemove) => { + manageUser = (currentOrgUserId, selectedGroups, role, groupsToAdd, groupsToRemove) => { const isEditing = this.state.userDrawerMode === USER_DRAWER_MODES.EDIT; if (this.handleValidation()) { if (!this.state.fields.fullName?.trim()) { @@ -193,11 +194,13 @@ class ManageOrgUsersComponent extends React.Component { last_name: this.state.fields.lastName, email: this.state.fields.email, groups: selectedGroups, + role: role, }; const updateUserBody = { addGroups: groupsToAdd, removeGroups: groupsToRemove, + role: role, }; service(currentOrgUserId, isEditing ? updateUserBody : createUserBody) .then(() => { @@ -212,7 +215,7 @@ class ManageOrgUsersComponent extends React.Component { }); }) .catch(({ error }) => { - toast.error(error); + toast.error(error.error); this.setState({ creatingUser: false }); }); } else { diff --git a/frontend/src/ManageOrgUsers/ManageOrgUsersDrawer.jsx b/frontend/src/ManageOrgUsers/ManageOrgUsersDrawer.jsx index 398239cdb1..e34a2f1a03 100644 --- a/frontend/src/ManageOrgUsers/ManageOrgUsersDrawer.jsx +++ b/frontend/src/ManageOrgUsers/ManageOrgUsersDrawer.jsx @@ -1,7 +1,7 @@ import React, { useEffect, useState } from 'react'; import Drawer from '@/_ui/Drawer'; import InviteUsersForm from './InviteUsersForm'; -import { groupPermissionService } from '@/_services'; +import { groupPermissionService, groupPermissionV2Service } from '@/_services'; import { authenticationService } from '../_services/authentication.service'; import { USER_DRAWER_MODES } from '@/_helpers/utils'; @@ -27,11 +27,13 @@ const ManageOrgUsersDrawer = ({ const humanizeifDefaultGroupName = (groupName) => { switch (groupName) { - case 'all_users': - return 'All users'; + case 'end-user': + return 'End users'; case 'admin': return 'Admin'; + case 'builder': + return 'Builders'; default: return groupName; @@ -41,19 +43,17 @@ const ManageOrgUsersDrawer = ({ const fetchOrganizations = () => { const { current_organization_id } = authenticationService.currentSessionValue; - groupPermissionService + groupPermissionV2Service .getGroups() - .then(({ group_permissions }) => { - const orgGroups = group_permissions - .filter((group) => group.organization_id === current_organization_id) - .map(({ group }) => ({ - label: - group === 'all_users' && isEditing - ? `${humanizeifDefaultGroupName(group)} (Default group)` - : humanizeifDefaultGroupName(group), - name: humanizeifDefaultGroupName(group), - value: group, - ...(group === 'all_users' && isEditing && { isDisabled: true, isFixed: true }), + .then(({ groupPermissions }) => { + const orgGroups = groupPermissions + .filter((group) => group.organizationId === current_organization_id) + .map(({ name, type, id }) => ({ + label: humanizeifDefaultGroupName(name), + name: humanizeifDefaultGroupName(name), + value: name, + groupType: type, + id: id, })); setGroups(orgGroups); }) diff --git a/frontend/src/ManageOrgUsers/UserGroupsSelect.jsx b/frontend/src/ManageOrgUsers/UserGroupsSelect.jsx index 99a67c1e1e..690b19bec1 100644 --- a/frontend/src/ManageOrgUsers/UserGroupsSelect.jsx +++ b/frontend/src/ManageOrgUsers/UserGroupsSelect.jsx @@ -3,6 +3,7 @@ import { ButtonSolid } from '@/_ui/AppButton/AppButton'; import React, { useState } from 'react'; import { useNavigate } from 'react-router-dom'; import Select, { components } from 'react-select'; +import SolidIcon from '@/_ui/Icon/solidIcons/index'; export function UserGroupsSelect(props) { const navigate = useNavigate(); @@ -30,12 +31,24 @@ export function UserGroupsSelect(props) { ); }; - const InputOption = ({ getStyles, Icon, isDisabled, isFocused, isSelected, children, innerProps, ...rest }) => { + const formatGroupLabel = (data) => { + const type = data.label; + return ( +
+ + {type === 'default' ? 'USER ROLE' : 'CUSTOM GROUP'} + {type === 'default' && *} +
+ ); + }; + + const InputOption = ({ getStyles, Icon, isDisabled, isFocused, isSelected, children, data, innerProps, ...rest }) => { const [isActive, setIsActive] = useState(false); const onMouseDown = () => setIsActive(true); const onMouseUp = () => setIsActive(false); const onMouseLeave = () => setIsActive(false); - + console.log(data); + console.log('logginf value'); const style = { alignItems: 'center', backgroundColor: 'transparent', @@ -50,7 +63,6 @@ export function UserGroupsSelect(props) { onMouseLeave, style, }; - return ( item.value === option.value)} onClick={(e) => { onSelect([...selectedValues, option]); }} @@ -76,7 +76,7 @@ function MultiSelectUser({ closeOnSelect={false} search={true} multiple - value={{ name: '' }} + value={selectedValues} onChange={(id, value) => onSelect([...selectedValues, ...value])} placeholder={placeholder} debounce={onSearch ? 300 : undefined} diff --git a/frontend/src/_components/OrganizationLogin/OrganizationLogin.jsx b/frontend/src/_components/OrganizationLogin/OrganizationLogin.jsx index e82cfddf22..3c2eb1981f 100644 --- a/frontend/src/_components/OrganizationLogin/OrganizationLogin.jsx +++ b/frontend/src/_components/OrganizationLogin/OrganizationLogin.jsx @@ -319,7 +319,7 @@ class OrganizationLogin extends React.Component {
- Users will be able to sign up without being invited + Users will be able to sign up as end-users without being invited
diff --git a/frontend/src/_components/SearchBox.jsx b/frontend/src/_components/SearchBox.jsx index 4ee201d226..ec52e37fa1 100644 --- a/frontend/src/_components/SearchBox.jsx +++ b/frontend/src/_components/SearchBox.jsx @@ -38,12 +38,24 @@ export const SearchBox = forwardRef( onClearCallback?.(); }; + const handleClickOutside = (event) => { + if (ref.current && !ref.current.contains(event.target)) { + clearSearchText(); + // Your function to be triggered + } + }; + const mounted = useMounted(); useEffect(() => { + document.addEventListener('mousedown', handleClickOutside); if (mounted) { onSubmit?.(debouncedSearchTerm); } + return () => { + // Cleanup event listener on component unmount + document.removeEventListener('mousedown', handleClickOutside); + }; // eslint-disable-next-line react-hooks/exhaustive-deps }, [debouncedSearchTerm, onSubmit]); diff --git a/frontend/src/_helpers/utils.js b/frontend/src/_helpers/utils.js index 172ec51734..305c8a6118 100644 --- a/frontend/src/_helpers/utils.js +++ b/frontend/src/_helpers/utils.js @@ -1204,11 +1204,13 @@ export const USER_DRAWER_MODES = { export const humanizeifDefaultGroupName = (groupName) => { switch (groupName) { - case 'all_users': - return 'All users'; + case 'end-user': + return 'End users'; case 'admin': return 'Admin'; + case 'builder': + return 'Builders'; default: return groupName; diff --git a/frontend/src/_services/groupPermission.v2.service.js b/frontend/src/_services/groupPermission.v2.service.js index f9e81ed0e8..f7db238227 100644 --- a/frontend/src/_services/groupPermission.v2.service.js +++ b/frontend/src/_services/groupPermission.v2.service.js @@ -2,22 +2,30 @@ import config from 'config'; import { authHeader, handleResponse } from '@/_helpers'; export const groupPermissionV2Service = { - // create, - // update, - // del, - // getGroup, + create, + update, + del, + getGroup, getGroups, + fetchAddableApps, // getAppsInGroup, // getAppsNotInGroup, - // getUsersInGroup, - // getUsersNotInGroup, + getUsersInGroup, + getUsersNotInGroup, + updateUserRole, + addUsersInGroups, + deleteUserFromGroup, + createGranularPermission, + fetchGranularPermissions, + deleteGranularPermission, + updateGranularPermission, // updateAppGroupPermission, // duplicate, }; -function create(group) { +function create(name) { const body = { - group, + name, }; const requestOptions = { @@ -26,7 +34,7 @@ function create(group) { credentials: 'include', body: JSON.stringify(body), }; - return fetch(`${config.apiUrl}/group_permissions`, requestOptions).then(handleResponse); + return fetch(`${config.apiUrl}/v2/group_permissions`, requestOptions).then(handleResponse); } function update(groupPermissionId, body) { @@ -36,7 +44,7 @@ function update(groupPermissionId, body) { credentials: 'include', body: JSON.stringify(body), }; - return fetch(`${config.apiUrl}/group_permissions/${groupPermissionId}`, requestOptions).then(handleResponse); + return fetch(`${config.apiUrl}/v2/group_permissions/${groupPermissionId}`, requestOptions).then(handleResponse); } function del(groupPermissionId) { @@ -45,7 +53,7 @@ function del(groupPermissionId) { headers: authHeader(), credentials: 'include', }; - return fetch(`${config.apiUrl}/group_permissions/${groupPermissionId}`, requestOptions).then(handleResponse); + return fetch(`${config.apiUrl}/v2/group_permissions/${groupPermissionId}`, requestOptions).then(handleResponse); } function getGroup(groupPermissionId) { @@ -54,7 +62,18 @@ function getGroup(groupPermissionId) { headers: authHeader(), credentials: 'include', }; - return fetch(`${config.apiUrl}/group_permissions/${groupPermissionId}`, requestOptions).then(handleResponse); + return fetch(`${config.apiUrl}/v2/group_permissions/${groupPermissionId}`, requestOptions).then(handleResponse); +} + +function fetchAddableApps() { + const requestOptions = { + method: 'GET', + headers: authHeader(), + credentials: 'include', + }; + return fetch(`${config.apiUrl}/v2/group_permissions/granular-permissions/addable-apps`, requestOptions).then( + handleResponse + ); } function getGroups() { @@ -66,6 +85,67 @@ function getGroups() { return fetch(`${config.apiUrl}/v2/group_permissions`, requestOptions).then(handleResponse); } +function addUsersInGroups(body) { + const requestOptions = { + method: 'POST', + headers: authHeader(), + credentials: 'include', + body: JSON.stringify(body), + }; + return fetch(`${config.apiUrl}/v2/group_permissions/group-user`, requestOptions).then(handleResponse); +} + +function deleteUserFromGroup(id) { + const requestOptions = { + method: 'DELETE', + headers: authHeader(), + credentials: 'include', + }; + return fetch(`${config.apiUrl}/v2/group_permissions/group-user/${id}`, requestOptions).then(handleResponse); +} + +function createGranularPermission(body) { + const requestOptions = { + method: 'POST', + headers: authHeader(), + credentials: 'include', + body: JSON.stringify(body), + }; + return fetch(`${config.apiUrl}/v2/group_permissions/granular-permissions`, requestOptions).then(handleResponse); +} + +function updateGranularPermission(id, body) { + const requestOptions = { + method: 'PUT', + headers: authHeader(), + credentials: 'include', + body: JSON.stringify(body), + }; + return fetch(`${config.apiUrl}/v2/group_permissions/granular-permissions/update/${id}`, requestOptions).then( + handleResponse + ); +} + +function deleteGranularPermission(id) { + const requestOptions = { + method: 'DELETE', + headers: authHeader(), + credentials: 'include', + }; + return fetch(`${config.apiUrl}/v2/group_permissions/granular-permissions/${id}`, requestOptions).then(handleResponse); +} + +function fetchGranularPermissions(groupPermissionId) { + const requestOptions = { + method: 'GET', + headers: authHeader(), + credentials: 'include', + }; + return fetch(`${config.apiUrl}/v2/group_permissions/${groupPermissionId}/granular-permissions`, requestOptions).then( + handleResponse + ); +} + function getAppsInGroup(groupPermissionId) { const requestOptions = { method: 'GET', @@ -75,6 +155,16 @@ function getAppsInGroup(groupPermissionId) { return fetch(`${config.apiUrl}/group_permissions/${groupPermissionId}/apps`, requestOptions).then(handleResponse); } +function updateUserRole(body) { + const requestOptions = { + method: 'PUT', + headers: authHeader(), + credentials: 'include', + body: JSON.stringify(body), + }; + return fetch(`${config.apiUrl}/v2/group_permissions/user-role/edit`, requestOptions).then(handleResponse); +} + function getAppsNotInGroup(groupPermissionId) { const requestOptions = { method: 'GET', @@ -86,13 +176,16 @@ function getAppsNotInGroup(groupPermissionId) { ); } -function getUsersInGroup(groupPermissionId) { +function getUsersInGroup(groupPermissionId, searchInput = '') { const requestOptions = { method: 'GET', headers: authHeader(), credentials: 'include', }; - return fetch(`${config.apiUrl}/group_permissions/${groupPermissionId}/users`, requestOptions).then(handleResponse); + return fetch( + `${config.apiUrl}/v2/group_permissions/${groupPermissionId}/group-user?input=${searchInput && searchInput?.trim()}`, + requestOptions + ).then(handleResponse); } function getUsersNotInGroup(searchInput, groupPermissionId) { @@ -102,7 +195,7 @@ function getUsersNotInGroup(searchInput, groupPermissionId) { credentials: 'include', }; return fetch( - `${config.apiUrl}/group_permissions/${groupPermissionId}/addable_users?input=${searchInput.trim()}`, + `${config.apiUrl}/v2/group_permissions/${groupPermissionId}/group-user/addable-users?input=${searchInput.trim()}`, requestOptions ).then(handleResponse); } diff --git a/frontend/src/_services/organization_user.service.js b/frontend/src/_services/organization_user.service.js index d1fb41036b..329ab71f82 100644 --- a/frontend/src/_services/organization_user.service.js +++ b/frontend/src/_services/organization_user.service.js @@ -11,6 +11,7 @@ export const organizationUserService = { }; function create(id, body) { + console.log(body); const requestOptions = { method: 'POST', headers: authHeader(), credentials: 'include', body: JSON.stringify(body) }; return fetch(`${config.apiUrl}/organization_users`, requestOptions).then(handleResponse); } @@ -41,6 +42,7 @@ function unarchive(id) { } function updateOrgUser(id, body) { + console.log(body); const requestOptions = { method: 'PUT', headers: authHeader(), credentials: 'include', body: JSON.stringify(body) }; return fetch(`${config.apiUrl}/organization_users/${id}`, requestOptions).then(handleResponse); } diff --git a/frontend/src/_styles/groups-permissions.scss b/frontend/src/_styles/groups-permissions.scss index dd3f447457..c43542988a 100644 --- a/frontend/src/_styles/groups-permissions.scss +++ b/frontend/src/_styles/groups-permissions.scss @@ -29,6 +29,28 @@ width: 135px; } } + + .permission-body{ + max-height: 370px; + min-height: 370px; + overflow-y: auto; + border-bottom: 1px solid var(--slate5); + + } + + .side-button-cont{ + display: flex; + justify-content: end; + padding-top: 13px; + border: 1px !important; + width: 100%; + height: 20px; + + .add-icon{ + width: 135px; + height: 30px; + } + } } .permission-type { @@ -54,4 +76,15 @@ flex-direction: column; } } +} + + +.delete-icon-cont { + margin-left: 200px; + + .icon-class{ + border: none !important; + background-color: none !important; + + } } \ No newline at end of file diff --git a/frontend/src/_styles/theme.scss b/frontend/src/_styles/theme.scss index 3a79e80151..563722e816 100644 --- a/frontend/src/_styles/theme.scss +++ b/frontend/src/_styles/theme.scss @@ -9503,14 +9503,15 @@ tbody { } .apps-permission-wrap { - height: 72px; + height: auto; justify-content: center; + width: auto; gap: 12px; } .apps-folder-permission-wrap, .apps--variable-permission-wrap { - height: 44px; + height: auto; } .manage-group-permision-header { @@ -9660,13 +9661,13 @@ tbody { border-bottom: 1px solid var(--slate5); p { - width: 272px; + width: 262px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; span { - max-width: 150px; + max-width: 140px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; @@ -9676,6 +9677,14 @@ tbody { &:hover .apps-remove-btn { display: flex; } + + .edit-role-btn{ + margin-left: auto; + margin-right: 20px; + display: flex; + align-items: center; + padding-top: 5px; + } } .manage-group-app-table-body { @@ -9744,7 +9753,7 @@ tbody { border-bottom: 1px solid var(--slate5); width: 612px; height: 36px; - padding: 8px 12px; + padding: 8px 12px 8px 2px; align-items: center; @@ -9754,6 +9763,15 @@ tbody { font-weight: 500; } + .edit-role-btn{ + margin-left: auto; + margin-right: 50px; + display: flex; + width: 20px; + align-items: center; + padding-top: 5px; + } + } .manage-groups-permission-apps, @@ -9779,12 +9797,12 @@ tbody { .apps-variable-permission-wrap, .apps-constant-permission-wrap { gap: 10px; - height: 72px; + height: auto; } .apps-folder-permission-wrap, .apps-variable-permission-wrap { - height: 44px; + height: auto; border-bottom: 1px solid var(--slate5); } diff --git a/frontend/src/_ui/AppButton/AppButton.scss b/frontend/src/_ui/AppButton/AppButton.scss index f55306e1c6..fd116dc458 100644 --- a/frontend/src/_ui/AppButton/AppButton.scss +++ b/frontend/src/_ui/AppButton/AppButton.scss @@ -1,7 +1,7 @@ @import "../../_styles/designtheme.scss"; .tj-base-btn { - box-sizing: border-box; + // box-sizing: border-box; display: flex; flex-direction: row; justify-content: center; diff --git a/frontend/src/_ui/Icon/solidIcons/UserGroups.jsx b/frontend/src/_ui/Icon/solidIcons/UserGroups.jsx new file mode 100644 index 0000000000..3b22d5ebba --- /dev/null +++ b/frontend/src/_ui/Icon/solidIcons/UserGroups.jsx @@ -0,0 +1,39 @@ +import React from 'react'; + +const UserGroup = ({ fill = '#889096', width = '15', className = '', viewBox = '0 0 15 15' }) => ( + + + + + + + + +); + +export default UserGroup; diff --git a/frontend/src/_ui/Modal/AppsSelect.jsx b/frontend/src/_ui/Modal/AppsSelect.jsx index 4707b301c2..002f216999 100644 --- a/frontend/src/_ui/Modal/AppsSelect.jsx +++ b/frontend/src/_ui/Modal/AppsSelect.jsx @@ -9,6 +9,9 @@ export function AppsSelect(props) { const workspaceId = getWorkspaceId(); const darkMode = localStorage.getItem('darkMode') === 'true'; + console.log('Props prinitng'); + console.log(props.options); + //Will be used when workspace routing settings have been merged const Menu = (props) => { return ( @@ -152,8 +155,8 @@ export function AppsSelect(props) { return ( { + type="radio" + onClick={() => { this.updateOnlyGranularPermissions(permissions, { canEdit: !appsPermissions.canEdit, }); }} checked={appsPermissions.canEdit} - disabled={isRoleGroup} + disabled={isRoleGroup || disableEditUpdate} data-cy="app-create-checkbox" /> @@ -577,8 +600,8 @@ class ManageGranularAccessComponent extends React.Component {
-
-
-
Selected Users:
- {this.generateSelection(selectedUsers)} + {selectedUsers.length && ( +
+
+
Selected Users:
+ {this.generateSelection(selectedUsers)} +
-
+ )}
)}
@@ -863,13 +871,17 @@ class ManageGroupPermissionResourcesComponent extends React.Component { }); }} checked={groupPermission.appCreate} - disabled={isRoleGroup} + disabled={disablePermissionUpdate} data-cy="app-create-checkbox" /> {this.props.t('globals.create', 'Create')} - + Create apps in this workspace @@ -883,13 +895,17 @@ class ManageGroupPermissionResourcesComponent extends React.Component { }); }} checked={groupPermission.appDelete} - disabled={isRoleGroup} + disabled={disablePermissionUpdate} data-cy="app-delete-checkbox" /> {this.props.t('globals.delete', 'Delete')} - + Delete any app in this workspace @@ -916,7 +932,7 @@ class ManageGroupPermissionResourcesComponent extends React.Component { }); }} checked={groupPermission.folderCRUD} - disabled={isRoleGroup} + disabled={disablePermissionUpdate} data-cy="folder-create-checkbox" /> @@ -925,7 +941,11 @@ class ManageGroupPermissionResourcesComponent extends React.Component { 'Create/Update/Delete' )} - + All operations on folders @@ -948,7 +968,7 @@ class ManageGroupPermissionResourcesComponent extends React.Component { }); }} checked={groupPermission.orgConstantCRUD} - disabled={isRoleGroup} + disabled={disablePermissionUpdate} data-cy="env-variable-checkbox" /> @@ -957,7 +977,11 @@ class ManageGroupPermissionResourcesComponent extends React.Component { 'Create/Update/Delete' )} - + All operations on workspace constants @@ -978,6 +1002,7 @@ class ManageGroupPermissionResourcesComponent extends React.Component { groupPermissionId={groupPermission.id} groupPermission={groupPermission} setErrorState={this.setErrorState} + updateParentState={this.changeThisComponentState} />
diff --git a/frontend/src/ManageGroupPermissionsV2/ResourceChip.jsx b/frontend/src/ManageGroupPermissionsV2/ResourceChip.jsx index 0c3404e430..afb4d71a51 100644 --- a/frontend/src/ManageGroupPermissionsV2/ResourceChip.jsx +++ b/frontend/src/ManageGroupPermissionsV2/ResourceChip.jsx @@ -53,7 +53,6 @@ const GroupChipTD = ({ groups = [] }) => { orderedArray.length > 2 && toggleAllGroupsList(e); }} className={cx('text-muted resource-name-cell', { 'groups-hover': orderedArray.length > 2 })} - ref={groupsListRef} >
{orderedArray.length === 0 ? ( @@ -72,12 +71,12 @@ const GroupChipTD = ({ groups = [] }) => {
{orderedArray.length > 4 && ( -
+
+{orderedArray.length - 4} more
{showAllGroups && (
- {orderedArray.slice(2).map((group, index) => renderGroupChip(group, index))} + {orderedArray.slice(4).map((group, index) => renderGroupChip(group, index))}
)} diff --git a/frontend/src/ManageGroupPermissionsV2/groupPermissions.theme.scss b/frontend/src/ManageGroupPermissionsV2/groupPermissions.theme.scss index 0635ab09b5..114da44473 100644 --- a/frontend/src/ManageGroupPermissionsV2/groupPermissions.theme.scss +++ b/frontend/src/ManageGroupPermissionsV2/groupPermissions.theme.scss @@ -236,7 +236,7 @@ text-overflow: ellipsis; overflow: hidden; white-space: nowrap; - max-width: 130px; + max-width: 200px; } } @@ -250,13 +250,13 @@ text-overflow: ellipsis; overflow: hidden; white-space: nowrap; - max-width: 95px; + max-width: 100px; } .all-groups-list { position: absolute; width: 100%; - top: 41px; + top: 59px; display: flex; flex-direction: column; background: var(--slate1); @@ -271,6 +271,20 @@ overflow: auto; left: 0px; z-index: 1; + + + .group-chip { + padding: 2px 8px; + margin: 0; + border-radius: 6px; + background-color: var(--slate3); + color: var(--slate11); + min-height: 24px; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + max-width: 200px; + } } } diff --git a/frontend/src/_components/MultiSelectUser.jsx b/frontend/src/_components/MultiSelectUser.jsx index bb278dc2ca..352e433ee7 100644 --- a/frontend/src/_components/MultiSelectUser.jsx +++ b/frontend/src/_components/MultiSelectUser.jsx @@ -35,14 +35,19 @@ function MultiSelectUser({ ); function renderCustom(props, option) { + const valuePresent = selectedValues.some((item) => item.value === option.value); return (
item.value === option.value)} + checked={valuePresent} onClick={(e) => { - onSelect([...selectedValues, option]); + if (!valuePresent) { + onSelect([...selectedValues, option]); + } else { + onSelect([...selectedValues.filter((item) => item.value !== option.value)]); + } }} />
diff --git a/server/src/controllers/group_permissions.controller.v2.ts b/server/src/controllers/group_permissions.controller.v2.ts index c54fb6d25c..5606652f67 100644 --- a/server/src/controllers/group_permissions.controller.v2.ts +++ b/server/src/controllers/group_permissions.controller.v2.ts @@ -183,8 +183,6 @@ export class GroupPermissionsControllerV2 { //Check for license validation first here // What are license validation for this // const { groupId } = createGranularPermissionsDto; - console.log('Updating this'); - console.log(granularPermissionsId); const granularPermissions = await this.granularPermissionsService.get(granularPermissionsId); @@ -193,6 +191,7 @@ export class GroupPermissionsControllerV2 { const group = granularPermissions.group; validateGranularPermissionUpdateOperation(group); return await this.granularPermissionsService.update(granularPermissionsId, { + group: group, organizationId: group.organizationId, updateGranularPermissionDto, }); diff --git a/server/src/modules/seeds/seeds.module.ts b/server/src/modules/seeds/seeds.module.ts index ce35a59567..541816f02f 100644 --- a/server/src/modules/seeds/seeds.module.ts +++ b/server/src/modules/seeds/seeds.module.ts @@ -1,7 +1,9 @@ import { Module } from '@nestjs/common'; import { SeedsService } from '../../services/seeds.service'; +import { UserResourcePermissionsModule } from '@module/user_resource_permissions/user_resource_permissions.module'; @Module({ + imports: [UserResourcePermissionsModule], providers: [SeedsService], exports: [SeedsService], }) diff --git a/server/src/modules/user_resource_permissions/constants/granular-permissions.constant.ts b/server/src/modules/user_resource_permissions/constants/granular-permissions.constant.ts index 5bcade86e5..87c68b238d 100644 --- a/server/src/modules/user_resource_permissions/constants/granular-permissions.constant.ts +++ b/server/src/modules/user_resource_permissions/constants/granular-permissions.constant.ts @@ -39,4 +39,5 @@ export const ERROR_HANDLER = { ADMIN_DEFAULT_GROUP_GRANULAR_PERMISSIONS: 'Cannot create granular permissions of admin group', EDITOR_LEVEL_PERMISSIONS_NOT_ALLOWED: 'End-users can only be granted permission to view apps. If you wish to add this permission, kindly change the following users role from end-user to builder', + EDITOR_LEVEL_PERMISSION_NOT_ALLOWED_END_USER: 'Cannot assign builder level permission to end users', }; diff --git a/server/src/modules/user_resource_permissions/interface/granular-permissions.interface.ts b/server/src/modules/user_resource_permissions/interface/granular-permissions.interface.ts index 5c1e62b4b2..b16cc420e4 100644 --- a/server/src/modules/user_resource_permissions/interface/granular-permissions.interface.ts +++ b/server/src/modules/user_resource_permissions/interface/granular-permissions.interface.ts @@ -2,6 +2,7 @@ import { AppsGroupPermissions } from 'src/entities/apps_group_permissions.entity import { SearchParamItem } from '@helpers/db-utility/db-utility.interface'; import { CreateGranularPermissionDto, UpdateGranularPermissionDto } from '@dto/granular-permissions.dto'; import { GranularPermissions } from 'src/entities/granular_permissions.entity'; +import { GroupPermissions } from 'src/entities/group_permissions.entity'; export interface AppsPermissionDeleteResourceItem { id: string; @@ -20,6 +21,7 @@ export interface AppsGroupPermissionsActions { export type ResourceGroupActions = AppsGroupPermissionsActions; export interface UpdateGranularPermissionObject { + group?: GroupPermissions; organizationId: string; updateGranularPermissionDto: UpdateGranularPermissionDto; } @@ -28,6 +30,7 @@ export type GranularPermissionAddResourceItems = AppsPermissionAddResourceItem[] export type GranularPermissionDeleteResourceItems = AppsPermissionDeleteResourceItem[]; export interface UpdateResourceGroupPermissionsObject { + group?: GroupPermissions; granularPermissions: GranularPermissions; actions: ResourceGroupActions; resourcesToAdd: GranularPermissionAddResourceItems; diff --git a/server/src/modules/user_resource_permissions/services/group-permissions.utility.service.ts b/server/src/modules/user_resource_permissions/services/group-permissions.utility.service.ts index 9ce23b4111..f0ee74a3ed 100644 --- a/server/src/modules/user_resource_permissions/services/group-permissions.utility.service.ts +++ b/server/src/modules/user_resource_permissions/services/group-permissions.utility.service.ts @@ -34,8 +34,6 @@ export class GroupPermissionsUtilityService { } async getAddableUser(user: User, groupId: string, searchInput?: string, manager?: EntityManager) { - console.log('find addable users'); - return await dbTransactionWrap(async (manager: EntityManager) => { console.log(await addableUsersToGroupQuery(groupId, user.organizationId, manager, searchInput).getMany()); diff --git a/server/src/modules/user_resource_permissions/utility/granular-permissios.utility.ts b/server/src/modules/user_resource_permissions/utility/granular-permissios.utility.ts index fb602cf2e9..86aeafdc57 100644 --- a/server/src/modules/user_resource_permissions/utility/granular-permissios.utility.ts +++ b/server/src/modules/user_resource_permissions/utility/granular-permissios.utility.ts @@ -3,7 +3,7 @@ import { USER_ROLE } from '../constants/group-permissions.constant'; import { BadRequestException } from '@nestjs/common'; import { ERROR_HANDLER } from '../constants/granular-permissions.constant'; import { EntityManager, SelectQueryBuilder } from 'typeorm'; -import { GranularPermissionQuerySearchParam } from '../interface/granular-permissions.interface'; +import { GranularPermissionQuerySearchParam, ResourceGroupActions } from '../interface/granular-permissions.interface'; import { GranularPermissions } from 'src/entities/granular_permissions.entity'; export function validateGranularPermissionCreateOperation(group: GroupPermissions) { @@ -16,6 +16,11 @@ export function validateGranularPermissionUpdateOperation(group: GroupPermission throw new BadRequestException(ERROR_HANDLER.ADMIN_DEFAULT_GROUP_GRANULAR_PERMISSIONS); } +export function validateAppResourcePermissionUpdateOperation(group: GroupPermissions, actions: ResourceGroupActions) { + if (group.name === USER_ROLE.END_USER && actions.canEdit) + throw new BadRequestException(ERROR_HANDLER.EDITOR_LEVEL_PERMISSION_NOT_ALLOWED_END_USER); +} + export function getAllGranularPermissionQuery( searchParam: GranularPermissionQuerySearchParam, manager: EntityManager diff --git a/server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts b/server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts index 458351c85c..3f68527077 100644 --- a/server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts +++ b/server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts @@ -83,6 +83,9 @@ export function validateUpdateGroupOperation( const { name } = group; const { name: newName } = updateGroupPermissionDto; + console.log('Printing group'); + console.log(group); + if ( newName && (Object.values(USER_ROLE).includes(newName as USER_ROLE) || group.type == GROUP_PERMISSIONS_TYPE.DEFAULT) @@ -91,8 +94,6 @@ export function validateUpdateGroupOperation( } if ([USER_ROLE.ADMIN, USER_ROLE.END_USER].includes(name as USER_ROLE)) { - console.log('this is running'); - throw new MethodNotAllowedException(ERROR_HANDLER.NON_EDITABLE_GROUP_UPDATE); } } @@ -150,13 +151,14 @@ export function addableUsersToGroupQuery( .select('groupUsers.userId') .from(GroupUsers, 'groupUsers') .innerJoin('groupUsers.group', 'group') - .where('(group.name = :admin OR group.id = :groupId)', { admin: USER_ROLE.ADMIN, groupId }) + .where('group.id = :groupId', { groupId }) .andWhere('group.organizationId = :organizationId', { organizationId }) .getQuery(); return 'users.id NOT IN ' + subQuery; }) - .andWhere(addableUserGetOrConditions(searchInput)); + .andWhere(addableUserGetOrConditions(searchInput)) + .orderBy('users.createdAt', 'DESC'); return query; } diff --git a/server/src/services/granular_permissions.service.ts b/server/src/services/granular_permissions.service.ts index afd8c96023..7fc0af2f99 100644 --- a/server/src/services/granular_permissions.service.ts +++ b/server/src/services/granular_permissions.service.ts @@ -24,9 +24,11 @@ import { ERROR_HANDLER } from '@module/user_resource_permissions/constants/granu import { getAllGranularPermissionQuery, getGranularPermissionQuery, + validateAppResourcePermissionUpdateOperation, } from '@module/user_resource_permissions/utility/granular-permissios.utility'; import { GroupPermissionsUtilityService } from '@module/user_resource_permissions/services/group-permissions.utility.service'; import { GroupApps } from 'src/entities/group_apps.entity'; +import { GroupPermissions } from 'src/entities/group_permissions.entity'; @Injectable() export class GranularPermissionsService { @@ -72,13 +74,14 @@ export class GranularPermissionsService { async update(id: string, updateGranularPermissionsObj: UpdateGranularPermissionObject, manager?: EntityManager) { return await dbTransactionWrap(async (manager: EntityManager) => { const granularPermissions = await this.get(id, manager); - const { organizationId, updateGranularPermissionDto } = updateGranularPermissionsObj; + const { organizationId, updateGranularPermissionDto, group } = updateGranularPermissionsObj; const { isAll, name, resourcesToAdd, resourcesToDelete, actions } = updateGranularPermissionDto; const updateGranularPermission = { isAll: isAll == true ? true : false, ...(name && { name }), }; const updateResource: UpdateResourceGroupPermissionsObject = { + group, granularPermissions, actions, resourcesToDelete, @@ -134,11 +137,13 @@ export class GranularPermissionsService { granularPermissions.groupId, manager ); - if (groupEditors.length && canEdit) throw new BadRequestException({ - message: ERROR_HANDLER.EDITOR_LEVEL_PERMISSIONS_NOT_ALLOWED, - data: groupEditors, + message: { + error: ERROR_HANDLER.EDITOR_LEVEL_PERMISSIONS_NOT_ALLOWED, + data: groupEditors.map((user) => user.email), + title: 'Cannot create permissions', + }, }); const appGRoupPermissions = await manager.save( @@ -181,7 +186,20 @@ export class GranularPermissionsService { manager?: EntityManager ) { return await dbTransactionWrap(async (manager: EntityManager) => { - const { granularPermissions, actions, resourcesToDelete, resourcesToAdd } = UpdateResourceGroupPermissionsObject; + const { + granularPermissions, + actions, + resourcesToDelete, + resourcesToAdd, + group: permissionGroup, + } = UpdateResourceGroupPermissionsObject; + let group: GroupPermissions; + if (permissionGroup) { + group = permissionGroup; + } else { + group = await manager.findOne(GroupPermissions, granularPermissions.groupId); + } + validateAppResourcePermissionUpdateOperation(group, actions); const { canEdit } = actions; const groupEditors = await this.groupPermissionsUtilityService.getRoleUsersList( USER_ROLE.END_USER, @@ -197,8 +215,11 @@ export class GranularPermissionsService { if (groupEditors.length && canEdit) throw new BadRequestException({ - message: ERROR_HANDLER.EDITOR_LEVEL_PERMISSIONS_NOT_ALLOWED, - data: groupEditors, + message: { + error: ERROR_HANDLER.EDITOR_LEVEL_PERMISSIONS_NOT_ALLOWED, + data: groupEditors.map((user) => user.email), + title: 'Cannot update permissions', + }, }); const appsGroupPermissions = await manager.findOne(AppsGroupPermissions, { where: { @@ -207,6 +228,8 @@ export class GranularPermissionsService { }); if (actions) { + if (actions.canEdit) actions.canView = false; + else if (actions.canView) actions.canEdit = false; await manager.update(AppsGroupPermissions, appsGroupPermissions.id, actions); } if (resourcesToDelete?.length) { diff --git a/server/src/services/group_permissions.service.v2.ts b/server/src/services/group_permissions.service.v2.ts index 5bd61b5a27..c6a0e109bc 100644 --- a/server/src/services/group_permissions.service.v2.ts +++ b/server/src/services/group_permissions.service.v2.ts @@ -24,6 +24,7 @@ import { validateUpdateGroupOperation, } from '@module/user_resource_permissions/utility/group-permissions.utility'; import { GroupPermissionsUtilityService } from '@module/user_resource_permissions/services/group-permissions.utility.service'; +import { ResourceType } from '@module/user_resource_permissions/constants/granular-permissions.constant'; @Injectable() export class GroupPermissionsServiceV2 { @@ -100,6 +101,7 @@ export class GroupPermissionsServiceV2 { message: { error: ERROR_HANDLER.UPDATE_EDITABLE_PERMISSION_END_USER_GROUP, data: getEndUsersList?.map((user) => user.email), + title: 'Cannot add this permissions to the group', }, }); } @@ -158,20 +160,23 @@ export class GroupPermissionsServiceV2 { async addGroupUsers(addGroupUserDto: AddGroupUserDto, organizationId: string, manager?: EntityManager) { const { userIds, groupId } = addGroupUserDto; - const group = await this.getGroup(groupId); - validateAddGroupUserOperation(group); + return await dbTransactionWrap(async (manager: EntityManager) => { + const group = await this.getGroup(groupId, manager); + const granularPermission = await this.granularPermissionsService.getAll({ groupId: group.id }, manager); + validateAddGroupUserOperation(group); - return await Promise.all( - userIds.map(async (userId) => { - return await dbTransactionWrap(async (manager: EntityManager) => { + return await Promise.all( + userIds.map(async (userId) => { const user = await getUserDetailQuery(userId, organizationId, manager).getOne(); if (!user) throw new BadRequestException(ERROR_HANDLER.ADD_GROUP_USER_NON_EXISTING_USER); const role = await this.groupPermissionsUtilityService.getUserRole(userId, organizationId, manager); - const editPermissionsPresent = Object.values(group).some( - (value) => typeof value === 'boolean' && value === true - ); - //NEED TO CHECK FOR EDITOR LEVEL PERMISSION IN GRANULAR PERMISSIONS + const editPermissionsPresent = + Object.values(group).some((value) => typeof value === 'boolean' && value === true) || + granularPermission.some((value) => { + return value.type === ResourceType.APP && value.appsGroupPermissions.canEdit; + }); + if (editPermissionsPresent && role.name == USER_ROLE.END_USER) { throw new MethodNotAllowedException({ message: { @@ -182,8 +187,8 @@ export class GroupPermissionsServiceV2 { } return await this.createGroupUser(user, group, manager); - }, manager); - }) - ); + }) + ); + }, manager); } } diff --git a/server/src/services/seeds.service.ts b/server/src/services/seeds.service.ts index d121ef999e..b2cb47ea49 100644 --- a/server/src/services/seeds.service.ts +++ b/server/src/services/seeds.service.ts @@ -3,15 +3,15 @@ import { EntityManager } from 'typeorm/entity-manager/EntityManager'; import { User } from '../entities/user.entity'; import { Organization } from '../entities/organization.entity'; import { OrganizationUser } from '../entities/organization_user.entity'; -import { GroupPermission } from 'src/entities/group_permission.entity'; import { AppEnvironment } from 'src/entities/app_environments.entity'; -import { UserGroupPermission } from 'src/entities/user_group_permission.entity'; import { USER_STATUS, WORKSPACE_USER_STATUS } from 'src/helpers/user_lifecycle'; import { defaultAppEnvironments } from 'src/helpers/utils.helper'; +import { UserRoleService } from './user-role.service'; +import { USER_ROLE } from '@module/user_resource_permissions/constants/group-permissions.constant'; @Injectable() export class SeedsService { - constructor(private readonly entityManager: EntityManager) {} + constructor(private readonly entityManager: EntityManager, private userRoleService: UserRoleService) {} async perform(): Promise { await this.entityManager.transaction(async (manager) => { @@ -85,10 +85,10 @@ export class SeedsService { await manager.save(testUserOrganization); // Save Test user organization mapping - await this.createDefaultUserGroups(manager, user); + await this.createDefaultUserGroups(manager, user, USER_ROLE.ADMIN); + await this.createDefaultUserGroups(manager, testUser, USER_ROLE.BUILDER); // Adding test user to group - this.addToGroup(manager, testUser); console.log( 'Seeding complete. Use default credentials to login.\n' + 'email: dev@tooljet.io\n' + 'password: password' @@ -96,52 +96,9 @@ export class SeedsService { }); } - async createDefaultUserGroups(manager: EntityManager, user: User): Promise { - const defaultGroups = ['all_users', 'admin']; - for (const group of defaultGroups) { - await this.createGroupAndAssociateUser(group, manager, user); - } - } - - async addToGroup(manager: EntityManager, user: User): Promise { - const defaultGroups = ['all_users']; - for (const group of defaultGroups) { - await this.createGroupAndAssociateUser(group, manager, user); - } - } - - async createGroupAndAssociateUser(group: string, manager: EntityManager, user: User): Promise { - //Need to update this for new group permissions - let groupPermission = await manager.findOne(GroupPermission, { - where: { organizationId: user.organizationId, group: group }, - }); - - if (!groupPermission) { - groupPermission = manager.create(GroupPermission, { - organizationId: user.organizationId, - group: group, - appCreate: group == 'admin', - appDelete: group == 'admin', - folderCreate: group == 'admin', - orgEnvironmentVariableCreate: group == 'admin', - orgEnvironmentVariableUpdate: group == 'admin', - orgEnvironmentVariableDelete: group == 'admin', - orgEnvironmentConstantCreate: group == 'admin', - orgEnvironmentConstantDelete: group == 'admin', - folderUpdate: group == 'admin', - folderDelete: group == 'admin', - }); - //Need to update this as well - await manager.save(groupPermission); - } - - const userGroupPermission = manager.create(UserGroupPermission, { - groupPermissionId: groupPermission.id, - userId: user.id, - }); - - //Need to update this as well - await manager.save(userGroupPermission); + async createDefaultUserGroups(manager: EntityManager, user: User, role: USER_ROLE): Promise { + if (role === USER_ROLE.ADMIN) await this.userRoleService.createDefaultGroups(user.organizationId, manager); + await this.userRoleService.addUserRole({ role, userId: user.id }, user.organizationId, manager); } async createDefaultEnvironments(organizationId: string, manager: EntityManager) { diff --git a/server/src/services/user-role.service.ts b/server/src/services/user-role.service.ts index 7e23f245db..0d383c18eb 100644 --- a/server/src/services/user-role.service.ts +++ b/server/src/services/user-role.service.ts @@ -95,9 +95,13 @@ export class UserRoleService { if (userRole.name == USER_ROLE.ADMIN) { const groupUsers = await this.groupPermissionsService.getAllGroupUsers(userRole.id, null, manager); - console.log(groupUsers); - - if (groupUsers.length < 2) throw new BadRequestException(ERROR_HANDLER.EDITING_LAST_ADMIN_ROLE_NOT_ALLOWED); + if (groupUsers.length < 2) + throw new BadRequestException({ + message: { + error: ERROR_HANDLER.EDITING_LAST_ADMIN_ROLE_NOT_ALLOWED, + title: 'Can not remove last active admin', + }, + }); } if (newRole == USER_ROLE.END_USER) { const userCreatedApps = await manager.find(App, { From 88e02bdfd3dbe9897dc6eecf3573f190e7907fd1 Mon Sep 17 00:00:00 2001 From: kriks7iitk Date: Tue, 18 Jun 2024 12:06:10 +0530 Subject: [PATCH 019/190] changes for group-sync --- .../cypress/constants/texts/manageGroups.js | 2 +- frontend/assets/translations/en.json | 2 +- frontend/src/App/App.jsx | 8 - frontend/src/ManageGranularAccess/index.jsx | 127 +++++++++++--- .../ChangeRoleModal.jsx | 63 +++++++ .../index.jsx | 145 ++++++++++++--- .../ManageGroupPermissions.jsx | 2 +- .../ManageGroupPermissionsV2.jsx | 8 +- .../src/ManageOrgUsers/InviteUsersForm.jsx | 8 +- .../src/ManageOrgUsers/ManageOrgUsers.jsx | 38 +++- .../src/OrganizationSettingsPage/index.jsx | 4 +- server/ee/services/oauth/oauth.service.ts | 2 - .../1714015513342-AddGroupPermissionsTable.ts | 2 +- .../1714015541245-AddGroupUsersTable.ts | 4 +- .../group_permissions.controller.v2.ts | 7 +- server/src/dto/granular-permissions.dto.ts | 8 + server/src/dto/group_permissions.dto.ts | 8 + server/src/entities/group_users.entity.ts | 4 +- .../granular-permissions.constant.ts | 2 + .../constants/group-permissions.constant.ts | 3 + .../granular-permissions.interface.ts | 3 +- .../interface/group-permissions.interface.ts | 11 ++ .../group-permissions.utility.service.ts | 72 +++++++- .../utility/group-permissions.utility.ts | 37 +++- server/src/services/auth.service.ts | 2 - .../services/granular_permissions.service.ts | 63 +++---- .../services/group_permissions.service.v2.ts | 166 +++++++++++------- .../services/organization_users.service.ts | 3 + server/src/services/organizations.service.ts | 3 +- server/src/services/user-role.service.ts | 14 +- server/src/services/users.service.ts | 41 ++--- 31 files changed, 646 insertions(+), 216 deletions(-) create mode 100644 frontend/src/ManageGroupPermissionResourcesV2/ChangeRoleModal.jsx diff --git a/cypress-tests/cypress/constants/texts/manageGroups.js b/cypress-tests/cypress/constants/texts/manageGroups.js index 2f41ac7648..d608c96cdf 100644 --- a/cypress-tests/cypress/constants/texts/manageGroups.js +++ b/cypress-tests/cypress/constants/texts/manageGroups.js @@ -4,7 +4,7 @@ export const groupsText = { tableHeader: "Name", allUsers: "All users", admin: "Admin", - cardTitle: "Add new group", + cardTitle: "Create new group", cancelButton: "Cancel", createGroupButton: "Create Group", groupNameExistToast: "Group name already exist", diff --git a/frontend/assets/translations/en.json b/frontend/assets/translations/en.json index 9e8a3bb8f0..016d9f5eed 100644 --- a/frontend/assets/translations/en.json +++ b/frontend/assets/translations/en.json @@ -268,7 +268,7 @@ "userGroups": "User Groups", "createNewGroup": "Create new group", "updateGroup": "Update group", - "addNewGroup": "Add new group", + "addNewGroup": "Create new group", "enterName": "Enter group name", "createGroup": "Create Group", "name": "Name" diff --git a/frontend/src/App/App.jsx b/frontend/src/App/App.jsx index 685cb6262e..90cd0b8e1b 100644 --- a/frontend/src/App/App.jsx +++ b/frontend/src/App/App.jsx @@ -307,14 +307,6 @@ class AppComponent extends React.Component { /> - - - } - /> - diff --git a/frontend/src/ManageGranularAccess/index.jsx b/frontend/src/ManageGranularAccess/index.jsx index ad10bf91ef..e26775fee6 100644 --- a/frontend/src/ManageGranularAccess/index.jsx +++ b/frontend/src/ManageGranularAccess/index.jsx @@ -11,6 +11,7 @@ import { toast } from 'react-hot-toast'; import GroupChipTD from '@/ManageGroupPermissionsV2/ResourceChip'; import '../ManageGroupPermissionsV2/groupPermissions.theme.scss'; import { Action } from 'rxjs/internal/scheduler/Action'; +import ChangeRoleModal from '@/ManageGroupPermissionResourcesV2/ChangeRoleModal'; class ManageGranularAccessComponent extends React.Component { constructor(props) { @@ -37,6 +38,13 @@ class ManageGranularAccessComponent extends React.Component { addableApps: [], modalType: 'add', modalTitle: 'Add app permissions', + showAutoRoleChangeModal: false, + autoRoleChangeModalMessage: '', + autoRoleChangeModalList: [], + autoRoleChangeMessageType: '', + updateParam: {}, + updatingPermission: {}, + updateType: '', }; } @@ -119,9 +127,15 @@ class ManageGranularAccessComponent extends React.Component { this.fetchGranularPermissions(this.props.groupPermissionId); this.closeAddPermissionModal(); }) - .catch((error) => { - toast.error(error.error); - console.log(error); + .catch(({ error }) => { + this.closeAddPermissionModal(); + this.props.updateParentState({ + showEditRoleErrorModal: true, + errorTitle: error?.title ? error?.title : 'Cannot remove last admin', + errorMessage: error.error, + errorIconName: 'usergear', + errorListItems: error.data, + }); }); // .then(()) }; @@ -160,10 +174,11 @@ class ManageGranularAccessComponent extends React.Component { console.log(granularPermission); }; - updateOnlyGranularPermissions = (permission, actions = {}) => { + updateOnlyGranularPermissions = (permission, actions = {}, allowRoleChange) => { console.log(actions); const body = { actions: actions, + allowRoleChange, }; groupPermissionV2Service .updateGranularPermission(permission.id, body) @@ -173,6 +188,20 @@ class ManageGranularAccessComponent extends React.Component { toast.success('Permission updated successfully'); }) .catch(({ error }) => { + console.log('error is'); + console.log(error); + if (error?.type) { + this.setState({ + showAutoRoleChangeModal: true, + autoRoleChangeModalMessage: error?.error, + autoRoleChangeModalList: error?.data, + autoRoleChangeMessageType: error?.type, + updateParam: actions, + updatingPermission: permission, + updateType: 'ONLY_PERMISSIONS', + }); + return; + } this.props.updateParentState({ showEditRoleErrorModal: true, errorTitle: error?.title ? error?.title : 'Cannot remove last admin', @@ -183,7 +212,7 @@ class ManageGranularAccessComponent extends React.Component { }); }; - updateGranularPermissions = () => { + updateGranularPermissions = (allowRoleChange) => { const { currentEditingPermissions, selectedApps, newPermissionName, isAll, initialPermissionState } = this.state; const currentResource = currentEditingPermissions?.appsGroupPermissions?.groupApps?.map((app) => { return app.app.id; @@ -207,17 +236,17 @@ class ManageGranularAccessComponent extends React.Component { id: id, }; }); - console.log('resource to add'); - console.log(resourcesToAdd); - console.log(resourcesToDelete); const body = { name: newPermissionName, isAll: isAll, actions: initialPermissionState, resourcesToAdd, resourcesToDelete, + allowRoleChange, }; + console.log(body); + groupPermissionV2Service .updateGranularPermission(currentEditingPermissions.id, body) .then(() => { @@ -225,8 +254,19 @@ class ManageGranularAccessComponent extends React.Component { this.closeAddPermissionModal(); toast.success('Permission updated successfully'); }) - .catch((err) => { - toast.error(err.error); + .catch(({ error }) => { + if (error?.type) { + this.setState({ + showAutoRoleChangeModal: true, + autoRoleChangeModalMessage: error?.error, + autoRoleChangeModalList: error?.data, + autoRoleChangeMessageType: error?.type, + updateType: '', + showAddPermissionModal: false, + }); + return; + } + toast.error(error.error); this.closeAddPermissionModal(); }); }; @@ -282,6 +322,30 @@ class ManageGranularAccessComponent extends React.Component { this.setState({ selectedApps: values }); }; + handleAutoRoleChangeModalClose = () => { + this.setState({ + showAutoRoleChangeModal: false, + autoRoleChangeModalMessage: '', + autoRoleChangeModalList: [], + autoRoleChangeMessageType: '', + updateParam: {}, + isLoading: false, + updatingPermission: {}, + updateType: '', + }); + }; + handleConfirmAutoRoleChangeGroupUpdate = () => { + console.log('this is running'); + this.updateGranularPermissions(true); + this.handleAutoRoleChangeModalClose(); + }; + + handleConfirmAutoRoleChangeOnlyGroupUpdate = () => { + const { updateParam, updatingPermission } = this.state; + this.updateOnlyGranularPermissions(updatingPermission, updateParam, true); + this.handleAutoRoleChangeModalClose(); + }; + render() { const { isEmpty, @@ -297,32 +361,45 @@ class ManageGranularAccessComponent extends React.Component { modalTitle, modalType, newPermissionName, + showAutoRoleChangeModal, + autoRoleChangeModalMessage, + autoRoleChangeModalList, + autoRoleChangeMessageType, + updateParam, + updatingPermission, + updateType, } = this.state; - const apps = [ - { name: 'App 1', value: 'App1', label: 'app 1' }, - { name: 'App Long name 1', value: 'App2', label: 'app long name 1' }, - { name: 'App very long name', value: 'App3', label: 'app very long name' }, - { name: 'App 4', value: 'App4', label: 'app 4' }, - { name: 'App5veryverylongname', value: 'App5veryverylongname', label: 'App5veryverylongname' }, - { name: 'App 6', value: 'App6', label: '6' }, - { name: 'App 7', value: 'App 7', label: 'app 7' }, - { name: 'App 8', value: 'App 8', label: 'app 8' }, - { name: 'App 9', value: 'App 9', label: 'app 9' }, - { name: 'App 10', value: 'App 10', label: 'app 10' }, - { name: 'App 11', value: 'App 11', label: 'app 11' }, - { name: 'App 12', value: 'App 12', label: 'app 12' }, - ]; + const currentGroupPermission = this.props?.groupPermission; const isRoleGroup = currentGroupPermission.name == 'admin'; const showPermissionInfo = currentGroupPermission.name == 'admin' || currentGroupPermission.name == 'end-user'; const disableEditUpdate = currentGroupPermission.name == 'end-user'; return (
+ { + this.updateGranularPermissions(); + } + } className="permission-manager-modal" title={
diff --git a/frontend/src/ManageGroupPermissionResourcesV2/ChangeRoleModal.jsx b/frontend/src/ManageGroupPermissionResourcesV2/ChangeRoleModal.jsx new file mode 100644 index 0000000000..c0e09c0910 --- /dev/null +++ b/frontend/src/ManageGroupPermissionResourcesV2/ChangeRoleModal.jsx @@ -0,0 +1,63 @@ +import React from 'react'; +import { useTranslation } from 'react-i18next'; +import ModalBase from '@/_ui/Modal'; +import '../ManageGroupPermissionsV2/groupPermissions.theme.scss'; + +function ChangeRoleModal({ + showAutoRoleChangeModal, + autoRoleChangeModalList, + autoRoleChangeMessageType, + handleAutoRoleChangeModalClose, + handleConfirmation, + darkMode, + isLoading, +}) { + const { t } = useTranslation(); + + const renderUserChangeMessage = (type) => { + const changePermissionMessage = ( +

+ Granting this permission to the user group will result in a role change for the following user(s) from{' '} + end-users to builders. Are you sure you want to continue? +

+ ); + const addUserMessage = ( +

+ Adding the following user(s) to this group will change their default group from end-users to{' '} + builders. Are you sure you want to continue? +

+ ); + const message = type === 'USER_ROLE_CHANGE_ADD_USERS' ? addUserMessage : changePermissionMessage; + return message; + }; + + return ( + + Change in user role +
+ } + handleConfirm={handleConfirmation} + confirmBtnProps={{ title: 'Continue' }} + show={showAutoRoleChangeModal} + handleClose={handleAutoRoleChangeModalClose} + darkMode={darkMode} + isLoading={isLoading} + > + <> + {renderUserChangeMessage(autoRoleChangeMessageType)} +

+
+ {autoRoleChangeModalList.map((item, index) => ( +
+ {`${index + 1}. ${item}`} +
+ ))} +
+ +
+ ); +} + +export default ChangeRoleModal; diff --git a/frontend/src/ManageGroupPermissionResourcesV2/index.jsx b/frontend/src/ManageGroupPermissionResourcesV2/index.jsx index 817bd5f33a..c048d5a2ec 100644 --- a/frontend/src/ManageGroupPermissionResourcesV2/index.jsx +++ b/frontend/src/ManageGroupPermissionResourcesV2/index.jsx @@ -18,6 +18,7 @@ import './grpPermissionResc.theme.scss'; import { EDIT_ROLE_MESSAGE } from './constant'; import { SearchBox } from '@/_components/SearchBox'; import EditRoleErrorModal from '@/ManageGroupPermissionsV2/ErrorModal/ErrorModal'; +import ChangeRoleModal from '@/ManageGroupPermissionResourcesV2/ChangeRoleModal'; class ManageGroupPermissionResourcesComponent extends React.Component { constructor(props) { super(props); @@ -50,6 +51,11 @@ class ManageGroupPermissionResourcesComponent extends React.Component { errorTitle: '', showEditRoleErrorModal: false, errorIconName: '', + showAutoRoleChangeModal: false, + autoRoleChangeModalMessage: '', + autoRoleChangeModalList: [], + autoRoleChangeMessageType: '', + updateParam: {}, }; } @@ -64,13 +70,14 @@ class ManageGroupPermissionResourcesComponent extends React.Component { } fetchGroupPermission = (groupPermissionId) => { - groupPermissionV2Service.getGroup(groupPermissionId).then((data) => { + groupPermissionV2Service.getGroup(groupPermissionId).then(({ group, isBuilderLevel }) => { this.setState((prevState) => { return { - isRoleGroup: data.type === 'default', - groupPermission: data, + isRoleGroup: group.type === 'default', + groupPermission: group, currentTab: prevState.currentTab, isLoadingGroup: false, + isBuilderLevel: isBuilderLevel, }; }); }); @@ -93,6 +100,8 @@ class ManageGroupPermissionResourcesComponent extends React.Component { groupPermissionV2Service .getUsersNotInGroup(query, groupPermissionId) .then((users) => { + console.log('loggimgusers'); + console.log(users); resolve( users.map((user) => { return { @@ -101,6 +110,7 @@ class ManageGroupPermissionResourcesComponent extends React.Component { first_name: user.firstName, last_name: user.lastName, email: user.email, + role: user?.userGroups?.group?.name, }; }) ); @@ -148,15 +158,24 @@ class ManageGroupPermissionResourcesComponent extends React.Component { }); }; - updateGroupPermission = (groupPermissionId, params) => { + updateGroupPermission = (groupPermissionId, params, allowRoleChange) => { groupPermissionV2Service - .update(groupPermissionId, params) + .update(groupPermissionId, { ...params, allowRoleChange }) .then(() => { toast.success('Group permissions updated'); this.fetchGroupPermission(groupPermissionId); }) .catch(({ error }) => { console.log(error); + if (error?.type) { + this.setState({ + showAutoRoleChangeModal: true, + autoRoleChangeModalMessage: error?.error, + autoRoleChangeModalList: error?.data, + autoRoleChangeMessageType: error?.type, + }); + return; + } this.setState({ errorMessage: error?.error, showEditRoleErrorModal: true, @@ -274,11 +293,14 @@ class ManageGroupPermissionResourcesComponent extends React.Component { }); }; - addSelectedUsersToGroup = (groupPermissionId, selectedUsers) => { + addSelectedUsersToGroup = (groupPermissionId, selectedUsers, allowRoleChange) => { + console.log('selected users'); + console.log(selectedUsers); this.setState({ isAddingUsers: true }); const body = { userIds: selectedUsers.map((user) => user.value), groupId: groupPermissionId, + allowRoleChange, }; groupPermissionV2Service .addUsersInGroups(body) @@ -293,6 +315,16 @@ class ManageGroupPermissionResourcesComponent extends React.Component { this.fetchUsersInGroup(groupPermissionId); }) .catch(({ error }) => { + if (error?.type) { + this.setState({ + isLoadingUsers: false, + showAutoRoleChangeModal: true, + autoRoleChangeModalMessage: error?.error, + autoRoleChangeModalList: error?.data, + autoRoleChangeMessageType: error?.type, + }); + return; + } this.setState({ showEditRoleErrorModal: true, errorTitle: error?.title, @@ -366,6 +398,7 @@ class ManageGroupPermissionResourcesComponent extends React.Component { .then(() => { this.fetchUsersInGroup(groupPermission.id); toast.success('Role updated successfully'); + if (groupPermission?.name === 'admin') window.location.reload(); }) .catch(({ error }) => { this.setState({ @@ -422,8 +455,58 @@ class ManageGroupPermissionResourcesComponent extends React.Component { })); }; + toggleAutoRoleChangeModal = () => { + this.setState((prevState) => ({ + showAutoRoleChangeModal: !prevState.showAutoRoleChangeModal, + })); + }; + handleAutoRoleChangeModalClose = () => { + this.setState({ + showAutoRoleChangeModal: false, + autoRoleChangeModalMessage: '', + autoRoleChangeModalList: [], + autoRoleChangeMessageType: '', + updateParam: {}, + isLoadingGroup: false, + isLoadingUsers: false, + }); + }; + + renderUserChangeMessage = (type) => { + const changePermissionMessage = ( +

+ Granting this permission to the user group will result in a role change for the following user(s) from{' '} + end-users to builders. Are you sure you want to continue? +

+ ); + const addUserMessage = ( +

+ Adding the following user(s) to this group will change their default group from end-users to{' '} + builders. Are you sure you want to continue? +

+ ); + const message = type === 'USER_ROLE_CHANGE_ADD_USERS' ? addUserMessage : changePermissionMessage; + return message; + }; + toggleAddUsersToRoleModal = () => this.setState({ isAddUsersToRoleModalOpen: !this.state.isAddUsersToRoleModalOpen }); + handleConfirmAutoRoleChangeGroupUpdate = () => { + console.log('this is running'); + const { updateParam, groupPermission } = this.state; + this.updateGroupPermission(groupPermission.id, updateParam, true); + this.setState({ + updateParam: {}, + }); + this.handleAutoRoleChangeModalClose(); + }; + + handleConfirmAutoRoleChangeAddUser = () => { + const { groupPermission, selectedUsers } = this.state; + this.addSelectedUsersToGroup(groupPermission?.id, selectedUsers, true); + this.handleAutoRoleChangeModalClose(); + }; + render() { if (!this.props.groupPermissionId) return null; @@ -448,8 +531,10 @@ class ManageGroupPermissionResourcesComponent extends React.Component { errorTitle, showEditRoleErrorModal, errorIconName, - addableApps, - granularPermissions, + showAutoRoleChangeModal, + autoRoleChangeModalMessage, + autoRoleChangeModalList, + autoRoleChangeMessageType, } = this.state; const isBasicPlan = false; @@ -526,28 +611,19 @@ class ManageGroupPermissionResourcesComponent extends React.Component {
)} - - Edit user role -
- {updatingUserRole?.email} -
-
+ -

- Changing user default group from builder to end-user will affect the count of users covered by your plan. -

-
-

- This will also remove the user from any custom groups with builder-like permissions. Are you sure you want - to continue? -

- + isLoading={isLoadingGroup || isLoadingUsers} + />
{isLoadingGroup ? ( @@ -869,6 +945,9 @@ class ManageGroupPermissionResourcesComponent extends React.Component { this.updateGroupPermission(groupPermission.id, { appCreate: !groupPermission.appCreate, }); + this.setState({ + updateParam: { appCreate: !groupPermission.appCreate }, + }); }} checked={groupPermission.appCreate} disabled={disablePermissionUpdate} @@ -893,6 +972,9 @@ class ManageGroupPermissionResourcesComponent extends React.Component { this.updateGroupPermission(groupPermission.id, { appDelete: !groupPermission.appDelete, }); + this.setState({ + updateParam: { appDelete: !groupPermission.appDelete }, + }); }} checked={groupPermission.appDelete} disabled={disablePermissionUpdate} @@ -930,6 +1012,9 @@ class ManageGroupPermissionResourcesComponent extends React.Component { this.updateGroupPermission(groupPermission.id, { folderCRUD: !groupPermission.folderCRUD, }); + this.setState({ + updateParam: { folderCRUD: !groupPermission.folderCRUD }, + }); }} checked={groupPermission.folderCRUD} disabled={disablePermissionUpdate} @@ -966,6 +1051,9 @@ class ManageGroupPermissionResourcesComponent extends React.Component { this.updateGroupPermission(groupPermission.id, { orgConstantCRUD: !groupPermission.orgConstantCRUD, }); + this.setState({ + updateParam: { orgConstantCRUD: !groupPermission.orgConstantCRUD }, + }); }} checked={groupPermission.orgConstantCRUD} disabled={disablePermissionUpdate} @@ -1003,6 +1091,7 @@ class ManageGroupPermissionResourcesComponent extends React.Component { groupPermission={groupPermission} setErrorState={this.setErrorState} updateParentState={this.changeThisComponentState} + fetchGroup={this.fetchGroupPermission} />
diff --git a/frontend/src/ManageGroupPermissions/ManageGroupPermissions.jsx b/frontend/src/ManageGroupPermissions/ManageGroupPermissions.jsx index a7fb9ca550..3bed6a747c 100644 --- a/frontend/src/ManageGroupPermissions/ManageGroupPermissions.jsx +++ b/frontend/src/ManageGroupPermissions/ManageGroupPermissions.jsx @@ -455,7 +455,7 @@ class ManageGroupPermissionsComponent extends React.Component { title={ showGroupNameUpdateForm ? this.props.t('header.organization.menus.manageGroups.permissions.updateGroup', 'Update group') - : this.props.t('header.organization.menus.manageGroups.permissions.addNewGroup', 'Add new group') + : this.props.t('header.organization.menus.manageGroups.permissions.addNewGroup', 'Create new group') } >
{ + if (value.length > 50) return; this.setState({ newGroupName: value, isSaveBtnDisabled: false, @@ -477,7 +478,7 @@ class ManageGroupPermissionsComponent extends React.Component { className="btn btn-primary create-new-group-button" onClick={(e) => { e.preventDefault(); - this.setState({ newGroupName: null, showNewGroupForm: true, isSaveBtnDisabled: true }); + this.setState({ newGroupName: '', showNewGroupForm: true, isSaveBtnDisabled: true }); }} data-cy="create-new-group-button" leftIcon="plus" @@ -505,7 +506,7 @@ class ManageGroupPermissionsComponent extends React.Component { title={ showGroupNameUpdateForm ? this.props.t('header.organization.menus.manageGroups.permissions.updateGroup', 'Update group') - : this.props.t('header.organization.menus.manageGroups.permissions.addNewGroup', 'Add new group') + : this.props.t('header.organization.menus.manageGroups.permissions.addNewGroup', 'Create new group') } > + Group name must be unique and max 50 characters
diff --git a/frontend/src/ManageOrgUsers/InviteUsersForm.jsx b/frontend/src/ManageOrgUsers/InviteUsersForm.jsx index f847ce357d..9f037675fd 100644 --- a/frontend/src/ManageOrgUsers/InviteUsersForm.jsx +++ b/frontend/src/ManageOrgUsers/InviteUsersForm.jsx @@ -106,7 +106,8 @@ function InviteUsersForm({ let role = null; if (currentEditingUser) role = selectedGroups.find( - (group) => group.groupType === 'default' && !currentEditingUser.role_group.includes(group.value) + (group) => + group.groupType === 'default' && !currentEditingUser.role_group.map((role) => role.name).includes(group.value) )?.value; const selectedGroupsIds = selectedGroups.filter((group) => group.groupType !== 'default').map((group) => group.id); const newGroupsToAdd = selectedGroupsIds.filter((selectedGroupId) => !existingGroups.includes(selectedGroupId)); @@ -115,11 +116,12 @@ function InviteUsersForm({ }; const isEdited = () => { - const { newGroupsToAdd, groupsToRemove } = getEditedGroups(); + const { newGroupsToAdd, groupsToRemove, role } = getEditedGroups(); const { first_name, last_name } = currentEditingUser || {}; return isEditing ? fields['fullName'] !== `${first_name}${last_name && ` ${last_name}`}` || groupsToRemove.length || + role !== undefined || newGroupsToAdd.length : true; }; @@ -301,7 +303,7 @@ function InviteUsersForm({ form={activeTab == 1 ? 'inviteByEmail' : 'inviteBulkUsers'} type="submit" variant="primary" - disabled={uploadingUsers || creatingUser || !isEdited() || !containRoleGroup} + disabled={uploadingUsers || creatingUser || !isEdited() || (!isEditing && !containRoleGroup)} data-cy={activeTab == 1 ? 'button-invite-users' : 'button-upload-users'} leftIcon={activeTab == 1 ? 'sent' : 'fileupload'} width="20" diff --git a/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx b/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx index ae7784bd29..6f69ce0233 100644 --- a/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx +++ b/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx @@ -11,6 +11,7 @@ import { ButtonSolid } from '@/_ui/AppButton/AppButton'; import ManageOrgUsersDrawer from './ManageOrgUsersDrawer'; import { USER_DRAWER_MODES } from '@/_helpers/utils'; import { getQueryParams } from '@/_helpers/routes'; +import EditRoleErrorModal from '@/ManageGroupPermissionsV2/ErrorModal/ErrorModal'; class ManageOrgUsersComponent extends React.Component { constructor(props) { @@ -36,6 +37,11 @@ class ManageOrgUsersComponent extends React.Component { userDrawerMode: USER_DRAWER_MODES.CREATE, newSelectedGroups: [], existingGroupsToRemove: [], + showErrorModal: false, + errorModalMessage: '', + errorItemList: [], + errorTitle: '', + errorIconName: 'usergear', }; } @@ -223,7 +229,13 @@ class ManageOrgUsersComponent extends React.Component { }); }) .catch(({ error }) => { - toast.error(error.error); + this.setState({ + showErrorModal: true, + errorModalMessage: error.error, + errorTitle: error?.title || 'Conflicting Permissions', + errorItemList: error?.data, + errorIconName: 'usergear', + }); this.setState({ creatingUser: false }); }); } else { @@ -254,6 +266,16 @@ class ManageOrgUsersComponent extends React.Component { toast.success('Invitation URL copied'); }; + clearErrorState = () => { + this.setState({ + showErrorModal: false, + errorModalMessage: '', + errorItemList: [], + errorTitle: '', + errorIconName: '', + }); + }; + pageChanged = (page) => { this.fetchUsers(page, this.state.options); }; @@ -293,10 +315,24 @@ class ManageOrgUsersComponent extends React.Component { meta, currentEditingUser, userDrawerMode, + showErrorModal, + errorModalMessage, + errorItemList, + errorTitle, + errorIconName, } = this.state; return (
+ {this.state.isInviteUsersDrawerOpen && ( { switch (groupName) { case 'users': return 'Users'; case 'groups': return 'Groups'; - case 'groups2': - return 'Groups V2'; case 'workspace-login': return 'Workspace login'; case 'workspace-variables': diff --git a/server/ee/services/oauth/oauth.service.ts b/server/ee/services/oauth/oauth.service.ts index 3fb6ed9a6c..a247d2c1b9 100644 --- a/server/ee/services/oauth/oauth.service.ts +++ b/server/ee/services/oauth/oauth.service.ts @@ -68,7 +68,6 @@ export class OauthService { organization.id, //Adding user as END-USER on workspace signup USER_ROLE.END_USER, - [], user, true, defaultOrganization?.id, @@ -240,7 +239,6 @@ export class OauthService { defaultOrganization.id, //Adding as admin since this is instance login USER_ROLE.ADMIN, - [], null, true, null, diff --git a/server/migrations/1714015513342-AddGroupPermissionsTable.ts b/server/migrations/1714015513342-AddGroupPermissionsTable.ts index 6515a005ff..1584209964 100644 --- a/server/migrations/1714015513342-AddGroupPermissionsTable.ts +++ b/server/migrations/1714015513342-AddGroupPermissionsTable.ts @@ -14,7 +14,7 @@ export class AddGroupPermissionsTable1714015513342 implements MigrationInterface CREATE TABLE IF NOT EXISTS permission_groups ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), organization_id UUID, - name VARCHAR NOT NULL, + name VARCHAR(50) NOT NULL, type group_permissions_type NOT NULL DEFAULT 'custom', app_create BOOLEAN DEFAULT false, app_delete BOOLEAN DEFAULT false, diff --git a/server/migrations/1714015541245-AddGroupUsersTable.ts b/server/migrations/1714015541245-AddGroupUsersTable.ts index 3004258086..e8f4893e99 100644 --- a/server/migrations/1714015541245-AddGroupUsersTable.ts +++ b/server/migrations/1714015541245-AddGroupUsersTable.ts @@ -7,8 +7,8 @@ export class AddGroupUsersTable1714015541245 implements MigrationInterface { ` CREATE TABLE IF NOT EXISTS group_users ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), - user_id UUID, - group_id UUID, + user_id UUID NOT NULL, + group_id UUID NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, CONSTRAINT fk_user_id FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE, diff --git a/server/src/controllers/group_permissions.controller.v2.ts b/server/src/controllers/group_permissions.controller.v2.ts index 5606652f67..5b541cd38c 100644 --- a/server/src/controllers/group_permissions.controller.v2.ts +++ b/server/src/controllers/group_permissions.controller.v2.ts @@ -101,7 +101,10 @@ export class GroupPermissionsControllerV2 { @CheckPolicies((ability: AppAbility) => ability.can(ORGANIZATION_RESOURCE_ACTIONS.ACCESS_PERMISSIONS, UserEntity)) @Get(':groupId/group-user') async getAllGroupUser(@User() user, @Param('groupId') groupId: string, @Query('input') searchInput: string) { - return await this.groupPermissionsService.getAllGroupUsers(groupId, searchInput); + return await this.groupPermissionsService.getAllGroupUsers( + { groupId, organizationId: user.organizationId }, + searchInput + ); } @UseGuards(JwtAuthGuard, PoliciesGuard) @@ -151,7 +154,7 @@ export class GroupPermissionsControllerV2 { //Check for license validation first here // What are license validation for this const { groupId, createAppsPermissionsObject } = createGranularPermissionsDto; - const group = await this.groupPermissionsService.getGroup(groupId); + const { group } = await this.groupPermissionsService.getGroup(groupId); validateGranularPermissionCreateOperation(group); return await this.granularPermissionsService.create( { diff --git a/server/src/dto/granular-permissions.dto.ts b/server/src/dto/granular-permissions.dto.ts index f9db3ab834..33e94ca1b2 100644 --- a/server/src/dto/granular-permissions.dto.ts +++ b/server/src/dto/granular-permissions.dto.ts @@ -28,6 +28,10 @@ export class CreateGranularPermissionDto { @IsOptional() createAppsPermissionsObject: CreateAppsPermissionsObject; + + // @IsBoolean() + // @IsOptional() + // allowRoleChange: boolean; } export class UpdateGranularPermissionDto { @@ -47,4 +51,8 @@ export class UpdateGranularPermissionDto { @IsOptional() resourcesToDelete: GranularPermissionDeleteResourceItems; + + @IsBoolean() + @IsOptional() + allowRoleChange: boolean; } diff --git a/server/src/dto/group_permissions.dto.ts b/server/src/dto/group_permissions.dto.ts index 6ea12543d1..58202b45cd 100644 --- a/server/src/dto/group_permissions.dto.ts +++ b/server/src/dto/group_permissions.dto.ts @@ -38,6 +38,10 @@ export class UpdateGroupPermissionDto { @IsBoolean() @IsOptional() dataSourceDelete: boolean; + + @IsBoolean() + @IsOptional() + allowRoleChange: boolean; } export class EditUserRoleDto { @@ -59,4 +63,8 @@ export class AddGroupUserDto { @IsString() @IsNotEmpty() groupId: string; + + @IsBoolean() + @IsOptional() + allowRoleChange: boolean; } diff --git a/server/src/entities/group_users.entity.ts b/server/src/entities/group_users.entity.ts index 92e58a9b3b..03ac55386b 100644 --- a/server/src/entities/group_users.entity.ts +++ b/server/src/entities/group_users.entity.ts @@ -16,10 +16,10 @@ export class GroupUsers extends BaseEntity { @PrimaryGeneratedColumn('uuid') id: string; - @Column({ name: 'user_id' }) + @Column({ name: 'user_id', nullable: false }) userId: string; - @Column({ name: 'group_id' }) + @Column({ name: 'group_id', nullable: false }) groupId: string; @CreateDateColumn({ default: () => 'now()', name: 'created_at' }) diff --git a/server/src/modules/user_resource_permissions/constants/granular-permissions.constant.ts b/server/src/modules/user_resource_permissions/constants/granular-permissions.constant.ts index 87c68b238d..f191193141 100644 --- a/server/src/modules/user_resource_permissions/constants/granular-permissions.constant.ts +++ b/server/src/modules/user_resource_permissions/constants/granular-permissions.constant.ts @@ -40,4 +40,6 @@ export const ERROR_HANDLER = { EDITOR_LEVEL_PERMISSIONS_NOT_ALLOWED: 'End-users can only be granted permission to view apps. If you wish to add this permission, kindly change the following users role from end-user to builder', EDITOR_LEVEL_PERMISSION_NOT_ALLOWED_END_USER: 'Cannot assign builder level permission to end users', + UPDATE_EDITABLE_PERMISSION_END_USER_GROUP: + 'End-users can only be granted permission to view apps. If you wish to add this permission, kindly change the following users role from end-user to builder- ', }; diff --git a/server/src/modules/user_resource_permissions/constants/group-permissions.constant.ts b/server/src/modules/user_resource_permissions/constants/group-permissions.constant.ts index 6519ca0aec..0ab1e39477 100644 --- a/server/src/modules/user_resource_permissions/constants/group-permissions.constant.ts +++ b/server/src/modules/user_resource_permissions/constants/group-permissions.constant.ts @@ -40,6 +40,7 @@ export const DEFAULT_GROUP_PERMISSIONS = { orgConstantCRUD: true, dataSourceCreate: true, dataSourceDelete: true, + isBuilderLevel: true, }, BUILDER: { name: USER_ROLE.BUILDER, @@ -52,6 +53,7 @@ export const DEFAULT_GROUP_PERMISSIONS = { orgConstantCRUD: true, dataSourceCreate: true, dataSourceDelete: true, + isBuilderLevel: true, }, END_USER: { name: USER_ROLE.END_USER, @@ -64,6 +66,7 @@ export const DEFAULT_GROUP_PERMISSIONS = { orgConstantCRUD: false, dataSourceCreate: false, dataSourceDelete: false, + isBuilderLevel: false, }, } as Record; diff --git a/server/src/modules/user_resource_permissions/interface/granular-permissions.interface.ts b/server/src/modules/user_resource_permissions/interface/granular-permissions.interface.ts index b16cc420e4..8d5db13422 100644 --- a/server/src/modules/user_resource_permissions/interface/granular-permissions.interface.ts +++ b/server/src/modules/user_resource_permissions/interface/granular-permissions.interface.ts @@ -30,11 +30,12 @@ export type GranularPermissionAddResourceItems = AppsPermissionAddResourceItem[] export type GranularPermissionDeleteResourceItems = AppsPermissionDeleteResourceItem[]; export interface UpdateResourceGroupPermissionsObject { - group?: GroupPermissions; + group: GroupPermissions; granularPermissions: GranularPermissions; actions: ResourceGroupActions; resourcesToAdd: GranularPermissionAddResourceItems; resourcesToDelete: GranularPermissionDeleteResourceItems; + allowRoleChange?: boolean; } export interface GranularPermissionQuerySearchParam { diff --git a/server/src/modules/user_resource_permissions/interface/group-permissions.interface.ts b/server/src/modules/user_resource_permissions/interface/group-permissions.interface.ts index 3542bbe82b..eaf769ddf8 100644 --- a/server/src/modules/user_resource_permissions/interface/group-permissions.interface.ts +++ b/server/src/modules/user_resource_permissions/interface/group-permissions.interface.ts @@ -15,6 +15,17 @@ export interface CreateDefaultGroupObject { dataSourceDelete: boolean; } +export interface ValidateEditUserGroupAdditionObject { + userId: string; + groupsToAddIds: string[]; + organizationId: string; +} + +export interface GetGroupUsersObject { + groupId: string; + organizationId: string; +} + export interface GroupQuerySearchParamObject { [key: string]: SearchParamItem | boolean | string | number; name?: SearchParamItem; diff --git a/server/src/modules/user_resource_permissions/services/group-permissions.utility.service.ts b/server/src/modules/user_resource_permissions/services/group-permissions.utility.service.ts index f0ee74a3ed..2ab24d66c8 100644 --- a/server/src/modules/user_resource_permissions/services/group-permissions.utility.service.ts +++ b/server/src/modules/user_resource_permissions/services/group-permissions.utility.service.ts @@ -1,7 +1,10 @@ -import { Injectable } from '@nestjs/common'; +import { BadRequestException, Injectable } from '@nestjs/common'; import { GroupPermissions } from 'src/entities/group_permissions.entity'; import { User } from 'src/entities/user.entity'; -import { USER_ROLE } from '@module/user_resource_permissions/constants/group-permissions.constant'; +import { + GROUP_PERMISSIONS_TYPE, + USER_ROLE, +} from '@module/user_resource_permissions/constants/group-permissions.constant'; import { addableUsersToGroupQuery, getRoleUsersListQuery, @@ -10,6 +13,9 @@ import { import { EntityManager } from 'typeorm'; import { dbTransactionWrap } from '@helpers/utils.helper'; import { App } from 'src/entities/app.entity'; +import { getAllGranularPermissionQuery } from '../utility/granular-permissios.utility'; +import { ResourceType } from '../constants/granular-permissions.constant'; +import { ValidateEditUserGroupAdditionObject } from '../interface/group-permissions.interface'; @Injectable() export class GroupPermissionsUtilityService { @@ -26,6 +32,13 @@ export class GroupPermissionsUtilityService { return await query.getMany(); }, manager); } + async getRoleGroup(role: USER_ROLE, organizationId: string, manager?: EntityManager): Promise { + return await dbTransactionWrap(async (manager) => { + return await manager.findOne(GroupPermissions, { + where: { name: role, organizationId, type: GROUP_PERMISSIONS_TYPE.DEFAULT }, + }); + }, manager); + } async getUserRole(userId: string, organizationId: string, manager?: EntityManager): Promise { return await dbTransactionWrap(async (manager: EntityManager) => { @@ -56,4 +69,59 @@ export class GroupPermissionsUtilityService { }); }, manager); } + + async checkIfBuilderLevelResourcesPermissions(groupId: string, manager?: EntityManager): Promise { + return await dbTransactionWrap(async (manager: EntityManager) => { + const allPermission = await getAllGranularPermissionQuery({ groupId }, manager).getMany(); + if (!allPermission) return false; + const isBuilderLevelAppsPermission = allPermission + .filter((permissions) => permissions.type === ResourceType.APP) + .some((permissions) => { + const appPermission = permissions.appsGroupPermissions; + return appPermission.canEdit === true; + }); + //Add for other permissions here + return isBuilderLevelAppsPermission; + }, manager); + } + + async isEditableGroup(group: GroupPermissions, manager?: EntityManager): Promise { + return await dbTransactionWrap(async (manager: EntityManager) => { + const editPermissionsPresent = + Object.values(group).some((value) => typeof value === 'boolean' && value === true) || + (await this.checkIfBuilderLevelResourcesPermissions(group.id, manager)); + return editPermissionsPresent; + }, manager); + } + + async validateEditUserGroupPermissionsAddition( + functionParam: ValidateEditUserGroupAdditionObject, + manager?: EntityManager + ) { + const { organizationId, userId, groupsToAddIds } = functionParam; + console.log('validating permissions'); + console.log(groupsToAddIds); + + return await dbTransactionWrap(async (manager: EntityManager) => { + const userRole = await this.getUserRole(userId, organizationId, manager); + console.log(userRole); + if (userRole.name === USER_ROLE.END_USER) { + return await Promise.all( + groupsToAddIds.map(async (id) => { + const group = await manager.findOne(GroupPermissions, id); + const isEditableGroup = await this.isEditableGroup(group, manager); + if (!isEditableGroup) { + throw new BadRequestException({ + message: { + error: + 'End-users can only be granted permission to view apps. Kindly change the user role or custom group to continue.', + title: 'Conflicting Permissions', + }, + }); + } + }) + ); + } + }, manager); + } } diff --git a/server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts b/server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts index 3f68527077..86ddc026f8 100644 --- a/server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts +++ b/server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts @@ -6,6 +6,7 @@ import { BadRequestException, MethodNotAllowedException } from '@nestjs/common'; import { CreateGroupPermissionDto, UpdateGroupPermissionDto } from '@dto/group_permissions.dto'; import { ERROR_HANDLER } from '@module/user_resource_permissions/constants/group-permissions.constant'; import { GroupUsers } from 'src/entities/group_users.entity'; +import { GetGroupUsersObject } from '../interface/group-permissions.interface'; export function getRoleUsersListQuery( role: USER_ROLE, @@ -38,6 +39,7 @@ export function getRoleUsersListQuery( 'user.lastName', 'user.email', 'userGroups.groupId', + 'userGroups.id', 'group.name', 'group.type', ]); @@ -145,6 +147,13 @@ export function addableUsersToGroupQuery( .innerJoin('users.organizationUsers', 'organization_users', 'organization_users.organizationId = :organizationId', { organizationId: organizationId, }) + .innerJoinAndSelect('users.userGroups', 'userGroups') + .innerJoinAndSelect('userGroups.group', 'group', 'group.organizationId = :organizationId', { + organizationId, + }) + .where('group.type = :type', { + type: GROUP_PERMISSIONS_TYPE.DEFAULT, + }) .where((qb) => { const subQuery = qb .subQuery() @@ -158,6 +167,7 @@ export function addableUsersToGroupQuery( return 'users.id NOT IN ' + subQuery; }) .andWhere(addableUserGetOrConditions(searchInput)) + .select(['users.id', 'users.firstName', 'users.lastName', 'users.email', 'userGroups.id', 'group.name']) .orderBy('users.createdAt', 'DESC'); return query; @@ -180,14 +190,35 @@ const addableUserGetOrConditions = (searchInput) => { }; export function getUserInGroupQuery( - groupId: string, + getGroupUsersObject: GetGroupUsersObject, manager: EntityManager, searchInput: string ): SelectQueryBuilder { + const { groupId, organizationId } = getGroupUsersObject; + const query = manager .createQueryBuilder(GroupUsers, 'groupUsers') - .innerJoinAndSelect('groupUsers.user', 'users', 'groupUsers.groupId = :groupId', { groupId }) - .select(['groupUsers.id', 'groupUsers.groupId', 'users.id', 'users.firstName', 'users.lastName', 'users.email']) + .innerJoinAndSelect('groupUsers.user', 'users', 'groupUsers.groupId = :groupId', { + groupId, + }) + .innerJoinAndSelect('users.userGroups', 'userRole') + .innerJoinAndSelect('userRole.group', 'role', 'role.organizationId = :organizationId', { + organizationId, + }) + .andWhere('role.type = :type', { + type: GROUP_PERMISSIONS_TYPE.DEFAULT, + }) + .select([ + 'groupUsers.id', + 'groupUsers.groupId', + 'users.id', + 'users.firstName', + 'users.lastName', + 'users.email', + 'userRole.id', + 'role.name', + ]) + .addSelect('role.name', 'userRole') .andWhere(addableUserGetOrConditions(searchInput)); return query; } diff --git a/server/src/services/auth.service.ts b/server/src/services/auth.service.ts index 86cd29d8bf..8a79e9494e 100644 --- a/server/src/services/auth.service.ts +++ b/server/src/services/auth.service.ts @@ -360,7 +360,6 @@ export class AuthService { }, personalWorkspace.id, USER_ROLE.ADMIN, - [], existingUser, true, null, @@ -719,7 +718,6 @@ export class AuthService { }, organization.id, USER_ROLE.ADMIN, - [], null, false, null, diff --git a/server/src/services/granular_permissions.service.ts b/server/src/services/granular_permissions.service.ts index 7fc0af2f99..38eaf5d00f 100644 --- a/server/src/services/granular_permissions.service.ts +++ b/server/src/services/granular_permissions.service.ts @@ -1,4 +1,4 @@ -import { BadRequestException, Injectable } from '@nestjs/common'; +import { BadRequestException, Injectable, MethodNotAllowedException } from '@nestjs/common'; import { ResourceType } from '@module/user_resource_permissions/constants/granular-permissions.constant'; import { GranularResourcePermissions, @@ -28,7 +28,7 @@ import { } from '@module/user_resource_permissions/utility/granular-permissios.utility'; import { GroupPermissionsUtilityService } from '@module/user_resource_permissions/services/group-permissions.utility.service'; import { GroupApps } from 'src/entities/group_apps.entity'; -import { GroupPermissions } from 'src/entities/group_permissions.entity'; +import { GroupUsers } from 'src/entities/group_users.entity'; @Injectable() export class GranularPermissionsService { @@ -75,7 +75,7 @@ export class GranularPermissionsService { return await dbTransactionWrap(async (manager: EntityManager) => { const granularPermissions = await this.get(id, manager); const { organizationId, updateGranularPermissionDto, group } = updateGranularPermissionsObj; - const { isAll, name, resourcesToAdd, resourcesToDelete, actions } = updateGranularPermissionDto; + const { isAll, name, resourcesToAdd, resourcesToDelete, actions, allowRoleChange } = updateGranularPermissionDto; const updateGranularPermission = { isAll: isAll == true ? true : false, ...(name && { name }), @@ -86,6 +86,7 @@ export class GranularPermissionsService { actions, resourcesToDelete, resourcesToAdd, + allowRoleChange, }; await catchDbException(async () => { await manager.update(GranularPermissions, id, updateGranularPermission); @@ -186,41 +187,43 @@ export class GranularPermissionsService { manager?: EntityManager ) { return await dbTransactionWrap(async (manager: EntityManager) => { - const { - granularPermissions, - actions, - resourcesToDelete, - resourcesToAdd, - group: permissionGroup, - } = UpdateResourceGroupPermissionsObject; - let group: GroupPermissions; - if (permissionGroup) { - group = permissionGroup; - } else { - group = await manager.findOne(GroupPermissions, granularPermissions.groupId); - } + const { granularPermissions, actions, resourcesToDelete, resourcesToAdd, group, allowRoleChange } = + UpdateResourceGroupPermissionsObject; + validateAppResourcePermissionUpdateOperation(group, actions); const { canEdit } = actions; - const groupEditors = await this.groupPermissionsUtilityService.getRoleUsersList( + const groupEndUsers = await this.groupPermissionsUtilityService.getRoleUsersList( USER_ROLE.END_USER, organizationId, granularPermissions.groupId, manager ); - console.log('logging resource object'); + if (groupEndUsers.length && canEdit) { + if (!allowRoleChange) { + throw new MethodNotAllowedException({ + message: { + error: ERROR_HANDLER.UPDATE_EDITABLE_PERMISSION_END_USER_GROUP, + data: groupEndUsers?.map((user) => user.email), + title: 'Cannot add this permissions to the group', + type: 'USER_ROLE_CHANGE', + }, + }); + } + await Promise.all( + groupEndUsers.map(async (userItem) => { + const currentRoleUser = userItem.userGroups[0].id; + const roleGroup = await this.groupPermissionsUtilityService.getRoleGroup( + USER_ROLE.BUILDER, + group.organizationId, + manager + ); + await manager.delete(GroupUsers, currentRoleUser); + const newUserRole = manager.create(GroupUsers, { groupId: roleGroup.id, userId: userItem.id }); + await manager.save(newUserRole); + }) + ); + } - console.log(UpdateResourceGroupPermissionsObject); - - //Resource update level - - if (groupEditors.length && canEdit) - throw new BadRequestException({ - message: { - error: ERROR_HANDLER.EDITOR_LEVEL_PERMISSIONS_NOT_ALLOWED, - data: groupEditors.map((user) => user.email), - title: 'Cannot update permissions', - }, - }); const appsGroupPermissions = await manager.findOne(AppsGroupPermissions, { where: { granularPermissionId: granularPermissions.id, diff --git a/server/src/services/group_permissions.service.v2.ts b/server/src/services/group_permissions.service.v2.ts index c6a0e109bc..dd5b33db5e 100644 --- a/server/src/services/group_permissions.service.v2.ts +++ b/server/src/services/group_permissions.service.v2.ts @@ -12,6 +12,7 @@ import { dbTransactionWrap, catchDbException } from 'src/helpers/utils.helper'; import { EntityManager, getManager } from 'typeorm'; import { CreateDefaultGroupObject, + GetGroupUsersObject, GetUsersResponse, } from '@module/user_resource_permissions/interface/group-permissions.interface'; import { GroupUsers } from 'src/entities/group_users.entity'; @@ -24,7 +25,6 @@ import { validateUpdateGroupOperation, } from '@module/user_resource_permissions/utility/group-permissions.utility'; import { GroupPermissionsUtilityService } from '@module/user_resource_permissions/services/group-permissions.utility.service'; -import { ResourceType } from '@module/user_resource_permissions/constants/granular-permissions.constant'; @Injectable() export class GroupPermissionsServiceV2 { @@ -67,47 +67,70 @@ export class GroupPermissionsServiceV2 { return response; } - async getGroup(id: string, manager?: EntityManager): Promise { + async getGroup(id: string, manager?: EntityManager): Promise<{ group: GroupPermissions; isBuilderLevel: boolean }> { return await dbTransactionWrap(async (manager: EntityManager) => { - return await manager.findOne(GroupPermissions, { - where: { id }, - }); + const [group, isBuilderLevelResourcePermissions] = await Promise.all([ + manager.findOne(GroupPermissions, { + where: { id }, + }), + await this.groupPermissionsUtilityService.checkIfBuilderLevelResourcesPermissions(id, manager), + ]); + const isBuilderLevelMainPermissions = Object.values(group).some( + (value) => typeof value === 'boolean' && value === true + ); + const isBuilderLevel = isBuilderLevelResourcePermissions || isBuilderLevelMainPermissions; + return { group, isBuilderLevel }; }, manager); } async updateGroup(id: string, updateGroupPermissionDto: UpdateGroupPermissionDto, manager?: EntityManager) { //License level validation at controller level - const group = await this.getGroup(id); - if (!group) throw new BadRequestException(ERROR_HANDLER.GROUP_NOT_EXIST); - - validateUpdateGroupOperation(group, updateGroupPermissionDto); - - const keys = Object.keys(updateGroupPermissionDto); - const validatePermissionsUpdate = !(keys.length === 1 && keys.includes('name')); - const editPermissionsPresent = Object.values(updateGroupPermissionDto).some( - (value) => typeof value === 'boolean' && value === true - ); - console.log('running till here'); - - if (validatePermissionsUpdate) { - const getEndUsersList = await this.groupPermissionsUtilityService.getRoleUsersList( - USER_ROLE.END_USER, - group.organizationId, - group.id - ); - - if (getEndUsersList.length && editPermissionsPresent) { - throw new MethodNotAllowedException({ - message: { - error: ERROR_HANDLER.UPDATE_EDITABLE_PERMISSION_END_USER_GROUP, - data: getEndUsersList?.map((user) => user.email), - title: 'Cannot add this permissions to the group', - }, - }); - } - } return await dbTransactionWrap(async (manager: EntityManager) => { + const { group } = await this.getGroup(id); + if (!group) throw new BadRequestException(ERROR_HANDLER.GROUP_NOT_EXIST); + + validateUpdateGroupOperation(group, updateGroupPermissionDto); + const { allowRoleChange } = updateGroupPermissionDto; + delete updateGroupPermissionDto.allowRoleChange; + const keys = Object.keys(updateGroupPermissionDto); + const validatePermissionsUpdate = !(keys.length === 1 && keys.includes('name')); + const editPermissionsPresent = Object.keys(updateGroupPermissionDto).some( + (value) => typeof updateGroupPermissionDto?.[value] === 'boolean' && updateGroupPermissionDto?.[value] === true + ); + if (validatePermissionsUpdate) { + const getEndUsersList = await this.groupPermissionsUtilityService.getRoleUsersList( + USER_ROLE.END_USER, + group.organizationId, + group.id + ); + + if (getEndUsersList.length && editPermissionsPresent) { + if (!allowRoleChange) { + throw new MethodNotAllowedException({ + message: { + error: ERROR_HANDLER.UPDATE_EDITABLE_PERMISSION_END_USER_GROUP, + data: getEndUsersList?.map((user) => user.email), + title: 'Cannot add this permissions to the group', + type: 'USER_ROLE_CHANGE', + }, + }); + } + await Promise.all( + getEndUsersList.map(async (userItem) => { + const currentRoleUser = userItem.userGroups[0].id; + const roleGroup = await this.groupPermissionsUtilityService.getRoleGroup( + USER_ROLE.BUILDER, + group.organizationId, + manager + ); + await this.deleteGroupUser(currentRoleUser, manager); + const newUserRole = manager.create(GroupUsers, { groupId: roleGroup.id, userId: userItem.id }); + await manager.save(newUserRole); + }) + ); + } + } return await catchDbException(async () => { await manager.update(GroupPermissions, id, updateGroupPermissionDto); }, [DATA_BASE_CONSTRAINTS.GROUP_NAME_UNIQUE]); @@ -116,7 +139,7 @@ export class GroupPermissionsServiceV2 { async deleteGroup(id: string): Promise { return await dbTransactionWrap(async (manager: EntityManager) => { - const group = await this.getGroup(id, manager); + const { group } = await this.getGroup(id, manager); if (group.type == GROUP_PERMISSIONS_TYPE.DEFAULT) throw new BadRequestException(ERROR_HANDLER.DEFAULT_GROUP_UPDATE_NOT_ALLOWED); return await manager.delete(GroupPermissions, id); @@ -124,17 +147,31 @@ export class GroupPermissionsServiceV2 { } private async createGroupUser(user: User, group: GroupPermissions, manager?: EntityManager): Promise { + console.log(group); + console.log('logging group'); + const createObjec = { + userId: user.id, + groupId: group.id, + }; + console.log(createObjec); + return await dbTransactionWrap(async (manager: EntityManager) => { return await catchDbException(async () => { - const groupUser = manager.create(GroupUsers, { groupId: group.id, userId: user.id }); + const groupUser = manager.create(GroupUsers, createObjec); + console.log(groupUser); + return await manager.save(groupUser); }, [DATA_BASE_CONSTRAINTS.GROUP_USER_UNIQUE]); }, manager); } - async getAllGroupUsers(groupId: string, searchInput?: string, manager?: EntityManager): Promise { + async getAllGroupUsers( + getGroupUsersObject: GetGroupUsersObject, + searchInput?: string, + manager?: EntityManager + ): Promise { return await dbTransactionWrap(async (manager: EntityManager) => { - return await getUserInGroupQuery(groupId, manager, searchInput).getMany(); + return await getUserInGroupQuery(getGroupUsersObject, manager, searchInput).getMany(); }, manager); } @@ -159,33 +196,44 @@ export class GroupPermissionsServiceV2 { } async addGroupUsers(addGroupUserDto: AddGroupUserDto, organizationId: string, manager?: EntityManager) { - const { userIds, groupId } = addGroupUserDto; + const { userIds, groupId, allowRoleChange } = addGroupUserDto; return await dbTransactionWrap(async (manager: EntityManager) => { - const group = await this.getGroup(groupId, manager); - const granularPermission = await this.granularPermissionsService.getAll({ groupId: group.id }, manager); + const { group, isBuilderLevel } = await this.getGroup(groupId, manager); validateAddGroupUserOperation(group); - + const editorRoleUsers = await this.groupPermissionsUtilityService.getRoleUsersList( + USER_ROLE.END_USER, + organizationId + ); + const editorUsersToBeAdded = editorRoleUsers.filter((user) => userIds.includes(user.id)); + if (isBuilderLevel && editorUsersToBeAdded.length) { + if (!allowRoleChange) { + throw new MethodNotAllowedException({ + message: { + error: ERROR_HANDLER.UPDATE_EDITABLE_PERMISSION_END_USER_GROUP, + data: editorUsersToBeAdded?.map((user) => user.email), + title: 'Cannot add this permissions to the group', + type: 'USER_ROLE_CHANGE_ADD_USERS', + }, + }); + } + await Promise.all( + editorUsersToBeAdded.map(async (userItem) => { + const currentRoleUser = userItem.userGroups[0].id; + const roleGroup = await this.groupPermissionsUtilityService.getRoleGroup( + USER_ROLE.BUILDER, + organizationId, + manager + ); + await this.deleteGroupUser(currentRoleUser, manager); + const newUserRole = manager.create(GroupUsers, { groupId: roleGroup.id, userId: userItem.id }); + await manager.save(newUserRole); + }) + ); + } return await Promise.all( userIds.map(async (userId) => { const user = await getUserDetailQuery(userId, organizationId, manager).getOne(); if (!user) throw new BadRequestException(ERROR_HANDLER.ADD_GROUP_USER_NON_EXISTING_USER); - - const role = await this.groupPermissionsUtilityService.getUserRole(userId, organizationId, manager); - const editPermissionsPresent = - Object.values(group).some((value) => typeof value === 'boolean' && value === true) || - granularPermission.some((value) => { - return value.type === ResourceType.APP && value.appsGroupPermissions.canEdit; - }); - - if (editPermissionsPresent && role.name == USER_ROLE.END_USER) { - throw new MethodNotAllowedException({ - message: { - error: ERROR_HANDLER.GROUP_USERS_EDITABLE_GROUP_ADDITION(user.email), - title: 'Can not add end user to this group', - }, - }); - } - return await this.createGroupUser(user, group, manager); }) ); diff --git a/server/src/services/organization_users.service.ts b/server/src/services/organization_users.service.ts index f3035a7107..c782dee533 100644 --- a/server/src/services/organization_users.service.ts +++ b/server/src/services/organization_users.service.ts @@ -100,6 +100,9 @@ export class OrganizationUsersService { } async updateOrgUser(organizationUserId: string, updateUserDto) { + console.log(updateUserDto); + console.log('logging this'); + const organizationUser = await this.organizationUsersRepository.findOne({ where: { id: organizationUserId } }); return await this.usersService.update( organizationUser.userId, diff --git a/server/src/services/organizations.service.ts b/server/src/services/organizations.service.ts index f85762c15c..fe89e803d2 100644 --- a/server/src/services/organizations.service.ts +++ b/server/src/services/organizations.service.ts @@ -619,7 +619,6 @@ export class OrganizationsService { userParams, currentUser.organizationId, role, - groups, user, true, defaultOrganization?.id, @@ -649,6 +648,8 @@ export class OrganizationsService { manager ); + await this.usersService.attachUserGroup(groups, currentOrganization.id, user.id, manager); + const name = fullName(currentUser.firstName, currentUser.lastName); if (shouldSendWelcomeMail) { this.emailService diff --git a/server/src/services/user-role.service.ts b/server/src/services/user-role.service.ts index 0d383c18eb..5effd8fe30 100644 --- a/server/src/services/user-role.service.ts +++ b/server/src/services/user-role.service.ts @@ -6,7 +6,6 @@ import { USER_ROLE, ERROR_HANDLER, DEFAULT_GROUP_PERMISSIONS, - GROUP_PERMISSIONS_TYPE, } from '@module/user_resource_permissions/constants/group-permissions.constant'; import { dbTransactionWrap } from 'src/helpers/utils.helper'; import { EntityManager } from 'typeorm'; @@ -72,9 +71,7 @@ export class UserRoleService { async getRoleGroup(role: USER_ROLE, organizationId: string, manager?: EntityManager) { return await dbTransactionWrap(async (manager) => { - return await manager.findOne(GroupPermissions, { - where: { name: role, organizationId, type: GROUP_PERMISSIONS_TYPE.DEFAULT }, - }); + return await this.groupPermissionsUtilityService.getRoleGroup(role, organizationId, manager); }, manager); } @@ -94,7 +91,11 @@ export class UserRoleService { throw new BadRequestException(ERROR_HANDLER.DEFAULT_GROUP_ADD_USER_ROLE_EXIST(newRole)); if (userRole.name == USER_ROLE.ADMIN) { - const groupUsers = await this.groupPermissionsService.getAllGroupUsers(userRole.id, null, manager); + const groupUsers = await this.groupPermissionsService.getAllGroupUsers( + { groupId: userRole.id, organizationId }, + null, + manager + ); if (groupUsers.length < 2) throw new BadRequestException({ message: { @@ -143,9 +144,6 @@ export class UserRoleService { const { role, userId } = addUserRoleObject; return await dbTransactionWrap(async (manager: EntityManager) => { const roleGroup = await this.getRoleGroup(role, organizationId, manager); - console.log('role group is'); - console.log(roleGroup); - const newUserRole = manager.create(GroupUsers, { groupId: roleGroup.id, userId }); await manager.save(newUserRole); }, manager); diff --git a/server/src/services/users.service.ts b/server/src/services/users.service.ts index 2522725ed6..b28ad49b84 100644 --- a/server/src/services/users.service.ts +++ b/server/src/services/users.service.ts @@ -98,7 +98,6 @@ export class UsersService { userParams: Partial, organizationId: string, role: USER_ROLE, - groups?: string[], existingUser?: User, isInvite?: boolean, defaultOrganizationId?: string, @@ -136,8 +135,6 @@ export class UsersService { ); } await this.userRoleService.addUserRole({ role, userId: user.id }, organizationId, manager); - - await this.attachUserGroup(groups, organizationId, user.id, manager); }, manager); return user; @@ -150,10 +147,21 @@ export class UsersService { manager?: EntityManager ): Promise { if (!groups) return; + console.log('Adding groups'); + console.log(groups); await dbTransactionWrap(async (manager: EntityManager) => { + if (groups?.length) + await this.groupPermissionsUtilityService.validateEditUserGroupPermissionsAddition( + { userId, groupsToAddIds: groups, organizationId }, + manager + ); await Promise.all( groups.map(async (groupId) => { - await this.groupPermissionsService.addGroupUsers({ userIds: [userId], groupId }, organizationId, manager); + await this.groupPermissionsService.addGroupUsers( + { userIds: [userId], groupId, allowRoleChange: false }, + organizationId, + manager + ); }) ); }, manager); @@ -181,6 +189,8 @@ export class UsersService { await this.removeUserGroupPermissionsIfExists(manager, user, removeGroups, organizationId); if (role) await this.userRoleService.editDefaultGroupUserRole({ userId, newRole: role }, organizationId, manager); + console.log('working till here'); + await this.attachUserGroup(addGroups, organizationId, userId, manager); return user; }, manager); @@ -195,29 +205,6 @@ export class UsersService { }, manager); } - //TODO: Remove this function if not needed - // async addUserGroupPermissions(manager: EntityManager, user: User, addGroups: string[], organizationId?: string) { - // const orgId = organizationId || user.defaultOrganizationId; - // if (addGroups) { - // const orgGroupPermissions = await this.groupPermissionsForOrganization(orgId); - - // for (const group of addGroups) { - // const orgGroupPermission = orgGroupPermissions.find((permission) => permission.group == group); - - // if (!orgGroupPermission) { - // throw new BadRequestException(`${group} group does not exist for current organization`); - // } - // await dbTransactionWrap(async (manager: EntityManager) => { - // const userGroupPermission = manager.create(UserGroupPermission, { - // groupPermissionId: orgGroupPermission.id, - // userId: user.id, - // }); - // await manager.save(userGroupPermission); - // }, manager); - // } - // } - // } - async removeUserGroupPermissionsIfExists( manager: EntityManager, user: User, From 540bf31f802822d92730fbe2c0f232a186cb3c52 Mon Sep 17 00:00:00 2001 From: kriks7iitk Date: Tue, 18 Jun 2024 12:15:51 +0530 Subject: [PATCH 020/190] removed log from server --- .../group_permissions.controller.v2.ts | 3 --- .../group-permissions.utility.service.ts | 5 ----- .../utility/group-permissions.utility.ts | 4 ---- .../services/group_permissions.service.v2.ts | 20 ++----------------- .../services/organization_users.service.ts | 3 --- server/src/services/organizations.service.ts | 13 ------------ .../services/permissions-ability.service.ts | 11 ---------- server/src/services/user-role.service.ts | 10 +++------- server/src/services/users.service.ts | 6 ------ 9 files changed, 5 insertions(+), 70 deletions(-) diff --git a/server/src/controllers/group_permissions.controller.v2.ts b/server/src/controllers/group_permissions.controller.v2.ts index 5b541cd38c..92f06a0999 100644 --- a/server/src/controllers/group_permissions.controller.v2.ts +++ b/server/src/controllers/group_permissions.controller.v2.ts @@ -188,9 +188,6 @@ export class GroupPermissionsControllerV2 { // const { groupId } = createGranularPermissionsDto; const granularPermissions = await this.granularPermissionsService.get(granularPermissionsId); - - console.log(granularPermissions); - const group = granularPermissions.group; validateGranularPermissionUpdateOperation(group); return await this.granularPermissionsService.update(granularPermissionsId, { diff --git a/server/src/modules/user_resource_permissions/services/group-permissions.utility.service.ts b/server/src/modules/user_resource_permissions/services/group-permissions.utility.service.ts index 2ab24d66c8..5e85f10898 100644 --- a/server/src/modules/user_resource_permissions/services/group-permissions.utility.service.ts +++ b/server/src/modules/user_resource_permissions/services/group-permissions.utility.service.ts @@ -48,8 +48,6 @@ export class GroupPermissionsUtilityService { async getAddableUser(user: User, groupId: string, searchInput?: string, manager?: EntityManager) { return await dbTransactionWrap(async (manager: EntityManager) => { - console.log(await addableUsersToGroupQuery(groupId, user.organizationId, manager, searchInput).getMany()); - return await addableUsersToGroupQuery(groupId, user.organizationId, manager, searchInput).getMany(); }, manager); } @@ -99,12 +97,9 @@ export class GroupPermissionsUtilityService { manager?: EntityManager ) { const { organizationId, userId, groupsToAddIds } = functionParam; - console.log('validating permissions'); - console.log(groupsToAddIds); return await dbTransactionWrap(async (manager: EntityManager) => { const userRole = await this.getUserRole(userId, organizationId, manager); - console.log(userRole); if (userRole.name === USER_ROLE.END_USER) { return await Promise.all( groupsToAddIds.map(async (id) => { diff --git a/server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts b/server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts index 86ddc026f8..ad89a6f590 100644 --- a/server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts +++ b/server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts @@ -84,10 +84,6 @@ export function validateUpdateGroupOperation( ): void { const { name } = group; const { name: newName } = updateGroupPermissionDto; - - console.log('Printing group'); - console.log(group); - if ( newName && (Object.values(USER_ROLE).includes(newName as USER_ROLE) || group.type == GROUP_PERMISSIONS_TYPE.DEFAULT) diff --git a/server/src/services/group_permissions.service.v2.ts b/server/src/services/group_permissions.service.v2.ts index dd5b33db5e..07a5565344 100644 --- a/server/src/services/group_permissions.service.v2.ts +++ b/server/src/services/group_permissions.service.v2.ts @@ -16,7 +16,6 @@ import { GetUsersResponse, } from '@module/user_resource_permissions/interface/group-permissions.interface'; import { GroupUsers } from 'src/entities/group_users.entity'; -import { GranularPermissionsService } from './granular_permissions.service'; import { getAllUserGroupsQuery, getUserDetailQuery, @@ -28,10 +27,7 @@ import { GroupPermissionsUtilityService } from '@module/user_resource_permission @Injectable() export class GroupPermissionsServiceV2 { - constructor( - private granularPermissionsService: GranularPermissionsService, - private groupPermissionsUtilityService: GroupPermissionsUtilityService - ) {} + constructor(private groupPermissionsUtilityService: GroupPermissionsUtilityService) {} /** * Creates a new group permission for a specified organization. @@ -84,8 +80,6 @@ export class GroupPermissionsServiceV2 { } async updateGroup(id: string, updateGroupPermissionDto: UpdateGroupPermissionDto, manager?: EntityManager) { - //License level validation at controller level - return await dbTransactionWrap(async (manager: EntityManager) => { const { group } = await this.getGroup(id); if (!group) throw new BadRequestException(ERROR_HANDLER.GROUP_NOT_EXIST); @@ -147,19 +141,9 @@ export class GroupPermissionsServiceV2 { } private async createGroupUser(user: User, group: GroupPermissions, manager?: EntityManager): Promise { - console.log(group); - console.log('logging group'); - const createObjec = { - userId: user.id, - groupId: group.id, - }; - console.log(createObjec); - return await dbTransactionWrap(async (manager: EntityManager) => { return await catchDbException(async () => { - const groupUser = manager.create(GroupUsers, createObjec); - console.log(groupUser); - + const groupUser = manager.create(GroupUsers, { groupId: group.id, userId: user.id }); return await manager.save(groupUser); }, [DATA_BASE_CONSTRAINTS.GROUP_USER_UNIQUE]); }, manager); diff --git a/server/src/services/organization_users.service.ts b/server/src/services/organization_users.service.ts index c782dee533..f3035a7107 100644 --- a/server/src/services/organization_users.service.ts +++ b/server/src/services/organization_users.service.ts @@ -100,9 +100,6 @@ export class OrganizationUsersService { } async updateOrgUser(organizationUserId: string, updateUserDto) { - console.log(updateUserDto); - console.log('logging this'); - const organizationUser = await this.organizationUsersRepository.findOne({ where: { id: organizationUserId } }); return await this.usersService.update( organizationUser.userId, diff --git a/server/src/services/organizations.service.ts b/server/src/services/organizations.service.ts index fe89e803d2..4d8ceca736 100644 --- a/server/src/services/organizations.service.ts +++ b/server/src/services/organizations.service.ts @@ -121,8 +121,6 @@ export class OrganizationsService { if (user) { await this.organizationUserService.create(user, organization, false, manager); - console.log('yes this is running'); - await this.userRoleService.addUserRole({ role: USER_ROLE.ADMIN, userId: user.id }, organization.id, manager); } }, manager); @@ -572,17 +570,11 @@ export class OrganizationsService { email: inviteNewUserDto.email, ...getUserStatusAndSource(lifecycleEvents.USER_INVITE), }; - //TODO: Need to add single role as option and same need to be changed on frontend - console.log('invite user'); - console.log(inviteNewUserDto); - const groups = inviteNewUserDto?.groups; const role = inviteNewUserDto.role; return await dbTransactionWrap(async (manager: EntityManager) => { let user = await this.usersService.findByEmail(userParams.email, undefined, undefined, manager); - console.log(user); - if (user?.status === USER_STATUS.ARCHIVED) { throw new BadRequestException(getUserErrorMessages(user.status)); } @@ -612,8 +604,6 @@ export class OrganizationsService { // User not setup shouldSendWelcomeMail = true; } - console.log('default organization'); - console.log(defaultOrganization); user = await this.usersService.create( userParams, @@ -624,9 +614,6 @@ export class OrganizationsService { defaultOrganization?.id, manager ); - - console.log('loggin users'); - if (defaultOrganization) { // Setting up default organization await this.organizationUserService.create(user, defaultOrganization, true, manager); diff --git a/server/src/services/permissions-ability.service.ts b/server/src/services/permissions-ability.service.ts index 4bc0b68d8b..65487bf088 100644 --- a/server/src/services/permissions-ability.service.ts +++ b/server/src/services/permissions-ability.service.ts @@ -35,9 +35,6 @@ export class AbilityService { user: User, resourcePermissionsObject: ResourcePermissionQueryObject ): Promise { - console.log('logging resource object'); - console.log(resourcePermissionsObject); - const permissions = await this.getResourcePermission(user, resourcePermissionsObject); const adminGroup = permissions.find((group) => group.name === USER_ROLE.ADMIN); const appsGranularPermissions = permissions.flatMap((item) => item.groupGranularPermissions); @@ -55,9 +52,6 @@ export class AbilityService { if (resources && resources.some((item) => item.resource === TOOLJET_RESOURCE.APP)) { userPermissions[TOOLJET_RESOURCE.APP] = this.createUserAppsPermissions(appsGranularPermissions); } - console.log('printing user permissions'); - console.log(userPermissions); - return userPermissions; } @@ -65,11 +59,6 @@ export class AbilityService { const userAppsPermissions: UserAppsPermissions = appsGranularPermissions.reduce((acc, permission) => { const appsPermission = permission?.appsGroupPermissions; const groupApps = appsPermission?.groupApps ? appsPermission.groupApps.map((item) => item.appId) : []; - console.log('logging'); - console.log(appsPermission); - console.log(groupApps); - console.log(acc); - return { isAllEditable: acc.isAllEditable || (permission.isAll && appsPermission?.canEdit), editableAppsId: Array.from(new Set([...acc.editableAppsId, ...(appsPermission?.canEdit ? groupApps : [])])), diff --git a/server/src/services/user-role.service.ts b/server/src/services/user-role.service.ts index 5effd8fe30..8f5c7b243a 100644 --- a/server/src/services/user-role.service.ts +++ b/server/src/services/user-role.service.ts @@ -81,8 +81,6 @@ export class UserRoleService { manager?: EntityManager ): Promise { const { newRole, userId } = editRoleDto; - console.log('Edit role update'); - return await dbTransactionWrap(async (manager: EntityManager) => { const userRole = await this.groupPermissionsUtilityService.getUserRole(userId, organizationId); if (!userRole) throw new BadRequestException(ERROR_HANDLER.ADD_GROUP_USER_NON_EXISTING_USER); @@ -126,13 +124,11 @@ export class UserRoleService { const userGroups = await this.groupPermissionsService.getAllUserGroups(userId, organizationId); for (const customUserGroup of userGroups) { - const editPermissionsPresent = Object.values(customUserGroup).some( - (value) => typeof value === 'boolean' && value === true + const editPermissionsPresent = await this.groupPermissionsUtilityService.isEditableGroup( + customUserGroup, + manager ); const groupUsers = customUserGroup.groupUsers; - console.log(groupUsers); - - //NEED TO CHECK FOR ALL GRANULAR PERMISSIONS AS WELL FOR THAT GROUP if (editPermissionsPresent) await this.groupPermissionsService.deleteGroupUser(groupUsers[0].id, manager); } } diff --git a/server/src/services/users.service.ts b/server/src/services/users.service.ts index b28ad49b84..1f60ef21b4 100644 --- a/server/src/services/users.service.ts +++ b/server/src/services/users.service.ts @@ -108,8 +108,6 @@ export class UsersService { await dbTransactionWrap(async (manager: EntityManager) => { if (!existingUser) { - console.log('creating exisitng user'); - user = manager.create(User, { email, firstName, @@ -147,8 +145,6 @@ export class UsersService { manager?: EntityManager ): Promise { if (!groups) return; - console.log('Adding groups'); - console.log(groups); await dbTransactionWrap(async (manager: EntityManager) => { if (groups?.length) await this.groupPermissionsUtilityService.validateEditUserGroupPermissionsAddition( @@ -189,8 +185,6 @@ export class UsersService { await this.removeUserGroupPermissionsIfExists(manager, user, removeGroups, organizationId); if (role) await this.userRoleService.editDefaultGroupUserRole({ userId, newRole: role }, organizationId, manager); - console.log('working till here'); - await this.attachUserGroup(addGroups, organizationId, userId, manager); return user; }, manager); From 70ad703637d51a0b7d120012473412cea07fe180 Mon Sep 17 00:00:00 2001 From: Muhsin Shah Date: Tue, 25 Jun 2024 15:01:36 +0530 Subject: [PATCH 021/190] regenerated the pacakge-lock json files --- frontend/package-lock.json | 11790 ++++++++++++++++++----------------- plugins/package-lock.json | 10749 ++++++++++++++++++------------- server/package-lock.json | 3436 +++++----- server/package.json | 4 +- 4 files changed, 13782 insertions(+), 12197 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 91d5bce305..dcaabac0de 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -174,7 +174,6 @@ } }, "../plugins": { - "name": "@tooljet/plugins", "version": "0.0.1", "dependencies": { "@tooljet-plugins/airtable": "file:packages/airtable", @@ -245,486 +244,19 @@ "typescript": "^4.9.5" } }, - "../plugins/packages/airtable": { - "name": "@tooljet-plugins/airtable", - "version": "1.0.0", - "extraneous": true, - "dependencies": { - "@tooljet-plugins/common": "file:../common", - "got": "^11.8.6", - "nock": "^13.3.0", - "react": "^17.0.2", - "rimraf": "^3.0.2" - } - }, - "../plugins/packages/amazonses": { - "name": "@tooljet-plugins/amazonses", - "version": "1.0.0", - "extraneous": true, - "dependencies": { - "@aws-sdk/client-sesv2": "^3.264.0", - "@aws-sdk/credential-providers": "^3.267.0", - "@tooljet-plugins/common": "file:../common", - "react": "^17.0.2", - "rimraf": "^3.0.2" - } - }, - "../plugins/packages/appwrite": { - "name": "@tooljet-plugins/appwrite", - "version": "1.0.0", - "extraneous": true, - "dependencies": { - "@tooljet-plugins/common": "file:../common", - "node-appwrite": "^5.1.0", - "react": "^17.0.2" - } - }, - "../plugins/packages/athena": { - "name": "@tooljet-plugins/athena", - "version": "1.0.0", - "extraneous": true, - "dependencies": { - "@aws-sdk/credential-providers": "^3.267.0", - "@tooljet-plugins/common": "file:../common", - "athena-express": "^7.1.5", - "aws-sdk": "^2.1309.0", - "react": "^17.0.2" - } - }, - "../plugins/packages/baserow": { - "name": "@tooljet-plugins/baserow", - "version": "1.0.0", - "extraneous": true, - "dependencies": { - "@tooljet-plugins/common": "file:../common", - "got": "^12.0.3", - "json5": "^2.2.3", - "react": "^17.0.2" - } - }, - "../plugins/packages/bigquery": { - "name": "@tooljet-plugins/bigquery", - "version": "1.0.0", - "extraneous": true, - "dependencies": { - "@google-cloud/bigquery": "^5.12.0", - "@tooljet-plugins/common": "file:../common", - "json5": "^2.2.3", - "react": "^17.0.2" - } - }, - "../plugins/packages/clickhouse": { - "name": "@tooljet-plugins/clickhouse", - "version": "1.0.0", - "extraneous": true, - "dependencies": { - "@tooljet-plugins/common": "file:../common", - "clickhouse": "^2.6.0", - "react": "^17.0.2" - } - }, - "../plugins/packages/common": { - "name": "@tooljet-plugins/common", - "version": "1.0.0", - "extraneous": true, - "dependencies": { - "react": "^17.0.2", - "rimraf": "^3.0.2", - "tough-cookie": "^4.1.3" - }, - "devDependencies": { - "@types/tough-cookie": "^4.0.2" - } - }, - "../plugins/packages/cosmosdb": { - "name": "@tooljet-plugins/cosmosdb", - "version": "1.0.0", - "extraneous": true, - "dependencies": { - "@azure/cosmos": "^3.17.2", - "@tooljet-plugins/common": "file:../common", - "react": "^17.0.2" - } - }, - "../plugins/packages/couchdb": { - "name": "@tooljet-plugins/couchdb", - "version": "1.0.0", - "extraneous": true, - "dependencies": { - "@tooljet-plugins/common": "file:../common", - "react": "^17.0.2" - } - }, - "../plugins/packages/dynamodb": { - "name": "@tooljet-plugins/dynamodb", - "version": "1.0.0", - "extraneous": true, - "dependencies": { - "@tooljet-plugins/common": "file:../common", - "aws-sdk": "^2.1309.0", - "react": "^17.0.2", - "rimraf": "^3.0.2" - } - }, - "../plugins/packages/elasticsearch": { - "name": "@tooljet-plugins/elasticsearch", - "version": "1.0.0", - "extraneous": true, - "dependencies": { - "@opensearch-project/opensearch": "^1.1.0", - "@tooljet-plugins/common": "file:../common", - "react": "^17.0.2", - "rimraf": "^3.0.2" - } - }, - "../plugins/packages/firestore": { - "name": "@tooljet-plugins/firestore", - "version": "1.0.0", - "extraneous": true, - "dependencies": { - "@google-cloud/firestore": "^5.0.2", - "@tooljet-plugins/common": "file:../common", - "react": "^17.0.2", - "rimraf": "^3.0.2" - } - }, - "../plugins/packages/gcs": { - "name": "@tooljet-plugins/gcs", - "version": "1.0.0", - "extraneous": true, - "dependencies": { - "@google-cloud/storage": "^5.20.5", - "@tooljet-plugins/common": "file:../common", - "react": "^17.0.2", - "rimraf": "^3.0.2" - } - }, - "../plugins/packages/googlesheets": { - "name": "@tooljet-plugins/googlesheets", - "version": "1.0.0", - "extraneous": true, - "dependencies": { - "@tooljet-plugins/common": "file:../common", - "got": "^11.8.6", - "react": "^17.0.2", - "rimraf": "^3.0.2" - } - }, - "../plugins/packages/graphql": { - "name": "@tooljet-plugins/graphql", - "version": "1.0.0", - "extraneous": true, - "dependencies": { - "@tooljet-plugins/common": "file:../common", - "got": "^11.8.6", - "react": "^17.0.2", - "rimraf": "^3.0.2" - } - }, - "../plugins/packages/influxdb": { - "name": "@tooljet-plugins/influxdb", - "version": "1.0.0", - "extraneous": true, - "dependencies": { - "@tooljet-plugins/common": "file:../common", - "react": "^17.0.2" - } - }, - "../plugins/packages/mailgun": { - "name": "@tooljet-plugins/mailgun", - "version": "1.0.0", - "extraneous": true, - "dependencies": { - "@tooljet-plugins/common": "file:../common", - "react": "^17.0.2" - } - }, - "../plugins/packages/mariadb": { - "name": "@tooljet-plugins/mariadb", - "version": "1.0.0", - "extraneous": true, - "dependencies": { - "@tooljet-plugins/common": "file:../common", - "mariadb": "^3.2.3", - "react": "^17.0.2" - } - }, - "../plugins/packages/minio": { - "name": "@tooljet-plugins/minio", - "version": "1.0.0", - "extraneous": true, - "dependencies": { - "@tooljet-plugins/common": "file:../common", - "minio": "^7.0.32", - "react": "^17.0.2" - } - }, - "../plugins/packages/mongodb": { - "name": "@tooljet-plugins/mongodb", - "version": "1.0.0", - "extraneous": true, - "dependencies": { - "@tooljet-plugins/common": "file:../common", - "json5": "^2.2.3", - "mongodb": "^4.13.0", - "react": "^17.0.2", - "rimraf": "^3.0.2" - } - }, - "../plugins/packages/mssql": { - "name": "@tooljet-plugins/mssql", - "version": "1.0.0", - "extraneous": true, - "dependencies": { - "@tooljet-plugins/common": "file:../common", - "knex": "^0.95.15", - "react": "^17.0.2", - "rimraf": "^3.0.2", - "tedious": "^11.8.0" - } - }, - "../plugins/packages/mysql": { - "name": "@tooljet-plugins/mysql", - "version": "1.0.0", - "extraneous": true, - "dependencies": { - "@tooljet-plugins/common": "file:../common", - "knex": "^0.95.15", - "mysql2": "^3.6.0", - "react": "^17.0.2", - "rimraf": "^3.0.2" - } - }, - "../plugins/packages/n8n": { - "name": "@tooljet-plugins/n8n", - "version": "1.0.0", - "extraneous": true, - "dependencies": { - "@tooljet-plugins/common": "file:../common", - "react": "^17.0.2" - } - }, - "../plugins/packages/notion": { - "name": "@tooljet-plugins/notion", - "version": "1.0.0", - "extraneous": true, - "dependencies": { - "@notionhq/client": "^1.0.4", - "@tooljet-plugins/common": "file:../common", - "react": "^17.0.2" - } - }, - "../plugins/packages/openapi": { - "name": "@tooljet-plugins/openapi", - "version": "1.0.0", - "extraneous": true, - "dependencies": { - "@tooljet-plugins/common": "file:../common", - "got": "^11.8.6", - "react": "^17.0.2", - "tough-cookie": "^4.1.2" - } - }, - "../plugins/packages/oracledb": { - "name": "@tooljet-plugins/oracledb", - "version": "1.0.0", - "extraneous": true, - "dependencies": { - "@tooljet-plugins/common": "file:../common", - "knex": "^0.95.14", - "oracledb": "https://github.com/oracle/node-oracledb/releases/download/v5.3.0/oracledb-src-5.3.0.tgz", - "react": "^17.0.2" - } - }, - "../plugins/packages/postgresql": { - "name": "@tooljet-plugins/postgresql", - "version": "1.0.0", - "extraneous": true, - "dependencies": { - "@tooljet-plugins/common": "file:../common", - "pg": "^8.9.0", - "react": "^17.0.2", - "rimraf": "^3.0.2" - } - }, - "../plugins/packages/redis": { - "name": "@tooljet-plugins/redis", - "version": "1.0.0", - "extraneous": true, - "dependencies": { - "@tooljet-plugins/common": "file:../common", - "ioredis": "^4.28.5", - "react": "^17.0.2", - "rimraf": "^3.0.2" - } - }, - "../plugins/packages/restapi": { - "name": "@tooljet-plugins/restapi", - "version": "1.0.0", - "extraneous": true, - "dependencies": { - "@tooljet-plugins/common": "file:../common", - "form-data": "^4.0.0", - "got": "^11.8.6", - "react": "^17.0.2", - "rimraf": "^3.0.2", - "url": "^0.11.0" - } - }, - "../plugins/packages/rethinkdb": { - "name": "@tooljet-plugins/rethinkdb", - "version": "1.0.0", - "extraneous": true, - "dependencies": { - "@tooljet-plugins/common": "file:../common", - "react": "^17.0.2", - "rethinkdb": "^2.4.2" - } - }, - "../plugins/packages/s3": { - "name": "@tooljet-plugins/s3", - "version": "1.0.0", - "extraneous": true, - "dependencies": { - "@aws-sdk/client-s3": "^3.264.0", - "@aws-sdk/credential-providers": "^3.266.1", - "@aws-sdk/s3-request-presigner": "^3.264.0", - "@tooljet-plugins/common": "file:../common", - "react": "^17.0.2", - "rimraf": "^3.0.2" - } - }, - "../plugins/packages/saphana": { - "name": "@tooljet-plugins/saphana", - "version": "1.0.0", - "extraneous": true, - "dependencies": { - "@sap/hana-client": "^2.12.22", - "@tooljet-plugins/common": "file:../common", - "react": "^17.0.2" - } - }, - "../plugins/packages/sendgrid": { - "name": "@tooljet-plugins/sendgrid", - "version": "1.0.0", - "extraneous": true, - "dependencies": { - "@sendgrid/mail": "^7.7.0", - "@tooljet-plugins/common": "file:../common", - "react": "^17.0.2", - "rimraf": "^3.0.2" - } - }, - "../plugins/packages/slack": { - "name": "@tooljet-plugins/slack", - "version": "1.0.0", - "extraneous": true, - "dependencies": { - "@tooljet-plugins/common": "file:../common", - "got": "^11.8.6", - "react": "^17.0.2", - "rimraf": "^3.0.2" - } - }, - "../plugins/packages/smtp": { - "name": "@tooljet-plugins/smtp", - "version": "1.0.0", - "extraneous": true, - "dependencies": { - "@tooljet-plugins/common": "file:../common", - "nodemailer": "^6.9.1", - "react": "^17.0.2" - }, - "devDependencies": { - "@types/nodemailer": "^6.4.7" - } - }, - "../plugins/packages/snowflake": { - "name": "@tooljet-plugins/snowflake", - "version": "1.0.0", - "extraneous": true, - "dependencies": { - "@tooljet-plugins/common": "file:../common", - "@types/snowflake-sdk": "^1.6.17", - "react": "^17.0.2", - "snowflake-sdk": "^1.9.1" - } - }, - "../plugins/packages/stripe": { - "name": "@tooljet-plugins/stripe", - "version": "1.0.0", - "extraneous": true, - "dependencies": { - "@tooljet-plugins/common": "file:../common", - "got": "^11.8.6", - "react": "^17.0.2", - "rimraf": "^3.0.2" - } - }, - "../plugins/packages/twilio": { - "name": "@tooljet-plugins/twilio", - "version": "1.0.0", - "extraneous": true, - "dependencies": { - "@tooljet-plugins/common": "file:../common", - "react": "^17.0.2", - "rimraf": "^3.0.2", - "twilio": "^3.84.1" - } - }, - "../plugins/packages/typesense": { - "name": "@tooljet-plugins/typesense", - "version": "1.0.0", - "extraneous": true, - "dependencies": { - "@tooljet-plugins/common": "file:../common", - "react": "^17.0.2", - "rimraf": "^3.0.2", - "typesense": "^1.5.1" - } - }, - "../plugins/packages/woocommerce": { - "name": "@tooljet-plugins/woocommerce", - "version": "1.0.0", - "extraneous": true, - "dependencies": { - "@tooljet-plugins/common": "file:../common", - "@woocommerce/woocommerce-rest-api": "^1.0.1", - "react": "^17.0.2", - "woocommerce-api": "^1.5.0" - } - }, - "../plugins/packages/zendesk": { - "name": "@tooljet-plugins/zendesk", - "version": "1.0.0", - "extraneous": true, - "dependencies": { - "@tooljet-plugins/common": "file:../common", - "react": "^17.0.2" - } - }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@adobe/css-tools": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.2.tgz", - "integrity": "sha512-DA5a1C0gD/pLOvhv33YMrbf2FK3oUzwNl9oOJqE4XVjuEtt6XIakRcsd7eLiOSPkp1kTRQGICTA8cKra/vFbjw==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.0.tgz", + "integrity": "sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ==", "dev": true }, "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" @@ -732,8 +264,9 @@ }, "node_modules/@aw-web-design/x-default-browser": { "version": "1.4.126", + "resolved": "https://registry.npmjs.org/@aw-web-design/x-default-browser/-/x-default-browser-1.4.126.tgz", + "integrity": "sha512-Xk1sIhyNC/esHGGVjL/niHLowM0csl/kFO5uawBy4IrWwy0o1G8LGt3jP6nmWGz+USxeeqbihAmp/oVZju6wug==", "dev": true, - "license": "MIT", "dependencies": { "default-browser-id": "3.0.0" }, @@ -742,40 +275,40 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", - "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz", + "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.5.tgz", - "integrity": "sha512-Cwc2XjUrG4ilcfOw4wBAK+enbdgwAcAJCfGUItPBKR7Mjw4aEfAFYrLxeRp4jWgtNIKn3n2AlBOfwwafl+42/g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz", + "integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.5", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.5", - "@babel/parser": "^7.23.5", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.5", - "@babel/types": "^7.23.5", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helpers": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/template": "^7.24.7", + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -792,15 +325,16 @@ }, "node_modules/@babel/core/node_modules/semver": { "version": "6.3.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/eslint-parser": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.23.3.tgz", - "integrity": "sha512-9bTuNlyx7oSstodm1cR1bECj4fkiknsDa1YniISkJemMY3DGhJNYBECbe6QD/q54mp2J8VO66jW3/7uP//iFCw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.24.7.tgz", + "integrity": "sha512-SO5E3bVxDuxyNxM5agFv480YA2HO6ohZbGxbazZdIk3KQOPOGVNw6q78I9/lbviIf95eq6tPozeYnJLbjnC8IA==", "dev": true, "dependencies": { "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", @@ -812,7 +346,7 @@ }, "peerDependencies": { "@babel/core": "^7.11.0", - "eslint": "^7.5.0 || ^8.0.0" + "eslint": "^7.5.0 || ^8.0.0 || ^9.0.0" } }, "node_modules/@babel/eslint-parser/node_modules/semver": { @@ -825,13 +359,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.5.tgz", - "integrity": "sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", + "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", "dependencies": { - "@babel/types": "^7.23.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", + "@babel/types": "^7.24.7", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" }, "engines": { @@ -839,34 +373,36 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.22.5", - "license": "MIT", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", - "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz", + "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==", "dependencies": { - "@babel/types": "^7.22.15" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", - "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz", + "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==", "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", + "@babel/compat-data": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "browserslist": "^4.22.2", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -876,24 +412,25 @@ }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { "version": "6.3.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.5.tgz", - "integrity": "sha512-QELlRWxSpgdwdJzSJn4WAhKC+hvw/AtHbbrIoncKHkhKKR/luAlKkgBDcri1EzWAo8f8VvYVryEHN4tax/V67A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.7.tgz", + "integrity": "sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-member-expression-to-functions": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.7", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", "semver": "^6.3.1" }, "engines": { @@ -905,17 +442,18 @@ }, "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { "version": "6.3.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", - "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.24.7.tgz", + "integrity": "sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-annotate-as-pure": "^7.24.7", "regexpu-core": "^5.3.1", "semver": "^6.3.1" }, @@ -928,15 +466,16 @@ }, "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { "version": "6.3.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz", - "integrity": "sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", + "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-plugin-utils": "^7.22.5", @@ -949,67 +488,73 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", + "dependencies": { + "@babel/types": "^7.24.7" + }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", + "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "license": "MIT", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", + "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", - "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.7.tgz", + "integrity": "sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==", "dependencies": { - "@babel/types": "^7.23.0" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", "dependencies": { - "@babel/types": "^7.22.15" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz", + "integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1019,30 +564,32 @@ } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.22.5", - "license": "MIT", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", + "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "license": "MIT", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz", + "integrity": "sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", - "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.7.tgz", + "integrity": "sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-wrap-function": "^7.22.20" + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-wrap-function": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1052,13 +599,13 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", - "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.7.tgz", + "integrity": "sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-member-expression-to-functions": "^7.22.15", - "@babel/helper-optimise-call-expression": "^7.22.5" + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.7", + "@babel/helper-optimise-call-expression": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1068,102 +615,108 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "license": "MIT", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.22.5", - "license": "MIT", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", + "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "license": "MIT", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", + "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", - "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz", + "integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", - "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.24.7.tgz", + "integrity": "sha512-N9JIYk3TD+1vq/wn77YnJOqMtfWhNewNE+DJV4puD2X7Ew9J4JvrzrFDfTfyv5EgEXVy9/Wt8QiOErzEmv5Ifw==", "dependencies": { - "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.15", - "@babel/types": "^7.22.19" + "@babel/helper-function-name": "^7.24.7", + "@babel/template": "^7.24.7", + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.5.tgz", - "integrity": "sha512-oO7us8FzTEsG3U6ag9MfdF1iA/7Z6dz+MtFhifZk8C8o453rGJFFWUP1t+ULM9TUIAzC9uxXEiXjOiVMyd7QPg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.7.tgz", + "integrity": "sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==", "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.5", - "@babel/types": "^7.23.5" + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-validator-identifier": "^7.24.7", "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.5.tgz", - "integrity": "sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", + "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", "bin": { "parser": "bin/babel-parser.js" }, @@ -1171,12 +724,27 @@ "node": ">=6.0.0" } }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz", - "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.7.tgz", + "integrity": "sha512-TiT1ss81W80eQsN+722OaeQMY/G4yTb4G9JrqeiDADs3N8lbPMGldWi9x8tyqCW5NLx1Jh2AvkE6r6QvEltMMQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.7.tgz", + "integrity": "sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1186,13 +754,13 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", - "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz", + "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.23.3" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1202,12 +770,12 @@ } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.3.tgz", - "integrity": "sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.7.tgz", + "integrity": "sha512-utA4HuR6F4Vvcr+o4DnjL8fCOlgRFGbeeBEGNg3ZTrLFw6VWG5XmUrvcQ0FjIYMU2ST4XcR2Wsp7t9qOAPnxMg==", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1253,13 +821,30 @@ } }, "node_modules/@babel/plugin-proposal-export-default-from": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.23.3.tgz", - "integrity": "sha512-Q23MpLZfSGZL1kU7fWqV262q65svLSCIP5kZ/JCW/rKTCm/FrLjpvEd2kfUYMVeHh4QhV/xzyoRAHWrAZJrE3Q==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.24.7.tgz", + "integrity": "sha512-CcmFwUJ3tKhLjPdt4NP+SHMshebytF8ZTYOv5ZDpkzq2sin80Wb5vJrGt8fhPrORQCfoSa0LAxC/DW+GAC5+Hw==", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-export-default-from": "^7.23.3" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-export-default-from": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", + "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-logical-assignment-operators instead.", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { "node": ">=6.9.0" @@ -1359,7 +944,8 @@ }, "node_modules/@babel/plugin-proposal-private-property-in-object": { "version": "7.21.0-placeholder-for-preset-env.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", "engines": { "node": ">=6.9.0" }, @@ -1403,7 +989,8 @@ }, "node_modules/@babel/plugin-syntax-class-static-block": { "version": "7.14.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1426,12 +1013,12 @@ } }, "node_modules/@babel/plugin-syntax-export-default-from": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.23.3.tgz", - "integrity": "sha512-KeENO5ck1IeZ/l2lFZNy+mpobV3D2Zy5C1YFnWm+YuY5mQiAWc4yAp13dqgguwsBsFVLh4LPCEqCa5qW13N+hw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.24.7.tgz", + "integrity": "sha512-bTPz4/635WQ9WhwsyPdxUJDVpsi/X9BMmy/8Rf/UAlOO4jSql4CxUCjWI5PiM+jG+c4LVPTScoTw80geFj9+Bw==", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1442,7 +1029,8 @@ }, "node_modules/@babel/plugin-syntax-export-namespace-from": { "version": "7.8.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", "dependencies": { "@babel/helper-plugin-utils": "^7.8.3" }, @@ -1451,11 +1039,11 @@ } }, "node_modules/@babel/plugin-syntax-flow": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.23.3.tgz", - "integrity": "sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.7.tgz", + "integrity": "sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1465,11 +1053,11 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", - "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz", + "integrity": "sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1479,11 +1067,11 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", - "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz", + "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1515,11 +1103,11 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", - "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", + "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1596,7 +1184,8 @@ }, "node_modules/@babel/plugin-syntax-private-property-in-object": { "version": "7.14.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1622,11 +1211,11 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", - "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz", + "integrity": "sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1637,7 +1226,8 @@ }, "node_modules/@babel/plugin-syntax-unicode-sets-regex": { "version": "7.18.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -1650,11 +1240,11 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", - "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", + "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1664,13 +1254,13 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.4.tgz", - "integrity": "sha512-efdkfPhHYTtn0G6n2ddrESE91fgXxjlqLsnUtPWnJs4a4mZIbUaK7ffqKIIUKXSHwcDvaCVX6GXkaJJFqtX7jw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.7.tgz", + "integrity": "sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g==", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.20", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-remap-async-to-generator": "^7.24.7", "@babel/plugin-syntax-async-generators": "^7.8.4" }, "engines": { @@ -1681,13 +1271,13 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", - "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz", + "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==", "dependencies": { - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.20" + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-remap-async-to-generator": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1697,11 +1287,11 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", - "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz", + "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1711,11 +1301,11 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", - "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.7.tgz", + "integrity": "sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1725,12 +1315,12 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", - "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz", + "integrity": "sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1740,12 +1330,12 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", - "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz", + "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, "engines": { @@ -1756,18 +1346,17 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.5.tgz", - "integrity": "sha512-jvOTR4nicqYC9yzOHIhXG5emiFEOpappSJAl73SDSEDcybD+Puuze8Tnpb9p9qEyYup24tq891gkaygIFvWDqg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.7.tgz", + "integrity": "sha512-CFbbBigp8ln4FU6Bpy6g7sE8B/WmCmzvivzUC6xDAdWVsjYTXijpuuGJmYkAaoWAzcItGKT3IOAbxRItZ5HTjw==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20", - "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", "globals": "^11.1.0" }, "engines": { @@ -1778,12 +1367,12 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", - "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", + "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/template": "^7.22.15" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/template": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1793,11 +1382,11 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", - "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.7.tgz", + "integrity": "sha512-19eJO/8kdCQ9zISOf+SEUJM/bAUIsvY3YDnXZTupUCQ8LgrWnsG/gFB9dvXqdXnRXMAM8fvt7b0CBKQHNGy1mw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1807,12 +1396,12 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", - "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz", + "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1822,11 +1411,11 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", - "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz", + "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1836,11 +1425,11 @@ } }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", - "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", + "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, "engines": { @@ -1851,12 +1440,12 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", - "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz", + "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==", "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1866,11 +1455,11 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", - "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz", + "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, "engines": { @@ -1881,12 +1470,12 @@ } }, "node_modules/@babel/plugin-transform-flow-strip-types": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.23.3.tgz", - "integrity": "sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.24.7.tgz", + "integrity": "sha512-cjRKJ7FobOH2eakx7Ja+KpJRj8+y+/SiB3ooYm/n2UJfxu0oEaOoxOinitkJcPqv9KxS0kxTGPUaR7L2XcXDXA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-flow": "^7.23.3" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-flow": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1896,11 +1485,12 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.3.tgz", - "integrity": "sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz", + "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1910,13 +1500,13 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", - "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.7.tgz", + "integrity": "sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w==", "dependencies": { - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1926,11 +1516,11 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", - "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz", + "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-json-strings": "^7.8.3" }, "engines": { @@ -1941,11 +1531,11 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", - "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.7.tgz", + "integrity": "sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1955,11 +1545,11 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", - "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz", + "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { @@ -1970,11 +1560,11 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", - "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz", + "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1984,12 +1574,12 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", - "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz", + "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==", "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1999,13 +1589,13 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", - "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.7.tgz", + "integrity": "sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ==", "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5" + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2015,14 +1605,14 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz", - "integrity": "sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.7.tgz", + "integrity": "sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw==", "dependencies": { - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2032,12 +1622,12 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", - "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz", + "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==", "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2047,11 +1637,12 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.22.5", - "license": "MIT", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz", + "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2061,11 +1652,11 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", - "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz", + "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2075,11 +1666,11 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", - "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz", + "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, "engines": { @@ -2090,11 +1681,11 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", - "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz", + "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, "engines": { @@ -2105,15 +1696,14 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz", - "integrity": "sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz", + "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==", "dependencies": { - "@babel/compat-data": "^7.23.3", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.23.3" + "@babel/plugin-transform-parameters": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2123,12 +1713,12 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", - "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz", + "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2138,11 +1728,11 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", - "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz", + "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, "engines": { @@ -2153,12 +1743,12 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", - "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.7.tgz", + "integrity": "sha512-tK+0N9yd4j+x/4hxF3F0e0fu/VdcxU18y5SevtyM/PCFlQvXbR0Zmlo2eBrKtVipGNFzpq56o8WsIIKcJFUCRQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, "engines": { @@ -2169,11 +1759,11 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", - "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", + "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2183,12 +1773,12 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", - "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz", + "integrity": "sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2198,13 +1788,13 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", - "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz", + "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { @@ -2215,11 +1805,11 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", - "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz", + "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2229,12 +1819,12 @@ } }, "node_modules/@babel/plugin-transform-react-constant-elements": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.23.3.tgz", - "integrity": "sha512-zP0QKq/p6O42OL94udMgSfKXyse4RyJ0JqbQ34zDAONWjyrEsghYEyTSK5FIpmXmCpB55SHokL1cRRKHv8L2Qw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.24.7.tgz", + "integrity": "sha512-7LidzZfUXyfZ8/buRW6qIIHBY8wAZ1OrY9c/wTr8YhZ6vMPo+Uc/CVFLYY1spZrEQlD4w5u8wjqk5NQ3OVqQKA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2244,11 +1834,11 @@ } }, "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz", - "integrity": "sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.7.tgz", + "integrity": "sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2258,15 +1848,15 @@ } }, "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz", - "integrity": "sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.24.7.tgz", + "integrity": "sha512-+Dj06GDZEFRYvclU6k4bme55GKBEWUmByM/eoKuqg4zTNQHiApWRhQph5fxQB2wAEFvRzL1tOEj1RJ19wJrhoA==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-jsx": "^7.23.3", - "@babel/types": "^7.23.4" + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-jsx": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2276,11 +1866,12 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.22.5", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.24.7.tgz", + "integrity": "sha512-QG9EnzoGn+Qar7rxuW+ZOsbWOt56FvvI93xInqsZDC5fsekx1AlIO4KIJ5M+D0p0SqSH156EpmZyXq630B8OlQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.22.5" + "@babel/plugin-transform-react-jsx": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2290,12 +1881,12 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz", - "integrity": "sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.7.tgz", + "integrity": "sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2305,12 +1896,12 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz", - "integrity": "sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.7.tgz", + "integrity": "sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==", "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2320,14 +1911,13 @@ } }, "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz", - "integrity": "sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.7.tgz", + "integrity": "sha512-PLgBVk3fzbmEjBJ/u8kFzOqS9tUeDjiaWud/rRym/yjCo/M9cASPlnrd2ZmmZpQT40fOOrvR8jh+n8jikrOhNA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2337,11 +1927,11 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", - "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz", + "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "regenerator-transform": "^0.15.2" }, "engines": { @@ -2352,11 +1942,11 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", - "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz", + "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2366,15 +1956,15 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.4.tgz", - "integrity": "sha512-ITwqpb6V4btwUG0YJR82o2QvmWrLgDnx/p2A3CTPYGaRgULkDiC0DRA2C4jlRB9uXGUEfaSS/IGHfVW+ohzYDw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.7.tgz", + "integrity": "sha512-YqXjrk4C+a1kZjewqt+Mmu2UuV1s07y8kqcUf4qYLnoqemhR4gRQikhdAhSVJioMjVTu6Mo6pAbaypEA3jY6fw==", "dependencies": { - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "babel-plugin-polyfill-corejs2": "^0.4.6", - "babel-plugin-polyfill-corejs3": "^0.8.5", - "babel-plugin-polyfill-regenerator": "^0.5.3", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.1", + "babel-plugin-polyfill-regenerator": "^0.6.1", "semver": "^6.3.1" }, "engines": { @@ -2393,11 +1983,11 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", - "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz", + "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2407,12 +1997,12 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", - "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", + "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2422,11 +2012,11 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", - "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz", + "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2436,11 +2026,11 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", - "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz", + "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2450,11 +2040,11 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", - "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.7.tgz", + "integrity": "sha512-VtR8hDy7YLB7+Pet9IarXjg/zgCMSF+1mNS/EQEiEaUPoFXCVsHG64SIxcaaI2zJgRiv+YmgaQESUfWAdbjzgg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2464,14 +2054,14 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.5.tgz", - "integrity": "sha512-2fMkXEJkrmwgu2Bsv1Saxgj30IXZdJ+84lQcKKI7sm719oXs0BBw2ZENKdJdR1PjWndgLCEBNXJOri0fk7RYQA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.7.tgz", + "integrity": "sha512-iLD3UNkgx2n/HrjBesVbYX6j0yqn/sJktvbtKKgcaLIQ4bTTQ8obAypc1VpyHPD2y4Phh9zHOaAt8e/L14wCpw==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.23.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-typescript": "^7.23.3" + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-typescript": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2481,11 +2071,11 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", - "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz", + "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2495,12 +2085,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", - "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz", + "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2510,12 +2100,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", - "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz", + "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2525,12 +2115,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", - "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz", + "integrity": "sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2540,25 +2130,26 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.5.tgz", - "integrity": "sha512-0d/uxVD6tFGWXGDSfyMD1p2otoaKmu6+GD+NfAx0tMaH+dxORnp7T9TaVQ6mKyya7iBtCIVxHjWT7MuzzM9z+A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.7.tgz", + "integrity": "sha512-1YZNsc+y6cTvWlDHidMBsQZrZfEFjRIo/BZCT906PMdzOyXtSLTgqGdrpcuTDCXyd11Am5uQULtDIcCfnTc8fQ==", "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.23.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.3", + "@babel/compat-data": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.7", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.23.3", - "@babel/plugin-syntax-import-attributes": "^7.23.3", + "@babel/plugin-syntax-import-assertions": "^7.24.7", + "@babel/plugin-syntax-import-attributes": "^7.24.7", "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", @@ -2570,58 +2161,58 @@ "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.23.3", - "@babel/plugin-transform-async-generator-functions": "^7.23.4", - "@babel/plugin-transform-async-to-generator": "^7.23.3", - "@babel/plugin-transform-block-scoped-functions": "^7.23.3", - "@babel/plugin-transform-block-scoping": "^7.23.4", - "@babel/plugin-transform-class-properties": "^7.23.3", - "@babel/plugin-transform-class-static-block": "^7.23.4", - "@babel/plugin-transform-classes": "^7.23.5", - "@babel/plugin-transform-computed-properties": "^7.23.3", - "@babel/plugin-transform-destructuring": "^7.23.3", - "@babel/plugin-transform-dotall-regex": "^7.23.3", - "@babel/plugin-transform-duplicate-keys": "^7.23.3", - "@babel/plugin-transform-dynamic-import": "^7.23.4", - "@babel/plugin-transform-exponentiation-operator": "^7.23.3", - "@babel/plugin-transform-export-namespace-from": "^7.23.4", - "@babel/plugin-transform-for-of": "^7.23.3", - "@babel/plugin-transform-function-name": "^7.23.3", - "@babel/plugin-transform-json-strings": "^7.23.4", - "@babel/plugin-transform-literals": "^7.23.3", - "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", - "@babel/plugin-transform-member-expression-literals": "^7.23.3", - "@babel/plugin-transform-modules-amd": "^7.23.3", - "@babel/plugin-transform-modules-commonjs": "^7.23.3", - "@babel/plugin-transform-modules-systemjs": "^7.23.3", - "@babel/plugin-transform-modules-umd": "^7.23.3", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.23.3", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", - "@babel/plugin-transform-numeric-separator": "^7.23.4", - "@babel/plugin-transform-object-rest-spread": "^7.23.4", - "@babel/plugin-transform-object-super": "^7.23.3", - "@babel/plugin-transform-optional-catch-binding": "^7.23.4", - "@babel/plugin-transform-optional-chaining": "^7.23.4", - "@babel/plugin-transform-parameters": "^7.23.3", - "@babel/plugin-transform-private-methods": "^7.23.3", - "@babel/plugin-transform-private-property-in-object": "^7.23.4", - "@babel/plugin-transform-property-literals": "^7.23.3", - "@babel/plugin-transform-regenerator": "^7.23.3", - "@babel/plugin-transform-reserved-words": "^7.23.3", - "@babel/plugin-transform-shorthand-properties": "^7.23.3", - "@babel/plugin-transform-spread": "^7.23.3", - "@babel/plugin-transform-sticky-regex": "^7.23.3", - "@babel/plugin-transform-template-literals": "^7.23.3", - "@babel/plugin-transform-typeof-symbol": "^7.23.3", - "@babel/plugin-transform-unicode-escapes": "^7.23.3", - "@babel/plugin-transform-unicode-property-regex": "^7.23.3", - "@babel/plugin-transform-unicode-regex": "^7.23.3", - "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", + "@babel/plugin-transform-arrow-functions": "^7.24.7", + "@babel/plugin-transform-async-generator-functions": "^7.24.7", + "@babel/plugin-transform-async-to-generator": "^7.24.7", + "@babel/plugin-transform-block-scoped-functions": "^7.24.7", + "@babel/plugin-transform-block-scoping": "^7.24.7", + "@babel/plugin-transform-class-properties": "^7.24.7", + "@babel/plugin-transform-class-static-block": "^7.24.7", + "@babel/plugin-transform-classes": "^7.24.7", + "@babel/plugin-transform-computed-properties": "^7.24.7", + "@babel/plugin-transform-destructuring": "^7.24.7", + "@babel/plugin-transform-dotall-regex": "^7.24.7", + "@babel/plugin-transform-duplicate-keys": "^7.24.7", + "@babel/plugin-transform-dynamic-import": "^7.24.7", + "@babel/plugin-transform-exponentiation-operator": "^7.24.7", + "@babel/plugin-transform-export-namespace-from": "^7.24.7", + "@babel/plugin-transform-for-of": "^7.24.7", + "@babel/plugin-transform-function-name": "^7.24.7", + "@babel/plugin-transform-json-strings": "^7.24.7", + "@babel/plugin-transform-literals": "^7.24.7", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", + "@babel/plugin-transform-member-expression-literals": "^7.24.7", + "@babel/plugin-transform-modules-amd": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.7", + "@babel/plugin-transform-modules-systemjs": "^7.24.7", + "@babel/plugin-transform-modules-umd": "^7.24.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", + "@babel/plugin-transform-new-target": "^7.24.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", + "@babel/plugin-transform-numeric-separator": "^7.24.7", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-object-super": "^7.24.7", + "@babel/plugin-transform-optional-catch-binding": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.7", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-property-literals": "^7.24.7", + "@babel/plugin-transform-regenerator": "^7.24.7", + "@babel/plugin-transform-reserved-words": "^7.24.7", + "@babel/plugin-transform-shorthand-properties": "^7.24.7", + "@babel/plugin-transform-spread": "^7.24.7", + "@babel/plugin-transform-sticky-regex": "^7.24.7", + "@babel/plugin-transform-template-literals": "^7.24.7", + "@babel/plugin-transform-typeof-symbol": "^7.24.7", + "@babel/plugin-transform-unicode-escapes": "^7.24.7", + "@babel/plugin-transform-unicode-property-regex": "^7.24.7", + "@babel/plugin-transform-unicode-regex": "^7.24.7", + "@babel/plugin-transform-unicode-sets-regex": "^7.24.7", "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.6", - "babel-plugin-polyfill-corejs3": "^0.8.5", - "babel-plugin-polyfill-regenerator": "^0.5.3", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.4", + "babel-plugin-polyfill-regenerator": "^0.6.1", "core-js-compat": "^3.31.0", "semver": "^6.3.1" }, @@ -2634,19 +2225,20 @@ }, "node_modules/@babel/preset-env/node_modules/semver": { "version": "6.3.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/preset-flow": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.23.3.tgz", - "integrity": "sha512-7yn6hl8RIv+KNk6iIrGZ+D06VhVY35wLVf23Cz/mMu1zOr7u4MMP4j0nZ9tLf8+4ZFpnib8cFYgB/oYg9hfswA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.24.7.tgz", + "integrity": "sha512-NL3Lo0NorCU607zU3NwRyJbpaB6E3t0xtd3LfAQKDfkeX4/ggcDXvkmkW42QWT5owUeW/jAe4hn+2qvkV1IbfQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", - "@babel/plugin-transform-flow-strip-types": "^7.23.3" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "@babel/plugin-transform-flow-strip-types": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2657,7 +2249,8 @@ }, "node_modules/@babel/preset-modules": { "version": "0.1.6-no-external-plugins", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/types": "^7.4.4", @@ -2668,18 +2261,17 @@ } }, "node_modules/@babel/preset-react": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.23.3.tgz", - "integrity": "sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.24.7.tgz", + "integrity": "sha512-AAH4lEkpmzFWrGVlHaxJB7RLH21uPQ9+He+eFLWHmF9IuFQVugz8eAsamaW0DXRrTfco5zj1wWtpdcXJUOfsag==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", - "@babel/plugin-transform-react-display-name": "^7.23.3", - "@babel/plugin-transform-react-jsx": "^7.22.15", - "@babel/plugin-transform-react-jsx-development": "^7.22.5", - "@babel/plugin-transform-react-pure-annotations": "^7.23.3" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "@babel/plugin-transform-react-display-name": "^7.24.7", + "@babel/plugin-transform-react-jsx": "^7.24.7", + "@babel/plugin-transform-react-jsx-development": "^7.24.7", + "@babel/plugin-transform-react-pure-annotations": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2689,15 +2281,15 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz", - "integrity": "sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.7.tgz", + "integrity": "sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", - "@babel/plugin-syntax-jsx": "^7.23.3", - "@babel/plugin-transform-modules-commonjs": "^7.23.3", - "@babel/plugin-transform-typescript": "^7.23.3" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "@babel/plugin-syntax-jsx": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.7", + "@babel/plugin-transform-typescript": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2707,14 +2299,14 @@ } }, "node_modules/@babel/register": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.22.15.tgz", - "integrity": "sha512-V3Q3EqoQdn65RCgTLwauZaTfd1ShhwPmbBv+1dkZV/HpCGMKVyn6oFcRlI7RaKqiDQjX2Qd3AuoEguBgdjIKlg==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.24.6.tgz", + "integrity": "sha512-WSuFCc2wCqMeXkz/i3yfAAsxwWflEgbVkZzivgAmXl/MxrXeoYFZOOPllbC8R8WTF7u61wSRQtDVZ1879cdu6w==", "dependencies": { "clone-deep": "^4.0.1", "find-cache-dir": "^2.0.0", "make-dir": "^2.1.0", - "pirates": "^4.0.5", + "pirates": "^4.0.6", "source-map-support": "^0.5.16" }, "engines": { @@ -2843,12 +2435,13 @@ }, "node_modules/@babel/regjsgen": { "version": "0.8.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" }, "node_modules/@babel/runtime": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz", - "integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz", + "integrity": "sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -2857,32 +2450,32 @@ } }, "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", + "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.5.tgz", - "integrity": "sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", + "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.5", - "@babel/types": "^7.23.5", - "debug": "^4.1.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7", + "debug": "^4.3.1", "globals": "^11.1.0" }, "engines": { @@ -2890,12 +2483,12 @@ } }, "node_modules/@babel/types": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.5.tgz", - "integrity": "sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", + "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2904,8 +2497,9 @@ }, "node_modules/@base2/pretty-print-object": { "version": "1.0.1", - "dev": true, - "license": "BSD-2-Clause" + "resolved": "https://registry.npmjs.org/@base2/pretty-print-object/-/pretty-print-object-1.0.1.tgz", + "integrity": "sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==", + "dev": true }, "node_modules/@bcoe/v8-coverage": { "version": "0.2.3", @@ -2940,9 +2534,9 @@ "peer": true }, "node_modules/@codemirror/autocomplete": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.12.0.tgz", - "integrity": "sha512-r4IjdYFthwbCQyvqnSlx0WBHRHi8nBvU+WjJxFUij81qsBfhNudf/XKKmmC2j3m0LaOYUQTf3qiEK1J8lO1sdg==", + "version": "6.16.3", + "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.16.3.tgz", + "integrity": "sha512-Vl/tIeRVVUCRDuOG48lttBasNQu8usGgXQawBXI7WJAiUDSFOfzflmEsZFZo48mAvAaa4FZ/4/yLLxFtdJaKYA==", "dependencies": { "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", @@ -2957,13 +2551,13 @@ } }, "node_modules/@codemirror/commands": { - "version": "6.3.3", - "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.3.3.tgz", - "integrity": "sha512-dO4hcF0fGT9tu1Pj1D2PvGvxjeGkbC6RGcZw6Qs74TH+Ed1gw98jmUgd2axWvIZEqTeTuFrg1lEB1KV6cK9h1A==", + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.6.0.tgz", + "integrity": "sha512-qnY+b7j1UNcTS31Eenuc/5YJB6gQOzkUoNmJQc0rznwqSRpeaWWpjkWy2C/MPTcePpsKJEM26hXrOXl1+nceXg==", "dependencies": { "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.4.0", - "@codemirror/view": "^6.0.0", + "@codemirror/view": "^6.27.0", "@lezer/common": "^1.1.0" } }, @@ -2980,9 +2574,9 @@ } }, "node_modules/@codemirror/lang-javascript": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@codemirror/lang-javascript/-/lang-javascript-6.2.1.tgz", - "integrity": "sha512-jlFOXTejVyiQCW3EQwvKH0m99bUYIw40oPmFjSX2VS78yzfe0HELZ+NEo9Yfo1MkGRpGlj3Gnu4rdxV1EnAs5A==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/@codemirror/lang-javascript/-/lang-javascript-6.2.2.tgz", + "integrity": "sha512-VGQfY+FCc285AhWuwjYxQyUQcYurWlxdKYT4bqwr3Twnd5wP5WSeu52t4tvvuWmljT4EmgEgZCqSieokhtY8hg==", "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/language": "^6.6.0", @@ -2994,12 +2588,14 @@ } }, "node_modules/@codemirror/lang-python": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/@codemirror/lang-python/-/lang-python-6.1.3.tgz", - "integrity": "sha512-S9w2Jl74hFlD5nqtUMIaXAq9t5WlM0acCkyuQWUUSvZclk1sV+UfnpFiZzuZSG+hfEaOmxKR5UxY/Uxswn7EhQ==", + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/@codemirror/lang-python/-/lang-python-6.1.6.tgz", + "integrity": "sha512-ai+01WfZhWqM92UqjnvorkxosZ2aq2u28kHvr+N3gu012XqY2CThD67JPMHnGceRfXPDBmn1HnyqowdpF57bNg==", "dependencies": { "@codemirror/autocomplete": "^6.3.2", "@codemirror/language": "^6.8.0", + "@codemirror/state": "^6.0.0", + "@lezer/common": "^1.2.1", "@lezer/python": "^1.1.4" } }, @@ -3016,9 +2612,9 @@ } }, "node_modules/@codemirror/lang-sql": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@codemirror/lang-sql/-/lang-sql-6.5.5.tgz", - "integrity": "sha512-DvOaP2RXLb2xlxJxxydTFfwyYw5YDqEFea6aAfgh9UH0kUD6J1KFZ0xPgPpw1eo/5s2w3L6uh5PVR7GM23GxkQ==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@codemirror/lang-sql/-/lang-sql-6.7.0.tgz", + "integrity": "sha512-KMXp6rtyPYz6RaElvkh/77ClEAoQoHRPZo0zutRRialeFs/B/X8YaUJBCnAV2zqyeJPLZ4hgo48mG8TKoNXfZA==", "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/language": "^6.0.0", @@ -3029,9 +2625,9 @@ } }, "node_modules/@codemirror/language": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.10.0.tgz", - "integrity": "sha512-2vaNn9aPGCRFKWcHPFksctzJ8yS5p7YoaT+jHpc0UGKzNuAIx4qy6R5wiqbP+heEEdyaABA582mNqSHzSoYdmg==", + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.10.2.tgz", + "integrity": "sha512-kgbTYTo0Au6dCSc/TFy7fK3fpJmgHDv1sG1KNQKJXVi+xBTEeBPY/M30YXiU6mMXeH+YIDLsbrT4ZwNRdtF+SA==", "dependencies": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.23.0", @@ -3042,9 +2638,9 @@ } }, "node_modules/@codemirror/lint": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.4.2.tgz", - "integrity": "sha512-wzRkluWb1ptPKdzlsrbwwjYCPLgzU6N88YBAmlZi8WFyuiEduSd05MnJYNogzyc8rPK7pj6m95ptUApc8sHKVA==", + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.8.1.tgz", + "integrity": "sha512-IZ0Y7S4/bpaunwggW2jYqwLuHj0QtESf5xcROewY6+lDNwZ/NzvR4t+vpYgg9m7V8UXLPYqG+lu3DF470E5Oxg==", "dependencies": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0", @@ -3052,9 +2648,9 @@ } }, "node_modules/@codemirror/search": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.5.5.tgz", - "integrity": "sha512-PIEN3Ke1buPod2EHbJsoQwlbpkz30qGZKcnmH1eihq9+bPQx8gelauUwLYaY4vBOuBAuEhmpDLii4rj/uO0yMA==", + "version": "6.5.6", + "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.5.6.tgz", + "integrity": "sha512-rpMgcsh7o0GuCDUXKPvww+muLA1pDJaFrpq/CCHtpQJYz8xopu4D1hPcKRoDD0YlF8gZaqTNIRa4VRBWyhyy7Q==", "dependencies": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0", @@ -3062,9 +2658,9 @@ } }, "node_modules/@codemirror/state": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.4.0.tgz", - "integrity": "sha512-hm8XshYj5Fo30Bb922QX9hXB/bxOAVH+qaqHBzw5TKa72vOeslyGwd4X8M0c1dJ9JqxlaMceOQ8RsL9tC7gU0A==" + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.4.1.tgz", + "integrity": "sha512-QkEyUiLhsJoZkbumGZlswmAhA7CBU02Wrz7zvH4SrcifbsqwlXShVXg65f3v/ts57W3dqyamEriMhij1Z3Zz4A==" }, "node_modules/@codemirror/theme-one-dark": { "version": "6.1.2", @@ -3078,9 +2674,9 @@ } }, "node_modules/@codemirror/view": { - "version": "6.24.0", - "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.24.0.tgz", - "integrity": "sha512-zK6m5pNkdhdJl8idPP1gA4N8JKTiSsOz8U/Iw+C1ChMwyLG7+MLiNXnH/wFuAk6KeGEe33/adOiAh5jMqee03w==", + "version": "6.28.2", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.28.2.tgz", + "integrity": "sha512-A3DmyVfjgPsGIjiJqM/zvODUAPQdQl3ci0ghehYNnbt5x+o76xq+dL5+mMBuysDXnI3kapgOkoeJ0sbtL/3qPw==", "dependencies": { "@codemirror/state": "^6.4.0", "style-mod": "^4.1.0", @@ -3089,8 +2685,9 @@ }, "node_modules/@colors/colors": { "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", "dev": true, - "license": "MIT", "optional": true, "engines": { "node": ">=0.1.90" @@ -3183,9 +2780,9 @@ "integrity": "sha512-OTFTDQcWS+1ZREOdCWuk5hCBgYO4OsD30lXcOCyVOAjXMhgL5rBRDnt/otb6Nz8CzU0L/igdcaQBDLWc4t9gvg==" }, "node_modules/@emoji-mart/data": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@emoji-mart/data/-/data-1.1.2.tgz", - "integrity": "sha512-1HP8BxD2azjqWJvxIaWAMyTySeZY0Osr83ukYjltPVkNXeJvTz7yDrPLBtnrD5uqJ3tg4CcLuuBW09wahqL/fg==" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emoji-mart/data/-/data-1.2.1.tgz", + "integrity": "sha512-no2pQMWiBy6gpBEiqGeU77/bFejDqUTRY7KX+0+iur13op3bqUsXdnwoZs6Xb1zbv0gAj5VvS1PWoUUckSr5Dw==" }, "node_modules/@emoji-mart/react": { "version": "1.1.1", @@ -3219,25 +2816,6 @@ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" }, - "node_modules/@emotion/babel-plugin/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@emotion/babel-plugin/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@emotion/cache": { "version": "11.11.0", "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", @@ -3256,9 +2834,9 @@ "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" }, "node_modules/@emotion/is-prop-valid": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz", - "integrity": "sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz", + "integrity": "sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==", "peer": true, "dependencies": { "@emotion/memoize": "^0.8.1" @@ -3270,14 +2848,14 @@ "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" }, "node_modules/@emotion/react": { - "version": "11.11.1", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.1.tgz", - "integrity": "sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==", + "version": "11.11.4", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.4.tgz", + "integrity": "sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw==", "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.11.0", "@emotion/cache": "^11.11.0", - "@emotion/serialize": "^1.1.2", + "@emotion/serialize": "^1.1.3", "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", "@emotion/utils": "^1.2.1", "@emotion/weak-memoize": "^0.3.1", @@ -3293,9 +2871,9 @@ } }, "node_modules/@emotion/serialize": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.2.tgz", - "integrity": "sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.4.tgz", + "integrity": "sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ==", "dependencies": { "@emotion/hash": "^0.9.1", "@emotion/memoize": "^0.8.1", @@ -3310,15 +2888,15 @@ "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" }, "node_modules/@emotion/styled": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.0.tgz", - "integrity": "sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==", + "version": "11.11.5", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.5.tgz", + "integrity": "sha512-/ZjjnaNKvuMPxcIiUkf/9SHoG4Q196DRl1w82hQ3WCsjo1IUR8uaGWrC6a87CrYAW0Kb/pK7hk8BnLgLRi9KoQ==", "peer": true, "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.11.0", - "@emotion/is-prop-valid": "^1.2.1", - "@emotion/serialize": "^1.1.2", + "@emotion/is-prop-valid": "^1.2.2", + "@emotion/serialize": "^1.1.4", "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", "@emotion/utils": "^1.2.1" }, @@ -3709,8 +3287,9 @@ }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dev": true, - "license": "MIT", "dependencies": { "eslint-visitor-keys": "^3.3.0" }, @@ -3726,7 +3305,6 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, - "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -3735,11 +3313,10 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.1.tgz", + "integrity": "sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==", "dev": true, - "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } @@ -3749,7 +3326,6 @@ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, - "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -3770,15 +3346,15 @@ }, "node_modules/@eslint/eslintrc/node_modules/argparse": { "version": "2.0.1", - "dev": true, - "license": "Python-2.0" + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, - "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -3791,8 +3367,9 @@ }, "node_modules/@eslint/eslintrc/node_modules/js-yaml": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -3802,8 +3379,9 @@ }, "node_modules/@eslint/eslintrc/node_modules/type-fest": { "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -3812,43 +3390,43 @@ } }, "node_modules/@eslint/js": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.55.0.tgz", - "integrity": "sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", "dev": true, - "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@fal-works/esbuild-plugin-global-externals": { "version": "2.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@fal-works/esbuild-plugin-global-externals/-/esbuild-plugin-global-externals-2.1.2.tgz", + "integrity": "sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ==", + "dev": true }, "node_modules/@floating-ui/core": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.0.tgz", - "integrity": "sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.2.tgz", + "integrity": "sha512-+2XpQV9LLZeanU4ZevzRnGFg2neDeKHgFLjP6YLW+tly0IvrhqT4u8enLGjLH3qeh85g19xY5rsAusfwTdn5lg==", "dependencies": { - "@floating-ui/utils": "^0.2.1" + "@floating-ui/utils": "^0.2.0" } }, "node_modules/@floating-ui/dom": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.1.tgz", - "integrity": "sha512-iA8qE43/H5iGozC3W0YSnVSW42Vh522yyM1gj+BqRwVsTNOyr231PsXDaV04yT39PsO0QL2QpbI/M0ZaLUQgRQ==", + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.5.tgz", + "integrity": "sha512-Nsdud2X65Dz+1RHjAIP0t8z5e2ff/IRbei6BqFrl1urT8sDVzM1HMQ+R0XcU5ceRfyO3I6ayeqIfh+6Wb8LGTw==", "dependencies": { - "@floating-ui/core": "^1.6.0", - "@floating-ui/utils": "^0.2.1" + "@floating-ui/core": "^1.0.0", + "@floating-ui/utils": "^0.2.0" } }, "node_modules/@floating-ui/react-dom": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.8.tgz", - "integrity": "sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.0.tgz", + "integrity": "sha512-lNzj5EQmEKn5FFKc04+zasr09h/uX8RtJRNj5gUXsSQIXHVWTVh+hVAg1vOMCexkX8EgvemMvIFpQfkosnVNyA==", "dependencies": { - "@floating-ui/dom": "^1.6.1" + "@floating-ui/dom": "^1.0.0" }, "peerDependencies": { "react": ">=16.8.0", @@ -3856,9 +3434,9 @@ } }, "node_modules/@floating-ui/utils": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz", - "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==" + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.2.tgz", + "integrity": "sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==" }, "node_modules/@gar/promisify": { "version": "1.1.3", @@ -3875,9 +3453,9 @@ } }, "node_modules/@googlemaps/markerclusterer": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@googlemaps/markerclusterer/-/markerclusterer-2.3.2.tgz", - "integrity": "sha512-zb9OQP8XscZp2Npt1uQUYnGKu1miuq4DPP28JyDuFd6HV17HCEcjV9MtBi4muG/iVRXXvuHW9bRCnHbao9ITfw==", + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/@googlemaps/markerclusterer/-/markerclusterer-2.5.3.tgz", + "integrity": "sha512-x7lX0R5yYOoiNectr10wLgCBasNcXFHiADIBdmn7jQllF2B5ENQw5XtZK+hIw4xnV0Df0xhN4LN98XqA5jaiOw==", "dependencies": { "fast-deep-equal": "^3.1.3", "supercluster": "^8.0.1" @@ -3899,13 +3477,14 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.13", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", - "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "deprecated": "Use @eslint/config-array instead", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^2.0.1", - "debug": "^4.1.1", + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", "minimatch": "^3.0.5" }, "engines": { @@ -3926,9 +3505,10 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", - "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", "dev": true }, "node_modules/@icons/material": { @@ -3941,8 +3521,9 @@ }, "node_modules/@isaacs/cliui": { "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, - "license": "ISC", "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -3957,8 +3538,9 @@ }, "node_modules/@isaacs/cliui/node_modules/ansi-regex": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, - "license": "MIT", "engines": { "node": ">=12" }, @@ -3968,8 +3550,9 @@ }, "node_modules/@isaacs/cliui/node_modules/ansi-styles": { "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, - "license": "MIT", "engines": { "node": ">=12" }, @@ -3979,13 +3562,15 @@ }, "node_modules/@isaacs/cliui/node_modules/emoji-regex": { "version": "9.2.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true }, "node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, - "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -4000,8 +3585,9 @@ }, "node_modules/@isaacs/cliui/node_modules/strip-ansi": { "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -4014,8 +3600,9 @@ }, "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -4028,6 +3615,15 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/@isaacs/ttlcache": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz", + "integrity": "sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==", + "peer": true, + "engines": { + "node": ">=12" + } + }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -4296,12 +3892,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@jest/core/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - }, "node_modules/@jest/core/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -4514,6 +4104,7 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -4540,14 +4131,14 @@ } }, "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz", - "integrity": "sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz", + "integrity": "sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==", "dev": true, "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", "istanbul-lib-coverage": "^3.2.0", "semver": "^7.5.4" }, @@ -4765,41 +4356,41 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dependencies": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", - "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, "node_modules/@jridgewell/sourcemap-codec": { @@ -4808,9 +4399,9 @@ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -4818,19 +4409,20 @@ }, "node_modules/@juggle/resize-observer": { "version": "3.4.0", - "dev": true, - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/@juggle/resize-observer/-/resize-observer-3.4.0.tgz", + "integrity": "sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==", + "dev": true }, "node_modules/@leichtgewicht/ip-codec": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", - "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", "dev": true }, "node_modules/@lezer/common": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.2.0.tgz", - "integrity": "sha512-Wmvlm4q6tRpwiy20TnB3yyLTZim38Tkc50dPY8biQRwqE+ati/wD84rm3N15hikvdT4uSg9phs9ubjvcLmkpKg==" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.2.1.tgz", + "integrity": "sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ==" }, "node_modules/@lezer/css": { "version": "1.1.8", @@ -4851,26 +4443,27 @@ } }, "node_modules/@lezer/javascript": { - "version": "1.4.12", - "resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-1.4.12.tgz", - "integrity": "sha512-kwO5MftUiyfKBcECMEDc4HYnc10JME9kTJNPVoCXqJj/Y+ASWF0rgstORi3BThlQI6SoPSshrK5TjuiLFnr29A==", + "version": "1.4.17", + "resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-1.4.17.tgz", + "integrity": "sha512-bYW4ctpyGK+JMumDApeUzuIezX01H76R1foD6LcRX224FWfyYit/HYxiPGDjXXe/wQWASjCvVGoukTH68+0HIA==", "dependencies": { + "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.1.3", "@lezer/lr": "^1.3.0" } }, "node_modules/@lezer/lr": { - "version": "1.3.14", - "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.3.14.tgz", - "integrity": "sha512-z5mY4LStlA3yL7aHT/rqgG614cfcvklS+8oFRFBYrs4YaWLJyKKM4+nN6KopToX0o9Hj6zmH6M5kinOYuy06ug==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.1.tgz", + "integrity": "sha512-CHsKq8DMKBf9b3yXPDIU4DbH+ZJd/sJdYOW2llbW/HudP5u0VS6Bfq1hLYfgU7uAYGFIyGGQIsSOXGPEErZiJw==", "dependencies": { "@lezer/common": "^1.0.0" } }, "node_modules/@lezer/python": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/@lezer/python/-/python-1.1.11.tgz", - "integrity": "sha512-C3QeLCcdAKJDUOsYjfFP6a1wdn8jhUNX200bgFm8TpKH1eM2PlgYQS5ugw6E38qGeEx7CP21I1Q52SoybXt0OQ==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/@lezer/python/-/python-1.1.14.tgz", + "integrity": "sha512-ykDOb2Ti24n76PJsSa4ZoDF0zH12BSw1LGfQXCYJhJyOGiFTfGaX0Du66Ze72R+u/P35U+O6I9m8TFXov1JzsA==", "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", @@ -4962,8 +4555,9 @@ }, "node_modules/@mdx-js/react": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-2.3.0.tgz", + "integrity": "sha512-zQH//gdOmuu7nt2oJR29vFhDv88oGPmVw6BggmrHeMI+xgEkp1B2dX9/bMBSYtK0dyLX/aOmesKS09g222K1/g==", "dev": true, - "license": "MIT", "dependencies": { "@types/mdx": "^2.0.0", "@types/react": ">=16" @@ -4977,15 +4571,15 @@ } }, "node_modules/@mui/base": { - "version": "5.0.0-beta.36", - "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.36.tgz", - "integrity": "sha512-6A8fYiXgjqTO6pgj31Hc8wm1M3rFYCxDRh09dBVk0L0W4cb2lnurRJa3cAyic6hHY+we1S58OdGYRbKmOsDpGQ==", + "version": "5.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.40.tgz", + "integrity": "sha512-I/lGHztkCzvwlXpjD2+SNmvNQvB4227xBXhISPjEaJUXGImOQ9f3D2Yj/T3KasSI/h0MLWy74X0J6clhPmsRbQ==", "peer": true, "dependencies": { "@babel/runtime": "^7.23.9", "@floating-ui/react-dom": "^2.0.8", - "@mui/types": "^7.2.13", - "@mui/utils": "^5.15.9", + "@mui/types": "^7.2.14", + "@mui/utils": "^5.15.14", "@popperjs/core": "^2.11.8", "clsx": "^2.1.0", "prop-types": "^15.8.1" @@ -5008,19 +4602,10 @@ } } }, - "node_modules/@mui/base/node_modules/clsx": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz", - "integrity": "sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==", - "peer": true, - "engines": { - "node": ">=6" - } - }, "node_modules/@mui/core-downloads-tracker": { - "version": "5.15.9", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.15.9.tgz", - "integrity": "sha512-CSDpVevGaxsvMkiYBZ8ztki1z/eT0mM2MqUT21eCRiMz3DU4zQw5rXG5ML/yTuJF9Z2Wv9SliIeaRAuSR/9Nig==", + "version": "5.15.20", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.15.20.tgz", + "integrity": "sha512-DoL2ppgldL16utL8nNyj/P12f8mCNdx/Hb/AJnX9rLY4b52hCMIx1kH83pbXQ6uMy6n54M3StmEbvSGoj2OFuA==", "peer": true, "funding": { "type": "opencollective", @@ -5028,17 +4613,17 @@ } }, "node_modules/@mui/material": { - "version": "5.15.9", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.15.9.tgz", - "integrity": "sha512-kbHTZDcFmN8GHKzRpImUEl9AJfFWI/0Kl+DsYVT3kHzQWUuHiKm3uHXR1RCOqr7H8IgHFPdbxItmCSQ/mj7zgg==", + "version": "5.15.20", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.15.20.tgz", + "integrity": "sha512-tVq3l4qoXx/NxUgIx/x3lZiPn/5xDbdTE8VrLczNpfblLYZzlrbxA7kb9mI8NoBF6+w9WE9IrxWnKK5KlPI2bg==", "peer": true, "dependencies": { "@babel/runtime": "^7.23.9", - "@mui/base": "5.0.0-beta.36", - "@mui/core-downloads-tracker": "^5.15.9", - "@mui/system": "^5.15.9", - "@mui/types": "^7.2.13", - "@mui/utils": "^5.15.9", + "@mui/base": "5.0.0-beta.40", + "@mui/core-downloads-tracker": "^5.15.20", + "@mui/system": "^5.15.20", + "@mui/types": "^7.2.14", + "@mui/utils": "^5.15.20", "@types/react-transition-group": "^4.4.10", "clsx": "^2.1.0", "csstype": "^3.1.3", @@ -5072,29 +4657,14 @@ } } }, - "node_modules/@mui/material/node_modules/clsx": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz", - "integrity": "sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@mui/material/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "peer": true - }, "node_modules/@mui/private-theming": { - "version": "5.15.9", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.15.9.tgz", - "integrity": "sha512-/aMJlDOxOTAXyp4F2rIukW1O0anodAMCkv1DfBh/z9vaKHY3bd5fFf42wmP+0GRmwMinC5aWPpNfHXOED1fEtg==", + "version": "5.15.20", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.15.20.tgz", + "integrity": "sha512-BK8F94AIqSrnaPYXf2KAOjGZJgWfvqAVQ2gVR3EryvQFtuBnG6RwodxrCvd3B48VuMy6Wsk897+lQMUxJyk+6g==", "peer": true, "dependencies": { "@babel/runtime": "^7.23.9", - "@mui/utils": "^5.15.9", + "@mui/utils": "^5.15.20", "prop-types": "^15.8.1" }, "engines": { @@ -5115,9 +4685,9 @@ } }, "node_modules/@mui/styled-engine": { - "version": "5.15.9", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.15.9.tgz", - "integrity": "sha512-NRKtYkL5PZDH7dEmaLEIiipd3mxNnQSO+Yo8rFNBNptY8wzQnQ+VjayTq39qH7Sast5cwHKYFusUrQyD+SS4Og==", + "version": "5.15.14", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.15.14.tgz", + "integrity": "sha512-RILkuVD8gY6PvjZjqnWhz8fu68dVkqhM5+jYWfB5yhlSQKg+2rHkmEwm75XIeAqI3qwOndK6zELK5H6Zxn4NHw==", "peer": true, "dependencies": { "@babel/runtime": "^7.23.9", @@ -5147,16 +4717,16 @@ } }, "node_modules/@mui/system": { - "version": "5.15.9", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.15.9.tgz", - "integrity": "sha512-SxkaaZ8jsnIJ77bBXttfG//LUf6nTfOcaOuIgItqfHv60ZCQy/Hu7moaob35kBb+guxVJnoSZ+7vQJrA/E7pKg==", + "version": "5.15.20", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.15.20.tgz", + "integrity": "sha512-LoMq4IlAAhxzL2VNUDBTQxAb4chnBe8JvRINVNDiMtHE2PiPOoHlhOPutSxEbaL5mkECPVWSv6p8JEV+uykwIA==", "peer": true, "dependencies": { "@babel/runtime": "^7.23.9", - "@mui/private-theming": "^5.15.9", - "@mui/styled-engine": "^5.15.9", - "@mui/types": "^7.2.13", - "@mui/utils": "^5.15.9", + "@mui/private-theming": "^5.15.20", + "@mui/styled-engine": "^5.15.14", + "@mui/types": "^7.2.14", + "@mui/utils": "^5.15.20", "clsx": "^2.1.0", "csstype": "^3.1.3", "prop-types": "^15.8.1" @@ -5186,19 +4756,10 @@ } } }, - "node_modules/@mui/system/node_modules/clsx": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz", - "integrity": "sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==", - "peer": true, - "engines": { - "node": ">=6" - } - }, "node_modules/@mui/types": { - "version": "7.2.13", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.13.tgz", - "integrity": "sha512-qP9OgacN62s+l8rdDhSFRe05HWtLLJ5TGclC9I1+tQngbssu0m2dmFZs+Px53AcOs9fD7TbYd4gc9AXzVqO/+g==", + "version": "7.2.14", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.14.tgz", + "integrity": "sha512-MZsBZ4q4HfzBsywtXgM1Ksj6HDThtiwmOKUXH1pKYISI9gAVXCNHNpo7TlGoGrBaYWZTdNoirIN7JsQcQUjmQQ==", "peer": true, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0" @@ -5210,9 +4771,9 @@ } }, "node_modules/@mui/utils": { - "version": "5.15.9", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.15.9.tgz", - "integrity": "sha512-yDYfr61bCYUz1QtwvpqYy/3687Z8/nS4zv7lv/ih/6ZFGMl1iolEvxRmR84v2lOYxlds+kq1IVYbXxDKh8Z9sg==", + "version": "5.15.20", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.15.20.tgz", + "integrity": "sha512-mAbYx0sovrnpAu1zHc3MDIhPqL8RPVC5W5xcO1b7PiSCJPtckIZmBkp8hefamAvUiAV8gpfMOM6Zb+eSisbI2A==", "peer": true, "dependencies": { "@babel/runtime": "^7.23.9", @@ -5237,16 +4798,11 @@ } } }, - "node_modules/@mui/utils/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "peer": true - }, "node_modules/@ndelangen/get-tarball": { "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@ndelangen/get-tarball/-/get-tarball-3.0.9.tgz", + "integrity": "sha512-9JKTEik4vq+yGosHYhZ1tiH/3WpUS0Nh0kej4Agndhox8pAdWhEx5knFVRcb/ya9knCRCs1rPxNrSXTDdfVqpA==", "dev": true, - "license": "MIT", "dependencies": { "gunzip-maybe": "^1.4.2", "pump": "^3.0.0", @@ -5266,7 +4822,6 @@ "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -5279,7 +4834,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, "engines": { "node": ">= 8" } @@ -5288,7 +4842,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -5326,17 +4879,18 @@ }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, - "license": "MIT", "optional": true, "engines": { "node": ">=14" } }, "node_modules/@plotly/d3": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@plotly/d3/-/d3-3.8.1.tgz", - "integrity": "sha512-x49ThEu1FRA00kTso4Jdfyf2byaCPLBGmLjAYQz5OzaPyLUhHesX3/Nfv2OHEhynhdy2UB39DLXq6thYe2L2kg==", + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/@plotly/d3/-/d3-3.8.2.tgz", + "integrity": "sha512-wvsNmh1GYjyJfyEBPKJLTMzgf2c2bEbSIL50lmqVUi+o1NHaLPi1Lb4v7VxXXJn043BhNyrxUrWI85Q+zmjOVA==", "peer": true }, "node_modules/@plotly/d3-sankey": { @@ -5362,6 +4916,54 @@ "elementary-circuits-directed-graph": "^1.0.4" } }, + "node_modules/@plotly/mapbox-gl": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/@plotly/mapbox-gl/-/mapbox-gl-1.13.4.tgz", + "integrity": "sha512-sR3/Pe5LqT/fhYgp4rT4aSFf1rTsxMbGiH6Hojc7PH36ny5Bn17iVFUjpzycafETURuFbLZUfjODO8LvSI+5zQ==", + "peer": true, + "dependencies": { + "@mapbox/geojson-rewind": "^0.5.2", + "@mapbox/geojson-types": "^1.0.2", + "@mapbox/jsonlint-lines-primitives": "^2.0.2", + "@mapbox/mapbox-gl-supported": "^1.5.0", + "@mapbox/point-geometry": "^0.1.0", + "@mapbox/tiny-sdf": "^1.1.1", + "@mapbox/unitbezier": "^0.0.0", + "@mapbox/vector-tile": "^1.3.1", + "@mapbox/whoots-js": "^3.1.0", + "csscolorparser": "~1.0.3", + "earcut": "^2.2.2", + "geojson-vt": "^3.2.1", + "gl-matrix": "^3.2.1", + "grid-index": "^1.1.0", + "murmurhash-js": "^1.0.0", + "pbf": "^3.2.1", + "potpack": "^1.0.1", + "quickselect": "^2.0.0", + "rw": "^1.3.3", + "supercluster": "^7.1.0", + "tinyqueue": "^2.0.3", + "vt-pbf": "^3.1.1" + }, + "engines": { + "node": ">=6.4.0" + } + }, + "node_modules/@plotly/mapbox-gl/node_modules/kdbush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-3.0.0.tgz", + "integrity": "sha512-hRkd6/XW4HTsA9vjVpY9tuXJYLSlelnkTmVFu4M9/7MIYQtFcHpbugAU7UbOfjOiVSVYl2fqgBuJ32JUmRo5Ew==", + "peer": true + }, + "node_modules/@plotly/mapbox-gl/node_modules/supercluster": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/supercluster/-/supercluster-7.1.5.tgz", + "integrity": "sha512-EulshI3pGUM66o6ZdH3ReiFcvHpM3vAigyK+vcxdjpJyEbIIrtbmBdY23mGgnI24uXiGFvrGq9Gkum/8U7vJWg==", + "peer": true, + "dependencies": { + "kdbush": "^3.0.0" + } + }, "node_modules/@plotly/point-cluster": { "version": "3.1.9", "resolved": "https://registry.npmjs.org/@plotly/point-cluster/-/point-cluster-3.1.9.tgz", @@ -5381,19 +4983,17 @@ } }, "node_modules/@pmmmwh/react-refresh-webpack-plugin": { - "version": "0.5.11", - "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.11.tgz", - "integrity": "sha512-7j/6vdTym0+qZ6u4XbSAxrWBGYSdCfTzySkj7WAFgDLmSyWlOrWvpyzxlFh5jtw9dn0oL/jtW+06XfFiisN3JQ==", + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.15.tgz", + "integrity": "sha512-LFWllMA55pzB9D34w/wXUCf8+c+IYKuJDgxiZ3qMhl64KRMBHYM1I3VdGaD2BV5FNPV2/S2596bppxHbv2ZydQ==", "dev": true, "dependencies": { - "ansi-html-community": "^0.0.8", - "common-path-prefix": "^3.0.0", + "ansi-html": "^0.0.9", "core-js-pure": "^3.23.3", "error-stack-parser": "^2.0.6", - "find-up": "^5.0.0", "html-entities": "^2.1.0", "loader-utils": "^2.0.4", - "schema-utils": "^3.0.0", + "schema-utils": "^4.2.0", "source-map": "^0.7.3" }, "engines": { @@ -5405,7 +5005,7 @@ "sockjs-client": "^1.4.0", "type-fest": ">=0.17.0 <5.0.0", "webpack": ">=4.43.0 <6.0.0", - "webpack-dev-server": "3.x || 4.x", + "webpack-dev-server": "3.x || 4.x || 5.x", "webpack-hot-middleware": "2.x", "webpack-plugin-serve": "0.x || 1.x" }, @@ -5430,6 +5030,15 @@ } } }, + "node_modules/@pmmmwh/react-refresh-webpack-plugin/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, "node_modules/@popperjs/core": { "version": "2.11.8", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", @@ -5445,33 +5054,27 @@ "integrity": "sha512-Vxq944ErPJsdVepjEUhOLO9ApUVOocA63knc+V2TkJ09D/AVOjiMIgkca/7VoYgODcla0qbSIBjje0SMfZMbAw==" }, "node_modules/@radix-ui/number": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10" - } + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.0.tgz", + "integrity": "sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==" }, "node_modules/@radix-ui/primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.1.tgz", - "integrity": "sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==", - "dependencies": { - "@babel/runtime": "^7.13.10" - } + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.0.tgz", + "integrity": "sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==" }, "node_modules/@radix-ui/react-arrow": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.3.tgz", - "integrity": "sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.0.tgz", + "integrity": "sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-primitive": "1.0.3" + "@radix-ui/react-primitive": "2.0.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -5483,20 +5086,20 @@ } }, "node_modules/@radix-ui/react-collection": { - "version": "1.0.3", - "license": "MIT", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.0.tgz", + "integrity": "sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-slot": "1.0.2" + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -5508,14 +5111,12 @@ } }, "node_modules/@radix-ui/react-compose-refs": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.0.tgz", + "integrity": "sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==", "peerDependencies": { "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -5524,14 +5125,12 @@ } }, "node_modules/@radix-ui/react-context": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", + "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", "peerDependencies": { "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -5540,14 +5139,12 @@ } }, "node_modules/@radix-ui/react-direction": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.0.tgz", + "integrity": "sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==", "peerDependencies": { "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -5556,22 +5153,21 @@ } }, "node_modules/@radix-ui/react-dismissable-layer": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.5.tgz", - "integrity": "sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.0.tgz", + "integrity": "sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-use-callback-ref": "1.0.1", - "@radix-ui/react-use-escape-keydown": "1.0.3" + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-escape-keydown": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -5583,15 +5179,12 @@ } }, "node_modules/@radix-ui/react-focus-guards": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.1.tgz", - "integrity": "sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.0.tgz", + "integrity": "sha512-w6XZNUPVv6xCpZUqb/yN9DL6auvpGX3C/ee6Hdi16v2UUy25HV2Q5bcflsiDyT/g5RwbPQ/GIT1vLkeRb+ITBw==", "peerDependencies": { "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -5600,20 +5193,19 @@ } }, "node_modules/@radix-ui/react-focus-scope": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.4.tgz", - "integrity": "sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.0.tgz", + "integrity": "sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-use-callback-ref": "1.0.1" + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -5625,16 +5217,15 @@ } }, "node_modules/@radix-ui/react-id": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.1.tgz", - "integrity": "sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.0.tgz", + "integrity": "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-layout-effect": "1.0.1" + "@radix-ui/react-use-layout-effect": "1.1.0" }, "peerDependencies": { "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -5643,32 +5234,31 @@ } }, "node_modules/@radix-ui/react-popover": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.0.7.tgz", - "integrity": "sha512-shtvVnlsxT6faMnK/a7n0wptwBD23xc1Z5mdrtKLwVEfsEMXodS0r5s0/g5P0hX//EKYZS2sxUjqfzlg52ZSnQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.1.tgz", + "integrity": "sha512-3y1A3isulwnWhvTTwmIreiB8CF4L+qRjZnK1wYLO7pplddzXKby/GnZ2M7OZY3qgnl6p9AodUIHRYGXNah8Y7g==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-dismissable-layer": "1.0.5", - "@radix-ui/react-focus-guards": "1.0.1", - "@radix-ui/react-focus-scope": "1.0.4", - "@radix-ui/react-id": "1.0.1", - "@radix-ui/react-popper": "1.1.3", - "@radix-ui/react-portal": "1.0.4", - "@radix-ui/react-presence": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-slot": "1.0.2", - "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-dismissable-layer": "1.1.0", + "@radix-ui/react-focus-guards": "1.1.0", + "@radix-ui/react-focus-scope": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-popper": "1.2.0", + "@radix-ui/react-portal": "1.1.1", + "@radix-ui/react-presence": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", "aria-hidden": "^1.1.1", - "react-remove-scroll": "2.5.5" + "react-remove-scroll": "2.5.7" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -5680,27 +5270,26 @@ } }, "node_modules/@radix-ui/react-popper": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.1.3.tgz", - "integrity": "sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.0.tgz", + "integrity": "sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==", "dependencies": { - "@babel/runtime": "^7.13.10", "@floating-ui/react-dom": "^2.0.0", - "@radix-ui/react-arrow": "1.0.3", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-use-callback-ref": "1.0.1", - "@radix-ui/react-use-layout-effect": "1.0.1", - "@radix-ui/react-use-rect": "1.0.1", - "@radix-ui/react-use-size": "1.0.1", - "@radix-ui/rect": "1.0.1" + "@radix-ui/react-arrow": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-use-rect": "1.1.0", + "@radix-ui/react-use-size": "1.1.0", + "@radix-ui/rect": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -5712,18 +5301,18 @@ } }, "node_modules/@radix-ui/react-portal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.4.tgz", - "integrity": "sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.1.tgz", + "integrity": "sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-primitive": "1.0.3" + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-layout-effect": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -5735,19 +5324,18 @@ } }, "node_modules/@radix-ui/react-presence": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.1.tgz", - "integrity": "sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.0.tgz", + "integrity": "sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-use-layout-effect": "1.0.1" + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -5759,18 +5347,17 @@ } }, "node_modules/@radix-ui/react-primitive": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz", - "integrity": "sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.0.tgz", + "integrity": "sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-slot": "1.0.2" + "@radix-ui/react-slot": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -5782,25 +5369,25 @@ } }, "node_modules/@radix-ui/react-roving-focus": { - "version": "1.0.4", - "license": "MIT", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.0.tgz", + "integrity": "sha512-EA6AMGeq9AEeQDeSH0aZgG198qkfHSbvWTf1HvoDmOB5bBG/qTxjYMWUKMnYiV6J/iP/J8MEFSuB2zRU2n7ODA==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-collection": "1.0.3", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-direction": "1.0.1", - "@radix-ui/react-id": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-use-callback-ref": "1.0.1", - "@radix-ui/react-use-controllable-state": "1.0.1" + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-collection": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -5813,8 +5400,9 @@ }, "node_modules/@radix-ui/react-select": { "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-1.2.2.tgz", + "integrity": "sha512-zI7McXr8fNaSrUY9mZe4x/HC0jTLY9fWNhO1oLWYMQGDXuV4UCivIGTxwioSzO0ZCYX9iSLyWmAh/1TOmX3Cnw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10", "@radix-ui/number": "1.0.1", @@ -5854,10 +5442,134 @@ } } }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/number": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.0.1.tgz", + "integrity": "sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10" + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.1.tgz", + "integrity": "sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10" + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-arrow": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.3.tgz", + "integrity": "sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-collection": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.0.3.tgz", + "integrity": "sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-compose-refs": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz", + "integrity": "sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-context": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.1.tgz", + "integrity": "sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-direction": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.0.1.tgz", + "integrity": "sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-dismissable-layer": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.4.tgz", + "integrity": "sha512-7UpBa/RKMoHJYjie1gkF1DlK8l1fdU/VKDpoS3rCCo8YBJR294GwcEHyxHw72yvphJ7ld0AXEcSLAzY2F/WyCg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10", "@radix-ui/primitive": "1.0.1", @@ -5881,10 +5593,29 @@ } } }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-focus-guards": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.1.tgz", + "integrity": "sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-focus-scope": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.3.tgz", + "integrity": "sha512-upXdPfqI4islj2CslyfUBNlaJCPybbqRHAi1KER7Isel9Q2AtSJ0zRBZv8mWQiFXD2nyAJ4BhC3yXgZ6kMBSrQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10", "@radix-ui/react-compose-refs": "1.0.1", @@ -5906,10 +5637,30 @@ } } }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-id": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.1.tgz", + "integrity": "sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-popper": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.1.2.tgz", + "integrity": "sha512-1CnGGfFi/bbqtJZZ0P/NQY20xdG3E0LALJaLUEoKwPLwl6PPPfbeiCqMVQnhoFRAxjJj4RpBRJzDmUgsex2tSg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10", "@floating-ui/react-dom": "^2.0.0", @@ -5940,8 +5691,9 @@ }, "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-portal": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.3.tgz", + "integrity": "sha512-xLYZeHrWoPmA5mEKEfZZevoVRK/Q43GfzRXkWV6qawIWWK8t6ifIiLQdd7rmQ4Vk1bmI21XhqF9BN3jWf+phpA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10", "@radix-ui/react-primitive": "1.0.3" @@ -5961,15 +5713,14 @@ } } }, - "node_modules/@radix-ui/react-separator": { + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-primitive": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.0.3.tgz", - "integrity": "sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw==", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz", + "integrity": "sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==", "dev": true, - "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10", - "@radix-ui/react-primitive": "1.0.3" + "@radix-ui/react-slot": "1.0.2" }, "peerDependencies": { "@types/react": "*", @@ -5986,43 +5737,11 @@ } } }, - "node_modules/@radix-ui/react-slider": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slider/-/react-slider-1.1.2.tgz", - "integrity": "sha512-NKs15MJylfzVsCagVSWKhGGLNR1W9qWs+HtgbmjjVUB3B9+lb3PYoXxVju3kOrpf0VKyVCtZp+iTwVoqpa1Chw==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/number": "1.0.1", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-collection": "1.0.3", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-direction": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-use-controllable-state": "1.0.1", - "@radix-ui/react-use-layout-effect": "1.0.1", - "@radix-ui/react-use-previous": "1.0.1", - "@radix-ui/react-use-size": "1.0.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-slot": { + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-slot": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.2.tgz", "integrity": "sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==", + "dev": true, "dependencies": { "@babel/runtime": "^7.13.10", "@radix-ui/react-compose-refs": "1.0.1" @@ -6037,92 +5756,11 @@ } } }, - "node_modules/@radix-ui/react-toggle": { - "version": "1.0.3", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-use-controllable-state": "1.0.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-toggle-group": { - "version": "1.0.4", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-direction": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-roving-focus": "1.0.4", - "@radix-ui/react-toggle": "1.0.3", - "@radix-ui/react-use-controllable-state": "1.0.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-toolbar": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-toolbar/-/react-toolbar-1.0.4.tgz", - "integrity": "sha512-tBgmM/O7a07xbaEkYJWYTXkIdU/1pW4/KZORR43toC/4XWyBCURK0ei9kMUdp+gTPPKBgYLxXmRSH1EVcIDp8Q==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-direction": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-roving-focus": "1.0.4", - "@radix-ui/react-separator": "1.0.3", - "@radix-ui/react-toggle-group": "1.0.4" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-callback-ref": { + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-use-callback-ref": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.1.tgz", "integrity": "sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==", + "dev": true, "dependencies": { "@babel/runtime": "^7.13.10" }, @@ -6136,10 +5774,11 @@ } } }, - "node_modules/@radix-ui/react-use-controllable-state": { + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-use-controllable-state": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.1.tgz", "integrity": "sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==", + "dev": true, "dependencies": { "@babel/runtime": "^7.13.10", "@radix-ui/react-use-callback-ref": "1.0.1" @@ -6154,10 +5793,11 @@ } } }, - "node_modules/@radix-ui/react-use-escape-keydown": { + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-use-escape-keydown": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.3.tgz", "integrity": "sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==", + "dev": true, "dependencies": { "@babel/runtime": "^7.13.10", "@radix-ui/react-use-callback-ref": "1.0.1" @@ -6172,10 +5812,11 @@ } } }, - "node_modules/@radix-ui/react-use-layout-effect": { + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-use-layout-effect": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.1.tgz", "integrity": "sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==", + "dev": true, "dependencies": { "@babel/runtime": "^7.13.10" }, @@ -6189,9 +5830,11 @@ } } }, - "node_modules/@radix-ui/react-use-previous": { + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-use-previous": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.0.1.tgz", + "integrity": "sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==", + "dev": true, "dependencies": { "@babel/runtime": "^7.13.10" }, @@ -6205,10 +5848,11 @@ } } }, - "node_modules/@radix-ui/react-use-rect": { + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-use-rect": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.0.1.tgz", "integrity": "sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==", + "dev": true, "dependencies": { "@babel/runtime": "^7.13.10", "@radix-ui/rect": "1.0.1" @@ -6223,10 +5867,11 @@ } } }, - "node_modules/@radix-ui/react-use-size": { + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-use-size": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.1.tgz", "integrity": "sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==", + "dev": true, "dependencies": { "@babel/runtime": "^7.13.10", "@radix-ui/react-use-layout-effect": "1.0.1" @@ -6241,10 +5886,308 @@ } } }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/rect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.0.1.tgz", + "integrity": "sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10" + } + }, + "node_modules/@radix-ui/react-select/node_modules/react-remove-scroll": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz", + "integrity": "sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==", + "dev": true, + "dependencies": { + "react-remove-scroll-bar": "^2.3.3", + "react-style-singleton": "^2.2.1", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.1.0.tgz", + "integrity": "sha512-3uBAs+egzvJBDZAzvb/n4NxxOYpnspmWxO2u5NbZ8Y6FM/NdrGSF9bop3Cf6F6C71z1rTSn8KV0Fo2ZVd79lGA==", + "dev": true, + "dependencies": { + "@radix-ui/react-primitive": "2.0.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slider": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slider/-/react-slider-1.2.0.tgz", + "integrity": "sha512-dAHCDA4/ySXROEPaRtaMV5WHL8+JB/DbtyTbJjYkY0RXmKMO2Ln8DFZhywG5/mVQ4WqHDBc8smc14yPXPqZHYA==", + "dependencies": { + "@radix-ui/number": "1.1.0", + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-collection": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-use-size": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.0.tgz", + "integrity": "sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.1.0.tgz", + "integrity": "sha512-gwoxaKZ0oJ4vIgzsfESBuSgJNdc0rv12VhHgcqN0TEJmmZixXG/2XpsLK8kzNWYcnaoRIEEQc0bEi3dIvdUpjw==", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle-group": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-1.1.0.tgz", + "integrity": "sha512-PpTJV68dZU2oqqgq75Uzto5o/XfOVgkrJ9rulVmfTKxWp3HfUjHE6CP/WLRR4AzPX9HWxw7vFow2me85Yu+Naw==", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-roving-focus": "1.1.0", + "@radix-ui/react-toggle": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toolbar": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toolbar/-/react-toolbar-1.1.0.tgz", + "integrity": "sha512-ZUKknxhMTL/4hPh+4DuaTot9aO7UD6Kupj4gqXCsBTayX1pD1L+0C2/2VZKXb4tIifQklZ3pf2hG9T+ns+FclQ==", + "dev": true, + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-roving-focus": "1.1.0", + "@radix-ui/react-separator": "1.1.0", + "@radix-ui/react-toggle-group": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", + "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz", + "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz", + "integrity": "sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz", + "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.0.tgz", + "integrity": "sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-rect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.0.tgz", + "integrity": "sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==", + "dependencies": { + "@radix-ui/rect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-size": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz", + "integrity": "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-visually-hidden": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.0.3.tgz", + "integrity": "sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10", "@radix-ui/react-primitive": "1.0.3" @@ -6264,18 +6207,76 @@ } } }, - "node_modules/@radix-ui/rect": { + "node_modules/@radix-ui/react-visually-hidden/node_modules/@radix-ui/react-compose-refs": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.0.1.tgz", - "integrity": "sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz", + "integrity": "sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==", + "dev": true, "dependencies": { "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, + "node_modules/@radix-ui/react-visually-hidden/node_modules/@radix-ui/react-primitive": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz", + "integrity": "sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-slot": "1.0.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-visually-hidden/node_modules/@radix-ui/react-slot": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.2.tgz", + "integrity": "sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/rect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.0.tgz", + "integrity": "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==" + }, "node_modules/@react-aria/ssr": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.0.tgz", - "integrity": "sha512-Bz6BqP6ZorCme9tSWHZVmmY+s7AU8l6Vl2NUYmBzezD//fVHHfFo4lFBn5tBuAaJEm3AuCLaJQ6H2qhxNSb7zg==", + "version": "3.9.4", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.4.tgz", + "integrity": "sha512-4jmAigVq409qcJvQyuorsmBR4+9r3+JEC60wC+Y0MZV0HCtTmm8D9guYXlJMdx0SSkgj0hHAyFm/HvPNFofCoQ==", "dependencies": { "@swc/helpers": "^0.5.0" }, @@ -6302,15 +6303,15 @@ "integrity": "sha512-/RVXdLvJxLg4QKvMoM5WlwNR9ViO9z8B/qPcc+C0Sa/teJY7QG7kJ441DwzOjMYEY7GmU4dj5EcGHIkKZiQZCA==" }, "node_modules/@react-google-maps/api": { - "version": "2.19.2", - "resolved": "https://registry.npmjs.org/@react-google-maps/api/-/api-2.19.2.tgz", - "integrity": "sha512-Vt57XWzCKfsUjKOmFUl2erVVfOePkPK5OigF/f+q7UuV/Nm9KDDy1PMFBx+wNahEqOd6a32BxfsykEhBnbU9wQ==", + "version": "2.19.3", + "resolved": "https://registry.npmjs.org/@react-google-maps/api/-/api-2.19.3.tgz", + "integrity": "sha512-jiLqvuOt5lOowkLeq7d077AByTyJp+s6hZVlLhlq7SBacBD37aUNpXBz2OsazfeR6Aw4a+9RRhAEjEFvrR1f5A==", "dependencies": { "@googlemaps/js-api-loader": "1.16.2", - "@googlemaps/markerclusterer": "2.3.2", + "@googlemaps/markerclusterer": "2.5.3", "@react-google-maps/infobox": "2.19.2", "@react-google-maps/marker-clusterer": "2.19.2", - "@types/google.maps": "3.53.5", + "@types/google.maps": "3.55.2", "invariant": "2.2.4" }, "peerDependencies": { @@ -6329,46 +6330,46 @@ "integrity": "sha512-x9ibmsP0ZVqzyCo1Pitbw+4b6iEXRw/r1TCy3vOUR3eKrzWLnHYZMR325BkZW2r8fnuWE/V3Fp4QZOP9qYORCw==" }, "node_modules/@react-native-community/cli": { - "version": "11.3.10", - "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-11.3.10.tgz", - "integrity": "sha512-bIx0t5s9ewH1PlcEcuQUD+UnVrCjPGAfjhVR5Gew565X60nE+GTIHRn70nMv9G4he/amBF+Z+vf5t8SNZEWMwg==", + "version": "13.6.8", + "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-13.6.8.tgz", + "integrity": "sha512-0lRdgLNaXixWY4BfFRl1J6Ao9Lapo2z+++iE7TD4GAbuxOWJSyFi+KUA8XNfSDyML4jFO02MZgyBPxAWdaminQ==", "peer": true, "dependencies": { - "@react-native-community/cli-clean": "11.3.10", - "@react-native-community/cli-config": "11.3.10", - "@react-native-community/cli-debugger-ui": "11.3.10", - "@react-native-community/cli-doctor": "11.3.10", - "@react-native-community/cli-hermes": "11.3.10", - "@react-native-community/cli-plugin-metro": "11.3.10", - "@react-native-community/cli-server-api": "11.3.10", - "@react-native-community/cli-tools": "11.3.10", - "@react-native-community/cli-types": "11.3.10", + "@react-native-community/cli-clean": "13.6.8", + "@react-native-community/cli-config": "13.6.8", + "@react-native-community/cli-debugger-ui": "13.6.8", + "@react-native-community/cli-doctor": "13.6.8", + "@react-native-community/cli-hermes": "13.6.8", + "@react-native-community/cli-server-api": "13.6.8", + "@react-native-community/cli-tools": "13.6.8", + "@react-native-community/cli-types": "13.6.8", "chalk": "^4.1.2", "commander": "^9.4.1", + "deepmerge": "^4.3.0", "execa": "^5.0.0", "find-up": "^4.1.0", "fs-extra": "^8.1.0", "graceful-fs": "^4.1.3", - "prompts": "^2.4.0", + "prompts": "^2.4.2", "semver": "^7.5.2" }, "bin": { - "react-native": "build/bin.js" + "rnc-cli": "build/bin.js" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/@react-native-community/cli-clean": { - "version": "11.3.10", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-11.3.10.tgz", - "integrity": "sha512-g6QjW+DSqoWRHzmIQW3AH22k1AnynWuOdy2YPwYEGgPddTeXZtJphIpEVwDOiC0L4mZv2VmiX33/cGNUwO0cIA==", + "version": "13.6.8", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-13.6.8.tgz", + "integrity": "sha512-B1uxlm1N4BQuWFvBL3yRl3LVvydjswsdbTi7tMrHMtSxfRio1p9HjcmDzlzKco09Y+8qBGgakm3jcMZGLbhXQQ==", "peer": true, "dependencies": { - "@react-native-community/cli-tools": "11.3.10", + "@react-native-community/cli-tools": "13.6.8", "chalk": "^4.1.2", "execa": "^5.0.0", - "prompts": "^2.4.0" + "fast-glob": "^3.3.2" } }, "node_modules/@react-native-community/cli-clean/node_modules/ansi-styles": { @@ -6424,16 +6425,16 @@ } }, "node_modules/@react-native-community/cli-config": { - "version": "11.3.10", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-11.3.10.tgz", - "integrity": "sha512-YYu14nm1JYLS6mDRBz78+zDdSFudLBFpPkhkOoj4LuBhNForQBIqFFHzQbd9/gcguJxfW3vlYSnudfaUI7oGLg==", + "version": "13.6.8", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-13.6.8.tgz", + "integrity": "sha512-RabCkIsWdP4Ex/sf1uSP9qxc30utm+0uIJAjrZkNQynm7T4Lyqn/kT3LKm4yM6M0Qk61YxGguiaXF4601vAduw==", "peer": true, "dependencies": { - "@react-native-community/cli-tools": "11.3.10", + "@react-native-community/cli-tools": "13.6.8", "chalk": "^4.1.2", "cosmiconfig": "^5.1.0", "deepmerge": "^4.3.0", - "glob": "^7.1.3", + "fast-glob": "^3.3.2", "joi": "^17.2.1" } }, @@ -6483,26 +6484,6 @@ "node": ">=4" } }, - "node_modules/@react-native-community/cli-config/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "peer": true, - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@react-native-community/cli-config/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -6560,36 +6541,35 @@ } }, "node_modules/@react-native-community/cli-debugger-ui": { - "version": "11.3.10", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-11.3.10.tgz", - "integrity": "sha512-kyitGV3RsjlXIioq9lsuawha2GUBPCTAyXV6EBlm3qlyF3dMniB3twEvz+fIOid/e1ZeucH3Tzy5G3qcP8yWoA==", + "version": "13.6.8", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-13.6.8.tgz", + "integrity": "sha512-2cS+MX/Su6sVSjqpDftFOXbK7EuPg98xzsPkdPhkQnkZwvXqodK9CAMuDMbx3lBHHtrPrpMbBCpFmPN8iVOnlA==", "peer": true, "dependencies": { "serve-static": "^1.13.1" } }, "node_modules/@react-native-community/cli-doctor": { - "version": "11.3.10", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-11.3.10.tgz", - "integrity": "sha512-DpMsfCWKZ15L9nFK/SyDvpl5v6MjV+arMHMC1i8kR+DOmf2xWmp/pgMywKk0/u50yGB9GwxBHt3i/S/IMK5Ylg==", + "version": "13.6.8", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-13.6.8.tgz", + "integrity": "sha512-/3Vdy9J3hyiu0y3nd/CU3kBqPlTRxnLXg7V6jrA1jbTOlZAMyV9imEkrqEaGK0SMOyMhh9Pipf98Ozhk0Nl4QA==", "peer": true, "dependencies": { - "@react-native-community/cli-config": "11.3.10", - "@react-native-community/cli-platform-android": "11.3.10", - "@react-native-community/cli-platform-ios": "11.3.10", - "@react-native-community/cli-tools": "11.3.10", + "@react-native-community/cli-config": "13.6.8", + "@react-native-community/cli-platform-android": "13.6.8", + "@react-native-community/cli-platform-apple": "13.6.8", + "@react-native-community/cli-platform-ios": "13.6.8", + "@react-native-community/cli-tools": "13.6.8", "chalk": "^4.1.2", "command-exists": "^1.2.8", - "envinfo": "^7.7.2", + "deepmerge": "^4.3.0", + "envinfo": "^7.10.0", "execa": "^5.0.0", "hermes-profile-transformer": "^0.0.6", - "ip": "^1.1.5", "node-stream-zip": "^1.9.1", "ora": "^5.4.1", - "prompts": "^2.4.0", "semver": "^7.5.2", "strip-ansi": "^5.2.0", - "sudo-prompt": "^9.0.0", "wcwidth": "^1.0.1", "yaml": "^2.2.1" } @@ -6668,25 +6648,27 @@ } }, "node_modules/@react-native-community/cli-doctor/node_modules/yaml": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", - "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz", + "integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==", "peer": true, + "bin": { + "yaml": "bin.mjs" + }, "engines": { "node": ">= 14" } }, "node_modules/@react-native-community/cli-hermes": { - "version": "11.3.10", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-11.3.10.tgz", - "integrity": "sha512-vqINuzAlcHS9ImNwJtT43N7kfBQ7ro9A8O1Gpc5TQ0A8V36yGG8eoCHeauayklVVgMZpZL6f6mcoLLr9IOgBZQ==", + "version": "13.6.8", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-13.6.8.tgz", + "integrity": "sha512-lZi/OBFuZUj5cLK94oEgtrtmxGoqeYVRcnHXl/R5c4put9PDl+qH2bEMlGZkFiw57ae3UZKr3TMk+1s4jh3FYQ==", "peer": true, "dependencies": { - "@react-native-community/cli-platform-android": "11.3.10", - "@react-native-community/cli-tools": "11.3.10", + "@react-native-community/cli-platform-android": "13.6.8", + "@react-native-community/cli-tools": "13.6.8", "chalk": "^4.1.2", - "hermes-profile-transformer": "^0.0.6", - "ip": "^1.1.5" + "hermes-profile-transformer": "^0.0.6" } }, "node_modules/@react-native-community/cli-hermes/node_modules/ansi-styles": { @@ -6742,15 +6724,16 @@ } }, "node_modules/@react-native-community/cli-platform-android": { - "version": "11.3.10", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-11.3.10.tgz", - "integrity": "sha512-RGu9KuDIXnrcNkacSHj5ETTQtp/D/835L6veE2jMigO21p//gnKAjw3AVLCysGr8YXYfThF8OSOALrwNc94puQ==", + "version": "13.6.8", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-13.6.8.tgz", + "integrity": "sha512-vWrqeLRRTwp2kO33nbrAgbYn8HR2c2CpIfyVJY9Ckk7HGUSwDyxdcSu7YBvt2ShdfLZH0HctWFNXsgGrfg6BDw==", "peer": true, "dependencies": { - "@react-native-community/cli-tools": "11.3.10", + "@react-native-community/cli-tools": "13.6.8", "chalk": "^4.1.2", "execa": "^5.0.0", - "glob": "^7.1.3", + "fast-glob": "^3.3.2", + "fast-xml-parser": "^4.2.4", "logkitty": "^0.7.1" } }, @@ -6785,26 +6768,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@react-native-community/cli-platform-android/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "peer": true, - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@react-native-community/cli-platform-android/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -6826,21 +6789,21 @@ "node": ">=8" } }, - "node_modules/@react-native-community/cli-platform-ios": { - "version": "11.3.10", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-11.3.10.tgz", - "integrity": "sha512-JjduMrBM567/j4Hvjsff77dGSLMA0+p9rr0nShlgnKPcc+0J4TDy0hgWpUceM7OG00AdDjpetAPupz0kkAh4cQ==", + "node_modules/@react-native-community/cli-platform-apple": { + "version": "13.6.8", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-apple/-/cli-platform-apple-13.6.8.tgz", + "integrity": "sha512-1JPohnlXPqU44zns3ALEzIbH2cKRw6JtEDJERgLuEUbs2r2NeJgqDbKyZ7fTTO8o+pegDnn6+Rr7qGVVOuUzzg==", "peer": true, "dependencies": { - "@react-native-community/cli-tools": "11.3.10", + "@react-native-community/cli-tools": "13.6.8", "chalk": "^4.1.2", "execa": "^5.0.0", + "fast-glob": "^3.3.2", "fast-xml-parser": "^4.0.12", - "glob": "^7.1.3", "ora": "^5.4.1" } }, - "node_modules/@react-native-community/cli-platform-ios/node_modules/ansi-styles": { + "node_modules/@react-native-community/cli-platform-apple/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -6855,7 +6818,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@react-native-community/cli-platform-ios/node_modules/chalk": { + "node_modules/@react-native-community/cli-platform-apple/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", @@ -6871,27 +6834,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@react-native-community/cli-platform-ios/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "peer": true, - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@react-native-community/cli-platform-ios/node_modules/has-flag": { + "node_modules/@react-native-community/cli-platform-apple/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -6900,7 +6843,7 @@ "node": ">=8" } }, - "node_modules/@react-native-community/cli-platform-ios/node_modules/supports-color": { + "node_modules/@react-native-community/cli-platform-apple/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -6912,92 +6855,30 @@ "node": ">=8" } }, - "node_modules/@react-native-community/cli-plugin-metro": { - "version": "11.3.10", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-11.3.10.tgz", - "integrity": "sha512-ZYAc5Hc+QVqJgj1XFbpKnIPbSJ9xKcBnfQrRhR+jFyt2DWx85u4bbzY1GSVc/USs0UbSUXv4dqPbnmOJz52EYQ==", + "node_modules/@react-native-community/cli-platform-ios": { + "version": "13.6.8", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-13.6.8.tgz", + "integrity": "sha512-/IIcIRM8qaoD7iZqsvtf6Qq1AwtChWYfB9sTn3mTiolZ5Zd5bXH37g+6liPfAICRkj2Ptq3iXmjrDVUQAxrOXw==", "peer": true, "dependencies": { - "@react-native-community/cli-server-api": "11.3.10", - "@react-native-community/cli-tools": "11.3.10", - "chalk": "^4.1.2", - "execa": "^5.0.0", - "metro": "0.76.8", - "metro-config": "0.76.8", - "metro-core": "0.76.8", - "metro-react-native-babel-transformer": "0.76.8", - "metro-resolver": "0.76.8", - "metro-runtime": "0.76.8", - "readline": "^1.3.0" - } - }, - "node_modules/@react-native-community/cli-plugin-metro/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@react-native-community/cli-plugin-metro/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@react-native-community/cli-plugin-metro/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@react-native-community/cli-plugin-metro/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "@react-native-community/cli-platform-apple": "13.6.8" } }, "node_modules/@react-native-community/cli-server-api": { - "version": "11.3.10", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-11.3.10.tgz", - "integrity": "sha512-WEwHWIpqx3gA6Da+lrmq8+z78E1XbxxjBlvHAXevhjJj42N4SO417eZiiUVrFzEFVVJSUee9n9aRa0kUR+0/2w==", + "version": "13.6.8", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-13.6.8.tgz", + "integrity": "sha512-Lx664oWTzpVfbKUTy+3GIX7e+Mt5Zn+zdkM4ehllNdik/lbB3tM9Nrg8PSvOfI+tTXs2w55+nIydLfH+0FqJVg==", "peer": true, "dependencies": { - "@react-native-community/cli-debugger-ui": "11.3.10", - "@react-native-community/cli-tools": "11.3.10", + "@react-native-community/cli-debugger-ui": "13.6.8", + "@react-native-community/cli-tools": "13.6.8", "compression": "^1.7.1", "connect": "^3.6.5", "errorhandler": "^1.5.1", "nocache": "^3.0.1", "pretty-format": "^26.6.2", "serve-static": "^1.13.1", - "ws": "^7.5.1" + "ws": "^6.2.2" } }, "node_modules/@react-native-community/cli-server-api/node_modules/@jest/types": { @@ -7099,41 +6980,31 @@ } }, "node_modules/@react-native-community/cli-server-api/node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", + "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", "peer": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "dependencies": { + "async-limiter": "~1.0.0" } }, "node_modules/@react-native-community/cli-tools": { - "version": "11.3.10", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-11.3.10.tgz", - "integrity": "sha512-4kCuCwVcGagSrNg9vxMNVhynwpByuC/J5UnKGEet3HuqmoDhQW15m18fJXiehA8J+u9WBvHduefy9nZxO0C06Q==", + "version": "13.6.8", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-13.6.8.tgz", + "integrity": "sha512-1MYlae9EkbjC7DBYOGMH5xF9yDoeNYUKgEdDjL6WAUBoF2gtwiZPM6igLKi/+dhb5sCtC7fiLrLi0Oevdf+RmQ==", "peer": true, "dependencies": { "appdirsjs": "^1.2.4", "chalk": "^4.1.2", + "execa": "^5.0.0", "find-up": "^5.0.0", "mime": "^2.4.1", "node-fetch": "^2.6.0", "open": "^6.2.0", "ora": "^5.4.1", "semver": "^7.5.2", - "shell-quote": "^1.7.3" + "shell-quote": "^1.7.3", + "sudo-prompt": "^9.0.0" } }, "node_modules/@react-native-community/cli-tools/node_modules/ansi-styles": { @@ -7176,6 +7047,39 @@ "node": ">=8" } }, + "node_modules/@react-native-community/cli-tools/node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "peer": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "peer": true, + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@react-native-community/cli-tools/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -7189,9 +7093,9 @@ } }, "node_modules/@react-native-community/cli-types": { - "version": "11.3.10", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-11.3.10.tgz", - "integrity": "sha512-0FHK/JE7bTn0x1y8Lk5m3RISDHIBQqWLltO2Mf7YQ6cAeKs8iNOJOeKaHJEY+ohjsOyCziw+XSC4cY57dQrwNA==", + "version": "13.6.8", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-13.6.8.tgz", + "integrity": "sha512-C4mVByy0i+/NPuPhdMLBR7ubEVkjVS1VwoQu/BoG1crJFNE+167QXAzH01eFbXndsjZaMWmD4Gerx7TYc6lHfA==", "peer": true, "dependencies": { "joi": "^17.2.1" @@ -7343,57 +7247,459 @@ } }, "node_modules/@react-native/assets-registry": { - "version": "0.72.0", - "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.72.0.tgz", - "integrity": "sha512-Im93xRJuHHxb1wniGhBMsxLwcfzdYreSZVQGDoMJgkd6+Iky61LInGEHnQCTN0fKNYF1Dvcofb4uMmE1RQHXHQ==", - "peer": true + "version": "0.74.84", + "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.74.84.tgz", + "integrity": "sha512-dzUhwyaX04QosWZ8zyaaNB/WYZIdeDN1lcpfQbqiOhZJShRH+FLTDVONE/dqlMQrP+EO7lDqF0RrlIt9lnOCQQ==", + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/babel-plugin-codegen": { + "version": "0.74.84", + "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.74.84.tgz", + "integrity": "sha512-UR4uiii5szIJA84mSC6GJOfYKDq7/ThyetOQT62+BBcyGeHVtHlNLNRzgaMeLqIQaT8Fq4pccMI+7QqLOMXzdw==", + "peer": true, + "dependencies": { + "@react-native/codegen": "0.74.84" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/babel-preset": { + "version": "0.74.84", + "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.74.84.tgz", + "integrity": "sha512-WUfu6Y4aGuVdocQZvx33BJiQWFH6kRCHYbZfBn2psgFrSRLgQWEQrDCxqPFObNAVSayM0rNhp2FvI5K/Eyeqlg==", + "peer": true, + "dependencies": { + "@babel/core": "^7.20.0", + "@babel/plugin-proposal-async-generator-functions": "^7.0.0", + "@babel/plugin-proposal-class-properties": "^7.18.0", + "@babel/plugin-proposal-export-default-from": "^7.0.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.0", + "@babel/plugin-proposal-numeric-separator": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.20.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", + "@babel/plugin-proposal-optional-chaining": "^7.20.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-default-from": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.18.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-syntax-optional-chaining": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-async-to-generator": "^7.20.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.20.0", + "@babel/plugin-transform-flow-strip-types": "^7.20.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.11", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-react-jsx-self": "^7.0.0", + "@babel/plugin-transform-react-jsx-source": "^7.0.0", + "@babel/plugin-transform-runtime": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-sticky-regex": "^7.0.0", + "@babel/plugin-transform-typescript": "^7.5.0", + "@babel/plugin-transform-unicode-regex": "^7.0.0", + "@babel/template": "^7.0.0", + "@react-native/babel-plugin-codegen": "0.74.84", + "babel-plugin-transform-flow-enums": "^0.0.2", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@babel/core": "*" + } }, "node_modules/@react-native/codegen": { - "version": "0.72.7", - "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.72.7.tgz", - "integrity": "sha512-O7xNcGeXGbY+VoqBGNlZ3O05gxfATlwE1Q1qQf5E38dK+tXn5BY4u0jaQ9DPjfE8pBba8g/BYI1N44lynidMtg==", + "version": "0.74.84", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.74.84.tgz", + "integrity": "sha512-0hXlnu9i0o8v+gXKQi+x6T471L85kCDwW4WrJiYAeOheWrQdNNW6rC3g8+LL7HXAf7QcHGU/8/d57iYfdVK2BQ==", "peer": true, "dependencies": { "@babel/parser": "^7.20.0", - "flow-parser": "^0.206.0", + "glob": "^7.1.1", + "hermes-parser": "0.19.1", + "invariant": "^2.2.4", "jscodeshift": "^0.14.0", + "mkdirp": "^0.5.1", "nullthrows": "^1.1.1" }, + "engines": { + "node": ">=18" + }, "peerDependencies": { "@babel/preset-env": "^7.1.6" } }, - "node_modules/@react-native/gradle-plugin": { - "version": "0.72.11", - "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.72.11.tgz", - "integrity": "sha512-P9iRnxiR2w7EHcZ0mJ+fmbPzMby77ZzV6y9sJI3lVLJzF7TLSdbwcQyD3lwMsiL+q5lKUHoZJS4sYmih+P2HXw==", - "peer": true - }, - "node_modules/@react-native/js-polyfills": { - "version": "0.72.1", - "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.72.1.tgz", - "integrity": "sha512-cRPZh2rBswFnGt5X5EUEPs0r+pAsXxYsifv/fgy9ZLQokuT52bPH+9xjDR+7TafRua5CttGW83wP4TntRcWNDA==", - "peer": true - }, - "node_modules/@react-native/normalize-colors": { - "version": "0.72.0", - "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.72.0.tgz", - "integrity": "sha512-285lfdqSXaqKuBbbtP9qL2tDrfxdOFtIMvkKadtleRQkdOxx+uzGvFr82KHmc/sSiMtfXGp7JnFYWVh4sFl7Yw==", - "peer": true - }, - "node_modules/@react-native/virtualized-lists": { - "version": "0.72.8", - "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.72.8.tgz", - "integrity": "sha512-J3Q4Bkuo99k7mu+jPS9gSUSgq+lLRSI/+ahXNwV92XgJ/8UgOTxu2LPwhJnBk/sQKxq7E8WkZBnBiozukQMqrw==", + "node_modules/@react-native/codegen/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "peer": true, "dependencies": { - "invariant": "^2.2.4", - "nullthrows": "^1.1.1" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native/codegen/node_modules/ast-types": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.15.2.tgz", + "integrity": "sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==", + "peer": true, + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@react-native/codegen/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native/codegen/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "peer": true, + "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" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@react-native/codegen/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native/codegen/node_modules/jscodeshift": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.14.0.tgz", + "integrity": "sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==", + "peer": true, + "dependencies": { + "@babel/core": "^7.13.16", + "@babel/parser": "^7.13.16", + "@babel/plugin-proposal-class-properties": "^7.13.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", + "@babel/plugin-proposal-optional-chaining": "^7.13.12", + "@babel/plugin-transform-modules-commonjs": "^7.13.8", + "@babel/preset-flow": "^7.13.13", + "@babel/preset-typescript": "^7.13.0", + "@babel/register": "^7.13.16", + "babel-core": "^7.0.0-bridge.0", + "chalk": "^4.1.2", + "flow-parser": "0.*", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.4", + "neo-async": "^2.5.0", + "node-dir": "^0.1.17", + "recast": "^0.21.0", + "temp": "^0.8.4", + "write-file-atomic": "^2.3.0" + }, + "bin": { + "jscodeshift": "bin/jscodeshift.js" }, "peerDependencies": { - "react-native": "*" + "@babel/preset-env": "^7.1.6" } }, + "node_modules/@react-native/codegen/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "peer": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/@react-native/codegen/node_modules/recast": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.21.5.tgz", + "integrity": "sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==", + "peer": true, + "dependencies": { + "ast-types": "0.15.2", + "esprima": "~4.0.0", + "source-map": "~0.6.1", + "tslib": "^2.0.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@react-native/codegen/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@react-native/codegen/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native/codegen/node_modules/write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "peer": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "node_modules/@react-native/community-cli-plugin": { + "version": "0.74.84", + "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.74.84.tgz", + "integrity": "sha512-GBKE+1sUh86fS2XXV46gMCNHMc1KetshMbYJ0AhDhldpaILZHqRBX50mdVsiYVvkzp4QjM0nmYqefuJ9NVwicQ==", + "peer": true, + "dependencies": { + "@react-native-community/cli-server-api": "13.6.8", + "@react-native-community/cli-tools": "13.6.8", + "@react-native/dev-middleware": "0.74.84", + "@react-native/metro-babel-transformer": "0.74.84", + "chalk": "^4.0.0", + "execa": "^5.1.1", + "metro": "^0.80.3", + "metro-config": "^0.80.3", + "metro-core": "^0.80.3", + "node-fetch": "^2.2.0", + "querystring": "^0.2.1", + "readline": "^1.3.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native/debugger-frontend": { + "version": "0.74.84", + "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.74.84.tgz", + "integrity": "sha512-YUEA03UNFbiYzHpYxlcS2D9+3eNT5YLGkl5yRg3nOSN6KbCc/OttGnNZme+tuSOJwjMN/vcvtDKYkTqjJw8U0A==", + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/dev-middleware": { + "version": "0.74.84", + "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.74.84.tgz", + "integrity": "sha512-veYw/WmyrAOQHUiIeULzn2duJQnXDPiKq2jZ/lcmDo6jsLirpp+Q73lx09TYgy/oVoPRuV0nfmU3x9B6EV/7qQ==", + "peer": true, + "dependencies": { + "@isaacs/ttlcache": "^1.4.1", + "@react-native/debugger-frontend": "0.74.84", + "@rnx-kit/chromium-edge-launcher": "^1.0.0", + "chrome-launcher": "^0.15.2", + "connect": "^3.6.5", + "debug": "^2.2.0", + "node-fetch": "^2.2.0", + "nullthrows": "^1.1.1", + "open": "^7.0.3", + "selfsigned": "^2.4.1", + "serve-static": "^1.13.1", + "temp-dir": "^2.0.0", + "ws": "^6.2.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/dev-middleware/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "peer": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/@react-native/dev-middleware/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "peer": true + }, + "node_modules/@react-native/dev-middleware/node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "peer": true, + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native/dev-middleware/node_modules/ws": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", + "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", + "peer": true, + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/@react-native/gradle-plugin": { + "version": "0.74.84", + "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.74.84.tgz", + "integrity": "sha512-wYWC5WWXqzCCe4PDogz9pNc4xH5ZamahW5XGSbrrYJ5V3walZ+7z43V6iEBJkZbLjj9YBcSttkXYGr1Xh4veAg==", + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/js-polyfills": { + "version": "0.74.84", + "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.74.84.tgz", + "integrity": "sha512-+PgxuUjBw9JVlz6m4ECsIJMLbDopnr4rpLmsG32hQaJrg0wMuvHtsgAY/J/aVCSG2GNUXexfjrnhc+O9yGOZXQ==", + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/metro-babel-transformer": { + "version": "0.74.84", + "resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.74.84.tgz", + "integrity": "sha512-YtVGq7jkgyUECv5yt4BOFbOXyW4ddUn8+dnwGGpJKdfhXYL5o5++AxNdE+2x+SZdkj3JUVekGKPwRabFECABaw==", + "peer": true, + "dependencies": { + "@babel/core": "^7.20.0", + "@react-native/babel-preset": "0.74.84", + "hermes-parser": "0.19.1", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/@react-native/normalize-colors": { + "version": "0.74.84", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.74.84.tgz", + "integrity": "sha512-Y5W6x8cC5RuakUcTVUFNAIhUZ/tYpuqHZlRBoAuakrTwVuoNHXfQki8lj1KsYU7rW6e3VWgdEx33AfOQpdNp6A==", + "peer": true + }, "node_modules/@react-spring/animated": { "version": "9.7.3", "resolved": "https://registry.npmjs.org/@react-spring/animated/-/animated-9.7.3.tgz", @@ -7439,21 +7745,6 @@ "react-konva": "^16.8.0 || ^16.8.7-0 || ^16.9.0-0 || ^16.10.1-0 || ^16.12.0-0 || ^16.13.0-0 || ^17.0.0-0 || ^17.0.1-0 || ^17.0.2-0 || ^18.0.0-0" } }, - "node_modules/@react-spring/native": { - "version": "9.7.3", - "resolved": "https://registry.npmjs.org/@react-spring/native/-/native-9.7.3.tgz", - "integrity": "sha512-4mpxX3FuEBCUT6ae2fjhxcJW6bhr2FBwFf274eXB7n+U30Gdg8Wo2qYwcUnmiAA0S3dvP8vLTazx3+CYWFShnA==", - "dependencies": { - "@react-spring/animated": "~9.7.3", - "@react-spring/core": "~9.7.3", - "@react-spring/shared": "~9.7.3", - "@react-spring/types": "~9.7.3" - }, - "peerDependencies": { - "react": "^16.8.0 || >=17.0.0 || >=18.0.0", - "react-native": ">=0.58" - } - }, "node_modules/@react-spring/shared": { "version": "9.7.3", "resolved": "https://registry.npmjs.org/@react-spring/shared/-/shared-9.7.3.tgz", @@ -7519,9 +7810,9 @@ } }, "node_modules/@react-three/fiber": { - "version": "8.15.11", - "resolved": "https://registry.npmjs.org/@react-three/fiber/-/fiber-8.15.11.tgz", - "integrity": "sha512-jOJjrjVMBJQwIK6Uirc3bErUCTiclbS2alJG1eU8pV1jIwDZwPwcfHzSi2TautxoA4ddMt5DmlpatK4rIqM4jA==", + "version": "8.16.8", + "resolved": "https://registry.npmjs.org/@react-three/fiber/-/fiber-8.16.8.tgz", + "integrity": "sha512-Lc8fjATtvQEfSd8d5iKdbpHtRm/aPMeFj7jQvp6TNHfpo8IQTW3wwcE1ZMrGGoUH+w2mnyS+0MK1NLPLnuzGkQ==", "peer": true, "dependencies": { "@babel/runtime": "^7.17.8", @@ -7594,17 +7885,17 @@ } }, "node_modules/@remix-run/router": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.13.1.tgz", - "integrity": "sha512-so+DHzZKsoOcoXrILB4rqDkMDy7NLMErRdOxvzvOKb507YINKUP4Di+shbTZDhSE/pBZ+vr7XGIpcOO0VLSA+Q==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.17.0.tgz", + "integrity": "sha512-2D6XaHEVvkCn682XBnipbJjgZUU7xjLtA4dGJRBVUKpEaDYOZMENZoZjAOSb7qirxt5RupjzZxz4fK2FO+EFPw==", "engines": { "node": ">=14.0.0" } }, "node_modules/@restart/hooks": { - "version": "0.4.11", - "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.4.11.tgz", - "integrity": "sha512-Ft/ncTULZN6ldGHiF/k5qt72O8JyRMOeg0tApvCni8LkoiEahO+z3TNxfXIVGy890YtWVDvJAl662dVJSJXvMw==", + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.4.16.tgz", + "integrity": "sha512-f7aCv7c+nU/3mF7NWLtVVr0Ra80RqsO89hO72r+Y/nvQr5+q0UFGkocElTH6MJApvReVh6JHUFYn2cw1WdHF3w==", "dependencies": { "dequal": "^2.0.3" }, @@ -7613,9 +7904,9 @@ } }, "node_modules/@restart/ui": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/@restart/ui/-/ui-1.6.6.tgz", - "integrity": "sha512-eC3puKuWE1SRYbojWHXnvCNHGgf3uzHCb6JOhnF4OXPibOIPEkR1sqDSkL643ydigxwh+ruCa1CmYHlzk7ikKA==", + "version": "1.6.9", + "resolved": "https://registry.npmjs.org/@restart/ui/-/ui-1.6.9.tgz", + "integrity": "sha512-mUbygUsJcRurjZCt1f77gg4DpheD1D+Sc7J3JjAkysUj7t8m4EBJVOqWC9788Qtbc69cJ+HlJc6jBguKwS8Mcw==", "dependencies": { "@babel/runtime": "^7.21.0", "@popperjs/core": "^2.11.6", @@ -7640,6 +7931,32 @@ "react": ">=16.14.0" } }, + "node_modules/@rnx-kit/chromium-edge-launcher": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rnx-kit/chromium-edge-launcher/-/chromium-edge-launcher-1.0.0.tgz", + "integrity": "sha512-lzD84av1ZQhYUS+jsGqJiCMaJO2dn9u+RTT9n9q6D3SaKVwWqv+7AoRKqBu19bkwyE+iFRl1ymr40QS90jVFYg==", + "peer": true, + "dependencies": { + "@types/node": "^18.0.0", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0", + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=14.15" + } + }, + "node_modules/@rnx-kit/chromium-edge-launcher/node_modules/@types/node": { + "version": "18.19.39", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.39.tgz", + "integrity": "sha512-nPwTRDKUctxw3di5b4TfT3I0sWDiWoPQCZjXhvdkINntwr8lcoVCKsTgnXeRubKIlfnV+eN/HYk6Jb40tbcEAQ==", + "peer": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, "node_modules/@scena/dragscroll": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@scena/dragscroll/-/dragscroll-1.4.0.tgz", @@ -7666,136 +7983,93 @@ } }, "node_modules/@sentry-internal/feedback": { - "version": "7.101.1", - "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.101.1.tgz", - "integrity": "sha512-fOKDMVvLX+FuJHJszKBvRg1m7+fd4hchqRnZ9DDfitT6P5Ppl0gbEt/LStqu8Wq5M0tna+hpdwHlVEt7gZVKzw==", + "version": "7.118.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.118.0.tgz", + "integrity": "sha512-IYOGRcqIqKJJpMwBBv+0JTu0FPpXnakJYvOx/XEa/SNyF5+l7b9gGEjUVWh1ok50kTLW/XPnpnXNAGQcoKHg+w==", "dependencies": { - "@sentry/core": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1" + "@sentry/core": "7.118.0", + "@sentry/types": "7.118.0", + "@sentry/utils": "7.118.0" }, "engines": { "node": ">=12" } }, "node_modules/@sentry-internal/replay-canvas": { - "version": "7.101.1", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-7.101.1.tgz", - "integrity": "sha512-09l6nD+lxWvwkpXLlIZuzj/z79Llbo6mcH33TJvxrUTjAqSGF/i3Pd5bTLWro9atippOyQgIV/yTGG4Bc5FhyQ==", + "version": "7.118.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-7.118.0.tgz", + "integrity": "sha512-XxHlCClvrxmVKpiZetFYyiBaPQNiojoBGFFVgbbWBIAPc+fWeLJ2BMoQEBjn/0NA/8u8T6lErK5YQo/eIx9+XQ==", "dependencies": { - "@sentry/core": "7.101.1", - "@sentry/replay": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1" + "@sentry/core": "7.118.0", + "@sentry/replay": "7.118.0", + "@sentry/types": "7.118.0", + "@sentry/utils": "7.118.0" }, "engines": { "node": ">=12" } }, "node_modules/@sentry-internal/tracing": { - "version": "7.101.1", - "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.101.1.tgz", - "integrity": "sha512-ihjWG8x4x0ozx6t+EHoXLKbsPrgzYLCpeBLWyS+M6n3hn6cmHM76c8nZw3ldhUQi5UYL3LFC/JZ50b4oSxtlrg==", + "version": "7.118.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.118.0.tgz", + "integrity": "sha512-dERAshKlQLrBscHSarhHyUeGsu652bDTUN1FK0m4e3X48M3I5/s+0N880Qjpe5MprNLcINlaIgdQ9jkisvxjfw==", "dependencies": { - "@sentry/core": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1" + "@sentry/core": "7.118.0", + "@sentry/types": "7.118.0", + "@sentry/utils": "7.118.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/babel-plugin-component-annotate": { - "version": "2.14.1", - "resolved": "https://registry.npmjs.org/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-2.14.1.tgz", - "integrity": "sha512-NHVOr6m0vOoh1UNSZr+OpWQERjjQM7lO48WN/N/MzobIIxc2pymw2KAq3lNJ1SnVAy1t9RNP8u+g6aEFEMGZ/w==", + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-2.20.0.tgz", + "integrity": "sha512-HN/5+cGvI3NqBeW8rLRVGMpF1PADZpAi3h9LI6YBawJPxEz/ftJoryJ6/rXzV6pAPq/7hTEOhTqWPq8iXuM1dw==", "engines": { "node": ">= 14" } }, "node_modules/@sentry/browser": { - "version": "7.101.1", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.101.1.tgz", - "integrity": "sha512-+rIFoWPdO29AHVYsAwq8QEl2Ihv17Xh9Bt2aPFvLTGDA0caHjnx98g2jSOvLIOah6HI7Nwp3Njg2zBEzDtHkNw==", + "version": "7.118.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.118.0.tgz", + "integrity": "sha512-8onDOFV1VLEoBuqA5yaJeR3FF1JNuxr5C7p1oN3OwY724iTVqQnOLmZKZaSnHV3RkY67wKDGQkQIie14sc+42g==", "dependencies": { - "@sentry-internal/feedback": "7.101.1", - "@sentry-internal/replay-canvas": "7.101.1", - "@sentry-internal/tracing": "7.101.1", - "@sentry/core": "7.101.1", - "@sentry/replay": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1" + "@sentry-internal/feedback": "7.118.0", + "@sentry-internal/replay-canvas": "7.118.0", + "@sentry-internal/tracing": "7.118.0", + "@sentry/core": "7.118.0", + "@sentry/integrations": "7.118.0", + "@sentry/replay": "7.118.0", + "@sentry/types": "7.118.0", + "@sentry/utils": "7.118.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/bundler-plugin-core": { - "version": "2.14.1", - "resolved": "https://registry.npmjs.org/@sentry/bundler-plugin-core/-/bundler-plugin-core-2.14.1.tgz", - "integrity": "sha512-JbYkeQQ+FTy4KjuJmnjjRGKv1LOSH+Q9cbcMHkr+vNrwAbdxkQ7WURGEKUCFTciIekToMCOiFk+g3FQlRmzLPg==", + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/@sentry/bundler-plugin-core/-/bundler-plugin-core-2.20.0.tgz", + "integrity": "sha512-boshDF6AwCTL7LBOjDQxINjCWELOU0eamBvD0ibSjT5bjXnqRjJItoUpmggu8D7PvhKlb6H9OjzB5yiHbmve4A==", "dependencies": { - "@babel/core": "7.18.5", - "@sentry/babel-plugin-component-annotate": "2.14.1", + "@babel/core": "^7.18.5", + "@sentry/babel-plugin-component-annotate": "2.20.0", "@sentry/cli": "^2.22.3", - "@sentry/node": "^7.60.0", - "@sentry/utils": "^7.60.0", "dotenv": "^16.3.1", - "find-up": "5.0.0", - "glob": "9.3.2", - "magic-string": "0.27.0", + "find-up": "^5.0.0", + "glob": "^9.3.2", + "magic-string": "0.30.8", "unplugin": "1.0.1" }, "engines": { "node": ">= 14" } }, - "node_modules/@sentry/bundler-plugin-core/node_modules/@babel/core": { - "version": "7.18.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.5.tgz", - "integrity": "sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ==", - "dependencies": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.18.2", - "@babel/helper-compilation-targets": "^7.18.2", - "@babel/helper-module-transforms": "^7.18.0", - "@babel/helpers": "^7.18.2", - "@babel/parser": "^7.18.5", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.18.5", - "@babel/types": "^7.18.4", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@sentry/bundler-plugin-core/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" - }, - "node_modules/@sentry/bundler-plugin-core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@sentry/cli": { - "version": "2.28.6", - "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.28.6.tgz", - "integrity": "sha512-o2Ngz7xXuhwHxMi+4BFgZ4qjkX0tdZeOSIZkFAGnTbRhQe5T8bxq6CcQRLdPhqMgqvDn7XuJ3YlFtD3ZjHvD7g==", + "version": "2.32.1", + "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.32.1.tgz", + "integrity": "sha512-MWkbkzZfnlE7s2pPbg4VozRSAeMlIObfZlTIou9ye6XnPt6ZmmxCLOuOgSKMv4sXg6aeqKNzMNiadThxCWyvPg==", "hasInstallScript": true, "dependencies": { "https-proxy-agent": "^5.0.0", @@ -7811,19 +8085,19 @@ "node": ">= 10" }, "optionalDependencies": { - "@sentry/cli-darwin": "2.28.6", - "@sentry/cli-linux-arm": "2.28.6", - "@sentry/cli-linux-arm64": "2.28.6", - "@sentry/cli-linux-i686": "2.28.6", - "@sentry/cli-linux-x64": "2.28.6", - "@sentry/cli-win32-i686": "2.28.6", - "@sentry/cli-win32-x64": "2.28.6" + "@sentry/cli-darwin": "2.32.1", + "@sentry/cli-linux-arm": "2.32.1", + "@sentry/cli-linux-arm64": "2.32.1", + "@sentry/cli-linux-i686": "2.32.1", + "@sentry/cli-linux-x64": "2.32.1", + "@sentry/cli-win32-i686": "2.32.1", + "@sentry/cli-win32-x64": "2.32.1" } }, "node_modules/@sentry/cli-darwin": { - "version": "2.28.6", - "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.28.6.tgz", - "integrity": "sha512-KRf0VvTltHQ5gA7CdbUkaIp222LAk/f1+KqpDzO6nB/jC/tL4sfiy6YyM4uiH6IbVEudB8WpHCECiatmyAqMBA==", + "version": "2.32.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.32.1.tgz", + "integrity": "sha512-z/lEwANTYPCzbWTZ2+eeeNYxRLllC8knd0h+vtAKlhmGw/fyc/N39cznIFyFu+dLJ6tTdjOWOeikHtKuS/7onw==", "optional": true, "os": [ "darwin" @@ -7833,9 +8107,9 @@ } }, "node_modules/@sentry/cli-linux-arm": { - "version": "2.28.6", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.28.6.tgz", - "integrity": "sha512-ANG7U47yEHD1g3JrfhpT4/MclEvmDZhctWgSP5gVw5X4AlcI87E6dTqccnLgvZjiIAQTaJJAZuSHVVF3Jk403w==", + "version": "2.32.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.32.1.tgz", + "integrity": "sha512-m0lHkn+o4YKBq8KptGZvpT64FAwSl9mYvHZO9/ChnEGIJ/WyJwiN1X1r9JHVaW4iT5lD0Y5FAyq3JLkk0m0XHg==", "cpu": [ "arm" ], @@ -7849,9 +8123,9 @@ } }, "node_modules/@sentry/cli-linux-arm64": { - "version": "2.28.6", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.28.6.tgz", - "integrity": "sha512-caMDt37FI752n4/3pVltDjlrRlPFCOxK4PHvoZGQ3KFMsai0ZhE/0CLBUMQqfZf0M0r8KB2x7wqLm7xSELjefQ==", + "version": "2.32.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.32.1.tgz", + "integrity": "sha512-hsGqHYuecUl1Yhq4MhiRejfh1gNlmhyNPcQEoO/DDRBnGnJyEAdiDpKXJcc2e/lT9k40B55Ob2CP1SeY040T2w==", "cpu": [ "arm64" ], @@ -7865,9 +8139,9 @@ } }, "node_modules/@sentry/cli-linux-i686": { - "version": "2.28.6", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.28.6.tgz", - "integrity": "sha512-Tj1+GMc6lFsDRquOqaGKXFpW9QbmNK4TSfynkWKiJxdTEn5jSMlXXfr0r9OQrxu3dCCqEHkhEyU63NYVpgxIPw==", + "version": "2.32.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.32.1.tgz", + "integrity": "sha512-SuMLN1/ceFd3Q/B0DVyh5igjetTAF423txiABAHASenEev0lG0vZkRDXFclfgDtDUKRPmOXW7VDMirM3yZWQHQ==", "cpu": [ "x86", "ia32" @@ -7882,9 +8156,9 @@ } }, "node_modules/@sentry/cli-linux-x64": { - "version": "2.28.6", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.28.6.tgz", - "integrity": "sha512-Dt/Xz784w/z3tEObfyJEMmRIzn0D5qoK53H9kZ6e0yNvJOSKNCSOq5cQk4n1/qeG0K/6SU9dirmvHwFUiVNyYg==", + "version": "2.32.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.32.1.tgz", + "integrity": "sha512-x4FGd6xgvFddz8V/dh6jii4wy9qjWyvYLBTz8Fhi9rIP+b8wQ3oxwHIdzntareetZP7C1ggx+hZheiYocNYVwA==", "cpu": [ "x64" ], @@ -7898,9 +8172,9 @@ } }, "node_modules/@sentry/cli-win32-i686": { - "version": "2.28.6", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.28.6.tgz", - "integrity": "sha512-zkpWtvY3kt+ogVaAbfFr2MEkgMMHJNJUnNMO8Ixce9gh38sybIkDkZNFnVPBXMClJV0APa4QH0EwumYBFZUMuQ==", + "version": "2.32.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.32.1.tgz", + "integrity": "sha512-i6aZma9mFzR+hqMY5VliQZEX6ypP/zUjPK0VtIMYWs5cC6PsQLRmuoeJmy3Z7d4nlh0CdK5NPC813Ej6RY6/vg==", "cpu": [ "x86", "ia32" @@ -7914,9 +8188,9 @@ } }, "node_modules/@sentry/cli-win32-x64": { - "version": "2.28.6", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.28.6.tgz", - "integrity": "sha512-TG2YzZ9JMeNFzbicdr5fbtsusVGACbrEfHmPgzWGDeLUP90mZxiMTjkXsE1X/5jQEQjB2+fyfXloba/Ugo51hA==", + "version": "2.32.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.32.1.tgz", + "integrity": "sha512-B58w/lRHLb4MUSjJNfMMw2cQykfimDCMLMmeK+1EiT2RmSeNQliwhhBxYcKk82a8kszH6zg3wT2vCea7LyPUyA==", "cpu": [ "x64" ], @@ -7929,40 +8203,40 @@ } }, "node_modules/@sentry/core": { - "version": "7.101.1", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.101.1.tgz", - "integrity": "sha512-XSmXXeYT1d4O14eDF3OXPJFUgaN2qYEeIGUztqPX9nBs9/ij8y/kZOayFqlIMnfGvjOUM+63sy/2xDBOpFn6ug==", + "version": "7.118.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.118.0.tgz", + "integrity": "sha512-ol0xBdp3/K11IMAYSQE0FMxBOOH9hMsb/rjxXWe0hfM5c72CqYWL3ol7voPci0GELJ5CZG+9ImEU1V9r6gK64g==", "dependencies": { - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1" + "@sentry/types": "7.118.0", + "@sentry/utils": "7.118.0" }, "engines": { "node": ">=8" } }, - "node_modules/@sentry/node": { - "version": "7.101.1", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.101.1.tgz", - "integrity": "sha512-iXSxUT6Zbt/KUY0+fRcW5II6Tgp2zdTfhBW+fQuDt/UUZt7Ypvb+6n4U2oom3LJfttmD7mdjQuT4+vsNImDjTQ==", + "node_modules/@sentry/integrations": { + "version": "7.118.0", + "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.118.0.tgz", + "integrity": "sha512-C2rR4NvIMjokF8jP5qzSf1o2zxDx7IeYnr8u15Kb2+HdZtX559owALR0hfgwnfeElqMhGlJBaKUWZ48lXJMzCQ==", "dependencies": { - "@sentry-internal/tracing": "7.101.1", - "@sentry/core": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1" + "@sentry/core": "7.118.0", + "@sentry/types": "7.118.0", + "@sentry/utils": "7.118.0", + "localforage": "^1.8.1" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/react": { - "version": "7.101.1", - "resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.101.1.tgz", - "integrity": "sha512-CwaBXntX2e3XHZQZVuv/tcfm5H+UHcS6aVChGfUiBHIBi2JpAqdnLdQIFGTkE8BSnKyolKgIsnvIU3BQ//QTig==", + "version": "7.118.0", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.118.0.tgz", + "integrity": "sha512-oEYe5TGk8S7YzPsFqDf4xDHjfzs35/QFE+dou3S2d24OYpso8Tq4C5f1VzYmnOOyy85T7JNicYLSo0n0NSJvQg==", "dependencies": { - "@sentry/browser": "7.101.1", - "@sentry/core": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1", + "@sentry/browser": "7.118.0", + "@sentry/core": "7.118.0", + "@sentry/types": "7.118.0", + "@sentry/utils": "7.118.0", "hoist-non-react-statics": "^3.3.2" }, "engines": { @@ -7973,55 +8247,99 @@ } }, "node_modules/@sentry/replay": { - "version": "7.101.1", - "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.101.1.tgz", - "integrity": "sha512-l4jmj2Rf/myzk3TA83PdMiomassG8okdBh1b2Hp1+ycBRVZFDmsR81gKPvnefSXwGwGNGKEmp6Q2bdGzekpp3Q==", + "version": "7.118.0", + "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.118.0.tgz", + "integrity": "sha512-boQfCL+1L/tSZ9Huwi00+VtU+Ih1Lcg8HtxBuAsBCJR9pQgUL5jp7ECYdTeeHyCh/RJO7JqV1CEoGTgohe10mA==", "dependencies": { - "@sentry-internal/tracing": "7.101.1", - "@sentry/core": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1" + "@sentry-internal/tracing": "7.118.0", + "@sentry/core": "7.118.0", + "@sentry/types": "7.118.0", + "@sentry/utils": "7.118.0" }, "engines": { "node": ">=12" } }, "node_modules/@sentry/tracing": { - "version": "7.101.1", - "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.101.1.tgz", - "integrity": "sha512-g62ol80fc8bpp1c3H96hb4S8onaAS1y7Lg/quiPL4Df0hWKfIYz22fdnCIm2meEFf73g8yBrHOhmqoH7T9xt0w==", + "version": "7.114.0", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.114.0.tgz", + "integrity": "sha512-eldEYGADReZ4jWdN5u35yxLUSTOvjsiZAYd4KBEpf+Ii65n7g/kYOKAjNl7tHbrEG1EsMW4nDPWStUMk1w+tfg==", "dependencies": { - "@sentry-internal/tracing": "7.101.1" + "@sentry-internal/tracing": "7.114.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/tracing/node_modules/@sentry-internal/tracing": { + "version": "7.114.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.114.0.tgz", + "integrity": "sha512-dOuvfJN7G+3YqLlUY4HIjyWHaRP8vbOgF+OsE5w2l7ZEn1rMAaUbPntAR8AF9GBA6j2zWNoSo8e7GjbJxVofSg==", + "dependencies": { + "@sentry/core": "7.114.0", + "@sentry/types": "7.114.0", + "@sentry/utils": "7.114.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/tracing/node_modules/@sentry/core": { + "version": "7.114.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.114.0.tgz", + "integrity": "sha512-YnanVlmulkjgZiVZ9BfY9k6I082n+C+LbZo52MTvx3FY6RE5iyiPMpaOh67oXEZRWcYQEGm+bKruRxLVP6RlbA==", + "dependencies": { + "@sentry/types": "7.114.0", + "@sentry/utils": "7.114.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/tracing/node_modules/@sentry/types": { + "version": "7.114.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.114.0.tgz", + "integrity": "sha512-tsqkkyL3eJtptmPtT0m9W/bPLkU7ILY7nvwpi1hahA5jrM7ppoU0IMaQWAgTD+U3rzFH40IdXNBFb8Gnqcva4w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/tracing/node_modules/@sentry/utils": { + "version": "7.114.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.114.0.tgz", + "integrity": "sha512-319N90McVpupQ6vws4+tfCy/03AdtsU0MurIE4+W5cubHME08HtiEWlfacvAxX+yuKFhvdsO4K4BB/dj54ideg==", + "dependencies": { + "@sentry/types": "7.114.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/types": { - "version": "7.101.1", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.101.1.tgz", - "integrity": "sha512-bwtkQvrCZ6JGc7vqX7TEAKBgkbQFORt84FFS3JQQb8G3efTt9fZd2ReY4buteKQdlALl8h1QWVngTLmI+kyUuw==", + "version": "7.118.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.118.0.tgz", + "integrity": "sha512-2drqrD2+6kgeg+W/ycmiti3G4lJrV3hGjY9PpJ3bJeXrh6T2+LxKPzlgSEnKFaeQWkXdZ4eaUbtTXVebMjb5JA==", "engines": { "node": ">=8" } }, "node_modules/@sentry/utils": { - "version": "7.101.1", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.101.1.tgz", - "integrity": "sha512-Nrg0nrEI3nrOCd9SLJ/WGzxS5KMQE4cryLOvrDcHJRWpsSyGBF1hLLerk84Nsw/0myMsn7zTYU+xoq7idNsX5A==", + "version": "7.118.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.118.0.tgz", + "integrity": "sha512-43qItc/ydxZV1Zb3Kn2M54RwL9XXFa3IAYBO8S82Qvq5YUYmU2AmJ1jgg7DabXlVSWgMA1HntwqnOV3JLaEnTQ==", "dependencies": { - "@sentry/types": "7.101.1" + "@sentry/types": "7.118.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/webpack-plugin": { - "version": "2.14.1", - "resolved": "https://registry.npmjs.org/@sentry/webpack-plugin/-/webpack-plugin-2.14.1.tgz", - "integrity": "sha512-mOGu/D68MQW46eya3z0r3Xk9Cv6/bfqW4zC2AAX7KwJdlq5/6+W0PLo0v3kNxUGRXWg732eHb4wTKGrShmIu2A==", + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/@sentry/webpack-plugin/-/webpack-plugin-2.20.0.tgz", + "integrity": "sha512-2NR6tK+tMUN2xMfKx9RHGqadnqpDibMnbfTkmXXdCTWTKywvJEV6jfUE0RNPpCzVc99Ano2kKLGpVpGb/9fObg==", "dependencies": { - "@sentry/bundler-plugin-core": "2.14.1", + "@sentry/bundler-plugin-core": "2.20.0", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -8033,9 +8351,9 @@ } }, "node_modules/@sideway/address": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", - "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", + "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", "peer": true, "dependencies": { "@hapi/hoek": "^9.0.0" @@ -8059,9 +8377,9 @@ "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" }, "node_modules/@sinonjs/commons": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", - "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", "dependencies": { "type-detect": "4.0.8" } @@ -8075,13 +8393,12 @@ } }, "node_modules/@storybook/addon-actions": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-7.6.3.tgz", - "integrity": "sha512-f4HXteYE8IJXztAK+ab5heSjXWNWvyIAU63T3Fqe3zmqONwCerUKY54Op+RkAZc/R6aALTxvGRKAH2ff8g2vjQ==", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-7.6.20.tgz", + "integrity": "sha512-c/GkEQ2U9BC/Ew/IMdh+zvsh4N6y6n7Zsn2GIhJgcu9YEAa5aF2a9/pNgEGBMOABH959XE8DAOMERw/5qiLR8g==", "dev": true, - "license": "MIT", "dependencies": { - "@storybook/core-events": "7.6.3", + "@storybook/core-events": "7.6.20", "@storybook/global": "^5.0.0", "@types/uuid": "^9.0.1", "dequal": "^2.0.2", @@ -8094,11 +8411,10 @@ } }, "node_modules/@storybook/addon-backgrounds": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-7.6.3.tgz", - "integrity": "sha512-ZZFNf8FBYBsuXvXdVk3sBgxJTn6s0HznuEE9OmAA7tMsLEDlUiWS9LEvjX2jX5K0kWivHTkJDTXV0NcLL1vWAg==", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-7.6.20.tgz", + "integrity": "sha512-a7ukoaXT42vpKsMxkseIeO3GqL0Zst2IxpCTq5dSlXiADrcemSF/8/oNpNW9C4L6F1Zdt+WDtECXslEm017FvQ==", "dev": true, - "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", "memoizerific": "^1.11.3", @@ -8110,13 +8426,12 @@ } }, "node_modules/@storybook/addon-controls": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-7.6.3.tgz", - "integrity": "sha512-xsM3z+CY1YOPqrcCldQLoon947fbd/o3gSO7hM3NwKiw/2WikExPO3VM4R2oi4W4PvnhkSOIO+ZDRuSs1yFmOg==", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-7.6.20.tgz", + "integrity": "sha512-06ZT5Ce1sZW52B0s6XuokwjkKO9GqHlTUHvuflvd8wifxKlCmRvNUxjBvwh+ccGJ49ZS73LbMSLFgtmBEkCxbg==", "dev": true, - "license": "MIT", "dependencies": { - "@storybook/blocks": "7.6.3", + "@storybook/blocks": "7.6.20", "lodash": "^4.17.21", "ts-dedent": "^2.0.0" }, @@ -8126,27 +8441,26 @@ } }, "node_modules/@storybook/addon-docs": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-7.6.3.tgz", - "integrity": "sha512-2Ts+3EFg9ehkQdbjBWnCH1SE0BdyCLN6hO2N030tGxi0Vko9t9O7NLj5qdBwxLcEzb/XzL4zWukzfU17pktQwA==", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-7.6.20.tgz", + "integrity": "sha512-XNfYRhbxH5JP7B9Lh4W06PtMefNXkfpV39Gaoih5HuqngV3eoSL4RikZYOMkvxRGQ738xc6axySU3+JKcP1OZg==", "dev": true, - "license": "MIT", "dependencies": { "@jest/transform": "^29.3.1", "@mdx-js/react": "^2.1.5", - "@storybook/blocks": "7.6.3", - "@storybook/client-logger": "7.6.3", - "@storybook/components": "7.6.3", - "@storybook/csf-plugin": "7.6.3", - "@storybook/csf-tools": "7.6.3", + "@storybook/blocks": "7.6.20", + "@storybook/client-logger": "7.6.20", + "@storybook/components": "7.6.20", + "@storybook/csf-plugin": "7.6.20", + "@storybook/csf-tools": "7.6.20", "@storybook/global": "^5.0.0", "@storybook/mdx2-csf": "^1.0.0", - "@storybook/node-logger": "7.6.3", - "@storybook/postinstall": "7.6.3", - "@storybook/preview-api": "7.6.3", - "@storybook/react-dom-shim": "7.6.3", - "@storybook/theming": "7.6.3", - "@storybook/types": "7.6.3", + "@storybook/node-logger": "7.6.20", + "@storybook/postinstall": "7.6.20", + "@storybook/preview-api": "7.6.20", + "@storybook/react-dom-shim": "7.6.20", + "@storybook/theming": "7.6.20", + "@storybook/types": "7.6.20", "fs-extra": "^11.1.0", "remark-external-links": "^8.0.0", "remark-slug": "^6.0.0", @@ -8162,25 +8476,24 @@ } }, "node_modules/@storybook/addon-essentials": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-7.6.3.tgz", - "integrity": "sha512-bpbt5O0wcB83VLZg8QMXut+8g+7EF4iuevpwiynN9mbpQFvG49c6SE6T2eFJKTvVb4zszyfcNA0Opne2G83wZw==", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-7.6.20.tgz", + "integrity": "sha512-hCupSOiJDeOxJKZSgH0x5Mb2Xqii6mps21g5hpxac1XjhQtmGflShxi/xOHhK3sNqrbgTSbScfpUP3hUlZO/2Q==", "dev": true, - "license": "MIT", "dependencies": { - "@storybook/addon-actions": "7.6.3", - "@storybook/addon-backgrounds": "7.6.3", - "@storybook/addon-controls": "7.6.3", - "@storybook/addon-docs": "7.6.3", - "@storybook/addon-highlight": "7.6.3", - "@storybook/addon-measure": "7.6.3", - "@storybook/addon-outline": "7.6.3", - "@storybook/addon-toolbars": "7.6.3", - "@storybook/addon-viewport": "7.6.3", - "@storybook/core-common": "7.6.3", - "@storybook/manager-api": "7.6.3", - "@storybook/node-logger": "7.6.3", - "@storybook/preview-api": "7.6.3", + "@storybook/addon-actions": "7.6.20", + "@storybook/addon-backgrounds": "7.6.20", + "@storybook/addon-controls": "7.6.20", + "@storybook/addon-docs": "7.6.20", + "@storybook/addon-highlight": "7.6.20", + "@storybook/addon-measure": "7.6.20", + "@storybook/addon-outline": "7.6.20", + "@storybook/addon-toolbars": "7.6.20", + "@storybook/addon-viewport": "7.6.20", + "@storybook/core-common": "7.6.20", + "@storybook/manager-api": "7.6.20", + "@storybook/node-logger": "7.6.20", + "@storybook/preview-api": "7.6.20", "ts-dedent": "^2.0.0" }, "funding": { @@ -8193,11 +8506,10 @@ } }, "node_modules/@storybook/addon-highlight": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-7.6.3.tgz", - "integrity": "sha512-Z9AJ05XCTzFZPAxQSkQf9/Hazf5/QQI0jYSsvKqt7Vk+03q5727oD9KcIY5IHPYqQqN9fHExQh1eyqY8AnS8mg==", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-7.6.20.tgz", + "integrity": "sha512-7/x7xFdFyqCki5Dm3uBePldUs9l98/WxJ7rTHQuYqlX7kASwyN5iXPzuhmMRUhlMm/6G6xXtLabIpzwf1sFurA==", "dev": true, - "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0" }, @@ -8207,14 +8519,13 @@ } }, "node_modules/@storybook/addon-interactions": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-7.6.3.tgz", - "integrity": "sha512-Gm2UJvQC8xs9KIbVZQegTLT3VBsEZIRsXy3htNqWjSdoJZK5M4/YJ3jB247CA/Jc+Mkj7d5SlJe+bCGEzjKTbw==", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-7.6.20.tgz", + "integrity": "sha512-uH+OIxLtvfnnmdN3Uf8MwzfEFYtaqSA6Hir6QNPc643se0RymM8mULN0rzRyvspwd6OagWdtOxsws3aHk02KTA==", "dev": true, - "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", - "@storybook/types": "7.6.3", + "@storybook/types": "7.6.20", "jest-mock": "^27.0.6", "polished": "^4.2.2", "ts-dedent": "^2.2.0" @@ -8225,11 +8536,10 @@ } }, "node_modules/@storybook/addon-links": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-7.6.3.tgz", - "integrity": "sha512-dUIf6Y0nckxZfVQvQSqcthaycRxy69dCJLo3aORrOPL8NvGz3v1bK0AUded5wv8vnOVxfSx/Zqu7MyFr9xyjOA==", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-7.6.20.tgz", + "integrity": "sha512-iomSnBD90CA4MinesYiJkFX2kb3P1Psd/a1Y0ghlFEsHD4uMId9iT6sx2s16DYMja0SlPkrbWYnGukqaCjZpRw==", "dev": true, - "license": "MIT", "dependencies": { "@storybook/csf": "^0.1.2", "@storybook/global": "^5.0.0", @@ -8249,11 +8559,10 @@ } }, "node_modules/@storybook/addon-measure": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-7.6.3.tgz", - "integrity": "sha512-DqxADof04ktA5GSA8XnckYGdVYyC4oN8vfKSGcPzpcKrJ2uVr0BXbcyJAEcJAshEJimmpA6nH5TxabXDFBZgPQ==", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-7.6.20.tgz", + "integrity": "sha512-i2Iq08bGfI7gZbG6Lb8uF/L287tnaGUR+2KFEmdBjH6+kgjWLiwfpanoPQpy4drm23ar0gUjX+L3Ri03VI5/Xg==", "dev": true, - "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", "tiny-invariant": "^1.3.1" @@ -8264,11 +8573,10 @@ } }, "node_modules/@storybook/addon-onboarding": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@storybook/addon-onboarding/-/addon-onboarding-1.0.9.tgz", - "integrity": "sha512-HlHm05Py18XOf4g7abiWkvb2WteoHcRNk1PY3Wtsmjuu5aAAjBmp4mVEg59xEeA2HAMICZ2fb72NIpFlBvDN+g==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@storybook/addon-onboarding/-/addon-onboarding-1.0.11.tgz", + "integrity": "sha512-0Sa7PJDsM6AANOWZX7vq3kgCbS9AZFjr3tfr3bLGfXviwIBKjoZDDdIErJkS3D4mNcDa78lYQvp3PTCKwLIJ9A==", "dev": true, - "license": "MIT", "dependencies": { "@storybook/telemetry": "^7.1.0", "react-confetti": "^6.1.0" @@ -8279,11 +8587,10 @@ } }, "node_modules/@storybook/addon-outline": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-7.6.3.tgz", - "integrity": "sha512-M7d2tcqBBl+mPBUS6Nrwis50QYSCcmT/uKamud7CnlIWsMH/5GZFfAzGSLY5ETfiGsSFYssOwrXLOV4y0enu2g==", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-7.6.20.tgz", + "integrity": "sha512-TdsIQZf/TcDsGoZ1XpO+9nBc4OKqcMIzY4SrI8Wj9dzyFLQ37s08gnZr9POci8AEv62NTUOVavsxcafllkzqDQ==", "dev": true, - "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", "ts-dedent": "^2.0.0" @@ -8294,9 +8601,9 @@ } }, "node_modules/@storybook/addon-toolbars": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-7.6.3.tgz", - "integrity": "sha512-8GpwOt0J5yLrJhTr9/h0a/LTDjt49FhdvdxiVWLlLMrjIXSIc7j193ZgoHfnlwVhJS5zojcjB+HmRw/E+AneoA==", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-7.6.20.tgz", + "integrity": "sha512-5Btg4i8ffWTDHsU72cqxC8nIv9N3E3ObJAc6k0llrmPBG/ybh3jxmRfs8fNm44LlEXaZ5qrK/petsXX3UbpIFg==", "dev": true, "funding": { "type": "opencollective", @@ -8304,11 +8611,10 @@ } }, "node_modules/@storybook/addon-viewport": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-7.6.3.tgz", - "integrity": "sha512-I9FQxHi4W7RUyZut4NziYa+nkBCpD1k2YpEDE5IwSC3lqQpDzFZN89eNWQtZ38tIU4c90jL3L1k69IHvANGHsA==", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-7.6.20.tgz", + "integrity": "sha512-i8mIw8BjLWAVHEQsOTE6UPuEGQvJDpsu1XZnOCkpfTfPMz73m+3td/PmLG7mMT2wPnLu9IZncKLCKTAZRbt/YQ==", "dev": true, - "license": "MIT", "dependencies": { "memoizerific": "^1.11.3" }, @@ -8318,23 +8624,22 @@ } }, "node_modules/@storybook/blocks": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-7.6.3.tgz", - "integrity": "sha512-EyjyNNCZMcV9UnBSujwduiq+F1VLVX/f16fTTPqqZOHigyfrG5LoEYC6dwOC4yO/xfWY+h3qJ51yiugMxVl0Vg==", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-7.6.20.tgz", + "integrity": "sha512-xADKGEOJWkG0UD5jbY4mBXRlmj2C+CIupDL0/hpzvLvwobxBMFPKZIkcZIMvGvVnI/Ui+tJxQxLSuJ5QsPthUw==", "dev": true, - "license": "MIT", "dependencies": { - "@storybook/channels": "7.6.3", - "@storybook/client-logger": "7.6.3", - "@storybook/components": "7.6.3", - "@storybook/core-events": "7.6.3", + "@storybook/channels": "7.6.20", + "@storybook/client-logger": "7.6.20", + "@storybook/components": "7.6.20", + "@storybook/core-events": "7.6.20", "@storybook/csf": "^0.1.2", - "@storybook/docs-tools": "7.6.3", + "@storybook/docs-tools": "7.6.20", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.6.3", - "@storybook/preview-api": "7.6.3", - "@storybook/theming": "7.6.3", - "@storybook/types": "7.6.3", + "@storybook/manager-api": "7.6.20", + "@storybook/preview-api": "7.6.20", + "@storybook/theming": "7.6.20", + "@storybook/types": "7.6.20", "@types/lodash": "^4.14.167", "color-convert": "^2.0.1", "dequal": "^2.0.2", @@ -8358,16 +8663,15 @@ } }, "node_modules/@storybook/builder-manager": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/builder-manager/-/builder-manager-7.6.3.tgz", - "integrity": "sha512-eLMjRudhiRsg7kgbmPcCkuVf2ut753fbiVR7REtqIYwq5vu8UeNOzt1vA6HgfsUj77/7+1zG8/zeyBv/5nY5mw==", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/builder-manager/-/builder-manager-7.6.20.tgz", + "integrity": "sha512-e2GzpjLaw6CM/XSmc4qJRzBF8GOoOyotyu3JrSPTYOt4RD8kjUsK4QlismQM1DQRu8i39aIexxmRbiJyD74xzQ==", "dev": true, - "license": "MIT", "dependencies": { "@fal-works/esbuild-plugin-global-externals": "^2.1.2", - "@storybook/core-common": "7.6.3", - "@storybook/manager": "7.6.3", - "@storybook/node-logger": "7.6.3", + "@storybook/core-common": "7.6.20", + "@storybook/manager": "7.6.20", + "@storybook/node-logger": "7.6.20", "@types/ejs": "^3.1.1", "@types/find-cache-dir": "^3.2.1", "@yarnpkg/esbuild-plugin-pnp": "^3.0.0-rc.10", @@ -8436,11 +8740,12 @@ }, "node_modules/@storybook/builder-manager/node_modules/@esbuild/darwin-arm64": { "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", "cpu": [ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "darwin" @@ -8739,9 +9044,10 @@ }, "node_modules/@storybook/builder-manager/node_modules/esbuild": { "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", "dev": true, "hasInstallScript": true, - "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -8774,27 +9080,27 @@ } }, "node_modules/@storybook/builder-webpack5": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-7.6.3.tgz", - "integrity": "sha512-hK8eOTihB61L+R4wUfHBffPoV3u6Bu7QEnhCQYd6AimNOgjnCvN33ceZjtYFM3taYpQgI6Q723vtOyL1IMh48Q==", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-7.6.20.tgz", + "integrity": "sha512-kUcMZHVo/jybwsje03MFN1ZucdjyH6QB+jlw9dzHrAhM6N1IItwHzhlixvxmseA5OB7jk1b0WcCN8tfD2qByFA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/core": "^7.23.2", - "@storybook/channels": "7.6.3", - "@storybook/client-logger": "7.6.3", - "@storybook/core-common": "7.6.3", - "@storybook/core-events": "7.6.3", - "@storybook/core-webpack": "7.6.3", - "@storybook/node-logger": "7.6.3", - "@storybook/preview": "7.6.3", - "@storybook/preview-api": "7.6.3", + "@storybook/channels": "7.6.20", + "@storybook/client-logger": "7.6.20", + "@storybook/core-common": "7.6.20", + "@storybook/core-events": "7.6.20", + "@storybook/core-webpack": "7.6.20", + "@storybook/node-logger": "7.6.20", + "@storybook/preview": "7.6.20", + "@storybook/preview-api": "7.6.20", "@swc/core": "^1.3.82", "@types/node": "^18.0.0", "@types/semver": "^7.3.4", "babel-loader": "^9.0.0", "browser-assert": "^1.2.1", "case-sensitive-paths-webpack-plugin": "^2.4.0", + "cjs-module-lexer": "^1.2.3", "constants-browserify": "^1.0.0", "css-loader": "^6.7.1", "es-module-lexer": "^1.4.1", @@ -8829,36 +9135,22 @@ } }, "node_modules/@storybook/builder-webpack5/node_modules/@types/node": { - "version": "18.19.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.1.tgz", - "integrity": "sha512-mZJ9V11gG5Vp0Ox2oERpeFDl+JvCwK24PGy76vVY/UgBtjwJWc5rYBThFxmbnYOm9UPZNm6wEl/sxHt2SU7x9A==", + "version": "18.19.39", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.39.tgz", + "integrity": "sha512-nPwTRDKUctxw3di5b4TfT3I0sWDiWoPQCZjXhvdkINntwr8lcoVCKsTgnXeRubKIlfnV+eN/HYk6Jb40tbcEAQ==", "dev": true, - "license": "MIT", "dependencies": { "undici-types": "~5.26.4" } }, - "node_modules/@storybook/builder-webpack5/node_modules/magic-string": { - "version": "0.30.5", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", - "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", - "dev": true, - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@storybook/channels": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.6.3.tgz", - "integrity": "sha512-o9J0TBbFon16tUlU5V6kJgzAlsloJcS1cTHWqh3VWczohbRm+X1PLNUihJ7Q8kBWXAuuJkgBu7RQH7Ib46WyYg==", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.6.20.tgz", + "integrity": "sha512-4hkgPSH6bJclB2OvLnkZOGZW1WptJs09mhQ6j6qLjgBZzL/ZdD6priWSd7iXrmPiN5TzUobkG4P4Dp7FjkiO7A==", "dev": true, - "license": "MIT", "dependencies": { - "@storybook/client-logger": "7.6.3", - "@storybook/core-events": "7.6.3", + "@storybook/client-logger": "7.6.20", + "@storybook/core-events": "7.6.20", "@storybook/global": "^5.0.0", "qs": "^6.10.0", "telejson": "^7.2.0", @@ -8870,24 +9162,23 @@ } }, "node_modules/@storybook/cli": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/cli/-/cli-7.6.3.tgz", - "integrity": "sha512-OuYnzZlAtpGm4rDgI4ZWkNbAkddutlJh6KmoU9oQAlZP0zmETyJN8REUWjj5T9Z1AS2iXjCMGlFVd4TC8nKocw==", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/cli/-/cli-7.6.20.tgz", + "integrity": "sha512-ZlP+BJyqg7HlnXf7ypjG2CKMI/KVOn03jFIiClItE/jQfgR6kRFgtjRU7uajh427HHfjv9DRiur8nBzuO7vapA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/core": "^7.23.2", "@babel/preset-env": "^7.23.2", "@babel/types": "^7.23.0", "@ndelangen/get-tarball": "^3.0.7", - "@storybook/codemod": "7.6.3", - "@storybook/core-common": "7.6.3", - "@storybook/core-events": "7.6.3", - "@storybook/core-server": "7.6.3", - "@storybook/csf-tools": "7.6.3", - "@storybook/node-logger": "7.6.3", - "@storybook/telemetry": "7.6.3", - "@storybook/types": "7.6.3", + "@storybook/codemod": "7.6.20", + "@storybook/core-common": "7.6.20", + "@storybook/core-events": "7.6.20", + "@storybook/core-server": "7.6.20", + "@storybook/csf-tools": "7.6.20", + "@storybook/node-logger": "7.6.20", + "@storybook/telemetry": "7.6.20", + "@storybook/types": "7.6.20", "@types/semver": "^7.3.4", "@yarnpkg/fslib": "2.10.3", "@yarnpkg/libzip": "2.3.0", @@ -8912,7 +9203,6 @@ "puppeteer-core": "^2.1.1", "read-pkg-up": "^7.0.1", "semver": "^7.3.7", - "simple-update-notifier": "^2.0.0", "strip-json-comments": "^3.0.1", "tempy": "^1.0.1", "ts-dedent": "^2.0.0", @@ -8929,8 +9219,9 @@ }, "node_modules/@storybook/cli/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -8943,8 +9234,9 @@ }, "node_modules/@storybook/cli/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -8958,64 +9250,27 @@ }, "node_modules/@storybook/cli/node_modules/commander": { "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/@storybook/cli/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/@storybook/cli/node_modules/jscodeshift": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.15.1.tgz", - "integrity": "sha512-hIJfxUy8Rt4HkJn/zZPU9ChKfKZM1342waJ1QC2e2YsPcWhM+3BJ4dcfQCzArTrk1jJeNLB341H+qOcEHRxJZg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.23.0", - "@babel/parser": "^7.23.0", - "@babel/plugin-transform-class-properties": "^7.22.5", - "@babel/plugin-transform-modules-commonjs": "^7.23.0", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", - "@babel/plugin-transform-optional-chaining": "^7.23.0", - "@babel/plugin-transform-private-methods": "^7.22.5", - "@babel/preset-flow": "^7.22.15", - "@babel/preset-typescript": "^7.23.0", - "@babel/register": "^7.22.15", - "babel-core": "^7.0.0-bridge.0", - "chalk": "^4.1.2", - "flow-parser": "0.*", - "graceful-fs": "^4.2.4", - "micromatch": "^4.0.4", - "neo-async": "^2.5.0", - "node-dir": "^0.1.17", - "recast": "^0.23.3", - "temp": "^0.8.4", - "write-file-atomic": "^2.3.0" - }, - "bin": { - "jscodeshift": "bin/jscodeshift.js" - }, - "peerDependencies": { - "@babel/preset-env": "^7.1.6" - }, - "peerDependenciesMeta": { - "@babel/preset-env": { - "optional": true - } - } - }, "node_modules/@storybook/cli/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -9023,22 +9278,11 @@ "node": ">=8" } }, - "node_modules/@storybook/cli/node_modules/write-file-atomic": { - "version": "2.4.3", - "dev": true, - "license": "ISC", - "dependencies": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" - } - }, "node_modules/@storybook/client-logger": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.6.3.tgz", - "integrity": "sha512-BpsCnefrBFdxD6ukMjAblm1D6zB4U5HR1I85VWw6LOqZrfzA6l/1uBxItz0XG96HTjngbvAabWf5k7ZFCx5UCg==", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.6.20.tgz", + "integrity": "sha512-NwG0VIJQCmKrSaN5GBDFyQgTAHLNishUPLW1NrzqTDNAhfZUoef64rPQlinbopa0H4OXmlB+QxbQIb3ubeXmSQ==", "dev": true, - "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0" }, @@ -9048,19 +9292,18 @@ } }, "node_modules/@storybook/codemod": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-7.6.3.tgz", - "integrity": "sha512-A1i8+WQfNg3frVcwSyu8E/cDkCu88Sw7JiGNnq9iW2e2oWMr2awpCDgXp8WfTK+HiDb2X1Pq5y/GmUlh3qr77Q==", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-7.6.20.tgz", + "integrity": "sha512-8vmSsksO4XukNw0TmqylPmk7PxnfNfE21YsxFa7mnEBmEKQcZCQsNil4ZgWfG0IzdhTfhglAN4r++Ew0WE+PYA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/core": "^7.23.2", "@babel/preset-env": "^7.23.2", "@babel/types": "^7.23.0", "@storybook/csf": "^0.1.2", - "@storybook/csf-tools": "7.6.3", - "@storybook/node-logger": "7.6.3", - "@storybook/types": "7.6.3", + "@storybook/csf-tools": "7.6.20", + "@storybook/node-logger": "7.6.20", + "@storybook/types": "7.6.20", "@types/cross-spawn": "^6.0.2", "cross-spawn": "^7.0.3", "globby": "^11.0.2", @@ -9074,118 +9317,19 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/codemod/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@storybook/codemod/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@storybook/codemod/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@storybook/codemod/node_modules/jscodeshift": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.15.1.tgz", - "integrity": "sha512-hIJfxUy8Rt4HkJn/zZPU9ChKfKZM1342waJ1QC2e2YsPcWhM+3BJ4dcfQCzArTrk1jJeNLB341H+qOcEHRxJZg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.23.0", - "@babel/parser": "^7.23.0", - "@babel/plugin-transform-class-properties": "^7.22.5", - "@babel/plugin-transform-modules-commonjs": "^7.23.0", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", - "@babel/plugin-transform-optional-chaining": "^7.23.0", - "@babel/plugin-transform-private-methods": "^7.22.5", - "@babel/preset-flow": "^7.22.15", - "@babel/preset-typescript": "^7.23.0", - "@babel/register": "^7.22.15", - "babel-core": "^7.0.0-bridge.0", - "chalk": "^4.1.2", - "flow-parser": "0.*", - "graceful-fs": "^4.2.4", - "micromatch": "^4.0.4", - "neo-async": "^2.5.0", - "node-dir": "^0.1.17", - "recast": "^0.23.3", - "temp": "^0.8.4", - "write-file-atomic": "^2.3.0" - }, - "bin": { - "jscodeshift": "bin/jscodeshift.js" - }, - "peerDependencies": { - "@babel/preset-env": "^7.1.6" - }, - "peerDependenciesMeta": { - "@babel/preset-env": { - "optional": true - } - } - }, - "node_modules/@storybook/codemod/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@storybook/codemod/node_modules/write-file-atomic": { - "version": "2.4.3", - "dev": true, - "license": "ISC", - "dependencies": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" - } - }, "node_modules/@storybook/components": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.6.3.tgz", - "integrity": "sha512-UNV0WoUo+W0huOLvoEMuqRN/VB4p0CNswrXN1mi/oGWvAFJ8idu63lSuV4uQ/LKxAZ6v3Kpdd+oK/o+OeOoL6w==", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.6.20.tgz", + "integrity": "sha512-0d8u4m558R+W5V+rseF/+e9JnMciADLXTpsILrG+TBhwECk0MctIWW18bkqkujdCm8kDZr5U2iM/5kS1Noy7Ug==", "dev": true, - "license": "MIT", "dependencies": { "@radix-ui/react-select": "^1.2.2", "@radix-ui/react-toolbar": "^1.0.4", - "@storybook/client-logger": "7.6.3", + "@storybook/client-logger": "7.6.20", "@storybook/csf": "^0.1.2", "@storybook/global": "^5.0.0", - "@storybook/theming": "7.6.3", - "@storybook/types": "7.6.3", + "@storybook/theming": "7.6.20", + "@storybook/types": "7.6.20", "memoizerific": "^1.11.3", "use-resize-observer": "^9.1.0", "util-deprecate": "^1.0.2" @@ -9200,14 +9344,13 @@ } }, "node_modules/@storybook/core-client": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-7.6.3.tgz", - "integrity": "sha512-RM0Svlajddl8PP4Vq7LK8T22sFefNcTDgo82iRPZzGz0oH8LT0oXGFanj2Nkn0jruOBFClkiJ7EcwrbGJZHELg==", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-7.6.20.tgz", + "integrity": "sha512-upQuQQinLmlOPKcT8yqXNtwIucZ4E4qegYZXH5HXRWoLAL6GQtW7sUVSIuFogdki8OXRncr/dz8OA+5yQyYS4w==", "dev": true, - "license": "MIT", "dependencies": { - "@storybook/client-logger": "7.6.3", - "@storybook/preview-api": "7.6.3" + "@storybook/client-logger": "7.6.20", + "@storybook/preview-api": "7.6.20" }, "funding": { "type": "opencollective", @@ -9215,15 +9358,14 @@ } }, "node_modules/@storybook/core-common": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.6.3.tgz", - "integrity": "sha512-/ZE4BEyGwBHCQCOo681GyBKF4IqCiwVV/ZJCHTMTHFCPLJT2r+Qwv4tnI7xt1kwflOlbBlG6B6CvAqTjjVw/Ew==", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.6.20.tgz", + "integrity": "sha512-8H1zPWPjcmeD4HbDm4FDD0WLsfAKGVr566IZ4hG+h3iWVW57II9JW9MLBtiR2LPSd8u7o0kw64lwRGmtCO1qAw==", "dev": true, - "license": "MIT", "dependencies": { - "@storybook/core-events": "7.6.3", - "@storybook/node-logger": "7.6.3", - "@storybook/types": "7.6.3", + "@storybook/core-events": "7.6.20", + "@storybook/node-logger": "7.6.20", + "@storybook/types": "7.6.20", "@types/find-cache-dir": "^3.2.1", "@types/node": "^18.0.0", "@types/node-fetch": "^2.6.4", @@ -9300,11 +9442,12 @@ }, "node_modules/@storybook/core-common/node_modules/@esbuild/darwin-arm64": { "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", "cpu": [ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "darwin" @@ -9602,9 +9745,9 @@ } }, "node_modules/@storybook/core-common/node_modules/@types/node": { - "version": "18.19.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.1.tgz", - "integrity": "sha512-mZJ9V11gG5Vp0Ox2oERpeFDl+JvCwK24PGy76vVY/UgBtjwJWc5rYBThFxmbnYOm9UPZNm6wEl/sxHt2SU7x9A==", + "version": "18.19.39", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.39.tgz", + "integrity": "sha512-nPwTRDKUctxw3di5b4TfT3I0sWDiWoPQCZjXhvdkINntwr8lcoVCKsTgnXeRubKIlfnV+eN/HYk6Jb40tbcEAQ==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -9612,8 +9755,9 @@ }, "node_modules/@storybook/core-common/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -9626,16 +9770,18 @@ }, "node_modules/@storybook/core-common/node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/@storybook/core-common/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -9649,9 +9795,10 @@ }, "node_modules/@storybook/core-common/node_modules/esbuild": { "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", "dev": true, "hasInstallScript": true, - "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -9684,23 +9831,23 @@ } }, "node_modules/@storybook/core-common/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "version": "10.4.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.2.tgz", + "integrity": "sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==", "dev": true, - "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -9708,16 +9855,18 @@ }, "node_modules/@storybook/core-common/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@storybook/core-common/node_modules/minimatch": { - "version": "9.0.3", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -9729,19 +9878,19 @@ } }, "node_modules/@storybook/core-common/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, - "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } }, "node_modules/@storybook/core-common/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -9750,9 +9899,9 @@ } }, "node_modules/@storybook/core-events": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.6.3.tgz", - "integrity": "sha512-Vu3JX1mjtR8AX84lyqWsi2s2lhD997jKRWVznI3wx+UpTk8t7TTMLFk2rGYJRjaornhrqwvLYpnmtxRSxW9BOQ==", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.6.20.tgz", + "integrity": "sha512-tlVDuVbDiNkvPDFAu+0ou3xBBYbx9zUURQz4G9fAq0ScgBOs/bpzcRrFb4mLpemUViBAd47tfZKdH4MAX45KVQ==", "dev": true, "dependencies": { "ts-dedent": "^2.0.0" @@ -9763,27 +9912,26 @@ } }, "node_modules/@storybook/core-server": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-7.6.3.tgz", - "integrity": "sha512-IsM24MmiFmtZeyqoijiExpIPkJNBaWQg9ttkkHS6iYwf3yFNBpYVbvuX2OpT7FDdiF3uTl0R8IvfnJR58tHD7w==", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-7.6.20.tgz", + "integrity": "sha512-qC5BdbqqwMLTdCwMKZ1Hbc3+3AaxHYWLiJaXL9e8s8nJw89xV8c8l30QpbJOGvcDmsgY6UTtXYaJ96OsTr7MrA==", "dev": true, - "license": "MIT", "dependencies": { "@aw-web-design/x-default-browser": "1.4.126", "@discoveryjs/json-ext": "^0.5.3", - "@storybook/builder-manager": "7.6.3", - "@storybook/channels": "7.6.3", - "@storybook/core-common": "7.6.3", - "@storybook/core-events": "7.6.3", + "@storybook/builder-manager": "7.6.20", + "@storybook/channels": "7.6.20", + "@storybook/core-common": "7.6.20", + "@storybook/core-events": "7.6.20", "@storybook/csf": "^0.1.2", - "@storybook/csf-tools": "7.6.3", + "@storybook/csf-tools": "7.6.20", "@storybook/docs-mdx": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/manager": "7.6.3", - "@storybook/node-logger": "7.6.3", - "@storybook/preview-api": "7.6.3", - "@storybook/telemetry": "7.6.3", - "@storybook/types": "7.6.3", + "@storybook/manager": "7.6.20", + "@storybook/node-logger": "7.6.20", + "@storybook/preview-api": "7.6.20", + "@storybook/telemetry": "7.6.20", + "@storybook/types": "7.6.20", "@types/detect-port": "^1.3.0", "@types/node": "^18.0.0", "@types/pretty-hrtime": "^1.0.0", @@ -9796,7 +9944,6 @@ "express": "^4.17.3", "fs-extra": "^11.1.0", "globby": "^11.0.2", - "ip": "^2.0.0", "lodash": "^4.17.21", "open": "^8.4.0", "pretty-hrtime": "^1.0.3", @@ -9817,9 +9964,9 @@ } }, "node_modules/@storybook/core-server/node_modules/@types/node": { - "version": "18.19.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.1.tgz", - "integrity": "sha512-mZJ9V11gG5Vp0Ox2oERpeFDl+JvCwK24PGy76vVY/UgBtjwJWc5rYBThFxmbnYOm9UPZNm6wEl/sxHt2SU7x9A==", + "version": "18.19.39", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.39.tgz", + "integrity": "sha512-nPwTRDKUctxw3di5b4TfT3I0sWDiWoPQCZjXhvdkINntwr8lcoVCKsTgnXeRubKIlfnV+eN/HYk6Jb40tbcEAQ==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -9827,8 +9974,9 @@ }, "node_modules/@storybook/core-server/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -9841,8 +9989,9 @@ }, "node_modules/@storybook/core-server/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -9856,52 +10005,18 @@ }, "node_modules/@storybook/core-server/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/@storybook/core-server/node_modules/ip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.1.tgz", - "integrity": "sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==", - "dev": true - }, - "node_modules/@storybook/core-server/node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@storybook/core-server/node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", - "dev": true, - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@storybook/core-server/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -9909,38 +10024,15 @@ "node": ">=8" } }, - "node_modules/@storybook/core-server/node_modules/ws": { - "version": "8.14.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", - "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/@storybook/core-webpack": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-7.6.3.tgz", - "integrity": "sha512-dM1orHixZWF5tKYoyMYBxg7OJ8joR2r5Ckj9SShXd8lutL7so5ljyxfEz/+pYakTNK7ezeQmMIFYZQD3JTr5JA==", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-7.6.20.tgz", + "integrity": "sha512-pGYhKQhMYQ76HPL336L5n7eiJGk1sjWFkA+xRRRmQ9q6VUlqtEPuRHjKBQwrrTb1nA33BQX58Be06OtlbsFkjg==", "dev": true, - "license": "MIT", "dependencies": { - "@storybook/core-common": "7.6.3", - "@storybook/node-logger": "7.6.3", - "@storybook/types": "7.6.3", + "@storybook/core-common": "7.6.20", + "@storybook/node-logger": "7.6.20", + "@storybook/types": "7.6.20", "@types/node": "^18.0.0", "ts-dedent": "^2.0.0" }, @@ -9950,32 +10042,30 @@ } }, "node_modules/@storybook/core-webpack/node_modules/@types/node": { - "version": "18.19.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.1.tgz", - "integrity": "sha512-mZJ9V11gG5Vp0Ox2oERpeFDl+JvCwK24PGy76vVY/UgBtjwJWc5rYBThFxmbnYOm9UPZNm6wEl/sxHt2SU7x9A==", + "version": "18.19.39", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.39.tgz", + "integrity": "sha512-nPwTRDKUctxw3di5b4TfT3I0sWDiWoPQCZjXhvdkINntwr8lcoVCKsTgnXeRubKIlfnV+eN/HYk6Jb40tbcEAQ==", "dev": true, "dependencies": { "undici-types": "~5.26.4" } }, "node_modules/@storybook/csf": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.2.tgz", - "integrity": "sha512-ePrvE/pS1vsKR9Xr+o+YwdqNgHUyXvg+1Xjx0h9LrVx7Zq4zNe06pd63F5EvzTbCbJsHj7GHr9tkiaqm7U8WRA==", + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.9.tgz", + "integrity": "sha512-JlZ6v/iFn+iKohKGpYXnMeNeTiiAMeFoDhYnPLIC8GnyyIWqEI9wJYrOK9i9rxlJ8NZAH/ojGC/u/xVC41qSgQ==", "dev": true, - "license": "MIT", "dependencies": { "type-fest": "^2.19.0" } }, "node_modules/@storybook/csf-plugin": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-7.6.3.tgz", - "integrity": "sha512-8bMYPsWw2tv+fqZ5H436l4x1KLSB6gIcm6snsjyF916yCHG6WcWm+EI6+wNUoySEtrQY2AiwFJqE37wI5OUJFg==", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-7.6.20.tgz", + "integrity": "sha512-dzBzq0dN+8WLDp6NxYS4G7BCe8+vDeDRBRjHmM0xb0uJ6xgQViL8SDplYVSGnk3bXE/1WmtvyRzQyTffBnaj9Q==", "dev": true, - "license": "MIT", "dependencies": { - "@storybook/csf-tools": "7.6.3", + "@storybook/csf-tools": "7.6.20", "unplugin": "^1.3.1" }, "funding": { @@ -9984,28 +10074,30 @@ } }, "node_modules/@storybook/csf-plugin/node_modules/unplugin": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.5.1.tgz", - "integrity": "sha512-0QkvG13z6RD+1L1FoibQqnvTwVBXvS4XSPwAyinVgoOCl2jAgwzdUKmEj05o4Lt8xwQI85Hb6mSyYkcAGwZPew==", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.10.1.tgz", + "integrity": "sha512-d6Mhq8RJeGA8UfKCu54Um4lFA0eSaRa3XxdAJg8tIdxbu1ubW0hBCZUL7yI2uGyYCRndvbK8FLHzqy2XKfeMsg==", "dev": true, - "license": "MIT", "dependencies": { - "acorn": "^8.11.2", - "chokidar": "^3.5.3", + "acorn": "^8.11.3", + "chokidar": "^3.6.0", "webpack-sources": "^3.2.3", - "webpack-virtual-modules": "^0.6.0" + "webpack-virtual-modules": "^0.6.1" + }, + "engines": { + "node": ">=14.0.0" } }, "node_modules/@storybook/csf-plugin/node_modules/webpack-virtual-modules": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.1.tgz", - "integrity": "sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", + "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", "dev": true }, "node_modules/@storybook/csf-tools": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-7.6.3.tgz", - "integrity": "sha512-Zi3pg2pg88/mvBKewkfWhFUR1J4uYpHI5fSjOE+J/FeZObX/DIE7r+wJxZ0UBGyrk0Wy7Jajlb2uSP56Y0i19w==", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-7.6.20.tgz", + "integrity": "sha512-rwcwzCsAYh/m/WYcxBiEtLpIW5OH1ingxNdF/rK9mtGWhJxXRDV8acPkFrF8rtFWIVKoOCXu5USJYmc3f2gdYQ==", "dev": true, "dependencies": { "@babel/generator": "^7.23.0", @@ -10013,7 +10105,7 @@ "@babel/traverse": "^7.23.2", "@babel/types": "^7.23.0", "@storybook/csf": "^0.1.2", - "@storybook/types": "7.6.3", + "@storybook/types": "7.6.20", "fs-extra": "^11.1.0", "recast": "^0.23.1", "ts-dedent": "^2.0.0" @@ -10025,19 +10117,19 @@ }, "node_modules/@storybook/docs-mdx": { "version": "0.1.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@storybook/docs-mdx/-/docs-mdx-0.1.0.tgz", + "integrity": "sha512-JDaBR9lwVY4eSH5W8EGHrhODjygPd6QImRbwjAuJNEnY0Vw4ie3bPkeGfnacB3OBW6u/agqPv2aRlR46JcAQLg==", + "dev": true }, "node_modules/@storybook/docs-tools": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-7.6.3.tgz", - "integrity": "sha512-6MtirRCQIkBeQ3bksPignZgUuFmjWqcFleTEN6vrNEfbCzMlMvuBGfm9tl4sS3n8ATWmKGj87DcJepPOT3FB4A==", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-7.6.20.tgz", + "integrity": "sha512-Bw2CcCKQ5xGLQgtexQsI1EGT6y5epoFzOINi0FSTGJ9Wm738nRp5LH3dLk1GZLlywIXcYwOEThb2pM+pZeRQxQ==", "dev": true, - "license": "MIT", "dependencies": { - "@storybook/core-common": "7.6.3", - "@storybook/preview-api": "7.6.3", - "@storybook/types": "7.6.3", + "@storybook/core-common": "7.6.20", + "@storybook/preview-api": "7.6.20", + "@storybook/types": "7.6.20", "@types/doctrine": "^0.0.3", "assert": "^2.1.0", "doctrine": "^3.0.0", @@ -10050,39 +10142,37 @@ }, "node_modules/@storybook/global": { "version": "5.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@storybook/global/-/global-5.0.0.tgz", + "integrity": "sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==", + "dev": true }, "node_modules/@storybook/manager": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-7.6.3.tgz", - "integrity": "sha512-6eMaogHANCSVV2zLPt4Q7fp8RT+AdlOe6IR0583AuqpepcFzj33iGNYABk2rmXAlkD0WzoLcC4H5mouU0fduLA==", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-7.6.20.tgz", + "integrity": "sha512-0Cf6WN0t7yEG2DR29tN5j+i7H/TH5EfPppg9h9/KiQSoFHk+6KLoy2p5do94acFU+Ro4+zzxvdCGbcYGKuArpg==", "dev": true, - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" } }, "node_modules/@storybook/manager-api": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.6.3.tgz", - "integrity": "sha512-soDH7GZuukkhYRGzlw4jhCm5EzjfkuIAtb37/DFplqxuVbvlyJEVzkMUM2KQO7kq0/8GlWPiZ5mn56wagYyhKQ==", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.6.20.tgz", + "integrity": "sha512-gOB3m8hO3gBs9cBoN57T7jU0wNKDh+hi06gLcyd2awARQlAlywnLnr3s1WH5knih6Aq+OpvGBRVKkGLOkaouCQ==", "dev": true, - "license": "MIT", "dependencies": { - "@storybook/channels": "7.6.3", - "@storybook/client-logger": "7.6.3", - "@storybook/core-events": "7.6.3", + "@storybook/channels": "7.6.20", + "@storybook/client-logger": "7.6.20", + "@storybook/core-events": "7.6.20", "@storybook/csf": "^0.1.2", "@storybook/global": "^5.0.0", - "@storybook/router": "7.6.3", - "@storybook/theming": "7.6.3", - "@storybook/types": "7.6.3", + "@storybook/router": "7.6.20", + "@storybook/theming": "7.6.20", + "@storybook/types": "7.6.20", "dequal": "^2.0.2", "lodash": "^4.17.21", "memoizerific": "^1.11.3", - "semver": "^7.3.7", "store2": "^2.14.2", "telejson": "^7.2.0", "ts-dedent": "^2.0.0" @@ -10094,45 +10184,43 @@ }, "node_modules/@storybook/mdx2-csf": { "version": "1.1.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@storybook/mdx2-csf/-/mdx2-csf-1.1.0.tgz", + "integrity": "sha512-TXJJd5RAKakWx4BtpwvSNdgTDkKM6RkXU8GK34S/LhidQ5Pjz3wcnqb0TxEkfhK/ztbP8nKHqXFwLfa2CYkvQw==", + "dev": true }, "node_modules/@storybook/node-logger": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.6.3.tgz", - "integrity": "sha512-7yL0CMHuh1DhpUAoKCU0a53DvxBpkUom9SX5RaC1G2A9BK/B3XcHtDPAC0uyUwNCKLJMZo9QtmJspvxWjR0LtA==", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.6.20.tgz", + "integrity": "sha512-l2i4qF1bscJkOplNffcRTsgQWYR7J51ewmizj5YrTM8BK6rslWT1RntgVJWB1RgPqvx6VsCz1gyP3yW1oKxvYw==", "dev": true, - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" } }, "node_modules/@storybook/postinstall": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-7.6.3.tgz", - "integrity": "sha512-WpgdpJpY6rionluxjFZLbKiSDjvQJ5cPgufjvBRuXTsnVOsH3JNRWnPdkQkJLT9uTUMoNcyBMxbjYkK3vU6wSg==", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-7.6.20.tgz", + "integrity": "sha512-AN4WPeNma2xC2/K/wP3I/GMbBUyeSGD3+86ZFFJFO1QmE/Zea6E+1aVlTd1iKHQUcNkZ9bZTrqkhPGVYx10pIw==", "dev": true, - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" } }, "node_modules/@storybook/preset-react-webpack": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-7.6.3.tgz", - "integrity": "sha512-rWDzjl4g3+UDG/qKYou7NFU8s+RrgF3PSKtzTPsmqOUF/Edntzr7Z2VYqlK4RD5Wmr2VChtu3EC/frFcqSJQBQ==", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-7.6.20.tgz", + "integrity": "sha512-z5/NF+HI9zN/ONocNyxQwewaG5G/1ChCeWfi5m5E1mwKQxxJbFUgE8oiAFhe90A1R7lAEsGFKd8WxdefY2JvEg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/preset-flow": "^7.22.15", "@babel/preset-react": "^7.22.15", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.11", - "@storybook/core-webpack": "7.6.3", - "@storybook/docs-tools": "7.6.3", - "@storybook/node-logger": "7.6.3", - "@storybook/react": "7.6.3", + "@storybook/core-webpack": "7.6.20", + "@storybook/docs-tools": "7.6.20", + "@storybook/node-logger": "7.6.20", + "@storybook/react": "7.6.20", "@storybook/react-docgen-typescript-plugin": "1.0.6--canary.9.0c3f3b7.0", "@types/node": "^18.0.0", "@types/semver": "^7.3.4", @@ -10166,52 +10254,36 @@ } }, "node_modules/@storybook/preset-react-webpack/node_modules/@types/node": { - "version": "18.19.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.1.tgz", - "integrity": "sha512-mZJ9V11gG5Vp0Ox2oERpeFDl+JvCwK24PGy76vVY/UgBtjwJWc5rYBThFxmbnYOm9UPZNm6wEl/sxHt2SU7x9A==", + "version": "18.19.39", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.39.tgz", + "integrity": "sha512-nPwTRDKUctxw3di5b4TfT3I0sWDiWoPQCZjXhvdkINntwr8lcoVCKsTgnXeRubKIlfnV+eN/HYk6Jb40tbcEAQ==", "dev": true, - "license": "MIT", "dependencies": { "undici-types": "~5.26.4" } }, - "node_modules/@storybook/preset-react-webpack/node_modules/magic-string": { - "version": "0.30.5", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", - "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@storybook/preview": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-7.6.3.tgz", - "integrity": "sha512-obSmKN8arWSHuLbCDM1H0lTVRMvAP/l7vOi6TQtFi6TxBz9MRCJA3Ugc0PZrbDADVZP+cp0ZJA0JQtAm+SqNAA==", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-7.6.20.tgz", + "integrity": "sha512-cxYlZ5uKbCYMHoFpgleZqqGWEnqHrk5m5fT8bYSsDsdQ+X5wPcwI/V+v8dxYAdQcMphZVIlTjo6Dno9WG8qmVA==", "dev": true, - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" } }, "node_modules/@storybook/preview-api": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.6.3.tgz", - "integrity": "sha512-uPaK7yLE1P++F+IOb/1j9pgdCwfMYZrUPHogF/Mf9r4cfEjDCcIeKgGMcsbU1KnkzNQQGPh8JRzRr/iYnLjswg==", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.6.20.tgz", + "integrity": "sha512-3ic2m9LDZEPwZk02wIhNc3n3rNvbi7VDKn52hDXfAxnL5EYm7yDICAkaWcVaTfblru2zn0EDJt7ROpthscTW5w==", "dev": true, - "license": "MIT", "dependencies": { - "@storybook/channels": "7.6.3", - "@storybook/client-logger": "7.6.3", - "@storybook/core-events": "7.6.3", + "@storybook/channels": "7.6.20", + "@storybook/client-logger": "7.6.20", + "@storybook/core-events": "7.6.20", "@storybook/csf": "^0.1.2", "@storybook/global": "^5.0.0", - "@storybook/types": "7.6.3", + "@storybook/types": "7.6.20", "@types/qs": "^6.9.5", "dequal": "^2.0.2", "lodash": "^4.17.21", @@ -10227,19 +10299,18 @@ } }, "node_modules/@storybook/react": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-7.6.3.tgz", - "integrity": "sha512-W+530cC0BAU+yBc7NzSXYWR3e8Lo5qMsmFJjWYK7zGW/YZGhSG3mjhF9pDzNM+cMtHvUS6qf5PJPQM8jePpPhg==", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-7.6.20.tgz", + "integrity": "sha512-i5tKNgUbTNwlqBWGwPveDhh9ktlS0wGtd97A1ZgKZc3vckLizunlAFc7PRC1O/CMq5PTyxbuUb4RvRD2jWKwDA==", "dev": true, - "license": "MIT", "dependencies": { - "@storybook/client-logger": "7.6.3", - "@storybook/core-client": "7.6.3", - "@storybook/docs-tools": "7.6.3", + "@storybook/client-logger": "7.6.20", + "@storybook/core-client": "7.6.20", + "@storybook/docs-tools": "7.6.20", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.6.3", - "@storybook/react-dom-shim": "7.6.3", - "@storybook/types": "7.6.3", + "@storybook/preview-api": "7.6.20", + "@storybook/react-dom-shim": "7.6.20", + "@storybook/types": "7.6.20", "@types/escodegen": "^0.0.6", "@types/estree": "^0.0.51", "@types/node": "^18.0.0", @@ -10275,8 +10346,9 @@ }, "node_modules/@storybook/react-docgen-typescript-plugin": { "version": "1.0.6--canary.9.0c3f3b7.0", + "resolved": "https://registry.npmjs.org/@storybook/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-1.0.6--canary.9.0c3f3b7.0.tgz", + "integrity": "sha512-KUqXC3oa9JuQ0kZJLBhVdS4lOneKTOopnNBK4tUAgoxWQ3u/IjzdueZjFr7gyBrXMoU6duutk3RQR9u8ZpYJ4Q==", "dev": true, - "license": "MIT", "dependencies": { "debug": "^4.1.1", "endent": "^2.0.1", @@ -10292,11 +10364,10 @@ } }, "node_modules/@storybook/react-dom-shim": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-7.6.3.tgz", - "integrity": "sha512-UtaEaTQB27aBsAmn5IfAYkX2xl4wWWXkoAO/jUtx86FQ/r85FG0zxh/rac6IgzjYUqzjJtjIeLdeciG/48hMMA==", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-7.6.20.tgz", + "integrity": "sha512-SRvPDr9VWcS24ByQOVmbfZ655y5LvjXRlsF1I6Pr9YZybLfYbu3L5IicfEHT4A8lMdghzgbPFVQaJez46DTrkg==", "dev": true, - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" @@ -10307,15 +10378,14 @@ } }, "node_modules/@storybook/react-webpack5": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-7.6.3.tgz", - "integrity": "sha512-5427xYUQhCL2CUkFuYmq6Sz9R3PXBRspzZ/BUW3UII3hjrtSPJkwxkrV+rnisaokrF7jXCYtzkwV2VATpJv8Cw==", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-7.6.20.tgz", + "integrity": "sha512-xaLtadKczfUdpyPMk/e49qGnRpjMDtTwFq4RqkS7q+Z+EO72kTCUPGtK3jJXyv70pp/qbzM5OfjFLjXjMezvYw==", "dev": true, - "license": "MIT", "dependencies": { - "@storybook/builder-webpack5": "7.6.3", - "@storybook/preset-react-webpack": "7.6.3", - "@storybook/react": "7.6.3", + "@storybook/builder-webpack5": "7.6.20", + "@storybook/preset-react-webpack": "7.6.20", + "@storybook/react": "7.6.20", "@types/node": "^18.0.0" }, "engines": { @@ -10341,18 +10411,18 @@ } }, "node_modules/@storybook/react-webpack5/node_modules/@types/node": { - "version": "18.19.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.1.tgz", - "integrity": "sha512-mZJ9V11gG5Vp0Ox2oERpeFDl+JvCwK24PGy76vVY/UgBtjwJWc5rYBThFxmbnYOm9UPZNm6wEl/sxHt2SU7x9A==", + "version": "18.19.39", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.39.tgz", + "integrity": "sha512-nPwTRDKUctxw3di5b4TfT3I0sWDiWoPQCZjXhvdkINntwr8lcoVCKsTgnXeRubKIlfnV+eN/HYk6Jb40tbcEAQ==", "dev": true, "dependencies": { "undici-types": "~5.26.4" } }, "node_modules/@storybook/react/node_modules/@types/node": { - "version": "18.19.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.1.tgz", - "integrity": "sha512-mZJ9V11gG5Vp0Ox2oERpeFDl+JvCwK24PGy76vVY/UgBtjwJWc5rYBThFxmbnYOm9UPZNm6wEl/sxHt2SU7x9A==", + "version": "18.19.39", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.39.tgz", + "integrity": "sha512-nPwTRDKUctxw3di5b4TfT3I0sWDiWoPQCZjXhvdkINntwr8lcoVCKsTgnXeRubKIlfnV+eN/HYk6Jb40tbcEAQ==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -10371,13 +10441,12 @@ } }, "node_modules/@storybook/router": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-7.6.3.tgz", - "integrity": "sha512-NZfhJqsXYca9mZCL/LGx6FmZDbrxX2S4ImW7Tqdtcc/sSlZ0BpCDkNUTesCA287cmoKMhXZRh/+bU+C2h2a+bw==", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-7.6.20.tgz", + "integrity": "sha512-mCzsWe6GrH47Xb1++foL98Zdek7uM5GhaSlrI7blWVohGa0qIUYbfJngqR4ZsrXmJeeEvqowobh+jlxg3IJh+w==", "dev": true, - "license": "MIT", "dependencies": { - "@storybook/client-logger": "7.6.3", + "@storybook/client-logger": "7.6.20", "memoizerific": "^1.11.3", "qs": "^6.10.0" }, @@ -10387,15 +10456,14 @@ } }, "node_modules/@storybook/telemetry": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-7.6.3.tgz", - "integrity": "sha512-NDCZWhVIUI3M6Lq4M/HPOvZqDXqANDNbI3kyHr4pFGoVaCUXuDPokL9wR+CZcMvATkJ1gHrfLPBdcRq6Biw3Iw==", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-7.6.20.tgz", + "integrity": "sha512-dmAOCWmOscYN6aMbhCMmszQjoycg7tUPRVy2kTaWg6qX10wtMrvEtBV29W4eMvqdsoRj5kcvoNbzRdYcWBUOHQ==", "dev": true, - "license": "MIT", "dependencies": { - "@storybook/client-logger": "7.6.3", - "@storybook/core-common": "7.6.3", - "@storybook/csf-tools": "7.6.3", + "@storybook/client-logger": "7.6.20", + "@storybook/core-common": "7.6.20", + "@storybook/csf-tools": "7.6.20", "chalk": "^4.1.0", "detect-package-manager": "^2.0.1", "fetch-retry": "^5.0.2", @@ -10409,8 +10477,9 @@ }, "node_modules/@storybook/telemetry/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -10423,8 +10492,9 @@ }, "node_modules/@storybook/telemetry/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -10438,16 +10508,18 @@ }, "node_modules/@storybook/telemetry/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@storybook/telemetry/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -10459,23 +10531,102 @@ "version": "0.2.2", "resolved": "https://registry.npmjs.org/@storybook/testing-library/-/testing-library-0.2.2.tgz", "integrity": "sha512-L8sXFJUHmrlyU2BsWWZGuAjv39Jl1uAqUHdxmN42JY15M4+XCMjGlArdCCjDe1wpTSW6USYISA9axjZojgtvnw==", + "deprecated": "In Storybook 8, this package functionality has been integrated to a new package called @storybook/test, which uses Vitest APIs for an improved experience. When upgrading to Storybook 8 with 'npx storybook@latest upgrade', you will get prompted and will get an automigration for the new package. Please migrate when you can.", "dev": true, - "license": "MIT", "dependencies": { "@testing-library/dom": "^9.0.0", "@testing-library/user-event": "^14.4.0", "ts-dedent": "^2.2.0" } }, - "node_modules/@storybook/theming": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.6.3.tgz", - "integrity": "sha512-9ToNU2LM6a2kVBjOXitXEeEOuMurVLhn+uaZO1dJjv8NGnJVYiLwNPwrLsImiUD8/XXNuil972aanBR6+Aj9jw==", + "node_modules/@storybook/testing-library/node_modules/@testing-library/dom": { + "version": "9.3.4", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.4.tgz", + "integrity": "sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.1.3", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@storybook/testing-library/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@storybook/testing-library/node_modules/aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "dev": true, + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "node_modules/@storybook/testing-library/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@storybook/testing-library/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@storybook/testing-library/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@storybook/theming": { + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.6.20.tgz", + "integrity": "sha512-iT1pXHkSkd35JsCte6Qbanmprx5flkqtSHC6Gi6Umqoxlg9IjiLPmpHbaIXzoC06DSW93hPj5Zbi1lPlTvRC7Q==", "dev": true, - "license": "MIT", "dependencies": { "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@storybook/client-logger": "7.6.3", + "@storybook/client-logger": "7.6.20", "@storybook/global": "^5.0.0", "memoizerific": "^1.11.3" }, @@ -10489,13 +10640,12 @@ } }, "node_modules/@storybook/types": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.6.3.tgz", - "integrity": "sha512-vj9Jzg5eR52l8O9512QywbQpNdo67Z6BQWR8QoZRcG+/Bhzt08YI8IZMPQLFMKzcmWDPK0blQ4GfyKDYplMjPA==", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.6.20.tgz", + "integrity": "sha512-GncdY3x0LpbhmUAAJwXYtJDUQEwfF175gsjH0/fxPkxPoV7Sef9TM41jQLJW/5+6TnZoCZP/+aJZTJtq3ni23Q==", "dev": true, - "license": "MIT", "dependencies": { - "@storybook/channels": "7.6.3", + "@storybook/channels": "7.6.20", "@types/babel__core": "^7.0.0", "@types/express": "^4.7.0", "file-system-cache": "2.3.0" @@ -10763,14 +10913,14 @@ } }, "node_modules/@swc/core": { - "version": "1.3.100", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.100.tgz", - "integrity": "sha512-7dKgTyxJjlrMwFZYb1auj3Xq0D8ZBe+5oeIgfMlRU05doXZypYJe0LAk0yjj3WdbwYzpF+T1PLxwTWizI0pckw==", + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.6.5.tgz", + "integrity": "sha512-tyVvUK/HDOUUsK6/GmWvnqUtD9oDpPUA4f7f7JCOV8hXxtfjMtAZeBKf93yrB1XZet69TDR7EN0hFC6i4MF0Ig==", "dev": true, "hasInstallScript": true, "dependencies": { - "@swc/counter": "^0.1.1", - "@swc/types": "^0.1.5" + "@swc/counter": "^0.1.3", + "@swc/types": "^0.1.9" }, "engines": { "node": ">=10" @@ -10780,18 +10930,19 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.3.100", - "@swc/core-darwin-x64": "1.3.100", - "@swc/core-linux-arm64-gnu": "1.3.100", - "@swc/core-linux-arm64-musl": "1.3.100", - "@swc/core-linux-x64-gnu": "1.3.100", - "@swc/core-linux-x64-musl": "1.3.100", - "@swc/core-win32-arm64-msvc": "1.3.100", - "@swc/core-win32-ia32-msvc": "1.3.100", - "@swc/core-win32-x64-msvc": "1.3.100" + "@swc/core-darwin-arm64": "1.6.5", + "@swc/core-darwin-x64": "1.6.5", + "@swc/core-linux-arm-gnueabihf": "1.6.5", + "@swc/core-linux-arm64-gnu": "1.6.5", + "@swc/core-linux-arm64-musl": "1.6.5", + "@swc/core-linux-x64-gnu": "1.6.5", + "@swc/core-linux-x64-musl": "1.6.5", + "@swc/core-win32-arm64-msvc": "1.6.5", + "@swc/core-win32-ia32-msvc": "1.6.5", + "@swc/core-win32-x64-msvc": "1.6.5" }, "peerDependencies": { - "@swc/helpers": "^0.5.0" + "@swc/helpers": "*" }, "peerDependenciesMeta": { "@swc/helpers": { @@ -10800,14 +10951,13 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.3.100", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.100.tgz", - "integrity": "sha512-XVWFsKe6ei+SsDbwmsuRkYck1SXRpO60Hioa4hoLwR8fxbA9eVp6enZtMxzVVMBi8ej5seZ4HZQeAWepbukiBw==", + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.6.5.tgz", + "integrity": "sha512-RGQhMdni2v1/ANQ/2K+F+QYdzaucekYBewZcX1ogqJ8G5sbPaBdYdDN1qQ4kHLCIkPtGP6qC7c71qPEqL2RidQ==", "cpu": [ "arm64" ], "dev": true, - "license": "Apache-2.0 AND MIT", "optional": true, "os": [ "darwin" @@ -10817,9 +10967,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.3.100", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.100.tgz", - "integrity": "sha512-KF/MXrnH1nakm1wbt4XV8FS7kvqD9TGmVxeJ0U4bbvxXMvzeYUurzg3AJUTXYmXDhH/VXOYJE5N5RkwZZPs5iA==", + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.6.5.tgz", + "integrity": "sha512-/pSN0/Jtcbbb9+ovS9rKxR3qertpFAM3OEJr/+Dh/8yy7jK5G5EFPIrfsw/7Q5987ERPIJIH6BspK2CBB2tgcg==", "cpu": [ "x64" ], @@ -10832,10 +10982,26 @@ "node": ">=10" } }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.6.5.tgz", + "integrity": "sha512-B0g/dROCE747RRegs/jPHuKJgwXLracDhnqQa80kFdgWEMjlcb7OMCgs5OX86yJGRS4qcYbiMGD0Pp7Kbqn3yw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.3.100", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.100.tgz", - "integrity": "sha512-p8hikNnAEJrw5vHCtKiFT4hdlQxk1V7vqPmvUDgL/qe2menQDK/i12tbz7/3BEQ4UqUPnvwpmVn2d19RdEMNxw==", + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.6.5.tgz", + "integrity": "sha512-W8meapgXTq8AOtSvDG4yKR8ant2WWD++yOjgzAleB5VAC+oC+aa8YJROGxj8HepurU8kurqzcialwoMeq5SZZQ==", "cpu": [ "arm64" ], @@ -10849,9 +11015,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.3.100", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.100.tgz", - "integrity": "sha512-BWx/0EeY89WC4q3AaIaBSGfQxkYxIlS3mX19dwy2FWJs/O+fMvF9oLk/CyJPOZzbp+1DjGeeoGFuDYpiNO91JA==", + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.6.5.tgz", + "integrity": "sha512-jyCKqoX50Fg8rJUQqh4u5PqnE7nqYKXHjVH2WcYr114/MU21zlsI+YL6aOQU1XP8bJQ2gPQ1rnlnGJdEHiKS/w==", "cpu": [ "arm64" ], @@ -10865,9 +11031,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.3.100", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.100.tgz", - "integrity": "sha512-XUdGu3dxAkjsahLYnm8WijPfKebo+jHgHphDxaW0ovI6sTdmEGFDew7QzKZRlbYL2jRkUuuKuDGvD6lO5frmhA==", + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.6.5.tgz", + "integrity": "sha512-G6HmUn/RRIlXC0YYFfBz2qh6OZkHS/KUPkhoG4X9ADcgWXXjOFh6JrefwsYj8VBAJEnr5iewzjNfj+nztwHaeA==", "cpu": [ "x64" ], @@ -10881,9 +11047,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.3.100", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.100.tgz", - "integrity": "sha512-PhoXKf+f0OaNW/GCuXjJ0/KfK9EJX7z2gko+7nVnEA0p3aaPtbP6cq1Ubbl6CMoPL+Ci3gZ7nYumDqXNc3CtLQ==", + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.6.5.tgz", + "integrity": "sha512-AQpBjBnelQDSbeTJA50AXdS6+CP66LsXIMNTwhPSgUfE7Bx1ggZV11Fsi4Q5SGcs6a8Qw1cuYKN57ZfZC5QOuA==", "cpu": [ "x64" ], @@ -10897,9 +11063,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.3.100", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.100.tgz", - "integrity": "sha512-PwLADZN6F9cXn4Jw52FeP/MCLVHm8vwouZZSOoOScDtihjY495SSjdPnlosMaRSR4wJQssGwiD/4MbpgQPqbAw==", + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.6.5.tgz", + "integrity": "sha512-MZTWM8kUwS30pVrtbzSGEXtek46aXNb/mT9D6rsS7NvOuv2w+qZhjR1rzf4LNbbn5f8VnR4Nac1WIOYZmfC5ng==", "cpu": [ "arm64" ], @@ -10913,9 +11079,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.3.100", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.100.tgz", - "integrity": "sha512-0f6nicKSLlDKlyPRl2JEmkpBV4aeDfRQg6n8mPqgL7bliZIcDahG0ej+HxgNjZfS3e0yjDxsNRa6sAqWU2Z60A==", + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.6.5.tgz", + "integrity": "sha512-WZdu4gISAr3yOm1fVwKhhk6+MrP7kVX0KMP7+ZQFTN5zXQEiDSDunEJKVgjMVj3vlR+6mnAqa/L0V9Qa8+zKlQ==", "cpu": [ "ia32" ], @@ -10929,9 +11095,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.3.100", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.100.tgz", - "integrity": "sha512-b7J0rPoMkRTa3XyUGt8PwCaIBuYWsL2DqbirrQKRESzgCvif5iNpqaM6kjIjI/5y5q1Ycv564CB51YDpiS8EtQ==", + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.6.5.tgz", + "integrity": "sha512-ezXgucnMTzlFIxQZw7ls/5r2hseFaRoDL04cuXUOs97E8r+nJSmFsRQm/ygH5jBeXNo59nyZCalrjJAjwfgACA==", "cpu": [ "x64" ], @@ -10945,40 +11111,43 @@ } }, "node_modules/@swc/counter": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.2.tgz", - "integrity": "sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", "dev": true }, "node_modules/@swc/helpers": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.3.tgz", - "integrity": "sha512-FaruWX6KdudYloq1AHD/4nU+UsMTdNE8CKyrseXWEcgjDAbvkwJg2QGPAnfIJLIWsjZOSPLOAykK6fuYp4vp4A==", + "version": "0.5.11", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.11.tgz", + "integrity": "sha512-YNlnKRWF2sVojTpIyzwou9XoTNbzbzONwRhOoniEioF1AtaitTvVZblaQRrAzChWQ1bLYyYSWzM18y4WwgzJ+A==", "dependencies": { "tslib": "^2.4.0" } }, "node_modules/@swc/types": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.5.tgz", - "integrity": "sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==", - "dev": true + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.9.tgz", + "integrity": "sha512-qKnCno++jzcJ4lM4NTfYifm1EFSCeIfKiAHAfkENZAV5Kl9PjJIyd2yeeVv6c/2CckuLyv2NmRC5pv6pm2WQBg==", + "dev": true, + "dependencies": { + "@swc/counter": "^0.1.3" + } }, "node_modules/@tabler/icons": { - "version": "2.42.0", - "resolved": "https://registry.npmjs.org/@tabler/icons/-/icons-2.42.0.tgz", - "integrity": "sha512-ynV4iaC1c1mUhuAr9HRaoq8KrWYmZ0bJEpOh7qTBE+OfdDsdvQUe+0S7FW+DHkJ4RuxQMdO8djrZK7HrUw9YMA==", + "version": "2.47.0", + "resolved": "https://registry.npmjs.org/@tabler/icons/-/icons-2.47.0.tgz", + "integrity": "sha512-4w5evLh+7FUUiA1GucvGj2ReX2TvOjEr4ejXdwL/bsjoSkof6r1gQmzqI+VHrE2CpJpB3al7bCTulOkFa/RcyA==", "funding": { "type": "github", "url": "https://github.com/sponsors/codecalm" } }, "node_modules/@tabler/icons-react": { - "version": "2.42.0", - "resolved": "https://registry.npmjs.org/@tabler/icons-react/-/icons-react-2.42.0.tgz", - "integrity": "sha512-2APr++u24P2mx9vJymJQJORRpu2Qej0rPrtAvgXu8YomHjLXVP+O1VtToSGyoSPH1ysA569XbxrwzOau9Ne12A==", + "version": "2.47.0", + "resolved": "https://registry.npmjs.org/@tabler/icons-react/-/icons-react-2.47.0.tgz", + "integrity": "sha512-iqly2FvCF/qUbgmvS8E40rVeYY7laltc5GUjRxQj59DuX0x/6CpKHTXt86YlI2whg4czvd/c8Ce8YR08uEku0g==", "dependencies": { - "@tabler/icons": "2.42.0", + "@tabler/icons": "2.47.0", "prop-types": "^15.7.2" }, "funding": { @@ -10990,22 +11159,23 @@ } }, "node_modules/@testing-library/dom": { - "version": "9.3.3", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.3.tgz", - "integrity": "sha512-fB0R+fa3AUqbLHWyxXa2kGVtf1Fe1ZZFr0Zp6AIbIAzXb2mKbEXl+PCQNUOaq5lbTab5tfctfXRNsWXxa2f7Aw==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.2.0.tgz", + "integrity": "sha512-CytIvb6tVOADRngTHGWNxH8LPgO/3hi/BdCEHOf7Qd2GvZVClhVP0Wo/QHzWhpki49Bk0b4VT6xpt3fx8HTSIw==", "dev": true, + "peer": true, "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", "@types/aria-query": "^5.0.1", - "aria-query": "5.1.3", + "aria-query": "5.3.0", "chalk": "^4.1.0", "dom-accessibility-api": "^0.5.9", "lz-string": "^1.5.0", "pretty-format": "^27.0.2" }, "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/@testing-library/dom/node_modules/ansi-styles": { @@ -11013,6 +11183,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -11028,6 +11199,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -11044,6 +11216,7 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "peer": true, "engines": { "node": ">=8" } @@ -11053,6 +11226,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -11183,6 +11357,15 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/@testing-library/react/node_modules/aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "dev": true, + "dependencies": { + "deep-equal": "^2.0.5" + } + }, "node_modules/@testing-library/react/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -11221,9 +11404,9 @@ } }, "node_modules/@testing-library/user-event": { - "version": "14.5.1", - "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.1.tgz", - "integrity": "sha512-UCcUKrUYGj7ClomOo2SpNVvx4/fkd/2BbIHDCle8A0ax+P3bU7yJwDBDrS6ZwdTMARWTGODX1hEsCcO+7beJjg==", + "version": "14.5.2", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.2.tgz", + "integrity": "sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==", "dev": true, "engines": { "node": ">=12", @@ -11234,13 +11417,13 @@ } }, "node_modules/@textea/json-viewer": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/@textea/json-viewer/-/json-viewer-3.3.2.tgz", - "integrity": "sha512-YE2n8dkQguLdbxYr3lLAycfxC6zqPVq//h4YPNyA4BsXJG792jPAoUYWXjV9KyHL/YG3qUJx1aur04HTslW6Cg==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@textea/json-viewer/-/json-viewer-3.4.1.tgz", + "integrity": "sha512-8cLptaqOZVw025/iF5Cb+4nX2jjLRlGfKxGd8D6Gm9pOzB/ZDgih+xl9zoWcVXwVlRj85uLae5oorKV8Yc+vog==", "dependencies": { - "clsx": "^2.0.0", + "clsx": "^2.1.0", "copy-to-clipboard": "^3.3.3", - "zustand": "^4.4.7" + "zustand": "^4.5.2" }, "peerDependencies": { "@emotion/react": "^11", @@ -11250,14 +11433,6 @@ "react-dom": "^17 || ^18" } }, - "node_modules/@textea/json-viewer/node_modules/clsx": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz", - "integrity": "sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==", - "engines": { - "node": ">=6" - } - }, "node_modules/@tooljet/plugins": { "resolved": "../plugins", "link": true @@ -11360,9 +11535,9 @@ } }, "node_modules/@types/babel__generator": { - "version": "7.6.7", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.7.tgz", - "integrity": "sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==", + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", "dev": true, "dependencies": { "@babel/types": "^7.0.0" @@ -11379,9 +11554,9 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.20.4", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.4.tgz", - "integrity": "sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==", + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", "dev": true, "dependencies": { "@babel/types": "^7.20.7" @@ -11435,7 +11610,6 @@ "resolved": "https://registry.npmjs.org/@types/cross-spawn/-/cross-spawn-6.0.6.tgz", "integrity": "sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*" } @@ -11456,8 +11630,9 @@ }, "node_modules/@types/doctrine": { "version": "0.0.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/doctrine/-/doctrine-0.0.3.tgz", + "integrity": "sha512-w5jZ0ee+HaPOaX25X2/2oGR/7rgAQSYII7X7pp0m9KgBfMP7uKfMfTvcpl5Dj+eDBbpxKGiqE+flqDr6XTd2RA==", + "dev": true }, "node_modules/@types/ejs": { "version": "3.1.5", @@ -11466,20 +11641,21 @@ "dev": true }, "node_modules/@types/emscripten": { - "version": "1.39.10", - "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.10.tgz", - "integrity": "sha512-TB/6hBkYQJxsZHSqyeuO1Jt0AB/bW6G7rHt9g7lML7SOF6lbgcHvw/Lr+69iqN0qxgXLhWKScAon73JNnptuDw==", + "version": "1.39.13", + "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.13.tgz", + "integrity": "sha512-cFq+fO/isvhvmuP/+Sl4K4jtU6E23DoivtbO4r50e3odaxAiVdbfSYRDdJ4gCdxx+3aRjhphS5ZMwIH4hFy/Cw==", "dev": true }, "node_modules/@types/escodegen": { "version": "0.0.6", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/escodegen/-/escodegen-0.0.6.tgz", + "integrity": "sha512-AjwI4MvWx3HAOaZqYsjKWyEObT9lcVV0Y0V8nXo6cXzN8ZiMxVhf6F3d/UNvXVGKrEzL/Dluc5p+y9GkzlTWig==", + "dev": true }, "node_modules/@types/eslint": { - "version": "8.44.8", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.8.tgz", - "integrity": "sha512-4K8GavROwhrYl2QXDXm0Rv9epkA8GBFu0EI+XrrnnuCl7u8CWBRusX7fXJfanhZTDWSAL24gDI/UqXyUM0Injw==", + "version": "8.56.10", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", + "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -11500,9 +11676,9 @@ "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" }, "node_modules/@types/estree-jsx": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.4.tgz", - "integrity": "sha512-5idy3hvI9lAMqsyilBM+N+boaCf1MgoefbDxN6KEO5aK17TOHwFAYT9sjxzeKAiIWRUBgLxmZ9mPcnzZXtTcRQ==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", "dependencies": { "@types/estree": "*" } @@ -11520,9 +11696,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.41", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.41.tgz", - "integrity": "sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==", + "version": "4.19.5", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz", + "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==", "dev": true, "dependencies": { "@types/node": "*", @@ -11533,13 +11709,14 @@ }, "node_modules/@types/find-cache-dir": { "version": "3.2.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/find-cache-dir/-/find-cache-dir-3.2.1.tgz", + "integrity": "sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw==", + "dev": true }, "node_modules/@types/google.maps": { - "version": "3.53.5", - "resolved": "https://registry.npmjs.org/@types/google.maps/-/google.maps-3.53.5.tgz", - "integrity": "sha512-HoRq4Te8J6krH7hj+TfdYepqegoKZCj3kkaK5gf+ySFSHLvyqYkDvkrtbcVJXQ6QBphQ0h1TF7p4J6sOh4r/zg==" + "version": "3.55.2", + "resolved": "https://registry.npmjs.org/@types/google.maps/-/google.maps-3.55.2.tgz", + "integrity": "sha512-JcTwzkxskR8DN/nnX96Pie3gGN3WHiPpuxzuQ9z3516o1bB243d8w8DHUJ8BohuzoT1o3HUFta2ns/mkZC8KRw==" }, "node_modules/@types/graceful-fs": { "version": "4.1.9", @@ -11610,9 +11787,9 @@ } }, "node_modules/@types/jest": { - "version": "29.5.10", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.10.tgz", - "integrity": "sha512-tE4yxKEphEyxj9s4inideLHktW/x6DwesIwWZ9NN1FKf9zbJYsnhBoA9vrHA/IuIOKwPa5PcFBNV4lpMIOEzyQ==", + "version": "29.5.12", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz", + "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==", "dev": true, "dependencies": { "expect": "^29.0.0", @@ -11645,12 +11822,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@types/jest/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -11663,22 +11834,22 @@ "dev": true }, "node_modules/@types/lodash": { - "version": "4.14.202", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz", - "integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==" + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-MBIOHVZqVqgfro1euRDWX7OO0fBVUUMrN6Pwm8LQsz8cWhEpihlvR70ENj3f40j58TNxZaWv2ndSkInykNBBJw==" }, "node_modules/@types/mdast": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", - "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", "dependencies": { "@types/unist": "*" } }, "node_modules/@types/mdx": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.10.tgz", - "integrity": "sha512-Rllzc5KHk0Al5/WANwgSPl1/CwjqCy+AZrGd78zuK+jO9aDM6ffblZ+zIjgPNAaEBmlO0RYDvLNh7wD0zKVgEg==", + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", + "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==", "dev": true }, "node_modules/@types/mime": { @@ -11705,30 +11876,27 @@ "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" }, "node_modules/@types/node": { - "version": "20.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.2.tgz", - "integrity": "sha512-37MXfxkb0vuIlRKHNxwCkb60PNBpR94u4efQuN4JgIAm66zfCDXGSAFCef9XUWFovX2R1ok6Z7MHhtdVXXkkIw==", + "version": "20.14.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.8.tgz", + "integrity": "sha512-DO+2/jZinXfROG7j7WKFn/3C6nFwxy2lLpgLjEXJz+0XKphZlTLJ14mo8Vfg8X5BWN6XjyESXq+LcYdT7tR3bA==", "dependencies": { "undici-types": "~5.26.4" } }, "node_modules/@types/node-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-bQVlnMLFJ2d35DkPNjEPmd9ueO/rh5EiaZt2bhqiSarPjZIuIV6bPQVqcrEyvNo+AfTrRGVazle1tl597w3gfA==", + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.11.tgz", + "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*", "form-data": "^4.0.0" } }, "node_modules/@types/node-forge": { - "version": "1.3.10", - "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.10.tgz", - "integrity": "sha512-y6PJDYN4xYBxwd22l+OVH35N+1fCYWiuC3aiP2SlXVE6Lo7SS+rSx9r89hLxrP4pn6n1lBGhHJ12pj3F3Mpttw==", - "dev": true, - "license": "MIT", + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", "dependencies": { "@types/node": "*" } @@ -11751,14 +11919,14 @@ "dev": true }, "node_modules/@types/prop-types": { - "version": "15.7.11", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", - "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==" + "version": "15.7.12", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==" }, "node_modules/@types/qs": { - "version": "6.9.10", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.10.tgz", - "integrity": "sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw==", + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", "dev": true }, "node_modules/@types/raf": { @@ -11774,19 +11942,18 @@ "dev": true }, "node_modules/@types/react": { - "version": "18.2.41", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.41.tgz", - "integrity": "sha512-CwOGr/PiLiNBxEBqpJ7fO3kocP/2SSuC9fpH5K7tusrg4xPSRT/193rzolYwQnTN02We/ATXKnb6GqA5w4fRxw==", + "version": "18.3.3", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz", + "integrity": "sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==", "dependencies": { "@types/prop-types": "*", - "@types/scheduler": "*", "csstype": "^3.0.2" } }, "node_modules/@types/react-dom": { - "version": "18.2.17", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.17.tgz", - "integrity": "sha512-rvrT/M7Df5eykWFxn6MYt5Pem/Dbyc1N8Y0S9Mrkw2WFCRiqUgw9P7ul2NpwsXCSM1DVdENzdG9J5SreqfAIWg==", + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", + "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", "devOptional": true, "dependencies": { "@types/react": "*" @@ -11802,9 +11969,9 @@ } }, "node_modules/@types/react-redux": { - "version": "7.1.31", - "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.31.tgz", - "integrity": "sha512-merF9AH72krBUekQY6uObXnMsEo1xTeZy9NONNRnqSwvwVe3HtLeRvNIPaKmPDIOWPsSFE51rc2WGpPMqmuCWg==", + "version": "7.1.33", + "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.33.tgz", + "integrity": "sha512-NF8m5AjWCkert+fosDsN3hAlHzpjSiXlVy9EgQEmLoBhaNXbmyeGs/aj5dQzKuF+/q+S7JQagorGDW8pJ28Hmg==", "dependencies": { "@types/hoist-non-react-statics": "^3.3.0", "@types/react": "*", @@ -11832,15 +11999,10 @@ "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true }, - "node_modules/@types/scheduler": { - "version": "0.16.8", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", - "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==" - }, "node_modules/@types/semver": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", - "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", "dev": true }, "node_modules/@types/send": { @@ -11863,14 +12025,14 @@ } }, "node_modules/@types/serve-static": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", - "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", "dev": true, "dependencies": { "@types/http-errors": "*", - "@types/mime": "*", - "@types/node": "*" + "@types/node": "*", + "@types/send": "*" } }, "node_modules/@types/sockjs": { @@ -11897,14 +12059,14 @@ } }, "node_modules/@types/unist": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", - "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" }, "node_modules/@types/uuid": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.7.tgz", - "integrity": "sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g==", + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", + "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==", "dev": true }, "node_modules/@types/warning": { @@ -11913,9 +12075,9 @@ "integrity": "sha512-D1XC7WK8K+zZEveUPY+cf4+kgauk8N4eHr/XIHXGlGYkHLud6hK9lYfZk1ry1TNh798cZUCgb6MqGEG8DkJt6Q==" }, "node_modules/@types/webxr": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/@types/webxr/-/webxr-0.5.10.tgz", - "integrity": "sha512-n3u5sqXQJhf1CS68mw3Wf16FQ4cRPNBBwdYLFzq3UddiADOim1Pn3Y6PBdDilz1vOJF3ybLxJ8ZEDlLIzrOQZg==", + "version": "0.5.17", + "resolved": "https://registry.npmjs.org/@types/webxr/-/webxr-0.5.17.tgz", + "integrity": "sha512-JYcclaQIlisHRXM9dMF7SeVvQ54kcYc7QK1eKCExCTLKWnZDxP4cp/rXH4Uoa1j5+5oQJ0Cc2sZC/PWiiG4q2g==", "peer": true }, "node_modules/@types/ws": { @@ -12053,9 +12215,9 @@ } }, "node_modules/@uiw/codemirror-extensions-basic-setup": { - "version": "4.21.21", - "resolved": "https://registry.npmjs.org/@uiw/codemirror-extensions-basic-setup/-/codemirror-extensions-basic-setup-4.21.21.tgz", - "integrity": "sha512-+0i9dPrRSa8Mf0CvyrMvnAhajnqwsP3IMRRlaHDRgsSGL8igc4z7MhvUPn+7cWFAAqWzQRhMdMSWzo6/TEa3EA==", + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/@uiw/codemirror-extensions-basic-setup/-/codemirror-extensions-basic-setup-4.22.2.tgz", + "integrity": "sha512-zcHGkldLFN3cGoI5XdOGAkeW24yaAgrDEYoyPyWHODmPiNwybQQoZGnH3qUdzZwUaXtAcLWoAeOPzfNRW2yGww==", "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/commands": "^6.0.0", @@ -12079,31 +12241,31 @@ } }, "node_modules/@uiw/codemirror-theme-github": { - "version": "4.21.21", - "resolved": "https://registry.npmjs.org/@uiw/codemirror-theme-github/-/codemirror-theme-github-4.21.21.tgz", - "integrity": "sha512-msrpNrKk/CZQHk58TshI8aH7FpEyL404m/vWlGUdL2jGW7IRKm0nXn1lXXQ/snzk65h88GO6u9fiiv0pxRuZfQ==", + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/@uiw/codemirror-theme-github/-/codemirror-theme-github-4.22.2.tgz", + "integrity": "sha512-tqGOOgVzbStJWUQmMLRWyymyD3DPF4TUSJx2DcXpeCF3YStWMd957I26uQQaqR1ppAcWFsprjkl2oL3piBxFdA==", "dependencies": { - "@uiw/codemirror-themes": "4.21.21" + "@uiw/codemirror-themes": "4.22.2" }, "funding": { "url": "https://jaywcjlove.github.io/#/sponsor" } }, "node_modules/@uiw/codemirror-theme-okaidia": { - "version": "4.21.21", - "resolved": "https://registry.npmjs.org/@uiw/codemirror-theme-okaidia/-/codemirror-theme-okaidia-4.21.21.tgz", - "integrity": "sha512-jZQ3YV+taTroqGmnAnFwU1uhAc+BZmuN1vjOJ9of7b6nmav1cohd8pdinZgDLag/ZrJt6TVr/KYBH8NF1Sm//g==", + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/@uiw/codemirror-theme-okaidia/-/codemirror-theme-okaidia-4.22.2.tgz", + "integrity": "sha512-X8QR4FB/GihU9Q/YTtpFGICLGQ7fY+zGJsmt7WAdvomBcfNe4grvj08MU+KoJ967iB1LvluH8cFVDRdu4Nh8sw==", "dependencies": { - "@uiw/codemirror-themes": "4.21.21" + "@uiw/codemirror-themes": "4.22.2" }, "funding": { "url": "https://jaywcjlove.github.io/#/sponsor" } }, "node_modules/@uiw/codemirror-themes": { - "version": "4.21.21", - "resolved": "https://registry.npmjs.org/@uiw/codemirror-themes/-/codemirror-themes-4.21.21.tgz", - "integrity": "sha512-ljVcMGdaxo75UaH+EqxJ+jLyMVVgeSfW2AKyT1VeLy+4SDpuqNQ7wq5XVxktsG6LH+OvgSFndWXgPANf4+gQcA==", + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/@uiw/codemirror-themes/-/codemirror-themes-4.22.2.tgz", + "integrity": "sha512-gsLHn6SUuV5iboBvGrM7YimzLFHQmsNlkGIYs3UaVUJTo/A/ZrKoSJNyPziShLRjBXA2UwKdBTIU6VhHyyaChw==", "dependencies": { "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", @@ -12119,15 +12281,15 @@ } }, "node_modules/@uiw/react-codemirror": { - "version": "4.21.21", - "resolved": "https://registry.npmjs.org/@uiw/react-codemirror/-/react-codemirror-4.21.21.tgz", - "integrity": "sha512-PaxBMarufMWoR0qc5zuvBSt76rJ9POm9qoOaJbqRmnNL2viaF+d+Paf2blPSlm1JSnqn7hlRjio+40nZJ9TKzw==", + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/@uiw/react-codemirror/-/react-codemirror-4.22.2.tgz", + "integrity": "sha512-okCSl+WJG63gRx8Fdz7v0C6RakBQnbb3pHhuzIgDB+fwhipgFodSnu2n9oOsQesJ5YQ7mSOcKMgX0JEsu4nnfQ==", "dependencies": { "@babel/runtime": "^7.18.6", "@codemirror/commands": "^6.1.0", "@codemirror/state": "^6.1.1", "@codemirror/theme-one-dark": "^6.0.0", - "@uiw/codemirror-extensions-basic-setup": "4.21.21", + "@uiw/codemirror-extensions-basic-setup": "4.22.2", "codemirror": "^6.0.0" }, "funding": { @@ -12149,9 +12311,9 @@ "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" }, "node_modules/@webassemblyjs/ast": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", - "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", "dependencies": { "@webassemblyjs/helper-numbers": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6" @@ -12168,9 +12330,9 @@ "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", - "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==" + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==" }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.11.6", @@ -12188,14 +12350,14 @@ "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", - "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6" + "@webassemblyjs/wasm-gen": "1.12.1" } }, "node_modules/@webassemblyjs/ieee754": { @@ -12220,26 +12382,26 @@ "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", - "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-opt": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6", - "@webassemblyjs/wast-printer": "1.11.6" + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", - "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", "dependencies": { - "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", "@webassemblyjs/ieee754": "1.11.6", "@webassemblyjs/leb128": "1.11.6", @@ -12247,22 +12409,22 @@ } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", - "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", - "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", "dependencies": { - "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-api-error": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", "@webassemblyjs/ieee754": "1.11.6", @@ -12271,11 +12433,11 @@ } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", - "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", "dependencies": { - "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/ast": "1.12.1", "@xtuc/long": "4.2.2" } }, @@ -12357,8 +12519,9 @@ }, "node_modules/@yarnpkg/esbuild-plugin-pnp": { "version": "3.0.0-rc.15", + "resolved": "https://registry.npmjs.org/@yarnpkg/esbuild-plugin-pnp/-/esbuild-plugin-pnp-3.0.0-rc.15.tgz", + "integrity": "sha512-kYzDJO5CA9sy+on/s2aIW0411AklfCi8Ck/4QDivOqsMKpStZA2SsR+X27VTggGwpStWaLrjJcDcdDMowtG8MA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "tslib": "^2.4.0" }, @@ -12371,8 +12534,9 @@ }, "node_modules/@yarnpkg/fslib": { "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@yarnpkg/fslib/-/fslib-2.10.3.tgz", + "integrity": "sha512-41H+Ga78xT9sHvWLlFOZLIhtU6mTGZ20pZ29EiZa97vnxdohJD2AF42rCoAoWfqUz486xY6fhjMH+DYEM9r14A==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "@yarnpkg/libzip": "^2.3.0", "tslib": "^1.13.0" @@ -12383,13 +12547,15 @@ }, "node_modules/@yarnpkg/fslib/node_modules/tslib": { "version": "1.14.1", - "dev": true, - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true }, "node_modules/@yarnpkg/libzip": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/libzip/-/libzip-2.3.0.tgz", + "integrity": "sha512-6xm38yGVIa6mKm/DUCF2zFFJhERh/QWp1ufm4cNUvxsONBmfPg8uZ9pZBdOmF6qFGr/HlT6ABBkCSx/dlEtvWg==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "@types/emscripten": "^1.39.6", "tslib": "^1.13.0" @@ -12400,8 +12566,9 @@ }, "node_modules/@yarnpkg/libzip/node_modules/tslib": { "version": "1.14.1", - "dev": true, - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true }, "node_modules/abbrev": { "version": "1.1.1", @@ -12467,6 +12634,12 @@ "ieee754": "^1.1.13" } }, + "node_modules/abstract-leveldown/node_modules/immediate": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz", + "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==", + "optional": true + }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -12480,9 +12653,9 @@ } }, "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", + "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", "bin": { "acorn": "bin/acorn" }, @@ -12490,26 +12663,37 @@ "node": ">=0.4.0" } }, + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "peerDependencies": { + "acorn": "^8" + } + }, "node_modules/acorn-jsx": { "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, - "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "node_modules/acorn-walk": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.4.0" } }, "node_modules/address": { "version": "1.2.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 10.0.0" } @@ -12562,6 +12746,7 @@ "version": "2.16.0", "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz", "integrity": "sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==", + "deprecated": "This package has been renamed to 'prop-types-tools'", "dependencies": { "array.prototype.find": "^2.1.1", "function.prototype.name": "^1.1.2", @@ -12580,6 +12765,11 @@ "react": "^0.14 || ^15.0.0 || ^16.0.0-alpha" } }, + "node_modules/airbnb-prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -12613,15 +12803,15 @@ } }, "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", + "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "uri-js": "^4.4.1" }, "funding": { "type": "github", @@ -12710,6 +12900,12 @@ "node": ">=6" } }, + "node_modules/ansi-fragments/node_modules/colorette": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", + "peer": true + }, "node_modules/ansi-fragments/node_modules/strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", @@ -12722,6 +12918,18 @@ "node": ">=6" } }, + "node_modules/ansi-html": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.9.tgz", + "integrity": "sha512-ozbS3LuenHVxNRh/wdnN16QapUHzauqSomAl1jwwJRRsGwFwtj644lIhxfWu0Fy0acCij2+AEgHvjscq3dlVXg==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, "node_modules/ansi-html-community": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", @@ -12780,8 +12988,9 @@ }, "node_modules/app-root-dir": { "version": "1.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/app-root-dir/-/app-root-dir-1.0.2.tgz", + "integrity": "sha512-jlpIfsOoNoafl92Sz//64uQHGSyMrD2vYG5d8o2a4qGvyNCvXur7bzIsWtAC/6flI2RYAp3kv8rsfBtaLm7w0g==", + "dev": true }, "node_modules/appdirsjs": { "version": "1.2.7", @@ -12799,6 +13008,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "deprecated": "This package is no longer supported.", "dev": true, "dependencies": { "delegates": "^1.0.0", @@ -12817,9 +13027,9 @@ } }, "node_modules/aria-hidden": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.3.tgz", - "integrity": "sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", + "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", "dependencies": { "tslib": "^2.0.0" }, @@ -12828,12 +13038,12 @@ } }, "node_modules/aria-query": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", - "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", "dev": true, "dependencies": { - "deep-equal": "^2.0.5" + "dequal": "^2.0.3" } }, "node_modules/array-bounds": { @@ -12843,12 +13053,15 @@ "peer": true }, "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -12870,15 +13083,16 @@ "dev": true }, "node_modules/array-includes": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", - "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", "is-string": "^1.0.7" }, "engines": { @@ -12919,30 +13133,55 @@ } }, "node_modules/array.prototype.find": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.2.2.tgz", - "integrity": "sha512-DRumkfW97iZGOfn+lIXbkVrXL04sfYKX+EfOodo8XboR5sxPDVvOjZTF/rysusa9lmhmSOeD6Vp6RKQP+eP4Tg==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.2.3.tgz", + "integrity": "sha512-fO/ORdOELvjbbeIfZfzrXFMhYHGofRGqd+am9zm3tZ4GlJINj/pA2eITyfd65Vg6+ZbHd/Cys7stpoRSWtQFdA==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/array.prototype.findlastindex": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", - "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.2.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -12986,30 +13225,46 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array.prototype.tosorted": { + "node_modules/array.prototype.toreversed": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz", - "integrity": "sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==", + "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz", + "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.2.1" + "es-shim-unscopables": "^1.0.0" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", - "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", "is-shared-array-buffer": "^1.0.2" }, "engines": { @@ -13038,7 +13293,6 @@ "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "is-nan": "^1.3.2", @@ -13137,7 +13391,8 @@ "node_modules/async": { "version": "3.2.5", "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", - "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", + "dev": true }, "node_modules/async-foreach": { "version": "0.1.3", @@ -13153,15 +13408,6 @@ "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" }, - "node_modules/asynciterator.prototype": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", - "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.3" - } - }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -13187,9 +13433,12 @@ } }, "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -13198,11 +13447,11 @@ } }, "node_modules/axios": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", - "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", "dependencies": { - "follow-redirects": "^1.15.0", + "follow-redirects": "^1.15.6", "form-data": "^4.0.0", "proxy-from-env": "^1.1.0" } @@ -13305,34 +13554,6 @@ "webpack": ">=5" } }, - "node_modules/babel-loader/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/babel-loader/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, "node_modules/babel-loader/node_modules/find-cache-dir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", @@ -13365,12 +13586,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/babel-loader/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, "node_modules/babel-loader/node_modules/locate-path": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", @@ -13440,25 +13655,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/babel-loader/node_modules/schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/babel-loader/node_modules/yocto-queue": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", @@ -13473,8 +13669,9 @@ }, "node_modules/babel-plugin-add-react-displayname": { "version": "0.0.5", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/babel-plugin-add-react-displayname/-/babel-plugin-add-react-displayname-0.0.5.tgz", + "integrity": "sha512-LY3+Y0XVDYcShHHorshrDbt4KFWL4bSeniCtl4SYZbask+Syngk1uMPCeN9+nSiZo6zX5s0RTq/J9Pnaaf/KHw==", + "dev": true }, "node_modules/babel-plugin-console-source": { "version": "2.0.5", @@ -13524,7 +13721,8 @@ }, "node_modules/babel-plugin-macros": { "version": "3.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", "dependencies": { "@babel/runtime": "^7.12.5", "cosmiconfig": "^7.0.0", @@ -13536,12 +13734,12 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz", - "integrity": "sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==", + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", + "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", "dependencies": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.3", + "@babel/helper-define-polyfill-provider": "^0.6.2", "semver": "^6.3.1" }, "peerDependencies": { @@ -13557,34 +13755,28 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz", - "integrity": "sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==", + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", + "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.3", - "core-js-compat": "^3.33.1" + "@babel/helper-define-polyfill-provider": "^0.6.1", + "core-js-compat": "^3.36.1" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz", - "integrity": "sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", + "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.3" + "@babel/helper-define-polyfill-provider": "^0.6.2" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/babel-plugin-syntax-trailing-function-commas": { - "version": "7.0.0-beta.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz", - "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==", - "peer": true - }, "node_modules/babel-plugin-transform-flow-enums": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-enums/-/babel-plugin-transform-flow-enums-0.0.2.tgz", @@ -13617,44 +13809,6 @@ "@babel/core": "^7.0.0" } }, - "node_modules/babel-preset-fbjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz", - "integrity": "sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==", - "peer": true, - "dependencies": { - "@babel/plugin-proposal-class-properties": "^7.0.0", - "@babel/plugin-proposal-object-rest-spread": "^7.0.0", - "@babel/plugin-syntax-class-properties": "^7.0.0", - "@babel/plugin-syntax-flow": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.0.0", - "@babel/plugin-syntax-object-rest-spread": "^7.0.0", - "@babel/plugin-transform-arrow-functions": "^7.0.0", - "@babel/plugin-transform-block-scoped-functions": "^7.0.0", - "@babel/plugin-transform-block-scoping": "^7.0.0", - "@babel/plugin-transform-classes": "^7.0.0", - "@babel/plugin-transform-computed-properties": "^7.0.0", - "@babel/plugin-transform-destructuring": "^7.0.0", - "@babel/plugin-transform-flow-strip-types": "^7.0.0", - "@babel/plugin-transform-for-of": "^7.0.0", - "@babel/plugin-transform-function-name": "^7.0.0", - "@babel/plugin-transform-literals": "^7.0.0", - "@babel/plugin-transform-member-expression-literals": "^7.0.0", - "@babel/plugin-transform-modules-commonjs": "^7.0.0", - "@babel/plugin-transform-object-super": "^7.0.0", - "@babel/plugin-transform-parameters": "^7.0.0", - "@babel/plugin-transform-property-literals": "^7.0.0", - "@babel/plugin-transform-react-display-name": "^7.0.0", - "@babel/plugin-transform-react-jsx": "^7.0.0", - "@babel/plugin-transform-shorthand-properties": "^7.0.0", - "@babel/plugin-transform-spread": "^7.0.0", - "@babel/plugin-transform-template-literals": "^7.0.0", - "babel-plugin-syntax-trailing-function-commas": "^7.0.0-beta.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, "node_modules/babel-preset-jest": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", @@ -13694,7 +13848,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==", - "optional": true, "engines": { "node": ">= 0.6.0" } @@ -13726,8 +13879,9 @@ }, "node_modules/better-opn": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz", + "integrity": "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==", "dev": true, - "license": "MIT", "dependencies": { "open": "^8.0.4" }, @@ -13735,41 +13889,11 @@ "node": ">=12.0.0" } }, - "node_modules/better-opn/node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/better-opn/node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", - "dev": true, - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/big-integer": { "version": "1.6.52", "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", "dev": true, - "license": "Unlicense", "engines": { "node": ">=0.6" } @@ -13783,11 +13907,14 @@ } }, "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/binary-search-bounds": { @@ -13909,23 +14036,15 @@ } }, "node_modules/bonjour-service": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz", - "integrity": "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", + "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", "dev": true, "dependencies": { - "array-flatten": "^2.1.2", - "dns-equal": "^1.0.0", "fast-deep-equal": "^3.1.3", "multicast-dns": "^7.2.5" } }, - "node_modules/bonjour-service/node_modules/array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true - }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -13933,9 +14052,9 @@ "dev": true }, "node_modules/bootstrap": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.2.tgz", - "integrity": "sha512-D32nmNWiQHo94BKHLmOrdjlL05q1c8oxbtBphQFb9Z5to6eGRDCm0QgeaZ4zFBHzfg2++rqa2JkqCcxDy0sH0g==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz", + "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==", "funding": [ { "type": "github", @@ -13952,8 +14071,9 @@ }, "node_modules/bplist-parser": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", + "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", "dev": true, - "license": "MIT", "dependencies": { "big-integer": "^1.6.44" }, @@ -13971,11 +14091,11 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -13988,6 +14108,8 @@ }, "node_modules/browser-assert": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/browser-assert/-/browser-assert-1.2.1.tgz", + "integrity": "sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==", "dev": true }, "node_modules/browser-resolve": { @@ -14015,16 +14137,17 @@ }, "node_modules/browserify-zlib": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", + "integrity": "sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==", "dev": true, - "license": "MIT", "dependencies": { "pako": "~0.2.0" } }, "node_modules/browserslist": { - "version": "4.22.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", - "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", + "version": "4.23.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz", + "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", "funding": [ { "type": "opencollective", @@ -14039,12 +14162,11 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001565", - "electron-to-chromium": "^1.4.601", + "caniuse-lite": "^1.0.30001629", + "electron-to-chromium": "^1.4.796", "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" + "update-browserslist-db": "^1.0.16" }, "bin": { "browserslist": "cli.js" @@ -14097,8 +14219,9 @@ }, "node_modules/buffer-crc32": { "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true, - "license": "MIT", "engines": { "node": "*" } @@ -14159,6 +14282,7 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -14214,13 +14338,18 @@ "dev": true }, "node_modules/call-bind": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", - "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.1", - "set-function-length": "^1.1.1" + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -14323,9 +14452,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001565", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001565.tgz", - "integrity": "sha512-xrE//a3O7TP0vaJ8ikzkD2c2NgcVUvsEe2IvFTntV4Yd1Z9FVzh+gW+enX96L0psrbaFMcVcH2l90xNuGDWc8w==", + "version": "1.0.30001636", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001636.tgz", + "integrity": "sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg==", "funding": [ { "type": "opencollective", @@ -14339,8 +14468,7 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ], - "license": "CC-BY-4.0" + ] }, "node_modules/canvas-fit": { "version": "1.5.0", @@ -14378,8 +14506,9 @@ }, "node_modules/case-sensitive-paths-webpack-plugin": { "version": "2.4.0", + "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", + "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } @@ -14407,7 +14536,8 @@ }, "node_modules/chalk": { "version": "2.4.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -14417,6 +14547,14 @@ "node": ">=4" } }, + "node_modules/chalk/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/char-regex": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", @@ -14463,15 +14601,9 @@ } }, "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -14484,6 +14616,9 @@ "engines": { "node": ">= 8.10.0" }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, "optionalDependencies": { "fsevents": "~2.3.2" } @@ -14508,10 +14643,28 @@ "node": ">=10" } }, + "node_modules/chrome-launcher": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz", + "integrity": "sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==", + "peer": true, + "dependencies": { + "@types/node": "*", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0" + }, + "bin": { + "print-chrome-path": "bin/print-chrome-path.js" + }, + "engines": { + "node": ">=12.13.0" + } + }, "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", "engines": { "node": ">=6.0" } @@ -14530,10 +14683,19 @@ "node": ">=8" } }, + "node_modules/citty": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz", + "integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==", + "dev": true, + "dependencies": { + "consola": "^3.2.3" + } + }, "node_modules/cjs-module-lexer": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", - "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz", + "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==", "dev": true }, "node_modules/clamp": { @@ -14543,9 +14705,9 @@ "peer": true }, "node_modules/classnames": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", - "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" }, "node_modules/clean-css": { "version": "5.3.3", @@ -14600,9 +14762,10 @@ } }, "node_modules/cli-table3": { - "version": "0.6.3", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", "dev": true, - "license": "MIT", "dependencies": { "string-width": "^4.2.0" }, @@ -14659,9 +14822,9 @@ } }, "node_modules/clsx": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", - "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", "engines": { "node": ">=6" } @@ -14722,6 +14885,15 @@ "color-parse": "^1.3.8" } }, + "node_modules/color-alpha/node_modules/color-parse": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/color-parse/-/color-parse-1.4.3.tgz", + "integrity": "sha512-BADfVl/FHkQkyo8sRBwMYBqemqsgnu7JZAwUgvBvuwwuNUZAhSvLTbsEErS5bQXzOjDR0dWzJ4vXN2Q+QoPx0A==", + "peer": true, + "dependencies": { + "color-name": "^1.0.0" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -14759,14 +14931,12 @@ } }, "node_modules/color-parse": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/color-parse/-/color-parse-1.3.8.tgz", - "integrity": "sha512-1Y79qFv0n1xair3lNMTNeoFvmc3nirMVBij24zbs1f13+7fPpQClMg5b4AuKXLt3szj7BRlHMCXHplkce6XlmA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/color-parse/-/color-parse-2.0.0.tgz", + "integrity": "sha512-g2Z+QnWsdHLppAbrpcFWo629kLOnOPtpxYV69GCqm92gqSgyXbzlfyN3MXs0412fPBkFmiuS+rXposgBgBa6Kg==", "peer": true, "dependencies": { - "color-name": "^1.0.0", - "defined": "^1.0.0", - "is-plain-obj": "^1.1.0" + "color-name": "^1.0.0" } }, "node_modules/color-rgba": { @@ -14780,6 +14950,15 @@ "color-space": "^1.14.6" } }, + "node_modules/color-rgba/node_modules/color-parse": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/color-parse/-/color-parse-1.4.3.tgz", + "integrity": "sha512-BADfVl/FHkQkyo8sRBwMYBqemqsgnu7JZAwUgvBvuwwuNUZAhSvLTbsEErS5bQXzOjDR0dWzJ4vXN2Q+QoPx0A==", + "peer": true, + "dependencies": { + "color-name": "^1.0.0" + } + }, "node_modules/color-space": { "version": "1.16.0", "resolved": "https://registry.npmjs.org/color-space/-/color-space-1.16.0.tgz", @@ -14822,10 +15001,10 @@ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "node_modules/colorette": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", - "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", - "peer": true + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true }, "node_modules/combined-stream": { "version": "1.0.8", @@ -14864,8 +15043,9 @@ }, "node_modules/common-path-prefix": { "version": "3.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "dev": true }, "node_modules/commondir": { "version": "1.0.1", @@ -14920,59 +15100,6 @@ "webpack": "^5.1.0" } }, - "node_modules/compression-webpack-plugin/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/compression-webpack-plugin/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/compression-webpack-plugin/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/compression-webpack-plugin/node_modules/schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/compression/node_modules/bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", @@ -15128,6 +15255,15 @@ "node": ">= 0.6" } }, + "node_modules/consola": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz", + "integrity": "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==", + "dev": true, + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, "node_modules/console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", @@ -15141,8 +15277,9 @@ }, "node_modules/constants-browserify": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", + "dev": true }, "node_modules/content-disposition": { "version": "0.5.4", @@ -15194,9 +15331,9 @@ } }, "node_modules/core-js": { - "version": "3.33.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.33.3.tgz", - "integrity": "sha512-lo0kOocUlLKmm6kv/FswQL8zbkH7mVsLJ/FULClOhv8WRVmKLVcs6XPNQAzstfeJTCHMyButEwG+z1kHxHoDZw==", + "version": "3.37.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.37.1.tgz", + "integrity": "sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw==", "hasInstallScript": true, "funding": { "type": "opencollective", @@ -15204,11 +15341,11 @@ } }, "node_modules/core-js-compat": { - "version": "3.33.3", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.3.tgz", - "integrity": "sha512-cNzGqFsh3Ot+529GIXacjTJ7kegdt5fPXxCBVS1G0iaZpuo/tBz399ymceLJveQhFFZ8qThHiP3fzuoQjKN2ow==", + "version": "3.37.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.1.tgz", + "integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==", "dependencies": { - "browserslist": "^4.22.1" + "browserslist": "^4.23.0" }, "funding": { "type": "opencollective", @@ -15216,12 +15353,11 @@ } }, "node_modules/core-js-pure": { - "version": "3.33.3", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.33.3.tgz", - "integrity": "sha512-taJ00IDOP+XYQEA2dAe4ESkmHt1fL8wzYDo3mRWQey8uO9UojlBFMneA65kMyxfYP7106c6LzWaq7/haDT6BCQ==", + "version": "3.37.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.37.1.tgz", + "integrity": "sha512-J/r5JTHSmzTxbiYYrzXg9w1VpqrYt+gexenBE9pugeyhwPZTAEJddyiReJWsLO6uNQ8xJZFbod6XC7KKwatCiA==", "dev": true, "hasInstallScript": true, - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" @@ -15365,8 +15501,9 @@ }, "node_modules/crypto-random-string": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -15444,19 +15581,19 @@ } }, "node_modules/css-loader": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz", - "integrity": "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==", + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", + "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", "dev": true, "dependencies": { "icss-utils": "^5.1.0", - "postcss": "^8.4.21", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.3", - "postcss-modules-scope": "^3.0.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", "postcss-modules-values": "^4.0.0", "postcss-value-parser": "^4.2.0", - "semver": "^7.3.8" + "semver": "^7.5.4" }, "engines": { "node": ">= 12.13.0" @@ -15466,7 +15603,16 @@ "url": "https://opencollective.com/webpack" }, "peerDependencies": { + "@rspack/core": "0.x || 1.x", "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, "node_modules/css-select": { @@ -15599,13 +15745,16 @@ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, "node_modules/d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", + "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", "peer": true, "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" + "es5-ext": "^0.10.64", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.12" } }, "node_modules/d3-array": { @@ -15747,6 +15896,54 @@ "integrity": "sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==", "peer": true }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/date-arithmetic": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/date-arithmetic/-/date-arithmetic-4.1.0.tgz", @@ -15768,9 +15965,9 @@ } }, "node_modules/dayjs": { - "version": "1.11.10", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", - "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" + "version": "1.11.11", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz", + "integrity": "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==" }, "node_modules/debounce": { "version": "1.2.1", @@ -15779,9 +15976,9 @@ "peer": true }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "dependencies": { "ms": "2.1.2" }, @@ -15888,7 +16085,8 @@ "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true }, "node_modules/deep-object-diff": { "version": "1.1.9", @@ -15905,8 +16103,9 @@ }, "node_modules/default-browser-id": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", + "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", "dev": true, - "license": "MIT", "dependencies": { "bplist-parser": "^0.2.0", "untildify": "^4.0.0" @@ -15955,16 +16154,19 @@ } }, "node_modules/define-data-property": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/define-lazy-prop": { @@ -16002,15 +16204,16 @@ } }, "node_modules/defu": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.3.tgz", - "integrity": "sha512-Vy2wmG3NTkmHNg/kzpuvHhkqeIx3ODWqasgCRbKtbXEN0G+HpEEv9BtJLp7ZG1CZloFaC41Ah3ZFbq7aqCqMeQ==", + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", "dev": true }, "node_modules/del": { "version": "6.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", + "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", "dev": true, - "license": "MIT", "dependencies": { "globby": "^11.0.1", "graceful-fs": "^4.2.4", @@ -16056,17 +16259,6 @@ "node": ">= 0.8" } }, - "node_modules/deprecated-react-native-prop-types": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/deprecated-react-native-prop-types/-/deprecated-react-native-prop-types-4.2.3.tgz", - "integrity": "sha512-2rLTiMKidIFFYpIVM69UnQKngLqQfL6I11Ch8wGSBftS18FUXda+o2we2950X+1dmbgps28niI3qwyH4eX3Z1g==", - "peer": true, - "dependencies": { - "@react-native/normalize-colors": "<0.73.0", - "invariant": "^2.2.4", - "prop-types": "^15.8.1" - } - }, "node_modules/dequal": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", @@ -16086,8 +16278,9 @@ }, "node_modules/detect-indent": { "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -16120,8 +16313,9 @@ }, "node_modules/detect-package-manager": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-package-manager/-/detect-package-manager-2.0.1.tgz", + "integrity": "sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A==", "dev": true, - "license": "MIT", "dependencies": { "execa": "^5.1.1" }, @@ -16130,9 +16324,10 @@ } }, "node_modules/detect-port": { - "version": "1.5.1", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.6.1.tgz", + "integrity": "sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==", "dev": true, - "license": "MIT", "dependencies": { "address": "^1.0.1", "debug": "4" @@ -16140,6 +16335,9 @@ "bin": { "detect": "bin/detect-port.js", "detect-port": "bin/detect-port.js" + }, + "engines": { + "node": ">= 4.0.0" } }, "node_modules/devlop": { @@ -16197,12 +16395,6 @@ "redux": "^4.2.0" } }, - "node_modules/dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", - "dev": true - }, "node_modules/dns-packet": { "version": "5.6.1", "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", @@ -16319,9 +16511,9 @@ "deprecated": "dommatrix is no longer maintained. Please use @thednp/dommatrix." }, "node_modules/dompurify": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.0.6.tgz", - "integrity": "sha512-ilkD8YEnnGh1zJ240uJsW7AzE+2qpbOUYjacomn3AvJ6J4JhKGSZ2nh4wUIXPZrEPppaCLx5jFe8T89Rk8tQ7w==" + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.5.tgz", + "integrity": "sha512-lwG+n5h8QNpxtyrJW/gJWckL+1/DQiYMX8f7t8Z2AZTPw1esVrqjI63i7Zc2Gz0aKzLVMYC1V1PL/ky+aY/NgA==" }, "node_modules/domutils": { "version": "2.8.0", @@ -16348,19 +16540,21 @@ } }, "node_modules/dotenv": { - "version": "16.3.1", - "license": "BSD-2-Clause", + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", "engines": { "node": ">=12" }, "funding": { - "url": "https://github.com/motdotla/dotenv?sponsor=1" + "url": "https://dotenvx.com" } }, "node_modules/dotenv-expand": { "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz", + "integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=12" } @@ -16489,8 +16683,9 @@ }, "node_modules/eastasianwidth": { "version": "0.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true }, "node_modules/ee-first": { "version": "1.1.1", @@ -16513,9 +16708,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.601", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.601.tgz", - "integrity": "sha512-SpwUMDWe9tQu8JX5QCO1+p/hChAi9AE9UpoC3rcHVc+gdCGlbT3SGb5I1klgb952HRIyvt9wZhSz9bNBYz9swA==" + "version": "1.4.810", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.810.tgz", + "integrity": "sha512-Kaxhu4T7SJGpRQx99tq216gCq2nMxJo+uuT6uzz9l8TVN2stL7M06MIIXAtr9jsrLs2Glflgf2vMQRepxawOdQ==" }, "node_modules/element-size": { "version": "1.1.1", @@ -16545,9 +16740,9 @@ } }, "node_modules/emoji-mart": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/emoji-mart/-/emoji-mart-5.5.2.tgz", - "integrity": "sha512-Sqc/nso4cjxhOwWJsp9xkVm8OF5c+mJLZJFoFfzRuKO+yWiN7K8c96xmtughYb0d/fZ8UC6cLIQ/p4BR6Pv3/A==" + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/emoji-mart/-/emoji-mart-5.6.0.tgz", + "integrity": "sha512-eJp3QRe79pjwa+duv+n7+5YsNhRcMl812EcFVwrnRvYKoNPoQb5qxU8DG6Bgwji0akHdp6D4Ln6tYLG58MFSow==" }, "node_modules/emoji-regex": { "version": "8.0.0", @@ -16614,8 +16809,9 @@ }, "node_modules/endent": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/endent/-/endent-2.1.0.tgz", + "integrity": "sha512-r8VyPX7XL8U01Xgnb1CjZ3XV+z90cXIJ9JPE/R9SEC9vpw2P6CfsRPJmp20DppC5N7ZAMCmjYkJIa744Iyg96w==", "dev": true, - "license": "MIT", "dependencies": { "dedent": "^0.7.0", "fast-json-parse": "^1.0.3", @@ -16658,9 +16854,9 @@ } }, "node_modules/envinfo": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.0.tgz", - "integrity": "sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", + "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==", "bin": { "envinfo": "dist/cli.js" }, @@ -16669,11 +16865,11 @@ } }, "node_modules/enzyme-shallow-equal": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.5.tgz", - "integrity": "sha512-i6cwm7hN630JXenxxJFBKzgLC3hMTafFQXflvzHgPmDhOBhxUWDe8AeRv1qp2/uWJ2Y8z5yLWMzmAfkTOiOCZg==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.7.tgz", + "integrity": "sha512-/um0GFqUXnpM9SvKtje+9Tjoz3f1fpBC3eXRFrNs8kpYn69JljciYP7KZTqM/YQbUY9KUjvKB4jo/q+L6WGGvg==", "dependencies": { - "has": "^1.0.3", + "hasown": "^2.0.0", "object-is": "^1.1.5" }, "funding": { @@ -16728,49 +16924,56 @@ } }, "node_modules/es-abstract": { - "version": "1.22.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", - "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.2", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.5", - "es-set-tostringtag": "^2.0.1", + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.2", - "get-symbol-description": "^1.0.0", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "hasown": "^2.0.0", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", + "is-shared-array-buffer": "^1.0.3", "is-string": "^1.0.7", - "is-typed-array": "^1.1.12", + "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "safe-array-concat": "^1.0.1", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", - "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.13" + "which-typed-array": "^1.1.15" }, "engines": { "node": ">= 0.4" @@ -16779,6 +16982,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-get-iterator": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", @@ -16800,40 +17022,54 @@ } }, "node_modules/es-iterator-helpers": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", - "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==", + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", + "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", "dev": true, "dependencies": { - "asynciterator.prototype": "^1.0.0", - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "define-properties": "^1.2.1", - "es-abstract": "^1.22.1", - "es-set-tostringtag": "^2.0.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", "globalthis": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", + "internal-slot": "^1.0.7", "iterator.prototype": "^1.1.2", - "safe-array-concat": "^1.0.1" + "safe-array-concat": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/es-module-lexer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", - "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==" + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", + "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==" + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } }, "node_modules/es-set-tostringtag": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", - "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", "dependencies": { - "get-intrinsic": "^1.2.2", - "has-tostringtag": "^1.0.0", - "hasown": "^2.0.0" + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" }, "engines": { "node": ">= 0.4" @@ -16891,13 +17127,16 @@ } }, "node_modules/es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", + "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", "peer": true, "dependencies": { - "d": "^1.0.1", - "ext": "^1.1.2" + "d": "^1.0.2", + "ext": "^1.7.0" + }, + "engines": { + "node": ">=0.12" } }, "node_modules/es6-weak-map": { @@ -16951,15 +17190,15 @@ }, "node_modules/esbuild-plugin-alias": { "version": "0.2.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/esbuild-plugin-alias/-/esbuild-plugin-alias-0.2.1.tgz", + "integrity": "sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ==", + "dev": true }, "node_modules/esbuild-register": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.5.0.tgz", "integrity": "sha512-+4G/XmakeBAsvJuDugJvtyF1x+XJT4FMocynNpxrvEBViirpfUn2PgNpCHedfWhF4WokNsO/OvMKrmJOIJsI5A==", "dev": true, - "license": "MIT", "dependencies": { "debug": "^4.3.4" }, @@ -16968,9 +17207,9 @@ } }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "engines": { "node": ">=6" } @@ -16981,16 +17220,20 @@ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" }, "node_modules/escape-string-regexp": { - "version": "1.0.5", - "license": "MIT", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "engines": { - "node": ">=0.8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/escodegen": { "version": "2.1.0", - "dev": true, - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", "dependencies": { "esprima": "^4.0.1", "estraverse": "^5.2.0", @@ -17011,24 +17254,22 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, "optional": true, "engines": { "node": ">=0.10.0" } }, "node_modules/eslint": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz", - "integrity": "sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, - "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.55.0", - "@humanwhocodes/config-array": "^0.11.13", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "@ungap/structured-clone": "^1.2.0", @@ -17167,9 +17408,9 @@ } }, "node_modules/eslint-module-utils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", - "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", + "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", "dev": true, "dependencies": { "debug": "^3.2.7" @@ -17193,9 +17434,9 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.0.tgz", - "integrity": "sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==", + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", "dev": true, "dependencies": { "array-includes": "^3.1.7", @@ -17214,7 +17455,7 @@ "object.groupby": "^1.0.1", "object.values": "^1.1.7", "semver": "^6.3.1", - "tsconfig-paths": "^3.14.2" + "tsconfig-paths": "^3.15.0" }, "engines": { "node": ">=4" @@ -17254,9 +17495,9 @@ } }, "node_modules/eslint-plugin-jest": { - "version": "27.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.6.0.tgz", - "integrity": "sha512-MTlusnnDMChbElsszJvrwD1dN3x6nZl//s4JD23BxB6MgR66TZlL064su24xEIS3VACfAoHV1vgyMgPw8nkdng==", + "version": "27.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.9.0.tgz", + "integrity": "sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug==", "dev": true, "dependencies": { "@typescript-eslint/utils": "^5.10.0" @@ -17265,7 +17506,7 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^5.0.0 || ^6.0.0", + "@typescript-eslint/eslint-plugin": "^5.0.0 || ^6.0.0 || ^7.0.0", "eslint": "^7.0.0 || ^8.0.0", "jest": "*" }, @@ -17300,27 +17541,29 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.33.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", - "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", + "version": "7.34.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.3.tgz", + "integrity": "sha512-aoW4MV891jkUulwDApQbPYTVZmeuSyFrudpbTAQuj5Fv8VL+o6df2xIGpw8B0hPjAaih1/Fb0om9grCdyFYemA==", "dev": true, "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "array.prototype.tosorted": "^1.1.1", + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.toreversed": "^1.1.2", + "array.prototype.tosorted": "^1.1.4", "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.12", + "es-iterator-helpers": "^1.0.19", "estraverse": "^5.3.0", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "object.hasown": "^1.1.2", - "object.values": "^1.1.6", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.hasown": "^1.1.4", + "object.values": "^1.2.0", "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.4", + "resolve": "^2.0.0-next.5", "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.8" + "string.prototype.matchall": "^4.0.11" }, "engines": { "node": ">=4" @@ -17330,9 +17573,9 @@ } }, "node_modules/eslint-plugin-react-hooks": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", - "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", "dev": true, "engines": { "node": ">=10" @@ -17384,7 +17627,6 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.6.15.tgz", "integrity": "sha512-lAGqVAJGob47Griu29KXYowI4G7KwMoJDOkEip8ujikuDLxU+oWJ1l0WL6F2oDO4QiyUFXvtDkEkISMOPzo+7w==", "dev": true, - "license": "MIT", "dependencies": { "@storybook/csf": "^0.0.1", "@typescript-eslint/utils": "^5.45.0", @@ -17400,8 +17642,9 @@ }, "node_modules/eslint-plugin-storybook/node_modules/@storybook/csf": { "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.1.tgz", + "integrity": "sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw==", "dev": true, - "license": "MIT", "dependencies": { "lodash": "^4.17.15" } @@ -17472,18 +17715,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/eslint/node_modules/eslint-scope": { "version": "7.2.2", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", @@ -17505,7 +17736,6 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, - "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -17514,9 +17744,9 @@ } }, "node_modules/eslint/node_modules/globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -17588,18 +17818,11 @@ "node": ">=0.10" } }, - "node_modules/esniff/node_modules/type": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", - "peer": true - }, "node_modules/espree": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", @@ -17617,7 +17840,6 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, - "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -17639,8 +17861,9 @@ }, "node_modules/esquery": { "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -17858,20 +18081,16 @@ "type": "^2.7.2" } }, - "node_modules/ext/node_modules/type": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", - "peer": true - }, "node_modules/extend": { "version": "3.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, "node_modules/extract-zip": { "version": "1.7.0", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", + "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "concat-stream": "^1.6.2", "debug": "^2.6.9", @@ -17884,16 +18103,18 @@ }, "node_modules/extract-zip/node_modules/debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/extract-zip/node_modules/mkdirp": { "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, - "license": "MIT", "dependencies": { "minimist": "^1.2.6" }, @@ -17903,8 +18124,9 @@ }, "node_modules/extract-zip/node_modules/ms": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true }, "node_modules/falafel": { "version": "2.2.5", @@ -17946,7 +18168,6 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -17962,7 +18183,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -17981,8 +18201,9 @@ }, "node_modules/fast-json-parse": { "version": "1.0.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-json-parse/-/fast-json-parse-1.0.3.tgz", + "integrity": "sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==", + "dev": true }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", @@ -17992,17 +18213,13 @@ "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" - }, - "node_modules/fast-memoize": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz", - "integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==" + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true }, "node_modules/fast-xml-parser": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.3.2.tgz", - "integrity": "sha512-rmrXUXwbJedoXkStenj1kkljNF7ugn5ZjR9FJcwmCfcCbtOMDghPajbc+Tck6vE6F5XsDmx+Pr2le9fw8+pXBg==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.0.tgz", + "integrity": "sha512-kLY3jFlwIYwBNDojclKsNAC12sfD6NwW74QB2CoNGPvtVxjliYehVunB3HYyNi+n4Tt1dAcgwYvmKF/Z18flqg==", "funding": [ { "type": "github", @@ -18031,10 +18248,9 @@ } }, "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dependencies": { "reusify": "^1.0.4" } @@ -18081,16 +18297,18 @@ }, "node_modules/fd-slicer": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", "dev": true, - "license": "MIT", "dependencies": { "pend": "~1.2.0" } }, "node_modules/fetch-retry": { "version": "5.0.6", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/fetch-retry/-/fetch-retry-5.0.6.tgz", + "integrity": "sha512-3yurQZ2hD9VISAhJJP9bpYFNQrHHBXE2JxxjY5aLEcDi46RmAzJE2OC9FAde0yis5ElW0jTTzs0zfg/Cca4XqQ==", + "dev": true }, "node_modules/fflate": { "version": "0.4.8", @@ -18128,6 +18346,23 @@ "webpack": "^4.0.0 || ^5.0.0" } }, + "node_modules/file-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, "node_modules/file-selector": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.6.0.tgz", @@ -18141,8 +18376,9 @@ }, "node_modules/file-system-cache": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/file-system-cache/-/file-system-cache-2.3.0.tgz", + "integrity": "sha512-l4DMNdsIPsVnKrgEXbJwDJsA5mB8rGwHYERMgqQx/xAUtChPJMre1bXBzDEqqVbWv9AIbFezXMxeEkZDSrXUOQ==", "dev": true, - "license": "MIT", "dependencies": { "fs-extra": "11.1.1", "ramda": "0.29.0" @@ -18150,8 +18386,9 @@ }, "node_modules/file-system-cache/node_modules/fs-extra": { "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -18163,24 +18400,27 @@ }, "node_modules/filelist": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dev": true, - "license": "Apache-2.0", "dependencies": { "minimatch": "^5.0.1" } }, "node_modules/filelist/node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/filelist/node_modules/minimatch": { "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -18189,9 +18429,9 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -18368,9 +18608,9 @@ } }, "node_modules/flatted": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", "dev": true }, "node_modules/flatten-vertex-data": { @@ -18383,15 +18623,15 @@ } }, "node_modules/flow-enums-runtime": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.5.tgz", - "integrity": "sha512-PSZF9ZuaZD03sT9YaIs0FrGJ7lSUw7rHZIex+73UYVXg46eL/wxN5PaVcPJFudE2cJu5f0fezitV5aBkLHPUOQ==", + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz", + "integrity": "sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==", "peer": true }, "node_modules/flow-parser": { - "version": "0.206.0", - "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.206.0.tgz", - "integrity": "sha512-HVzoK3r6Vsg+lKvlIZzaWNBVai+FXTX1wdYhz/wVlH13tb/gOdLXmlTqy6odmTBhT5UoWUbq0k8263Qhr9d88w==", + "version": "0.238.0", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.238.0.tgz", + "integrity": "sha512-VE7XSv1epljsIN2YeBnxCmGJihpNIAnLLu/pPOdA+Gkso7qDltJwUi6vfHjgxdBbjSdAuPGnhuOHJUQG+yYwIg==", "engines": { "node": ">=0.4.0" } @@ -18464,11 +18704,10 @@ } }, "node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", + "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", "dev": true, - "license": "ISC", "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^4.0.1" @@ -18494,8 +18733,9 @@ }, "node_modules/fork-ts-checker-webpack-plugin": { "version": "8.0.0", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-8.0.0.tgz", + "integrity": "sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.16.7", "chalk": "^4.1.2", @@ -18521,8 +18761,9 @@ }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -18535,8 +18776,9 @@ }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -18550,8 +18792,9 @@ }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -18563,16 +18806,36 @@ }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -18582,8 +18845,9 @@ }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/tapable": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } @@ -18679,8 +18943,9 @@ }, "node_modules/fs-constants": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true }, "node_modules/fs-extra": { "version": "11.2.0", @@ -18727,9 +18992,9 @@ "dev": true }, "node_modules/fs-monkey": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", - "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", + "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==", "dev": true }, "node_modules/fs.realpath": { @@ -18795,6 +19060,7 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "deprecated": "This package is no longer supported.", "dev": true, "dependencies": { "aproba": "^1.0.3 || ^2.0.0", @@ -18865,15 +19131,19 @@ "peer": true }, "node_modules/get-intrinsic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", - "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dependencies": { + "es-errors": "^1.3.0", "function-bind": "^1.1.2", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", "hasown": "^2.0.0" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -18891,7 +19161,6 @@ "resolved": "https://registry.npmjs.org/get-npm-tarball-url/-/get-npm-tarball-url-2.1.0.tgz", "integrity": "sha512-ro+DiMu5DXgRBabqXupW38h7WPZ9+Ad8UjwhvsmmN8w1sU7ab0nzAXvVZ4kqYg57OrqomRtJvepX5/xvFKNtjA==", "dev": true, - "license": "MIT", "engines": { "node": ">=12.17" } @@ -18907,8 +19176,9 @@ }, "node_modules/get-port": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", + "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" }, @@ -18937,12 +19207,13 @@ } }, "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" }, "engines": { "node": ">= 0.4" @@ -18952,59 +19223,29 @@ } }, "node_modules/giget": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/giget/-/giget-1.1.3.tgz", - "integrity": "sha512-zHuCeqtfgqgDwvXlR84UNgnJDuUHQcNI5OqWqFxxuk2BshuKbYhJWdxBsEo4PvKqoGh23lUAIvBNpChMLv7/9Q==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/giget/-/giget-1.2.3.tgz", + "integrity": "sha512-8EHPljDvs7qKykr6uw8b+lqLiUc/vUg+KVTI0uND4s63TdsZM2Xus3mflvF0DDG9SiM4RlCkFGL+7aAjRmV7KA==", "dev": true, - "license": "MIT", "dependencies": { - "colorette": "^2.0.20", - "defu": "^6.1.2", - "https-proxy-agent": "^7.0.2", - "mri": "^1.2.0", - "node-fetch-native": "^1.4.0", - "pathe": "^1.1.1", + "citty": "^0.1.6", + "consola": "^3.2.3", + "defu": "^6.1.4", + "node-fetch-native": "^1.6.3", + "nypm": "^0.3.8", + "ohash": "^1.1.3", + "pathe": "^1.1.2", "tar": "^6.2.0" }, "bin": { "giget": "dist/cli.mjs" } }, - "node_modules/giget/node_modules/agent-base": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", - "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", - "dev": true, - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/giget/node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true - }, - "node_modules/giget/node_modules/https-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", - "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", - "dev": true, - "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/github-slugger": { "version": "1.5.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.5.0.tgz", + "integrity": "sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==", + "dev": true }, "node_modules/gl-mat4": { "version": "1.2.0", @@ -19019,9 +19260,9 @@ "peer": true }, "node_modules/gl-text": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/gl-text/-/gl-text-1.3.1.tgz", - "integrity": "sha512-/f5gcEMiZd+UTBJLTl3D+CkCB/0UFGTx3nflH8ZmyWcLkZhsZ1+Xx5YYkw2rgWAzgPeE35xCqBuHSoMKQVsR+w==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/gl-text/-/gl-text-1.4.0.tgz", + "integrity": "sha512-o47+XBqLCj1efmuNyCHt7/UEJmB9l66ql7pnobD6p+sgmBUdzfMZXIF0zD2+KRfpd99DJN+QXdvTFAGCKCVSmQ==", "peer": true, "dependencies": { "bit-twiddle": "^1.0.2", @@ -19059,12 +19300,12 @@ } }, "node_modules/glob": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.2.tgz", - "integrity": "sha512-BTv/JhKXFEHsErMte/AnfiSv8yYOLLiyH2lTg8vn02O21zWFgHPTfxtgn1QRe7NRgggUhC8hacR2Re94svHqeA==", + "version": "9.3.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", + "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", "dependencies": { "fs.realpath": "^1.0.0", - "minimatch": "^7.4.1", + "minimatch": "^8.0.2", "minipass": "^4.2.4", "path-scurry": "^1.6.1" }, @@ -19101,14 +19342,14 @@ } }, "node_modules/glob/node_modules/minimatch": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", - "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", + "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", "dependencies": { "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -19140,11 +19381,12 @@ } }, "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dependencies": { - "define-properties": "^1.1.3" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -19191,6 +19433,7 @@ "version": "7.1.7", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -19422,9 +19665,9 @@ } }, "node_modules/goober": { - "version": "2.1.13", - "resolved": "https://registry.npmjs.org/goober/-/goober-2.1.13.tgz", - "integrity": "sha512-jFj3BQeleOoy7t93E9rZ2de+ScC4lQICLwiAQmKMg9F6roKGaLSHoCDYKkWlSafg138jejvq/mTdvmnwDQgqoQ==", + "version": "2.1.14", + "resolved": "https://registry.npmjs.org/goober/-/goober-2.1.14.tgz", + "integrity": "sha512-4UpC0NdGyAFqLNPnhCT2iHpza2q+RAY3GV85a/mRPdzyPQMsj0KmMMuetdIkzWRbJ+Hgau1EZztq8ImmiMGhsg==", "peerDependencies": { "csstype": "^3.0.10" } @@ -19459,8 +19702,9 @@ }, "node_modules/gunzip-maybe": { "version": "1.4.2", + "resolved": "https://registry.npmjs.org/gunzip-maybe/-/gunzip-maybe-1.4.2.tgz", + "integrity": "sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw==", "dev": true, - "license": "MIT", "dependencies": { "browserify-zlib": "^0.1.4", "is-deflate": "^1.0.0", @@ -19481,8 +19725,9 @@ }, "node_modules/handlebars": { "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", "dev": true, - "license": "MIT", "dependencies": { "minimist": "^1.2.5", "neo-async": "^2.6.2", @@ -19517,14 +19762,6 @@ "node": ">=6" } }, - "node_modules/has": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", - "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", @@ -19535,7 +19772,8 @@ }, "node_modules/has-flag": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "engines": { "node": ">=4" } @@ -19559,20 +19797,20 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", - "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dependencies": { - "get-intrinsic": "^1.2.2" + "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "engines": { "node": ">= 0.4" }, @@ -19592,11 +19830,11 @@ } }, "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dependencies": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -19612,9 +19850,9 @@ "dev": true }, "node_modules/hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dependencies": { "function-bind": "^1.1.2" }, @@ -19653,20 +19891,6 @@ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" }, - "node_modules/hast-util-to-jsx-runtime/node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" - }, - "node_modules/hast-util-to-jsx-runtime/node_modules/space-separated-tokens": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", - "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/hast-util-whitespace": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", @@ -19689,18 +19913,18 @@ } }, "node_modules/hermes-estree": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.12.0.tgz", - "integrity": "sha512-+e8xR6SCen0wyAKrMT3UD0ZCCLymKhRgjEB5sS28rKiFir/fXgLoeRilRUssFCILmGHb+OvHDUlhxs0+IEyvQw==", + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.19.1.tgz", + "integrity": "sha512-daLGV3Q2MKk8w4evNMKwS8zBE/rcpA800nu1Q5kM08IKijoSnPe9Uo1iIxzPKRkn95IxxsgBMPeYHt3VG4ej2g==", "peer": true }, "node_modules/hermes-parser": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.12.0.tgz", - "integrity": "sha512-d4PHnwq6SnDLhYl3LHNHvOg7nQ6rcI7QVil418REYksv0Mh3cEkHDcuhGxNQ3vgnLSLl4QSvDrFCwQNYdpWlzw==", + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.19.1.tgz", + "integrity": "sha512-Vp+bXzxYJWrpEuJ/vXxUsLnt0+y4q9zyi4zUlkLqD8FKv4LjIfOvP69R/9Lty3dCyKh0E2BU7Eypqr63/rKT/A==", "peer": true, "dependencies": { - "hermes-estree": "0.12.0" + "hermes-estree": "0.19.1" } }, "node_modules/hermes-profile-transformer": { @@ -19715,6 +19939,15 @@ "node": ">=8" } }, + "node_modules/hermes-profile-transformer/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "peer": true, + "engines": { + "node": ">= 8" + } + }, "node_modules/hoist-non-react-statics": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", @@ -19723,6 +19956,11 @@ "react-is": "^16.7.0" } }, + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, "node_modules/hosted-git-info": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", @@ -19808,9 +20046,9 @@ "peer": true }, "node_modules/html-entities": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz", - "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", + "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", "dev": true, "funding": [ { @@ -19880,8 +20118,9 @@ }, "node_modules/html-tags": { "version": "3.3.1", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" }, @@ -19899,9 +20138,9 @@ } }, "node_modules/html-webpack-plugin": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz", - "integrity": "sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz", + "integrity": "sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==", "dev": true, "dependencies": { "@types/html-minifier-terser": "^6.0.0", @@ -19918,7 +20157,16 @@ "url": "https://opencollective.com/html-webpack-plugin" }, "peerDependencies": { + "@rspack/core": "0.x || 1.x", "webpack": "^5.20.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, "node_modules/html-webpack-plugin/node_modules/commander": { @@ -20155,9 +20403,9 @@ } }, "node_modules/i18next-http-backend": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/i18next-http-backend/-/i18next-http-backend-2.4.2.tgz", - "integrity": "sha512-wKrgGcaFQ4EPjfzBTjzMU0rbFTYpa0S5gv9N/d8WBmWS64+IgJb7cHddMvV+tUkse7vUfco3eVs2lB+nJhPo3w==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/i18next-http-backend/-/i18next-http-backend-2.5.2.tgz", + "integrity": "sha512-+K8HbDfrvc1/2X8jpb7RLhI9ZxBDpx3xogYkQwGKlWAUXLSEGXzgdt3EcUjLlBCdMwdQY+K+EUF6oh8oB6rwHw==", "dependencies": { "cross-fetch": "4.0.0" } @@ -20213,18 +20461,18 @@ ] }, "node_modules/ignore": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", - "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true, "engines": { "node": ">= 4" } }, "node_modules/image-size": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.2.tgz", - "integrity": "sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.1.1.tgz", + "integrity": "sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==", "peer": true, "dependencies": { "queue": "6.0.2" @@ -20233,14 +20481,13 @@ "image-size": "bin/image-size.js" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.x" } }, "node_modules/immediate": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz", - "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==", - "optional": true + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" }, "node_modules/immer": { "version": "9.0.21", @@ -20398,6 +20645,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -20409,16 +20657,16 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/inline-style-parser": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.2.tgz", - "integrity": "sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ==" + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.3.tgz", + "integrity": "sha512-qlD8YNDqyTKTyuITrDOffsl6Tdhv+UC4hcdAVuQsK4IMQ99nSgd1MIA/Q+jQYoh9r3hVUXhYh7urSRmXPkW04g==" }, "node_modules/internal-slot": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", - "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dependencies": { - "get-intrinsic": "^1.2.2", + "es-errors": "^1.3.0", "hasown": "^2.0.0", "side-channel": "^1.0.4" }, @@ -20443,11 +20691,24 @@ "loose-envify": "^1.0.0" } }, - "node_modules/ip": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.9.tgz", - "integrity": "sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ==", - "peer": true + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dev": true, + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/ip-address/node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "dev": true }, "node_modules/ipaddr.js": { "version": "1.9.1", @@ -20460,8 +20721,9 @@ }, "node_modules/is-absolute-url": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -20505,13 +20767,15 @@ } }, "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "dependencies": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -20592,11 +20856,28 @@ } }, "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz", + "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==", "dependencies": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -20627,8 +20908,9 @@ }, "node_modules/is-deflate": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-deflate/-/is-deflate-1.0.0.tgz", + "integrity": "sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ==", + "dev": true }, "node_modules/is-directory": { "version": "0.3.1", @@ -20643,7 +20925,6 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, "bin": { "is-docker": "cli.js" }, @@ -20696,12 +20977,11 @@ } }, "node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "peer": true, + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/is-generator-fn": { @@ -20715,8 +20995,9 @@ }, "node_modules/is-generator-function": { "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", "dev": true, - "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -20740,8 +21021,9 @@ }, "node_modules/is-gzip": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-gzip/-/is-gzip-1.0.0.tgz", + "integrity": "sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -20779,10 +21061,13 @@ "dev": true }, "node_modules/is-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", - "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", "dev": true, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -20795,8 +21080,9 @@ }, "node_modules/is-nan": { "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.0", "define-properties": "^1.1.3" @@ -20809,9 +21095,9 @@ } }, "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "engines": { "node": ">= 0.4" }, @@ -20852,8 +21138,9 @@ }, "node_modules/is-path-cwd": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } @@ -20900,20 +21187,26 @@ } }, "node_modules/is-set": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", - "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", "dev": true, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dependencies": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -20976,11 +21269,11 @@ "integrity": "sha512-LAYzo9kMT1b2p19L/1ATGt2XcSilnzNlyvq6c0pbPRVisLbAPpLqr53tIJS00kvrTkj0HtR8U7+u8X0yR8lPSw==" }, "node_modules/is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dependencies": { - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -21001,10 +21294,13 @@ } }, "node_modules/is-weakmap": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", - "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", "dev": true, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -21021,25 +21317,30 @@ } }, "node_modules/is-weakset": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", - "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", - "peer": true, + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dependencies": { + "is-docker": "^2.0.0" + }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/isarray": { @@ -21203,9 +21504,9 @@ } }, "node_modules/istanbul-reports": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", - "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", "dev": true, "dependencies": { "html-escaper": "^2.0.0", @@ -21229,9 +21530,9 @@ } }, "node_modules/its-fine": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/its-fine/-/its-fine-1.1.1.tgz", - "integrity": "sha512-v1Ia1xl20KbuSGlwoaGsW0oxsw8Be+TrXweidxD9oT/1lAh6O3K3/GIM95Tt6WCiv6W+h2M7RB1TwdoAjQyyKw==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/its-fine/-/its-fine-1.2.5.tgz", + "integrity": "sha512-fXtDA0X0t0eBYAGLVM5YsgJGsJ5jEmqZEPrGbzdf5awjv0xE7nqv3TVnvtUF060Tkes15DbDAKW/I48vsb6SyA==", "peer": true, "dependencies": { "@types/react-reconciler": "^0.28.0" @@ -21250,11 +21551,10 @@ } }, "node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz", + "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==", "dev": true, - "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -21269,9 +21569,10 @@ } }, "node_modules/jake": { - "version": "10.8.7", + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.1.tgz", + "integrity": "sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w==", "dev": true, - "license": "Apache-2.0", "dependencies": { "async": "^3.2.3", "chalk": "^4.0.2", @@ -21287,8 +21588,9 @@ }, "node_modules/jake/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -21301,8 +21603,9 @@ }, "node_modules/jake/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -21316,16 +21619,18 @@ }, "node_modules/jake/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jake/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -21436,9 +21741,9 @@ } }, "node_modules/jest-circus/node_modules/dedent": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", - "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", "dev": true, "peerDependencies": { "babel-plugin-macros": "^3.1.0" @@ -21484,12 +21789,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-circus/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - }, "node_modules/jest-circus/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -21667,6 +21966,7 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -21718,12 +22018,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-config/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - }, "node_modules/jest-config/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -21817,12 +22111,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-diff/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - }, "node_modules/jest-diff/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -21929,12 +22217,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-each/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - }, "node_modules/jest-each/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -22048,12 +22330,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-leak-detector/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - }, "node_modules/jest-matcher-utils": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", @@ -22135,12 +22411,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-matcher-utils/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - }, "node_modules/jest-matcher-utils/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -22233,11 +22503,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-message-util/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" - }, "node_modules/jest-message-util/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -22602,6 +22867,7 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -22750,12 +23016,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-snapshot/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - }, "node_modules/jest-snapshot/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -22909,11 +23169,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-validate/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" - }, "node_modules/jest-validate/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -23000,7 +23255,6 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", - "dev": true, "dependencies": { "@types/node": "*", "jest-util": "^29.7.0", @@ -23015,7 +23269,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "engines": { "node": ">=8" } @@ -23024,7 +23277,6 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -23036,14 +23288,14 @@ } }, "node_modules/joi": { - "version": "17.11.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.11.0.tgz", - "integrity": "sha512-NgB+lZLNoqISVy1rZocE9PZI36bL/77ie924Ri43yEvi9GUUMPeyVIr8KdFTMUlby1p0PBYMk9spIxEUQYqrJQ==", + "version": "17.13.3", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", + "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==", "peer": true, "dependencies": { - "@hapi/hoek": "^9.0.0", - "@hapi/topo": "^5.0.0", - "@sideway/address": "^4.1.3", + "@hapi/hoek": "^9.3.0", + "@hapi/topo": "^5.1.0", + "@sideway/address": "^4.1.5", "@sideway/formula": "^3.0.1", "@sideway/pinpoint": "^2.0.0" } @@ -23071,6 +23323,12 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "dev": true + }, "node_modules/jsc-android": { "version": "250231.0.0", "resolved": "https://registry.npmjs.org/jsc-android/-/jsc-android-250231.0.0.tgz", @@ -23084,20 +23342,21 @@ "peer": true }, "node_modules/jscodeshift": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.14.0.tgz", - "integrity": "sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==", - "peer": true, + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.15.2.tgz", + "integrity": "sha512-FquR7Okgmc4Sd0aEDwqho3rEiKR3BdvuG9jfdHjLJ6JQoWSMpavug3AoIfnfWhxFlf+5pzQh8qjqz0DWFrNQzA==", + "dev": true, "dependencies": { - "@babel/core": "^7.13.16", - "@babel/parser": "^7.13.16", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.12", - "@babel/plugin-transform-modules-commonjs": "^7.13.8", - "@babel/preset-flow": "^7.13.13", - "@babel/preset-typescript": "^7.13.0", - "@babel/register": "^7.13.16", + "@babel/core": "^7.23.0", + "@babel/parser": "^7.23.0", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.23.0", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", + "@babel/plugin-transform-optional-chaining": "^7.23.0", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/preset-flow": "^7.22.15", + "@babel/preset-typescript": "^7.23.0", + "@babel/register": "^7.22.15", "babel-core": "^7.0.0-bridge.0", "chalk": "^4.1.2", "flow-parser": "0.*", @@ -23105,7 +23364,7 @@ "micromatch": "^4.0.4", "neo-async": "^2.5.0", "node-dir": "^0.1.17", - "recast": "^0.21.0", + "recast": "^0.23.3", "temp": "^0.8.4", "write-file-atomic": "^2.3.0" }, @@ -23114,13 +23373,18 @@ }, "peerDependencies": { "@babel/preset-env": "^7.1.6" + }, + "peerDependenciesMeta": { + "@babel/preset-env": { + "optional": true + } } }, "node_modules/jscodeshift/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "peer": true, + "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -23131,23 +23395,11 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jscodeshift/node_modules/ast-types": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.15.2.tgz", - "integrity": "sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==", - "peer": true, - "dependencies": { - "tslib": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/jscodeshift/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": true, + "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -23163,40 +23415,16 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "peer": true, + "dev": true, "engines": { "node": ">=8" } }, - "node_modules/jscodeshift/node_modules/recast": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.21.5.tgz", - "integrity": "sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==", - "peer": true, - "dependencies": { - "ast-types": "0.15.2", - "esprima": "~4.0.0", - "source-map": "~0.6.1", - "tslib": "^2.0.1" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/jscodeshift/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/jscodeshift/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "peer": true, + "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -23208,7 +23436,7 @@ "version": "2.4.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", - "peer": true, + "dev": true, "dependencies": { "graceful-fs": "^4.1.11", "imurmurhash": "^0.1.4", @@ -23295,17 +23523,17 @@ } }, "node_modules/jspdf-autotable": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/jspdf-autotable/-/jspdf-autotable-3.7.1.tgz", - "integrity": "sha512-5fgjqE8nIwUoNz5l/i/aD/uONKofE4yp/kJ097EKBllPVTPGnGV5OWHld30db3+CvNrgzrRl8gmTnKF6vag05g==", + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/jspdf-autotable/-/jspdf-autotable-3.8.2.tgz", + "integrity": "sha512-zW1ix99/mtR4MbIni7IqvrpfHmuTaICl6iv6wqjRN86Nxtwaw/QtOeDbpXqYSzHIJK9JvgtLM283sc5x+ipkJg==", "peerDependencies": { "jspdf": "^2.5.1" } }, "node_modules/jspdf/node_modules/dompurify": { - "version": "2.4.7", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.4.7.tgz", - "integrity": "sha512-kxxKlPEDa6Nc5WJi+qRgPbOAbgTpSULL+vI3NUXsZMlkJxTqYI9wg5ZTay2sFrdZRWHPWNi+EdAhcJf81WtoMQ==", + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.5.5.tgz", + "integrity": "sha512-FgbqnEPiv5Vdtwt6Mxl7XSylttCC03cqP5ldNT2z+Kj0nLxPHJH4+1Cyf5Jasxhw93Rl4Oo11qRoUV72fmya2Q==", "optional": true }, "node_modules/jsqr": { @@ -23375,9 +23603,9 @@ } }, "node_modules/konva": { - "version": "9.2.3", - "resolved": "https://registry.npmjs.org/konva/-/konva-9.2.3.tgz", - "integrity": "sha512-oQ6VQ6kUL9IlhOGuEKKhxqnv6g/t8jZpVuWahQQ6hCqAsO8Ydi1zFGv7ef4EOq5GoPNq/d6Fyj/3i5Y/a5NooA==", + "version": "9.3.12", + "resolved": "https://registry.npmjs.org/konva/-/konva-9.3.12.tgz", + "integrity": "sha512-IxX+ka+gVGm63APkB/taepMxpbUdjfLBUA1OIqx7nbH3126Df6eAuVWasH3qh3vg4ctRseops031sZO0b2O33A==", "funding": [ { "type": "patreon", @@ -23394,10 +23622,21 @@ ], "peer": true }, + "node_modules/launch-editor": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.8.0.tgz", + "integrity": "sha512-vJranOAJrI/llyWGRQqiDM+adrw+k83fvmmx3+nV47g3+36xM15jE+zyZ6Ffel02+xSvuM0b2GDRosXZkbb6wA==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.8.1" + } + }, "node_modules/lazy-universal-dotenv": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lazy-universal-dotenv/-/lazy-universal-dotenv-4.0.0.tgz", + "integrity": "sha512-aXpZJRnTkpK6gQ/z4nk+ZBLd/Qdp118cvPruLSIQzQNRhKwEcdXCOzXuF55VDqIiuAaY3UGZ10DJtvZzDcvsxg==", "dev": true, - "license": "Apache-2.0", "dependencies": { "app-root-dir": "^1.0.2", "dotenv": "^16.0.0", @@ -23610,13 +23849,14 @@ } }, "node_modules/lib0": { - "version": "0.2.88", - "resolved": "https://registry.npmjs.org/lib0/-/lib0-0.2.88.tgz", - "integrity": "sha512-KyroiEvCeZcZEMx5Ys+b4u4eEBbA1ch7XUaBhYpwa/nPMrzTjUhI4RfcytmQfYoTBPcdyx+FX6WFNIoNuJzJfQ==", + "version": "0.2.94", + "resolved": "https://registry.npmjs.org/lib0/-/lib0-0.2.94.tgz", + "integrity": "sha512-hZ3p54jL4Wpu7IOg26uC7dnEWiMyNlUrb9KoG7+xYs45WkQwpVvKFndVq2+pqLYKe1u8Fp3+zAfZHVvTK34PvQ==", "dependencies": { "isomorphic.js": "^0.2.4" }, "bin": { + "0ecdsa-generate-keypair": "bin/0ecdsa-generate-keypair.js", "0gentesthtml": "bin/gentesthtml.js", "0serve": "bin/0serve.js" }, @@ -23628,6 +23868,39 @@ "url": "https://github.com/sponsors/dmonad" } }, + "node_modules/lie": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", + "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==", + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/lighthouse-logger": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz", + "integrity": "sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==", + "peer": true, + "dependencies": { + "debug": "^2.6.9", + "marky": "^1.2.2" + } + }, + "node_modules/lighthouse-logger/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "peer": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/lighthouse-logger/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "peer": true + }, "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", @@ -23654,6 +23927,14 @@ "node": ">=8.9.0" } }, + "node_modules/localforage": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", + "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", + "dependencies": { + "lie": "3.1.1" + } + }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -23690,7 +23971,8 @@ }, "node_modules/lodash.memoize": { "version": "4.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" }, "node_modules/lodash.merge": { "version": "4.6.2", @@ -23699,11 +23981,13 @@ }, "node_modules/lodash.reduce": { "version": "4.6.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", + "integrity": "sha512-6raRe2vxCYBhpBu+B+TtNGUzah+hQjVdu3E17wfusjyrXBka2nBS8OH/gjVZ5PvHOhWmIZTYri09Z6n/QfnNMw==" }, "node_modules/lodash.startswith": { "version": "4.2.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.startswith/-/lodash.startswith-4.2.1.tgz", + "integrity": "sha512-XClYR1h4/fJ7H+mmCKppbiBmljN/nGs73iq2SjCT9SF4CBPoUHzLvWmH1GtZMhMBZSiRkHXfeA2RY1eIlJ75ww==" }, "node_modules/lodash.throttle": { "version": "4.1.1", @@ -23982,18 +24266,19 @@ }, "node_modules/lz-string": { "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", "dev": true, - "license": "MIT", "bin": { "lz-string": "bin/bin.js" } }, "node_modules/magic-string": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", - "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", + "version": "0.30.8", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz", + "integrity": "sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.13" + "@jridgewell/sourcemap-codec": "^1.4.15" }, "engines": { "node": ">=12" @@ -24133,16 +24418,17 @@ }, "node_modules/map-or-similar": { "version": "1.5.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/map-or-similar/-/map-or-similar-1.5.0.tgz", + "integrity": "sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==", + "dev": true }, "node_modules/mapbox-gl": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/mapbox-gl/-/mapbox-gl-1.10.1.tgz", - "integrity": "sha512-0aHt+lFUpYfvh0kMIqXqNXqoYMuhuAsMlw87TbhWrw78Tx2zfuPI0Lx31/YPUgJ+Ire0tzQ4JnuBL7acDNXmMg==", + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/mapbox-gl/-/mapbox-gl-1.13.3.tgz", + "integrity": "sha512-p8lJFEiqmEQlyv+DQxFAOG/XPWN0Wp7j/Psq93Zywz7qt9CcUKFYDBOoOEKzqe6gudHVJY8/Bhqw6VDpX2lSBg==", "peer": true, "dependencies": { - "@mapbox/geojson-rewind": "^0.5.0", + "@mapbox/geojson-rewind": "^0.5.2", "@mapbox/geojson-types": "^1.0.2", "@mapbox/jsonlint-lines-primitives": "^2.0.2", "@mapbox/mapbox-gl-supported": "^1.5.0", @@ -24156,13 +24442,12 @@ "geojson-vt": "^3.2.1", "gl-matrix": "^3.2.1", "grid-index": "^1.1.0", - "minimist": "^1.2.5", "murmurhash-js": "^1.0.0", "pbf": "^3.2.1", "potpack": "^1.0.1", "quickselect": "^2.0.0", "rw": "^1.3.3", - "supercluster": "^7.0.0", + "supercluster": "^7.1.0", "tinyqueue": "^2.0.3", "vt-pbf": "^3.1.1" }, @@ -24186,9 +24471,10 @@ } }, "node_modules/markdown-to-jsx": { - "version": "7.3.2", + "version": "7.4.7", + "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.4.7.tgz", + "integrity": "sha512-0+ls1IQZdU6cwM1yu0ZjjiVWYtkbExSyUIFU2ZeDIFuZM1W42Mh4OlJ4nb4apX4H8smxDHRdFaoIVJGwfv5hkg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 10" }, @@ -24196,6 +24482,12 @@ "react": ">= 0.14.0" } }, + "node_modules/marky": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz", + "integrity": "sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==", + "peer": true + }, "node_modules/material-colors": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/material-colors/-/material-colors-1.2.6.tgz", @@ -24212,8 +24504,9 @@ }, "node_modules/mdast-util-definitions": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz", + "integrity": "sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==", "dev": true, - "license": "MIT", "dependencies": { "unist-util-visit": "^2.0.0" }, @@ -24222,10 +24515,55 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/mdast-util-definitions/node_modules/@types/unist": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", + "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==", + "dev": true + }, + "node_modules/mdast-util-definitions/node_modules/unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-definitions/node_modules/unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-definitions/node_modules/unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/mdast-util-from-markdown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.0.tgz", - "integrity": "sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", + "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", @@ -24245,23 +24583,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-from-markdown/node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" - }, - "node_modules/mdast-util-from-markdown/node_modules/mdast-util-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", - "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", - "dependencies": { - "@types/mdast": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/mdast-util-mdx-expression": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.0.tgz", @@ -24280,9 +24601,9 @@ } }, "node_modules/mdast-util-mdx-jsx": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.0.tgz", - "integrity": "sha512-A8AJHlR7/wPQ3+Jre1+1rq040fX9A4Q1jG8JxmSNp/PLPHg80A6475wxTp3KzHpApFH6yWxFotHrJQA3dXP6/w==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.2.tgz", + "integrity": "sha512-eKMQDeywY2wlHc97k5eD8VC+9ASMjN8ItEZQNGwJ6E0XWKiW/Z0V5/H8pvoXUf+y+Mj0VIgeRRbujBmFn4FTyA==", "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", @@ -24303,11 +24624,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-mdx-jsx/node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" - }, "node_modules/mdast-util-mdxjs-esm": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", @@ -24338,27 +24654,10 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-phrasing/node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" - }, - "node_modules/mdast-util-phrasing/node_modules/unist-util-is": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", - "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/mdast-util-to-hast": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.1.0.tgz", - "integrity": "sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", + "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", @@ -24375,50 +24674,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-to-hast/node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" - }, - "node_modules/mdast-util-to-hast/node_modules/unist-util-is": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", - "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-hast/node_modules/unist-util-visit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", - "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-hast/node_modules/unist-util-visit-parents": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", - "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/mdast-util-to-markdown": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz", @@ -24438,12 +24693,7 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-to-markdown/node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" - }, - "node_modules/mdast-util-to-markdown/node_modules/mdast-util-to-string": { + "node_modules/mdast-util-to-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", @@ -24455,54 +24705,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-to-markdown/node_modules/unist-util-is": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", - "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-markdown/node_modules/unist-util-visit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", - "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-markdown/node_modules/unist-util-visit-parents": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", - "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-string": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/mdn-data": { "version": "2.0.14", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", @@ -24537,8 +24739,9 @@ }, "node_modules/memoizerific": { "version": "1.11.3", + "resolved": "https://registry.npmjs.org/memoizerific/-/memoizerific-1.11.3.tgz", + "integrity": "sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==", "dev": true, - "license": "MIT", "dependencies": { "map-or-similar": "^1.5.0" } @@ -24594,14 +24797,14 @@ "dev": true }, "node_modules/merge-refs": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/merge-refs/-/merge-refs-1.2.2.tgz", - "integrity": "sha512-RwcT7GsQR3KbuLw1rRuodq4Nt547BKEBkliZ0qqsrpyNne9bGTFtsFIsIpx82huWhcl3kOlOlH4H0xkPk/DqVw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/merge-refs/-/merge-refs-1.3.0.tgz", + "integrity": "sha512-nqXPXbso+1dcKDpPCXvwZyJILz+vSLqGGOnDrYHQYE+B8n9JTCekVLC65AfCpR4ggVyA/45Y0iR9LDyS2iI+zA==", "funding": { "url": "https://github.com/wojtekmaj/merge-refs?sponsor=1" }, "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "peerDependenciesMeta": { "@types/react": { @@ -24618,7 +24821,6 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, "engines": { "node": ">= 8" } @@ -24633,9 +24835,9 @@ } }, "node_modules/metro": { - "version": "0.76.8", - "resolved": "https://registry.npmjs.org/metro/-/metro-0.76.8.tgz", - "integrity": "sha512-oQA3gLzrrYv3qKtuWArMgHPbHu8odZOD9AoavrqSFllkPgOtmkBvNNDLCELqv5SjBfqjISNffypg+5UGG3y0pg==", + "version": "0.80.9", + "resolved": "https://registry.npmjs.org/metro/-/metro-0.80.9.tgz", + "integrity": "sha512-Bc57Xf3GO2Xe4UWQsBj/oW6YfLPABEu8jfDVDiNmJvoQW4CO34oDPuYKe4KlXzXhcuNsqOtSxpbjCRRVjhhREg==", "peer": true, "dependencies": { "@babel/code-frame": "^7.0.0", @@ -24646,7 +24848,6 @@ "@babel/traverse": "^7.20.0", "@babel/types": "^7.20.0", "accepts": "^1.3.7", - "async": "^3.2.2", "chalk": "^4.0.0", "ci-info": "^2.0.0", "connect": "^3.6.5", @@ -24654,28 +24855,24 @@ "denodeify": "^1.2.1", "error-stack-parser": "^2.0.6", "graceful-fs": "^4.2.4", - "hermes-parser": "0.12.0", + "hermes-parser": "0.20.1", "image-size": "^1.0.2", "invariant": "^2.2.4", - "jest-worker": "^27.2.0", + "jest-worker": "^29.6.3", "jsc-safe-url": "^0.2.2", "lodash.throttle": "^4.1.1", - "metro-babel-transformer": "0.76.8", - "metro-cache": "0.76.8", - "metro-cache-key": "0.76.8", - "metro-config": "0.76.8", - "metro-core": "0.76.8", - "metro-file-map": "0.76.8", - "metro-inspector-proxy": "0.76.8", - "metro-minify-terser": "0.76.8", - "metro-minify-uglify": "0.76.8", - "metro-react-native-babel-preset": "0.76.8", - "metro-resolver": "0.76.8", - "metro-runtime": "0.76.8", - "metro-source-map": "0.76.8", - "metro-symbolicate": "0.76.8", - "metro-transform-plugins": "0.76.8", - "metro-transform-worker": "0.76.8", + "metro-babel-transformer": "0.80.9", + "metro-cache": "0.80.9", + "metro-cache-key": "0.80.9", + "metro-config": "0.80.9", + "metro-core": "0.80.9", + "metro-file-map": "0.80.9", + "metro-resolver": "0.80.9", + "metro-runtime": "0.80.9", + "metro-source-map": "0.80.9", + "metro-symbolicate": "0.80.9", + "metro-transform-plugins": "0.80.9", + "metro-transform-worker": "0.80.9", "mime-types": "^2.1.27", "node-fetch": "^2.2.0", "nullthrows": "^1.1.1", @@ -24691,61 +24888,76 @@ "metro": "src/cli.js" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/metro-babel-transformer": { - "version": "0.76.8", - "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.76.8.tgz", - "integrity": "sha512-Hh6PW34Ug/nShlBGxkwQJSgPGAzSJ9FwQXhUImkzdsDgVu6zj5bx258J8cJVSandjNoQ8nbaHK6CaHlnbZKbyA==", + "version": "0.80.9", + "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.80.9.tgz", + "integrity": "sha512-d76BSm64KZam1nifRZlNJmtwIgAeZhZG3fi3K+EmPOlrR8rDtBxQHDSN3fSGeNB9CirdTyabTMQCkCup6BXFSQ==", "peer": true, "dependencies": { "@babel/core": "^7.20.0", - "hermes-parser": "0.12.0", + "hermes-parser": "0.20.1", "nullthrows": "^1.1.1" }, "engines": { - "node": ">=16" + "node": ">=18" + } + }, + "node_modules/metro-babel-transformer/node_modules/hermes-estree": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.20.1.tgz", + "integrity": "sha512-SQpZK4BzR48kuOg0v4pb3EAGNclzIlqMj3Opu/mu7bbAoFw6oig6cEt/RAi0zTFW/iW6Iz9X9ggGuZTAZ/yZHg==", + "peer": true + }, + "node_modules/metro-babel-transformer/node_modules/hermes-parser": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.20.1.tgz", + "integrity": "sha512-BL5P83cwCogI8D7rrDCgsFY0tdYUtmFP9XaXtl2IQjC+2Xo+4okjfXintlTxcIwl4qeGddEl28Z11kbVIw0aNA==", + "peer": true, + "dependencies": { + "hermes-estree": "0.20.1" } }, "node_modules/metro-cache": { - "version": "0.76.8", - "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.76.8.tgz", - "integrity": "sha512-QBJSJIVNH7Hc/Yo6br/U/qQDUpiUdRgZ2ZBJmvAbmAKp2XDzsapnMwK/3BGj8JNWJF7OLrqrYHsRsukSbUBpvQ==", + "version": "0.80.9", + "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.80.9.tgz", + "integrity": "sha512-ujEdSI43QwI+Dj2xuNax8LMo8UgKuXJEdxJkzGPU6iIx42nYa1byQ+aADv/iPh5sh5a//h5FopraW5voXSgm2w==", "peer": true, "dependencies": { - "metro-core": "0.76.8", + "metro-core": "0.80.9", "rimraf": "^3.0.2" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/metro-cache-key": { - "version": "0.76.8", - "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.76.8.tgz", - "integrity": "sha512-buKQ5xentPig9G6T37Ww/R/bC+/V1MA5xU/D8zjnhlelsrPG6w6LtHUS61ID3zZcMZqYaELWk5UIadIdDsaaLw==", + "version": "0.80.9", + "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.80.9.tgz", + "integrity": "sha512-hRcYGhEiWIdM87hU0fBlcGr+tHDEAT+7LYNCW89p5JhErFt/QaAkVx4fb5bW3YtXGv5BTV7AspWPERoIb99CXg==", "peer": true, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/metro-config": { - "version": "0.76.8", - "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.76.8.tgz", - "integrity": "sha512-SL1lfKB0qGHALcAk2zBqVgQZpazDYvYFGwCK1ikz0S6Y/CM2i2/HwuZN31kpX6z3mqjv/6KvlzaKoTb1otuSAA==", + "version": "0.80.9", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.80.9.tgz", + "integrity": "sha512-28wW7CqS3eJrunRGnsibWldqgwRP9ywBEf7kg+uzUHkSFJNKPM1K3UNSngHmH0EZjomizqQA2Zi6/y6VdZMolg==", "peer": true, "dependencies": { "connect": "^3.6.5", "cosmiconfig": "^5.0.5", - "jest-validate": "^29.2.1", - "metro": "0.76.8", - "metro-cache": "0.76.8", - "metro-core": "0.76.8", - "metro-runtime": "0.76.8" + "jest-validate": "^29.6.3", + "metro": "0.80.9", + "metro-cache": "0.80.9", + "metro-core": "0.80.9", + "metro-runtime": "0.80.9" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/metro-config/node_modules/cosmiconfig": { @@ -24799,22 +25011,22 @@ } }, "node_modules/metro-core": { - "version": "0.76.8", - "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.76.8.tgz", - "integrity": "sha512-sl2QLFI3d1b1XUUGxwzw/KbaXXU/bvFYrSKz6Sg19AdYGWFyzsgZ1VISRIDf+HWm4R/TJXluhWMEkEtZuqi3qA==", + "version": "0.80.9", + "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.80.9.tgz", + "integrity": "sha512-tbltWQn+XTdULkGdzHIxlxk4SdnKxttvQQV3wpqqFbHDteR4gwCyTR2RyYJvxgU7HELfHtrVbqgqAdlPByUSbg==", "peer": true, "dependencies": { "lodash.throttle": "^4.1.1", - "metro-resolver": "0.76.8" + "metro-resolver": "0.80.9" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/metro-file-map": { - "version": "0.76.8", - "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.76.8.tgz", - "integrity": "sha512-A/xP1YNEVwO1SUV9/YYo6/Y1MmzhL4ZnVgcJC3VmHp/BYVOXVStzgVbWv2wILe56IIMkfXU+jpXrGKKYhFyHVw==", + "version": "0.80.9", + "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.80.9.tgz", + "integrity": "sha512-sBUjVtQMHagItJH/wGU9sn3k2u0nrCl0CdR4SFMO1tksXLKbkigyQx4cbpcyPVOAmGTVuy3jyvBlELaGCAhplQ==", "peer": true, "dependencies": { "anymatch": "^3.0.3", @@ -24822,77 +25034,19 @@ "fb-watchman": "^2.0.0", "graceful-fs": "^4.2.4", "invariant": "^2.2.4", - "jest-regex-util": "^27.0.6", - "jest-util": "^27.2.0", - "jest-worker": "^27.2.0", + "jest-worker": "^29.6.3", "micromatch": "^4.0.4", "node-abort-controller": "^3.1.1", "nullthrows": "^1.1.1", "walker": "^1.0.7" }, "engines": { - "node": ">=16" + "node": ">=18" }, "optionalDependencies": { "fsevents": "^2.3.2" } }, - "node_modules/metro-file-map/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "peer": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/metro-file-map/node_modules/@types/yargs": { - "version": "16.0.9", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", - "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", - "peer": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/metro-file-map/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/metro-file-map/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/metro-file-map/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -24902,315 +25056,72 @@ "ms": "2.0.0" } }, - "node_modules/metro-file-map/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/metro-file-map/node_modules/jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", - "peer": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/metro-file-map/node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "peer": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/metro-file-map/node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "peer": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/metro-file-map/node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, "node_modules/metro-file-map/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "peer": true }, - "node_modules/metro-file-map/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/metro-inspector-proxy": { - "version": "0.76.8", - "resolved": "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.76.8.tgz", - "integrity": "sha512-Us5o5UEd4Smgn1+TfHX4LvVPoWVo9VsVMn4Ldbk0g5CQx3Gu0ygc/ei2AKPGTwsOZmKxJeACj7yMH2kgxQP/iw==", - "peer": true, - "dependencies": { - "connect": "^3.6.5", - "debug": "^2.2.0", - "node-fetch": "^2.2.0", - "ws": "^7.5.1", - "yargs": "^17.6.2" - }, - "bin": { - "metro-inspector-proxy": "src/cli.js" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/metro-inspector-proxy/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "peer": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/metro-inspector-proxy/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "peer": true - }, - "node_modules/metro-inspector-proxy/node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "peer": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/metro-minify-terser": { - "version": "0.76.8", - "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.76.8.tgz", - "integrity": "sha512-Orbvg18qXHCrSj1KbaeSDVYRy/gkro2PC7Fy2tDSH1c9RB4aH8tuMOIXnKJE+1SXxBtjWmQ5Yirwkth2DyyEZA==", + "version": "0.80.9", + "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.80.9.tgz", + "integrity": "sha512-FEeCeFbkvvPuhjixZ1FYrXtO0araTpV6UbcnGgDUpH7s7eR5FG/PiJz3TsuuPP/HwCK19cZtQydcA2QrCw446A==", "peer": true, "dependencies": { "terser": "^5.15.0" }, "engines": { - "node": ">=16" - } - }, - "node_modules/metro-minify-uglify": { - "version": "0.76.8", - "resolved": "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.76.8.tgz", - "integrity": "sha512-6l8/bEvtVaTSuhG1FqS0+Mc8lZ3Bl4RI8SeRIifVLC21eeSDp4CEBUWSGjpFyUDfi6R5dXzYaFnSgMNyfxADiQ==", - "peer": true, - "dependencies": { - "uglify-es": "^3.1.9" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/metro-react-native-babel-preset": { - "version": "0.76.8", - "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.76.8.tgz", - "integrity": "sha512-Ptza08GgqzxEdK8apYsjTx2S8WDUlS2ilBlu9DR1CUcHmg4g3kOkFylZroogVAUKtpYQNYwAvdsjmrSdDNtiAg==", - "peer": true, - "dependencies": { - "@babel/core": "^7.20.0", - "@babel/plugin-proposal-async-generator-functions": "^7.0.0", - "@babel/plugin-proposal-class-properties": "^7.18.0", - "@babel/plugin-proposal-export-default-from": "^7.0.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.0", - "@babel/plugin-proposal-numeric-separator": "^7.0.0", - "@babel/plugin-proposal-object-rest-spread": "^7.20.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", - "@babel/plugin-proposal-optional-chaining": "^7.20.0", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", - "@babel/plugin-syntax-export-default-from": "^7.0.0", - "@babel/plugin-syntax-flow": "^7.18.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", - "@babel/plugin-syntax-optional-chaining": "^7.0.0", - "@babel/plugin-transform-arrow-functions": "^7.0.0", - "@babel/plugin-transform-async-to-generator": "^7.20.0", - "@babel/plugin-transform-block-scoping": "^7.0.0", - "@babel/plugin-transform-classes": "^7.0.0", - "@babel/plugin-transform-computed-properties": "^7.0.0", - "@babel/plugin-transform-destructuring": "^7.20.0", - "@babel/plugin-transform-flow-strip-types": "^7.20.0", - "@babel/plugin-transform-function-name": "^7.0.0", - "@babel/plugin-transform-literals": "^7.0.0", - "@babel/plugin-transform-modules-commonjs": "^7.0.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0", - "@babel/plugin-transform-parameters": "^7.0.0", - "@babel/plugin-transform-react-display-name": "^7.0.0", - "@babel/plugin-transform-react-jsx": "^7.0.0", - "@babel/plugin-transform-react-jsx-self": "^7.0.0", - "@babel/plugin-transform-react-jsx-source": "^7.0.0", - "@babel/plugin-transform-runtime": "^7.0.0", - "@babel/plugin-transform-shorthand-properties": "^7.0.0", - "@babel/plugin-transform-spread": "^7.0.0", - "@babel/plugin-transform-sticky-regex": "^7.0.0", - "@babel/plugin-transform-typescript": "^7.5.0", - "@babel/plugin-transform-unicode-regex": "^7.0.0", - "@babel/template": "^7.0.0", - "babel-plugin-transform-flow-enums": "^0.0.2", - "react-refresh": "^0.4.0" - }, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "@babel/core": "*" - } - }, - "node_modules/metro-react-native-babel-preset/node_modules/react-refresh": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz", - "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/metro-react-native-babel-transformer": { - "version": "0.76.8", - "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.76.8.tgz", - "integrity": "sha512-3h+LfS1WG1PAzhq8QF0kfXjxuXetbY/lgz8vYMQhgrMMp17WM1DNJD0gjx8tOGYbpbBC1qesJ45KMS4o5TA73A==", - "peer": true, - "dependencies": { - "@babel/core": "^7.20.0", - "babel-preset-fbjs": "^3.4.0", - "hermes-parser": "0.12.0", - "metro-react-native-babel-preset": "0.76.8", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "@babel/core": "*" + "node": ">=18" } }, "node_modules/metro-resolver": { - "version": "0.76.8", - "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.76.8.tgz", - "integrity": "sha512-KccOqc10vrzS7ZhG2NSnL2dh3uVydarB7nOhjreQ7C4zyWuiW9XpLC4h47KtGQv3Rnv/NDLJYeDqaJ4/+140HQ==", + "version": "0.80.9", + "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.80.9.tgz", + "integrity": "sha512-wAPIjkN59BQN6gocVsAvvpZ1+LQkkqUaswlT++cJafE/e54GoVkMNCmrR4BsgQHr9DknZ5Um/nKueeN7kaEz9w==", "peer": true, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/metro-runtime": { - "version": "0.76.8", - "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.76.8.tgz", - "integrity": "sha512-XKahvB+iuYJSCr3QqCpROli4B4zASAYpkK+j3a0CJmokxCDNbgyI4Fp88uIL6rNaZfN0Mv35S0b99SdFXIfHjg==", + "version": "0.80.9", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.80.9.tgz", + "integrity": "sha512-8PTVIgrVcyU+X/rVCy/9yxNlvXsBCk5JwwkbAm/Dm+Abo6NBGtNjWF0M1Xo/NWCb4phamNWcD7cHdR91HhbJvg==", "peer": true, "dependencies": { - "@babel/runtime": "^7.0.0", - "react-refresh": "^0.4.0" + "@babel/runtime": "^7.0.0" }, "engines": { - "node": ">=16" - } - }, - "node_modules/metro-runtime/node_modules/react-refresh": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz", - "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==", - "peer": true, - "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, "node_modules/metro-source-map": { - "version": "0.76.8", - "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.76.8.tgz", - "integrity": "sha512-Hh0ncPsHPVf6wXQSqJqB3K9Zbudht4aUtNpNXYXSxH+pteWqGAXnjtPsRAnCsCWl38wL0jYF0rJDdMajUI3BDw==", + "version": "0.80.9", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.80.9.tgz", + "integrity": "sha512-RMn+XS4VTJIwMPOUSj61xlxgBvPeY4G6s5uIn6kt6HB6A/k9ekhr65UkkDD7WzHYs3a9o869qU8tvOZvqeQzgw==", "peer": true, "dependencies": { "@babel/traverse": "^7.20.0", "@babel/types": "^7.20.0", "invariant": "^2.2.4", - "metro-symbolicate": "0.76.8", + "metro-symbolicate": "0.80.9", "nullthrows": "^1.1.1", - "ob1": "0.76.8", + "ob1": "0.80.9", "source-map": "^0.5.6", "vlq": "^1.0.0" }, "engines": { - "node": ">=16" - } - }, - "node_modules/metro-source-map/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "peer": true, - "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, "node_modules/metro-symbolicate": { - "version": "0.76.8", - "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.76.8.tgz", - "integrity": "sha512-LrRL3uy2VkzrIXVlxoPtqb40J6Bf1mlPNmUQewipc3qfKKFgtPHBackqDy1YL0njDsWopCKcfGtFYLn0PTUn3w==", + "version": "0.80.9", + "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.80.9.tgz", + "integrity": "sha512-Ykae12rdqSs98hg41RKEToojuIW85wNdmSe/eHUgMkzbvCFNVgcC0w3dKZEhSsqQOXapXRlLtHkaHLil0UD/EA==", "peer": true, "dependencies": { "invariant": "^2.2.4", - "metro-source-map": "0.76.8", + "metro-source-map": "0.80.9", "nullthrows": "^1.1.1", "source-map": "^0.5.6", "through2": "^2.0.1", @@ -25220,22 +25131,13 @@ "metro-symbolicate": "src/index.js" }, "engines": { - "node": ">=16" - } - }, - "node_modules/metro-symbolicate/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "peer": true, - "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, "node_modules/metro-transform-plugins": { - "version": "0.76.8", - "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.76.8.tgz", - "integrity": "sha512-PlkGTQNqS51Bx4vuufSQCdSn2R2rt7korzngo+b5GCkeX5pjinPjnO2kNhQ8l+5bO0iUD/WZ9nsM2PGGKIkWFA==", + "version": "0.80.9", + "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.80.9.tgz", + "integrity": "sha512-UlDk/uc8UdfLNJhPbF3tvwajyuuygBcyp+yBuS/q0z3QSuN/EbLllY3rK8OTD9n4h00qZ/qgxGv/lMFJkwP4vg==", "peer": true, "dependencies": { "@babel/core": "^7.20.0", @@ -25245,30 +25147,30 @@ "nullthrows": "^1.1.1" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/metro-transform-worker": { - "version": "0.76.8", - "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.76.8.tgz", - "integrity": "sha512-mE1fxVAnJKmwwJyDtThildxxos9+DGs9+vTrx2ktSFMEVTtXS/bIv2W6hux1pqivqAfyJpTeACXHk5u2DgGvIQ==", + "version": "0.80.9", + "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.80.9.tgz", + "integrity": "sha512-c/IrzMUVnI0hSVVit4TXzt3A1GiUltGVlzCmLJWxNrBGHGrJhvgePj38+GXl1Xf4Fd4vx6qLUkKMQ3ux73bFLQ==", "peer": true, "dependencies": { "@babel/core": "^7.20.0", "@babel/generator": "^7.20.0", "@babel/parser": "^7.20.0", "@babel/types": "^7.20.0", - "babel-preset-fbjs": "^3.4.0", - "metro": "0.76.8", - "metro-babel-transformer": "0.76.8", - "metro-cache": "0.76.8", - "metro-cache-key": "0.76.8", - "metro-source-map": "0.76.8", - "metro-transform-plugins": "0.76.8", + "metro": "0.80.9", + "metro-babel-transformer": "0.80.9", + "metro-cache": "0.80.9", + "metro-cache-key": "0.80.9", + "metro-minify-terser": "0.80.9", + "metro-source-map": "0.80.9", + "metro-transform-plugins": "0.80.9", "nullthrows": "^1.1.1" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/metro/node_modules/ansi-styles": { @@ -25326,33 +25228,19 @@ "node": ">=8" } }, - "node_modules/metro/node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "peer": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } + "node_modules/metro/node_modules/hermes-estree": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.20.1.tgz", + "integrity": "sha512-SQpZK4BzR48kuOg0v4pb3EAGNclzIlqMj3Opu/mu7bbAoFw6oig6cEt/RAi0zTFW/iW6Iz9X9ggGuZTAZ/yZHg==", + "peer": true }, - "node_modules/metro/node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/metro/node_modules/hermes-parser": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.20.1.tgz", + "integrity": "sha512-BL5P83cwCogI8D7rrDCgsFY0tdYUtmFP9XaXtl2IQjC+2Xo+4okjfXintlTxcIwl4qeGddEl28Z11kbVIw0aNA==", "peer": true, "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "hermes-estree": "0.20.1" } }, "node_modules/metro/node_modules/ms": { @@ -25361,15 +25249,6 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "peer": true }, - "node_modules/metro/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/metro/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -25383,9 +25262,9 @@ } }, "node_modules/metro/node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "peer": true, "engines": { "node": ">=8.3.0" @@ -25438,9 +25317,9 @@ } }, "node_modules/micromark-core-commonmark": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.0.tgz", - "integrity": "sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz", + "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", "funding": [ { "type": "GitHub Sponsors", @@ -25774,9 +25653,9 @@ } }, "node_modules/micromark-util-subtokenize": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.0.tgz", - "integrity": "sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", + "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", "funding": [ { "type": "GitHub Sponsors", @@ -25825,11 +25704,11 @@ ] }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -25837,14 +25716,14 @@ } }, "node_modules/mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "bin": { "mime": "cli.js" }, "engines": { - "node": ">=4.0.0" + "node": ">=4" } }, "node_modules/mime-db": { @@ -26120,7 +25999,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, "bin": { "mkdirp": "bin/cmd.js" }, @@ -26130,21 +26008,22 @@ }, "node_modules/mkdirp-classic": { "version": "0.5.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true }, "node_modules/moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", "engines": { "node": "*" } }, "node_modules/moment-timezone": { - "version": "0.5.43", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.43.tgz", - "integrity": "sha512-72j3aNyuIsDxdF1i7CEgV2FfxM1r6aaqJyLB2vwb33mXYyoyLly+F1zbWqhA3/bVIoJ4szlUoMbUnVdid32NUQ==", + "version": "0.5.45", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.45.tgz", + "integrity": "sha512-HIWmqA86KcmCAhnMAN0wuDOARV/525R2+lOLotuGFzn4HO+FH+/645z2wx0Dt3iDv6/p61SIvKnDstISainhLQ==", "dependencies": { "moment": "^2.29.4" }, @@ -26184,14 +26063,6 @@ "to-px": "^1.0.1" } }, - "node_modules/mri": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -26227,9 +26098,9 @@ "peer": true }, "node_modules/nan": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", - "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==", + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz", + "integrity": "sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==", "dev": true }, "node_modules/nanoid": { @@ -26367,16 +26238,15 @@ } }, "node_modules/node-fetch-native": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.4.1.tgz", - "integrity": "sha512-NsXBU0UgBxo2rQLOeWNZqS3fvflWePMECr8CoSWoSTqCqGbVVsvl9vZu1HfQicYN0g5piV9Gh8RTEvo/uP752w==", + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.4.tgz", + "integrity": "sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==", "dev": true }, "node_modules/node-forge": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", - "dev": true, "engines": { "node": ">= 6.13.0" } @@ -26482,6 +26352,7 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -26704,6 +26575,7 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -26813,6 +26685,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "deprecated": "This package is no longer supported.", "dev": true, "dependencies": { "are-we-there-yet": "^3.0.0", @@ -26854,13 +26727,166 @@ "node": ">=0.10.0" } }, - "node_modules/ob1": { - "version": "0.76.8", - "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.76.8.tgz", - "integrity": "sha512-dlBkJJV5M/msj9KYA9upc+nUWVwuOFFTbu28X6kZeGwcuW+JxaHSBZ70SYQnk5M+j5JbNLR6yKHmgW4M5E7X5g==", - "peer": true, + "node_modules/nypm": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.3.8.tgz", + "integrity": "sha512-IGWlC6So2xv6V4cIDmoV0SwwWx7zLG086gyqkyumteH2fIgCAM4nDVFB2iDRszDvmdSVW9xb1N+2KjQ6C7d4og==", + "dev": true, + "dependencies": { + "citty": "^0.1.6", + "consola": "^3.2.3", + "execa": "^8.0.1", + "pathe": "^1.1.2", + "ufo": "^1.4.0" + }, + "bin": { + "nypm": "dist/cli.mjs" + }, + "engines": { + "node": "^14.16.0 || >=16.10.0" + } + }, + "node_modules/nypm/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/nypm/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, "engines": { "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nypm/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/nypm/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nypm/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nypm/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nypm/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nypm/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nypm/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/nypm/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ob1": { + "version": "0.80.9", + "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.80.9.tgz", + "integrity": "sha512-v9yOxowkZbxWhKOaaTyLjIm1aLy4ebMNcSn4NYJKOAI/Qv+SkfEfszpLr2GIxsccmb2Y2HA9qtsqiIJ80ucpVA==", + "peer": true, + "engines": { + "node": ">=18" } }, "node_modules/object-assign": { @@ -26872,20 +26898,23 @@ } }, "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -26920,27 +26949,28 @@ } }, "node_modules/object.entries": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", - "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" } }, "node_modules/object.fromentries": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", - "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -26950,38 +26980,44 @@ } }, "node_modules/object.groupby": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", - "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/object.hasown": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", - "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz", + "integrity": "sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==", "dev": true, "dependencies": { - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object.values": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", - "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -26992,8 +27028,9 @@ }, "node_modules/objectorarray": { "version": "1.0.5", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/objectorarray/-/objectorarray-1.0.5.tgz", + "integrity": "sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg==", + "dev": true }, "node_modules/obuf": { "version": "1.1.2", @@ -27001,6 +27038,12 @@ "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", "dev": true }, + "node_modules/ohash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/ohash/-/ohash-1.1.3.tgz", + "integrity": "sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==", + "dev": true + }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", @@ -27043,29 +27086,34 @@ } }, "node_modules/open": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", - "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", - "peer": true, + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, "dependencies": { - "is-wsl": "^1.1.0" + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" }, "engines": { "node": ">= 0.8.0" @@ -27255,10 +27303,17 @@ "node": ">=6" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "dev": true + }, "node_modules/pako": { "version": "0.2.9", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", + "dev": true }, "node_modules/papaparse": { "version": "5.4.1", @@ -27311,6 +27366,11 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", + "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" + }, "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -27391,8 +27451,9 @@ }, "node_modules/path-browserify": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true }, "node_modules/path-exists": { "version": "4.0.0", @@ -27424,31 +27485,32 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "node_modules/path-scurry": { - "version": "1.10.1", - "license": "BlueOak-1.0.0", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", + "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", - "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", "engines": { "node": "14 || >=16.14" } }, "node_modules/path-scurry/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "engines": { "node": ">=16 || 14 >=14.17" } @@ -27483,9 +27545,10 @@ } }, "node_modules/pathe": { - "version": "1.1.1", - "dev": true, - "license": "MIT" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "dev": true }, "node_modules/pbf": { "version": "3.2.1", @@ -27519,8 +27582,9 @@ }, "node_modules/peek-stream": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/peek-stream/-/peek-stream-1.1.3.tgz", + "integrity": "sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==", "dev": true, - "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "duplexify": "^3.5.0", @@ -27529,8 +27593,9 @@ }, "node_modules/pend": { "version": "1.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true }, "node_modules/performance-now": { "version": "2.1.0", @@ -27544,9 +27609,9 @@ "peer": true }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" }, "node_modules/picomatch": { "version": "2.3.1", @@ -27588,21 +27653,23 @@ } }, "node_modules/plotly.js": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-2.27.1.tgz", - "integrity": "sha512-XeE0zTJWTxURYrUJqzf73l8lTb+HnyRvvhHkoSIEvWf58ins4saopo9l25kCm+xHAGz8E/2EOncE4DyXsJ34kA==", + "version": "2.33.0", + "resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-2.33.0.tgz", + "integrity": "sha512-pzuf6hSUCaSYmEag2b2DngkHdYMn+U/QMSC/UJOLIS8yd2UwIG1iGUmOR7pqZIS87oKx/+cMoG8aknGytgJKig==", "peer": true, "dependencies": { - "@plotly/d3": "3.8.1", + "@plotly/d3": "3.8.2", "@plotly/d3-sankey": "0.7.2", "@plotly/d3-sankey-circular": "0.33.1", + "@plotly/mapbox-gl": "1.13.4", "@turf/area": "^6.4.0", "@turf/bbox": "^6.4.0", "@turf/centroid": "^6.0.2", + "base64-arraybuffer": "^1.0.2", "canvas-fit": "^1.5.0", "color-alpha": "1.0.4", "color-normalize": "1.5.0", - "color-parse": "1.3.8", + "color-parse": "2.0.0", "color-rgba": "2.1.1", "country-regex": "^1.1.0", "d3-force": "^1.2.1", @@ -27615,12 +27682,10 @@ "d3-time-format": "^2.2.3", "fast-isnumeric": "^1.1.4", "gl-mat4": "^1.2.0", - "gl-text": "^1.3.1", - "glslify": "^7.1.1", + "gl-text": "^1.4.0", "has-hover": "^1.0.1", "has-passive-events": "^1.0.0", "is-mobile": "^4.0.0", - "mapbox-gl": "1.10.1", "mouse-change": "^1.4.0", "mouse-event-offset": "^3.0.2", "mouse-wheel": "^1.2.0", @@ -27631,8 +27696,8 @@ "probe-image-size": "^7.2.3", "regl": "npm:@plotly/regl@^2.1.2", "regl-error2d": "^2.0.12", - "regl-line2d": "^3.1.2", - "regl-scatter2d": "^3.2.9", + "regl-line2d": "^3.1.3", + "regl-scatter2d": "^3.3.1", "regl-splom": "^1.0.14", "strongly-connected-components": "^1.0.1", "superscript-text": "^1.0.0", @@ -27645,9 +27710,9 @@ } }, "node_modules/plotly.js-dist-min": { - "version": "2.30.1", - "resolved": "https://registry.npmjs.org/plotly.js-dist-min/-/plotly.js-dist-min-2.30.1.tgz", - "integrity": "sha512-xWLni6EpBDwG/EdjCBTu+GK1Asuqswgh+YC77t0UAxa5OFFgpjYkVuvozZmkWqT9TKpvzjxkK4LLGv5Rn+yo7Q==" + "version": "2.33.0", + "resolved": "https://registry.npmjs.org/plotly.js-dist-min/-/plotly.js-dist-min-2.33.0.tgz", + "integrity": "sha512-XTgGZDC/srjk6HvEHu0YmWpSPCDYRBjk8q0bbsCPTpKH961wFXzhWj+qdJ4vMkLQWoO5vhzVAGN9ZlRM3fDQkQ==" }, "node_modules/point-in-polygon": { "version": "1.1.0", @@ -27656,9 +27721,10 @@ "peer": true }, "node_modules/polished": { - "version": "4.2.2", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/polished/-/polished-4.3.1.tgz", + "integrity": "sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/runtime": "^7.17.8" }, @@ -27667,15 +27733,23 @@ } }, "node_modules/polybooljs": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/polybooljs/-/polybooljs-1.2.0.tgz", - "integrity": "sha512-mKjR5nolISvF+q2BtC1fi/llpxBPTQ3wLWN8+ldzdw2Hocpc8C72ZqnamCM4Z6z+68GVVjkeM01WJegQmZ8MEQ==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/polybooljs/-/polybooljs-1.2.2.tgz", + "integrity": "sha512-ziHW/02J0XuNuUtmidBc6GXE8YohYydp3DWPWXYsd7O721TjcmN+k6ezjdwkDqep+gnWnFY+yqZHvzElra2oCg==", "peer": true }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/postcss": { - "version": "8.4.32", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", - "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", "dev": true, "funding": [ { @@ -27694,16 +27768,16 @@ "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "source-map-js": "^1.2.0" }, "engines": { "node": "^10 || ^12 || >=14" } }, "node_modules/postcss-modules-extract-imports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", "dev": true, "engines": { "node": "^10 || ^12 || >= 14" @@ -27713,9 +27787,9 @@ } }, "node_modules/postcss-modules-local-by-default": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", - "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz", + "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==", "dev": true, "dependencies": { "icss-utils": "^5.0.0", @@ -27730,9 +27804,9 @@ } }, "node_modules/postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz", + "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==", "dev": true, "dependencies": { "postcss-selector-parser": "^6.0.4" @@ -27760,9 +27834,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", - "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", + "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", "dev": true, "dependencies": { "cssesc": "^3.0.0", @@ -27864,8 +27938,9 @@ }, "node_modules/pretty-hrtime": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.8" } @@ -27897,7 +27972,8 @@ }, "node_modules/progress": { "version": "2.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "engines": { "node": ">=0.4.0" } @@ -27952,13 +28028,18 @@ } }, "node_modules/prop-types-exact": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/prop-types-exact/-/prop-types-exact-1.2.0.tgz", - "integrity": "sha512-K+Tk3Kd9V0odiXFP9fwDHUYRyvK3Nun3GVyPapSIs5OBkITAm15W0CPFD/YKTkMUAbc0b9CUwRQp2ybiBIq+eA==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/prop-types-exact/-/prop-types-exact-1.2.4.tgz", + "integrity": "sha512-vKfETKgBHRCLQwZgpl0pGPvMFxCX/06dAkz5jwNYHfrU0I8bgVhryaHA6O/KlqwtQi0IdnjAhDiZqzD+uJuVjA==", "dependencies": { - "has": "^1.0.3", - "object.assign": "^4.1.0", - "reflect.ownkeys": "^0.2.0" + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "isarray": "^2.0.5", + "object.assign": "^4.1.5", + "reflect.ownkeys": "^1.1.4" + }, + "engines": { + "node": ">= 0.8" } }, "node_modules/prop-types-extra": { @@ -27973,10 +28054,20 @@ "react": ">=0.14.0" } }, + "node_modules/prop-types-extra/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, "node_modules/property-information": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.4.1.tgz", - "integrity": "sha512-OHYtXfu5aI2sS2LWFSN5rgJjrQ4pCy8i1jubJLe2QvMF8JJ++HXTUIVWFLfXJoaOfvYYjk2SN8J2wFUWIGXT4w==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", + "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -28029,8 +28120,9 @@ }, "node_modules/pumpify": { "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", "dev": true, - "license": "MIT", "dependencies": { "duplexify": "^3.6.0", "inherits": "^2.0.3", @@ -28039,8 +28131,9 @@ }, "node_modules/pumpify/node_modules/pump": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", "dev": true, - "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -28056,8 +28149,9 @@ }, "node_modules/puppeteer-core": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-2.1.1.tgz", + "integrity": "sha512-n13AWriBMPYxnpbb6bnaY5YoY6rGj8vPLrz6CZF3o0qJNEwlcfJVxBzYZ0NJsQ21UbdJoijPCDrM++SUVEz7+w==", "dev": true, - "license": "Apache-2.0", "dependencies": { "@types/mime-types": "^2.1.0", "debug": "^4.1.0", @@ -28076,8 +28170,9 @@ }, "node_modules/puppeteer-core/node_modules/agent-base": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz", + "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==", "dev": true, - "license": "MIT", "engines": { "node": ">= 6.0.0" } @@ -28086,6 +28181,7 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -28104,8 +28200,9 @@ }, "node_modules/puppeteer-core/node_modules/https-proxy-agent": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz", + "integrity": "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==", "dev": true, - "license": "MIT", "dependencies": { "agent-base": "5", "debug": "4" @@ -28114,10 +28211,24 @@ "node": ">= 6.0.0" } }, + "node_modules/puppeteer-core/node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/puppeteer-core/node_modules/rimraf": { "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, - "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -28125,10 +28236,19 @@ "rimraf": "bin.js" } }, + "node_modules/puppeteer-core/node_modules/ws": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", + "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", + "dev": true, + "dependencies": { + "async-limiter": "~1.0.0" + } + }, "node_modules/pure-rand": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz", - "integrity": "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", "dev": true, "funding": [ { @@ -28142,12 +28262,12 @@ ] }, "node_modules/qs": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", - "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.1.tgz", + "integrity": "sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==", "dev": true, "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -28157,9 +28277,9 @@ } }, "node_modules/query-string": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-8.1.0.tgz", - "integrity": "sha512-BFQeWxJOZxZGix7y+SByG3F36dA0AbTy9o6pSmKFcFz7DAj0re9Frkty3saBn3nHo3D0oZJ/+rx3r8H8r8Jbpw==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-8.2.0.tgz", + "integrity": "sha512-tUZIw8J0CawM5wyGBiDOAp7ObdRQh4uBor/fUR9ZjmbZVvw95OD9If4w3MQxr99rg0DJZ/9CIORcpEqU5hQG7g==", "dependencies": { "decode-uri-component": "^0.4.1", "filter-obj": "^5.1.0", @@ -28172,6 +28292,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/querystring": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz", + "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "peer": true, + "engines": { + "node": ">=0.4.x" + } + }, "node_modules/queue": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", @@ -28230,8 +28360,9 @@ }, "node_modules/ramda": { "version": "0.29.0", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.29.0.tgz", + "integrity": "sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA==", "dev": true, - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/ramda" @@ -28269,13 +28400,13 @@ } }, "node_modules/rc-slider": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-10.5.0.tgz", - "integrity": "sha512-xiYght50cvoODZYI43v3Ylsqiw14+D7ELsgzR40boDZaya1HFa1Etnv9MDkQE8X/UrXAffwv2AcNAhslgYuDTw==", + "version": "10.6.2", + "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-10.6.2.tgz", + "integrity": "sha512-FjkoFjyvUQWcBo1F3RgSglky3ar0+qHLM41PlFVYB4Bj3RD8E/Mv7kqMouLFBU+3aFglMzzctAIWRwajEuueSw==", "dependencies": { "@babel/runtime": "^7.10.1", "classnames": "^2.2.5", - "rc-util": "^5.27.0" + "rc-util": "^5.36.0" }, "engines": { "node": ">=8.x" @@ -28286,9 +28417,9 @@ } }, "node_modules/rc-util": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.38.1.tgz", - "integrity": "sha512-e4ZMs7q9XqwTuhIK7zBIVFltUtMSjphuPPQXHoHlzRzNdOwUxDejo0Zls5HYaJfRKNURcsS/ceKVULlhjBrxng==", + "version": "5.43.0", + "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.43.0.tgz", + "integrity": "sha512-AzC7KKOXFqAdIBqdGWepL9Xn7cm3vnAmjlHqUnoQaTMZYhM4VlXGLkkHHxj/BZ7Td0+SOPKB4RGPboBVKT9htw==", "dependencies": { "@babel/runtime": "^7.18.3", "react-is": "^18.2.0" @@ -28298,27 +28429,19 @@ "react-dom": ">=16.9.0" } }, - "node_modules/rc-util/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" - }, "node_modules/re-resizable": { - "version": "6.9.6", - "resolved": "https://registry.npmjs.org/re-resizable/-/re-resizable-6.9.6.tgz", - "integrity": "sha512-0xYKS5+Z0zk+vICQlcZW+g54CcJTTmHluA7JUUgvERDxnKAnytylcyPsA+BSFi759s5hPlHmBRegFrwXs2FuBQ==", - "dependencies": { - "fast-memoize": "^2.5.1" - }, + "version": "6.9.17", + "resolved": "https://registry.npmjs.org/re-resizable/-/re-resizable-6.9.17.tgz", + "integrity": "sha512-OBqd1BwVXpEJJn/yYROG+CbeqIDBWIp6wathlpB0kzZWWZIY1gPTsgK2yJEui5hOvkCdC2mcexF2V3DZVfLq2g==", "peerDependencies": { "react": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0" } }, "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "dependencies": { "loose-envify": "^1.1.0" }, @@ -28359,9 +28482,9 @@ } }, "node_modules/react-big-calendar": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/react-big-calendar/-/react-big-calendar-1.8.5.tgz", - "integrity": "sha512-cra8WPfoTSQthFfqxi0k9xm/Shv5jWSw19LkNzpSJcnQhP6XGes/eJjd8P8g/iwaJjXIWPpg3+HB5wO5wabRyA==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/react-big-calendar/-/react-big-calendar-1.13.0.tgz", + "integrity": "sha512-3ewolEKeBC5CjuxxDbo+IfQXjcd6jIBLSOoMzn1/lVMf+BYhPneifuOjMseXCIIaA4UlGZcy625BIdYgtAx+cA==", "dependencies": { "@babel/runtime": "^7.20.7", "clsx": "^1.2.1", @@ -28385,19 +28508,27 @@ "react-dom": "^16.14.0 || ^17 || ^18" } }, + "node_modules/react-big-calendar/node_modules/clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "engines": { + "node": ">=6" + } + }, "node_modules/react-big-calendar/node_modules/memoize-one": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" }, "node_modules/react-bootstrap": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-2.9.1.tgz", - "integrity": "sha512-ezgmh/ARCYp18LbZEqPp0ppvy+ytCmycDORqc8vXSKYV3cer4VH7OReV8uMOoKXmYzivJTxgzGHalGrHamryHA==", + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-2.10.3.tgz", + "integrity": "sha512-cc1KAaQyj6Gr3AfA0eRRiUMSlRi3brDVcjc/o0E9y9XNW7ISo8TITrq8G8G3QTFe7VIhCiDt38k99AEFoLOolw==", "dependencies": { - "@babel/runtime": "^7.22.5", + "@babel/runtime": "^7.24.7", "@restart/hooks": "^0.4.9", - "@restart/ui": "^1.6.6", + "@restart/ui": "^1.6.9", "@types/react-transition-group": "^4.4.6", "classnames": "^2.3.2", "dom-helpers": "^5.2.1", @@ -28479,8 +28610,9 @@ }, "node_modules/react-colorful": { "version": "5.6.1", + "resolved": "https://registry.npmjs.org/react-colorful/-/react-colorful-5.6.1.tgz", + "integrity": "sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==", "dev": true, - "license": "MIT", "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" @@ -28488,8 +28620,9 @@ }, "node_modules/react-confetti": { "version": "6.1.0", + "resolved": "https://registry.npmjs.org/react-confetti/-/react-confetti-6.1.0.tgz", + "integrity": "sha512-7Ypx4vz0+g8ECVxr88W9zhcQpbeujJAVqL14ZnXJ3I23mOI9/oBVTQ3dkJhUmB0D6XOtCZEM6N0Gm9PMngkORw==", "dev": true, - "license": "MIT", "dependencies": { "tween-functions": "^1.2.0" }, @@ -28580,9 +28713,9 @@ } }, "node_modules/react-devtools-core": { - "version": "4.28.5", - "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.28.5.tgz", - "integrity": "sha512-cq/o30z9W2Wb4rzBefjv5fBalHU0rJGZCHAkf/RHSBWSSYwh8PlQTqqOJmgIIbBtpj27T6FIPXeomIjZtCNVqA==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-5.2.0.tgz", + "integrity": "sha512-vZK+/gvxxsieAoAyYaiRIVFxlajb7KXhgBDV7OsoMzaAE+IqGpoxusBjIgq5ibqA2IloKu0p9n7tE68z1xs18A==", "peer": true, "dependencies": { "shell-quote": "^1.6.1", @@ -28590,9 +28723,9 @@ } }, "node_modules/react-devtools-core/node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "peer": true, "engines": { "node": ">=8.3.0" @@ -28648,11 +28781,10 @@ } }, "node_modules/react-docgen": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-7.0.1.tgz", - "integrity": "sha512-rCz0HBIT0LWbIM+///LfRrJoTKftIzzwsYDf0ns5KwaEjejMHQRtphcns+IXFHDNY9pnz6G8l/JbbI6pD4EAIA==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-7.0.3.tgz", + "integrity": "sha512-i8aF1nyKInZnANZ4uZrH49qn1paRgBZ7wZiCNBMnenlPzEv0mRl+ShpTVEI6wZNl8sSc79xZkivtgLKQArcanQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/core": "^7.18.9", "@babel/traverse": "^7.18.9", @@ -28671,8 +28803,9 @@ }, "node_modules/react-docgen-typescript": { "version": "2.2.2", + "resolved": "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-2.2.2.tgz", + "integrity": "sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==", "dev": true, - "license": "MIT", "peerDependencies": { "typescript": ">= 4.3.x" } @@ -28684,21 +28817,21 @@ "dev": true }, "node_modules/react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "dependencies": { "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" + "scheduler": "^0.23.2" }, "peerDependencies": { - "react": "^18.2.0" + "react": "^18.3.1" } }, "node_modules/react-draggable": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/react-draggable/-/react-draggable-4.4.5.tgz", - "integrity": "sha512-OMHzJdyJbYTZo4uQE393fHcqqPYsEtkjfMgvCHr6rejT+Ezn4OZbNyGH50vv+SunC1RMvwOTSWkEODQLzw1M9g==", + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/react-draggable/-/react-draggable-4.4.6.tgz", + "integrity": "sha512-LtY5Xw1zTPqHkVmtM3X8MUOxNDOUhv/khTgBgrUvwaS064bwVvxT+q5El0uUFNx5IEPKXuRejr7UqLwBIg5pdw==", "dependencies": { "clsx": "^1.1.1", "prop-types": "^15.8.1" @@ -28708,6 +28841,14 @@ "react-dom": ">= 16.3.0" } }, + "node_modules/react-draggable/node_modules/clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "engines": { + "node": ">=6" + } + }, "node_modules/react-dropzone": { "version": "14.2.3", "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.2.3.tgz", @@ -28726,8 +28867,9 @@ }, "node_modules/react-element-to-jsx-string": { "version": "15.0.0", + "resolved": "https://registry.npmjs.org/react-element-to-jsx-string/-/react-element-to-jsx-string-15.0.0.tgz", + "integrity": "sha512-UDg4lXB6BzlobN60P8fHWVPX3Kyw8ORrTeBtClmIlGdkOOE+GYQSFvmEU5iLLpwp/6v42DINwNcwOhOLfQ//FQ==", "dev": true, - "license": "MIT", "dependencies": { "@base2/pretty-print-object": "1.0.1", "is-plain-object": "5.0.0", @@ -28740,8 +28882,9 @@ }, "node_modules/react-element-to-jsx-string/node_modules/react-is": { "version": "18.1.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz", + "integrity": "sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==", + "dev": true }, "node_modules/react-fast-compare": { "version": "3.2.2", @@ -28764,9 +28907,9 @@ } }, "node_modules/react-hotkeys-hook": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/react-hotkeys-hook/-/react-hotkeys-hook-4.4.1.tgz", - "integrity": "sha512-sClBMBioFEgFGYLTWWRKvhxcCx1DRznd+wkFHwQZspnRBkHTgruKIHptlK/U/2DPX8BhHoRGzpMVWUXMmdZlmw==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/react-hotkeys-hook/-/react-hotkeys-hook-4.5.0.tgz", + "integrity": "sha512-Samb85GSgAWFQNvVt3PS90LPPGSf9mkH/r4au81ZP1yOIFayLC3QAvqTgGtJ8YEDMXtPmaVBs6NgipHO6h4Mug==", "peerDependencies": { "react": ">=16.8.1", "react-dom": ">=16.8.1" @@ -28807,9 +28950,9 @@ } }, "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" }, "node_modules/react-json-tree": { "version": "0.18.0", @@ -28866,41 +29009,40 @@ } }, "node_modules/react-konva/node_modules/react-reconciler": { - "version": "0.29.0", - "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.29.0.tgz", - "integrity": "sha512-wa0fGj7Zht1EYMRhKWwoo1H9GApxYLBuhoAuXN0TlltESAjDssB+Apf0T/DngVqaMyPypDmabL37vw/2aRM98Q==", + "version": "0.29.2", + "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.29.2.tgz", + "integrity": "sha512-zZQqIiYgDCTP/f1N/mAR10nJGrPD2ZR+jDSEsKWJHYC7Cm2wodlwbR3upZRdC3cjIjSlTLNVyO7Iu0Yy7t2AYg==", "peer": true, "dependencies": { "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" + "scheduler": "^0.23.2" }, "engines": { "node": ">=0.10.0" }, "peerDependencies": { - "react": "^18.2.0" + "react": "^18.3.1" } }, "node_modules/react-lazy-load-image-component": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/react-lazy-load-image-component/-/react-lazy-load-image-component-1.6.0.tgz", - "integrity": "sha512-8KFkDTgjh+0+PVbH+cx0AgxLGbdTsxWMnxXzU5HEUztqewk9ufQAu8cstjZhyvtMIPsdMcPZfA0WAa7HtjQbBQ==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/react-lazy-load-image-component/-/react-lazy-load-image-component-1.6.2.tgz", + "integrity": "sha512-dAdH5PsRgvDMlHC7QpZRA9oRzEZl1kPFwowmR9Mt0IUUhxk2wwq43PB6Ffwv84HFYuPmsxDUCka0E9KVXi8roQ==", "dependencies": { "lodash.debounce": "^4.0.8", "lodash.throttle": "^4.1.1" }, "peerDependencies": { - "react": "^15.x.x || ^16.x.x || ^17.x.x || ^18.x.x", - "react-dom": "^15.x.x || ^16.x.x || ^17.x.x || ^18.x.x" + "react": "^15.x.x || ^16.x.x || ^17.x.x || ^18.x.x" } }, "node_modules/react-lazyload": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/react-lazyload/-/react-lazyload-3.2.0.tgz", - "integrity": "sha512-zJlrG8QyVZz4+xkYZH5v1w3YaP5wEFaYSUWC4CT9UXfK75IfRAIEdnyIUF+dXr3kX2MOtL1lUaZmaQZqrETwgw==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/react-lazyload/-/react-lazyload-3.2.1.tgz", + "integrity": "sha512-oDLlLOI/rRLY0fUh/HYFCy4CqCe7zdJXv6oTl2pC30tN3ezWxvwcdHYfD/ZkrGOMOOT5pO7hNLSvg7WsmAij1w==", "peerDependencies": { - "react": "^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0", - "react-dom": "^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + "react": "^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" } }, "node_modules/react-lifecycles-compat": { @@ -28909,9 +29051,9 @@ "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" }, "node_modules/react-loading-skeleton": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/react-loading-skeleton/-/react-loading-skeleton-3.3.1.tgz", - "integrity": "sha512-NilqqwMh2v9omN7LteiDloEVpFyMIa0VGqF+ukqp0ncVlYu1sKYbYGX9JEl+GtOT9TKsh04zCHAbavnQ2USldA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/react-loading-skeleton/-/react-loading-skeleton-3.4.0.tgz", + "integrity": "sha512-1oJEBc9+wn7BbkQQk7YodlYEIjgeR+GrRjD+QXkVjwZN7LGIcAFHrx4NhT7UHGBxNY1+zax3c+Fo6XQM4R7CgA==", "peerDependencies": { "react": ">=16.8.0" } @@ -28941,50 +29083,6 @@ "react": ">=18" } }, - "node_modules/react-markdown/node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" - }, - "node_modules/react-markdown/node_modules/unist-util-is": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", - "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/react-markdown/node_modules/unist-util-visit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", - "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/react-markdown/node_modules/unist-util-visit-parents": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", - "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/react-mentions": { "version": "4.4.10", "resolved": "https://registry.npmjs.org/react-mentions/-/react-mentions-4.4.10.tgz", @@ -29053,206 +29151,10 @@ "react-dom": "^16 || ^17 || ^18" } }, - "node_modules/react-native": { - "version": "0.72.7", - "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.72.7.tgz", - "integrity": "sha512-dqVFojOO9rOvyFbbM3/v9/GJR355OSuBhEY4NQlMIRc2w0Xch5MT/2uPoq3+OvJ+5h7a8LFAco3fucSffG0FbA==", - "peer": true, - "dependencies": { - "@jest/create-cache-key-function": "^29.2.1", - "@react-native-community/cli": "11.3.10", - "@react-native-community/cli-platform-android": "11.3.10", - "@react-native-community/cli-platform-ios": "11.3.10", - "@react-native/assets-registry": "^0.72.0", - "@react-native/codegen": "^0.72.7", - "@react-native/gradle-plugin": "^0.72.11", - "@react-native/js-polyfills": "^0.72.1", - "@react-native/normalize-colors": "^0.72.0", - "@react-native/virtualized-lists": "^0.72.8", - "abort-controller": "^3.0.0", - "anser": "^1.4.9", - "base64-js": "^1.1.2", - "deprecated-react-native-prop-types": "^4.2.3", - "event-target-shim": "^5.0.1", - "flow-enums-runtime": "^0.0.5", - "invariant": "^2.2.4", - "jest-environment-node": "^29.2.1", - "jsc-android": "^250231.0.0", - "memoize-one": "^5.0.0", - "metro-runtime": "0.76.8", - "metro-source-map": "0.76.8", - "mkdirp": "^0.5.1", - "nullthrows": "^1.1.1", - "pretty-format": "^26.5.2", - "promise": "^8.3.0", - "react-devtools-core": "^4.27.2", - "react-refresh": "^0.4.0", - "react-shallow-renderer": "^16.15.0", - "regenerator-runtime": "^0.13.2", - "scheduler": "0.24.0-canary-efb381bbf-20230505", - "stacktrace-parser": "^0.1.10", - "use-sync-external-store": "^1.0.0", - "whatwg-fetch": "^3.0.0", - "ws": "^6.2.2", - "yargs": "^17.6.2" - }, - "bin": { - "react-native": "cli.js" - }, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "react": "18.2.0" - } - }, - "node_modules/react-native/node_modules/@jest/types": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", - "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", - "peer": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^15.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/react-native/node_modules/@types/yargs": { - "version": "15.0.19", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", - "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==", - "peer": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/react-native/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/react-native/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/react-native/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/react-native/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "peer": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/react-native/node_modules/pretty-format": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", - "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", - "peer": true, - "dependencies": { - "@jest/types": "^26.6.2", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/react-native/node_modules/promise": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", - "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", - "peer": true, - "dependencies": { - "asap": "~2.0.6" - } - }, - "node_modules/react-native/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "peer": true - }, - "node_modules/react-native/node_modules/react-refresh": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz", - "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-native/node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", - "peer": true - }, - "node_modules/react-native/node_modules/scheduler": { - "version": "0.24.0-canary-efb381bbf-20230505", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.24.0-canary-efb381bbf-20230505.tgz", - "integrity": "sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0" - } - }, - "node_modules/react-native/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/react-onclickoutside": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-6.13.0.tgz", - "integrity": "sha512-ty8So6tcUpIb+ZE+1HAhbLROvAIJYyJe/1vRrrcmW+jLsaM+/powDRqxzo6hSh9CuRZGSL1Q8mvcF5WRD93a0A==", + "version": "6.13.1", + "resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-6.13.1.tgz", + "integrity": "sha512-LdrrxK/Yh9zbBQdFbMTXPp3dTSN9B+9YJQucdDu3JNKRrbdU+H+/TVONJoWtOwy4II8Sqf1y/DTI6w/vGPYW0w==", "funding": { "type": "individual", "url": "https://github.com/Pomax/react-onclickoutside/blob/master/FUNDING.md" @@ -29326,9 +29228,18 @@ } } }, + "node_modules/react-pdf/node_modules/clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "engines": { + "node": ">=6" + } + }, "node_modules/react-phone-input-2": { "version": "2.15.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-phone-input-2/-/react-phone-input-2-2.15.1.tgz", + "integrity": "sha512-W03abwhXcwUoq+vUFvC6ch2+LJYMN8qSOiO889UH6S7SyMCQvox/LF3QWt+cZagZrRdi5z2ON3omnjoCUmlaYw==", "dependencies": { "classnames": "^2.2.6", "lodash.debounce": "^4.0.8", @@ -29449,20 +29360,19 @@ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, "node_modules/react-refresh": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", - "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", - "dev": true, + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", + "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", "engines": { "node": ">=0.10.0" } }, "node_modules/react-remove-scroll": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz", - "integrity": "sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==", + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.7.tgz", + "integrity": "sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==", "dependencies": { - "react-remove-scroll-bar": "^2.3.3", + "react-remove-scroll-bar": "^2.3.4", "react-style-singleton": "^2.2.1", "tslib": "^2.1.0", "use-callback-ref": "^1.3.0", @@ -29482,9 +29392,9 @@ } }, "node_modules/react-remove-scroll-bar": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz", - "integrity": "sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz", + "integrity": "sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==", "dependencies": { "react-style-singleton": "^2.2.1", "tslib": "^2.0.0" @@ -29503,13 +29413,13 @@ } }, "node_modules/react-rnd": { - "version": "10.4.1", - "resolved": "https://registry.npmjs.org/react-rnd/-/react-rnd-10.4.1.tgz", - "integrity": "sha512-0m887AjQZr6p2ADLNnipquqsDq4XJu/uqVqI3zuoGD19tRm6uB83HmZWydtkilNp5EWsOHbLGF4IjWMdd5du8Q==", + "version": "10.4.11", + "resolved": "https://registry.npmjs.org/react-rnd/-/react-rnd-10.4.11.tgz", + "integrity": "sha512-XTfNGNcS0ad2vo3to7qNTB0BkFML9k1csIUI0Nlj44M6Uuh7yP/2h8WXiXcV3v3bxxVJck1C9K6FS1LrLH0E0Q==", "dependencies": { - "re-resizable": "6.9.6", - "react-draggable": "4.4.5", - "tslib": "2.3.1" + "re-resizable": "6.9.17", + "react-draggable": "4.4.6", + "tslib": "2.6.2" }, "peerDependencies": { "react": ">=16.3.0", @@ -29517,16 +29427,16 @@ } }, "node_modules/react-rnd/node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/react-router": { - "version": "6.20.1", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.20.1.tgz", - "integrity": "sha512-ccvLrB4QeT5DlaxSFFYi/KR8UMQ4fcD8zBcR71Zp1kaYTC5oJKYAp1cbavzGrogwxca+ubjkd7XjFZKBW8CxPA==", + "version": "6.24.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.24.0.tgz", + "integrity": "sha512-sQrgJ5bXk7vbcC4BxQxeNa5UmboFm35we1AFK0VvQaz9g0LzxEIuLOhHIoZ8rnu9BO21ishGeL9no1WB76W/eg==", "dependencies": { - "@remix-run/router": "1.13.1" + "@remix-run/router": "1.17.0" }, "engines": { "node": ">=14.0.0" @@ -29536,12 +29446,12 @@ } }, "node_modules/react-router-dom": { - "version": "6.20.1", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.20.1.tgz", - "integrity": "sha512-npzfPWcxfQN35psS7rJgi/EW0Gx6EsNjfdJSAk73U/HqMEJZ2k/8puxfwHFgDQhBGmS3+sjnGbMdMSV45axPQw==", + "version": "6.24.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.24.0.tgz", + "integrity": "sha512-960sKuau6/yEwS8e+NVEidYQb1hNjAYM327gjEyXlc6r3Skf2vtwuJ2l7lssdegD2YjoKG5l8MsVyeTDlVeY8g==", "dependencies": { - "@remix-run/router": "1.13.1", - "react-router": "6.20.1" + "@remix-run/router": "1.17.0", + "react-router": "6.24.0" }, "engines": { "node": ">=14.0.0" @@ -29624,6 +29534,247 @@ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, + "node_modules/react-spring/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "peer": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/react-spring/node_modules/@react-spring/native": { + "version": "9.7.3", + "resolved": "https://registry.npmjs.org/@react-spring/native/-/native-9.7.3.tgz", + "integrity": "sha512-4mpxX3FuEBCUT6ae2fjhxcJW6bhr2FBwFf274eXB7n+U30Gdg8Wo2qYwcUnmiAA0S3dvP8vLTazx3+CYWFShnA==", + "dependencies": { + "@react-spring/animated": "~9.7.3", + "@react-spring/core": "~9.7.3", + "@react-spring/shared": "~9.7.3", + "@react-spring/types": "~9.7.3" + }, + "peerDependencies": { + "react": "^16.8.0 || >=17.0.0 || >=18.0.0", + "react-native": ">=0.58" + } + }, + "node_modules/react-spring/node_modules/@types/yargs": { + "version": "15.0.19", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", + "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==", + "peer": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/react-spring/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/react-spring/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/react-spring/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/react-spring/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "peer": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/react-spring/node_modules/pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "peer": true, + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/react-spring/node_modules/promise": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "peer": true, + "dependencies": { + "asap": "~2.0.6" + } + }, + "node_modules/react-spring/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "peer": true + }, + "node_modules/react-spring/node_modules/react-native": { + "version": "0.74.2", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.74.2.tgz", + "integrity": "sha512-EBMBjPPL4/GjHMP4NqsZabT3gI5WU9cSmduABGAGrd8uIcmTZ5F2Ng9k6gFmRm7n8e8CULxDNu98ZpQfBjl7Bw==", + "peer": true, + "dependencies": { + "@jest/create-cache-key-function": "^29.6.3", + "@react-native-community/cli": "13.6.8", + "@react-native-community/cli-platform-android": "13.6.8", + "@react-native-community/cli-platform-ios": "13.6.8", + "@react-native/assets-registry": "0.74.84", + "@react-native/codegen": "0.74.84", + "@react-native/community-cli-plugin": "0.74.84", + "@react-native/gradle-plugin": "0.74.84", + "@react-native/js-polyfills": "0.74.84", + "@react-native/normalize-colors": "0.74.84", + "@react-native/virtualized-lists": "0.74.84", + "abort-controller": "^3.0.0", + "anser": "^1.4.9", + "ansi-regex": "^5.0.0", + "base64-js": "^1.5.1", + "chalk": "^4.0.0", + "event-target-shim": "^5.0.1", + "flow-enums-runtime": "^0.0.6", + "invariant": "^2.2.4", + "jest-environment-node": "^29.6.3", + "jsc-android": "^250231.0.0", + "memoize-one": "^5.0.0", + "metro-runtime": "^0.80.3", + "metro-source-map": "^0.80.3", + "mkdirp": "^0.5.1", + "nullthrows": "^1.1.1", + "pretty-format": "^26.5.2", + "promise": "^8.3.0", + "react-devtools-core": "^5.0.0", + "react-refresh": "^0.14.0", + "react-shallow-renderer": "^16.15.0", + "regenerator-runtime": "^0.13.2", + "scheduler": "0.24.0-canary-efb381bbf-20230505", + "stacktrace-parser": "^0.1.10", + "whatwg-fetch": "^3.0.0", + "ws": "^6.2.2", + "yargs": "^17.6.2" + }, + "bin": { + "react-native": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/react": "^18.2.6", + "react": "18.2.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-spring/node_modules/react-native/node_modules/@react-native/virtualized-lists": { + "version": "0.74.84", + "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.74.84.tgz", + "integrity": "sha512-XcV+qdqt2WihaY4iRm/M1FdSy+18lecU9mRXNmy9YK8g9Th/8XbNtmmKI0qWBx3KxyuXMH/zd0ps05YTrX16kw==", + "peer": true, + "dependencies": { + "invariant": "^2.2.4", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/react": "^18.2.6", + "react": "*", + "react-native": "*" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-spring/node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "peer": true + }, + "node_modules/react-spring/node_modules/scheduler": { + "version": "0.24.0-canary-efb381bbf-20230505", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.24.0-canary-efb381bbf-20230505.tgz", + "integrity": "sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/react-spring/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/react-spring/node_modules/ws": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", + "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", + "peer": true, + "dependencies": { + "async-limiter": "~1.0.0" + } + }, "node_modules/react-style-singleton": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", @@ -29668,11 +29819,11 @@ } }, "node_modules/react-tooltip": { - "version": "5.24.0", - "resolved": "https://registry.npmjs.org/react-tooltip/-/react-tooltip-5.24.0.tgz", - "integrity": "sha512-HjstgpOrUwP4eN6mHU4EThpbxVuKO5SvqumRt1aAcPq0ya+pIVVxlwltndtdIIMBJ7w3jnN05vNfcfh2sxE2mQ==", + "version": "5.27.0", + "resolved": "https://registry.npmjs.org/react-tooltip/-/react-tooltip-5.27.0.tgz", + "integrity": "sha512-JXROcdfCEbCqkAkh8LyTSP3guQ0dG53iY2E2o4fw3D8clKzziMpE6QG6CclDaHELEKTzpMSeAOsdtg0ahoQosw==", "dependencies": { - "@floating-ui/dom": "^1.0.0", + "@floating-ui/dom": "^1.6.1", "classnames": "^2.3.0" }, "peerDependencies": { @@ -29709,9 +29860,9 @@ } }, "node_modules/react-virtuoso": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/react-virtuoso/-/react-virtuoso-4.6.2.tgz", - "integrity": "sha512-vvlqvzPif+MvBrJ09+hJJrVY0xJK9yran+A+/1iwY78k0YCVKsyoNPqoLxOxzYPggspNBNXqUXEcvckN29OxyQ==", + "version": "4.7.11", + "resolved": "https://registry.npmjs.org/react-virtuoso/-/react-virtuoso-4.7.11.tgz", + "integrity": "sha512-Kdn9qEtQI2ulEuBMzW2BTkDsfijB05QUd6lpZ1K36oyA3k65Cz4lG4EKrh2pCfUafX4C2uMSZOwzMOhbrMOTFA==", "engines": { "node": ">=10" }, @@ -29969,15 +30120,15 @@ "peer": true }, "node_modules/recast": { - "version": "0.23.4", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.4.tgz", - "integrity": "sha512-qtEDqIZGVcSZCHniWwZWbRy79Dc6Wp3kT/UmDA2RJKBPg7+7k51aQBZirHmUGn5uvHf2rg8DkjizrN26k61ATw==", + "version": "0.23.9", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.9.tgz", + "integrity": "sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==", "dev": true, "dependencies": { - "assert": "^2.0.0", "ast-types": "^0.16.1", "esprima": "~4.0.0", "source-map": "~0.6.1", + "tiny-invariant": "^1.3.3", "tslib": "^2.0.1" }, "engines": { @@ -30051,15 +30202,16 @@ } }, "node_modules/reflect.getprototypeof": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz", - "integrity": "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", + "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", "globalthis": "^1.0.3", "which-builtin-type": "^1.1.3" }, @@ -30071,13 +30223,24 @@ } }, "node_modules/reflect.ownkeys": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz", - "integrity": "sha512-qOLsBKHCpSOFKK1NUOCGC5VyeufB6lEsFe92AL2bhIJsacZS1qdoOZSbPk3MYKuT2cFlRDnulKXuuElIrMjGUg==" + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/reflect.ownkeys/-/reflect.ownkeys-1.1.4.tgz", + "integrity": "sha512-iUNmtLgzudssL+qnTUosCmnq3eczlrVd1wXrgx/GhiI/8FvwrTYWtCJ9PNvWIRX+4ftupj2WUfB5mu5s9t6LnA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-set-tostringtag": "^2.0.1", + "globalthis": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/regenerate": { "version": "1.4.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" }, "node_modules/regenerate-unicode-properties": { "version": "10.1.1", @@ -30091,25 +30254,27 @@ } }, "node_modules/regenerator-runtime": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", - "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" }, "node_modules/regenerator-transform": { "version": "0.15.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", "dependencies": { "@babel/runtime": "^7.8.4" } }, "node_modules/regexp.prototype.flags": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", - "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "set-function-name": "^2.0.0" + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" }, "engines": { "node": ">= 0.4" @@ -30120,7 +30285,8 @@ }, "node_modules/regexpu-core": { "version": "5.3.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", "dependencies": { "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", @@ -30135,7 +30301,8 @@ }, "node_modules/regjsparser": { "version": "0.9.1", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", "dependencies": { "jsesc": "~0.5.0" }, @@ -30145,6 +30312,8 @@ }, "node_modules/regjsparser/node_modules/jsesc": { "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", "bin": { "jsesc": "bin/jsesc" } @@ -30172,9 +30341,9 @@ } }, "node_modules/regl-line2d": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/regl-line2d/-/regl-line2d-3.1.2.tgz", - "integrity": "sha512-nmT7WWS/WxmXAQMkgaMKWXaVmwJ65KCrjbqHGOUjjqQi6shfT96YbBOvelXwO9hG7/hjvbzjtQ2UO0L3e7YaXQ==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/regl-line2d/-/regl-line2d-3.1.3.tgz", + "integrity": "sha512-fkgzW+tTn4QUQLpFKsUIE0sgWdCmXAM3ctXcCgoGBZTSX5FE2A0M7aynz7nrZT5baaftLrk9te54B+MEq4QcSA==", "peer": true, "dependencies": { "array-bounds": "^1.0.1", @@ -30184,7 +30353,6 @@ "earcut": "^2.1.5", "es6-weak-map": "^2.0.3", "flatten-vertex-data": "^1.0.2", - "glslify": "^7.0.0", "object-assign": "^4.1.1", "parse-rect": "^1.2.0", "pick-by-alias": "^1.2.0", @@ -30192,9 +30360,9 @@ } }, "node_modules/regl-scatter2d": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/regl-scatter2d/-/regl-scatter2d-3.2.9.tgz", - "integrity": "sha512-PNrXs+xaCClKpiB2b3HZ2j3qXQXhC5kcTh/Nfgx9rLO0EpEhab0BSQDqAsbdbpdf+pSHSJvbgitB7ulbGeQ+Fg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/regl-scatter2d/-/regl-scatter2d-3.3.1.tgz", + "integrity": "sha512-seOmMIVwaCwemSYz/y4WE0dbSO9svNFSqtTh5RE57I7PjGo3tcUYKtH0MTSoshcAsreoqN8HoCtnn8wfHXXfKQ==", "peer": true, "dependencies": { "@plotly/point-cluster": "^3.1.9", @@ -30241,8 +30409,9 @@ }, "node_modules/remark-external-links": { "version": "8.0.0", + "resolved": "https://registry.npmjs.org/remark-external-links/-/remark-external-links-8.0.0.tgz", + "integrity": "sha512-5vPSX0kHoSsqtdftSHhIYofVINC8qmp0nctkeU9YoJwV3YfiBRiI6cbFRJ0oI/1F9xS+bopXG0m2KS8VFscuKA==", "dev": true, - "license": "MIT", "dependencies": { "extend": "^3.0.0", "is-absolute-url": "^3.0.0", @@ -30255,6 +30424,61 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/remark-external-links/node_modules/@types/unist": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", + "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==", + "dev": true + }, + "node_modules/remark-external-links/node_modules/space-separated-tokens": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", + "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/remark-external-links/node_modules/unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-external-links/node_modules/unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-external-links/node_modules/unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/remark-parse": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", @@ -30288,8 +30512,9 @@ }, "node_modules/remark-slug": { "version": "6.1.0", + "resolved": "https://registry.npmjs.org/remark-slug/-/remark-slug-6.1.0.tgz", + "integrity": "sha512-oGCxDF9deA8phWvxFuyr3oSJsdyUAxMFbA0mZ7Y1Sas+emILtO+e5WutF9564gDsEN4IXaQXm5pFo6MLH+YmwQ==", "dev": true, - "license": "MIT", "dependencies": { "github-slugger": "^1.0.0", "mdast-util-to-string": "^1.0.0", @@ -30300,6 +30525,61 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/remark-slug/node_modules/@types/unist": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", + "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==", + "dev": true + }, + "node_modules/remark-slug/node_modules/mdast-util-to-string": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz", + "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-slug/node_modules/unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-slug/node_modules/unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-slug/node_modules/unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/renderkid": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", @@ -30338,8 +30618,9 @@ }, "node_modules/requireindex": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", + "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.5" } @@ -30436,7 +30717,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -30461,6 +30741,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dependencies": { "glob": "^7.1.3" }, @@ -30475,6 +30756,7 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -30506,7 +30788,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, "funding": [ { "type": "github", @@ -30540,12 +30821,12 @@ } }, "node_modules/safe-array-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", - "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", "has-symbols": "^1.0.3", "isarray": "^2.0.5" }, @@ -30576,14 +30857,17 @@ ] }, "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", "is-regex": "^1.1.4" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -30615,6 +30899,7 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -30632,9 +30917,9 @@ } }, "node_modules/sass-loader": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.3.2.tgz", - "integrity": "sha512-CQbKl57kdEv+KDLquhC+gE3pXt74LEAzm+tzywcA0/aHZuub8wTErbjAoNI57rPUWRYRNC5WUnNl8eGJNbDdwg==", + "version": "13.3.3", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.3.3.tgz", + "integrity": "sha512-mt5YN2F1MOZr3d/wBRcZxeFgwgkH44wVc2zohO2YF6JiOMkiXe4BYRZpSu2sO1g71mo/j16txzUhsKZlqjVGzA==", "dev": true, "dependencies": { "neo-async": "^2.6.2" @@ -30669,36 +30954,72 @@ } }, "node_modules/sax": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", - "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", "peer": true }, "node_modules/scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", "dependencies": { "loose-envify": "^1.1.0" } }, "node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" }, "engines": { - "node": ">= 10.13.0" + "node": ">= 12.13.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" } }, + "node_modules/schema-utils/node_modules/ajv": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", + "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/schema-utils/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/schema-utils/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, "node_modules/scss-tokenizer": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.4.3.tgz", @@ -30709,6 +31030,15 @@ "source-map": "^0.7.3" } }, + "node_modules/scss-tokenizer/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, "node_modules/sdp": { "version": "2.12.0", "resolved": "https://registry.npmjs.org/sdp/-/sdp-2.12.0.tgz", @@ -30741,7 +31071,6 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", - "dev": true, "dependencies": { "@types/node-forge": "^1.3.0", "node-forge": "^1" @@ -30751,11 +31080,9 @@ } }, "node_modules/semver": { - "version": "7.5.4", - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "bin": { "semver": "bin/semver.js" }, @@ -30763,22 +31090,6 @@ "node": ">=10" } }, - "node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/send": { "version": "0.18.0", "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", @@ -30815,17 +31126,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, - "node_modules/send/node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/send/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -30841,9 +31141,9 @@ } }, "node_modules/serialize-javascript": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", - "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dependencies": { "randombytes": "^2.1.0" } @@ -30946,27 +31246,30 @@ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, "node_modules/set-function-length": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", - "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dependencies": { - "define-data-property": "^1.1.1", - "get-intrinsic": "^1.2.1", + "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.0" + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" } }, "node_modules/set-function-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", - "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", "dependencies": { - "define-data-property": "^1.0.1", + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -31022,19 +31325,22 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", - "peer": true, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -31097,17 +31403,6 @@ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" }, - "node_modules/simple-update-notifier": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", @@ -31135,6 +31430,15 @@ "node": ">=6" } }, + "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "peer": true, + "engines": { + "node": ">=4" + } + }, "node_modules/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -31185,16 +31489,16 @@ } }, "node_modules/socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", "dev": true, "dependencies": { - "ip": "^2.0.0", + "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" }, "engines": { - "node": ">= 10.13.0", + "node": ">= 10.0.0", "npm": ">= 3.0.0" } }, @@ -31212,24 +31516,18 @@ "node": ">= 10" } }, - "node_modules/socks/node_modules/ip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.1.tgz", - "integrity": "sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==", - "dev": true - }, "node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "engines": { - "node": ">= 8" + "node": ">=0.10.0" } }, "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -31255,9 +31553,9 @@ } }, "node_modules/space-separated-tokens": { - "version": "1.1.5", - "dev": true, - "license": "MIT", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -31274,9 +31572,9 @@ } }, "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", "dev": true }, "node_modules/spdx-expression-parse": { @@ -31290,9 +31588,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.16", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", - "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", + "version": "3.0.18", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz", + "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==", "dev": true }, "node_modules/spdy": { @@ -31418,9 +31716,9 @@ } }, "node_modules/stackblur-canvas": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/stackblur-canvas/-/stackblur-canvas-2.6.0.tgz", - "integrity": "sha512-8S1aIA+UoF6erJYnglGPug6MaHYGo1Ot7h5fuXx4fUPvcvQfcdw2o/ppCse63+eZf8PPidSu4v1JnmEVtEDnpg==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/stackblur-canvas/-/stackblur-canvas-2.7.0.tgz", + "integrity": "sha512-yf7OENo23AGJhBriGx0QivY5JP6Y1HbrrDI6WLt6C5auYZXlQrheoY8hD4ibekFKz1HOfE48Ww8kMWMnJD/zcQ==", "optional": true, "engines": { "node": ">=0.1.14" @@ -31453,104 +31751,12 @@ } }, "node_modules/static-eval": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.1.0.tgz", - "integrity": "sha512-agtxZ/kWSsCkI5E4QifRwsaPs0P0JmZV6dkLz6ILYfFYQGn+5plctanRN+IC8dJRiFkyXHrwEE3W9Wmx67uDbw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.1.1.tgz", + "integrity": "sha512-MgWpQ/ZjGieSVB3eOJVs4OA2LT/q1vx98KPCTTQPzq/aLr0YUXTsgryTXr4SLfR0ZfUUCiedM9n/ABeDIyy4mA==", "peer": true, "dependencies": { - "escodegen": "^1.11.1" - } - }, - "node_modules/static-eval/node_modules/escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "peer": true, - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=4.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/static-eval/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "peer": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/static-eval/node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "peer": true, - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/static-eval/node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "peer": true, - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/static-eval/node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "peer": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/static-eval/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "optional": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-eval/node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "peer": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" + "escodegen": "^2.1.0" } }, "node_modules/statuses": { @@ -31619,18 +31825,18 @@ } }, "node_modules/store2": { - "version": "2.14.2", - "dev": true, - "license": "(MIT OR GPL-3.0)" + "version": "2.14.3", + "resolved": "https://registry.npmjs.org/store2/-/store2-2.14.3.tgz", + "integrity": "sha512-4QcZ+yx7nzEFiV4BMLnr/pRa5HYzNITX2ri0Zh6sT9EyQHbBHacC6YigllUPU9X3D0f/22QCgfokpKs52YRrUg==", + "dev": true }, "node_modules/storybook": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-7.6.3.tgz", - "integrity": "sha512-H3odxahMiR8vVW7ltlqcHhn3UVH5ta03weKlY7xvpv5DV+thZ+mEO2cDYfsufCSg0Ldb5LQ4qq3OyLVdpDBN8g==", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-7.6.20.tgz", + "integrity": "sha512-Wt04pPTO71pwmRmsgkyZhNo4Bvdb/1pBAMsIFb9nQLykEdzzpXjvingxFFvdOG4nIowzwgxD+CLlyRqVJqnATw==", "dev": true, - "license": "MIT", "dependencies": { - "@storybook/cli": "7.6.3" + "@storybook/cli": "7.6.20" }, "bin": { "sb": "index.js", @@ -31666,9 +31872,9 @@ "peer": true }, "node_modules/stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==" }, "node_modules/string_decoder": { "version": "1.3.0", @@ -31721,8 +31927,9 @@ "node_modules/string-width-cjs": { "name": "string-width", "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, - "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -31732,51 +31939,41 @@ "node": ">=8" } }, - "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "engines": { - "node": ">=8" - } - }, "node_modules/string.prototype.matchall": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", - "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", + "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "regexp.prototype.flags": "^1.5.0", - "set-function-name": "^2.0.0", - "side-channel": "^1.0.4" + "internal-slot": "^1.0.7", + "regexp.prototype.flags": "^1.5.2", + "set-function-name": "^2.0.2", + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trim": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -31786,35 +31983,38 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", - "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/stringify-entities": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz", - "integrity": "sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", "dependencies": { "character-entities-html4": "^2.0.0", "character-entities-legacy": "^3.0.0" @@ -31838,8 +32038,9 @@ "node_modules/strip-ansi-cjs": { "name": "strip-ansi", "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, - "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -31904,9 +32105,9 @@ "peer": true }, "node_modules/style-loader": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.3.tgz", - "integrity": "sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw==", + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.4.tgz", + "integrity": "sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==", "dev": true, "engines": { "node": ">= 12.13.0" @@ -31920,16 +32121,16 @@ } }, "node_modules/style-mod": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.0.tgz", - "integrity": "sha512-Ca5ib8HrFn+f+0n4N4ScTIA9iTOQ7MaGS1ylHcoVqW9J7w2w8PzN6g9gKmTYgGEBH8e120+RCmhpje6jC5uGWA==" + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.2.tgz", + "integrity": "sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==" }, "node_modules/style-to-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.5.tgz", - "integrity": "sha512-rDRwHtoDD3UMMrmZ6BzOW0naTjMsVZLIjsGleSKS/0Oz+cgCfAPRspaqJuE8rDzpKha/nEvnM0IF4seEAZUTKQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.6.tgz", + "integrity": "sha512-khxq+Qm3xEyZfKd/y9L3oIWQimxuc4STrQKtQn8aSDRHb8mFgpukgX1hdzfrMEW6JCjyJ8p89x+IUMVnCBI1PA==", "dependencies": { - "inline-style-parser": "0.2.2" + "inline-style-parser": "0.2.3" } }, "node_modules/styled-components": { @@ -32008,6 +32209,11 @@ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz", "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==" }, + "node_modules/styled-components/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, "node_modules/styled-components/node_modules/stylis": { "version": "3.5.4", "resolved": "https://registry.npmjs.org/stylis/-/stylis-3.5.4.tgz", @@ -32070,16 +32276,17 @@ "peer": true }, "node_modules/superstruct": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-1.0.3.tgz", - "integrity": "sha512-8iTn3oSS8nRGn+C2pgXSKPI3jmpm6FExNazNpjvqS6ZUJQCej3PUXEKM8NjHBOs54ExM+LPW/FBRhymrdcCiSg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-1.0.4.tgz", + "integrity": "sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==", "engines": { "node": ">=14.0.0" } }, "node_modules/supports-color": { "version": "5.5.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dependencies": { "has-flag": "^3.0.0" }, @@ -32193,10 +32400,13 @@ } }, "node_modules/swc-loader": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/swc-loader/-/swc-loader-0.2.3.tgz", - "integrity": "sha512-D1p6XXURfSPleZZA/Lipb3A8pZ17fP4NObZvFCDjK/OKljroqDpPmsBdTraWhVBqUNpcWBQY1imWdoPScRlQ7A==", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/swc-loader/-/swc-loader-0.2.6.tgz", + "integrity": "sha512-9Zi9UP2YmDpgmQVbyOPJClY0dwf58JDyDMQ7uRc4krmc72twNI2fvlBWHLqVekBpPc7h5NJkGVT1zNDxFrqhvg==", "dev": true, + "dependencies": { + "@swc/counter": "^0.1.3" + }, "peerDependencies": { "@swc/core": "^1.2.147", "webpack": ">=2" @@ -32204,8 +32414,9 @@ }, "node_modules/synchronous-promise": { "version": "2.0.17", - "dev": true, - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/synchronous-promise/-/synchronous-promise-2.0.17.tgz", + "integrity": "sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g==", + "dev": true }, "node_modules/tabbable": { "version": "6.2.0", @@ -32240,8 +32451,9 @@ }, "node_modules/tar-fs": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", "dev": true, - "license": "MIT", "dependencies": { "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", @@ -32251,13 +32463,15 @@ }, "node_modules/tar-fs/node_modules/chownr": { "version": "1.1.4", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true }, "node_modules/tar-stream": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", "dev": true, - "license": "MIT", "dependencies": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", @@ -32271,8 +32485,9 @@ }, "node_modules/tar-stream/node_modules/bl": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, - "license": "MIT", "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -32281,6 +32496,8 @@ }, "node_modules/tar-stream/node_modules/buffer": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, "funding": [ { @@ -32296,7 +32513,6 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -32322,7 +32538,6 @@ "resolved": "https://registry.npmjs.org/telejson/-/telejson-7.2.0.tgz", "integrity": "sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==", "dev": true, - "license": "MIT", "dependencies": { "memoizerific": "^1.11.3" } @@ -32340,8 +32555,8 @@ }, "node_modules/temp-dir": { "version": "2.0.0", - "dev": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", "engines": { "node": ">=8" } @@ -32350,6 +32565,7 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -32369,6 +32585,7 @@ "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dependencies": { "glob": "^7.1.3" }, @@ -32378,8 +32595,9 @@ }, "node_modules/tempy": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-1.0.1.tgz", + "integrity": "sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==", "dev": true, - "license": "MIT", "dependencies": { "del": "^6.0.0", "is-stream": "^2.0.0", @@ -32396,8 +32614,9 @@ }, "node_modules/tempy/node_modules/type-fest": { "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -32406,9 +32625,9 @@ } }, "node_modules/terser": { - "version": "5.24.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.24.0.tgz", - "integrity": "sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw==", + "version": "5.31.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.1.tgz", + "integrity": "sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg==", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -32423,15 +32642,15 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.9", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", - "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.17", + "@jridgewell/trace-mapping": "^0.3.20", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.1", - "terser": "^5.16.8" + "terser": "^5.26.0" }, "engines": { "node": ">= 10.13.0" @@ -32476,6 +32695,23 @@ "node": ">= 10.13.0" } }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, "node_modules/terser-webpack-plugin/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -32530,6 +32766,7 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -32562,9 +32799,9 @@ "dev": true }, "node_modules/three": { - "version": "0.159.0", - "resolved": "https://registry.npmjs.org/three/-/three-0.159.0.tgz", - "integrity": "sha512-eCmhlLGbBgucuo4VEA9IO3Qpc7dh8Bd4VKzr7WfW4+8hMcIfoAVi1ev0pJYN9PTTsCslbcKgBwr2wNZ1EvLInA==", + "version": "0.165.0", + "resolved": "https://registry.npmjs.org/three/-/three-0.165.0.tgz", + "integrity": "sha512-cc96IlVYGydeceu0e5xq70H8/yoVT/tXBxV/W8A/U6uOq7DXc4/s1Mkmnu6SqoYGhSRWWYFOhVwvq6V0VtbplA==", "peer": true }, "node_modules/throat": { @@ -32626,9 +32863,9 @@ "dev": true }, "node_modules/tiny-invariant": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", - "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==" + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==" }, "node_modules/tiny-warning": { "version": "1.0.3", @@ -32686,9 +32923,9 @@ } }, "node_modules/tocbot": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/tocbot/-/tocbot-4.23.0.tgz", - "integrity": "sha512-5DWuSZXsqG894mkGb8ZsQt9myyQyVxE50AiGRZ0obV0BVUTVkaZmc9jbgpknaAAPUm4FIrzGkEseD6FuQJYJDQ==", + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/tocbot/-/tocbot-4.28.2.tgz", + "integrity": "sha512-/MaSa9xI6mIo84IxqqliSCtPlH0oy7sLcY9s26qPMyH/2CxtZ2vNAXYlIdEQ7kjAkCQnc0rbLygf//F5c663oQ==", "dev": true }, "node_modules/toggle-selection": { @@ -32764,16 +33001,17 @@ }, "node_modules/ts-dedent": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", + "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.10" } }, "node_modules/tsconfig-paths": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", - "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, "dependencies": { "@types/json5": "^0.0.29", @@ -32804,9 +33042,9 @@ } }, "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/tsutils": { "version": "3.21.0", @@ -32831,13 +33069,14 @@ }, "node_modules/tween-functions": { "version": "1.2.0", - "dev": true, - "license": "BSD" + "resolved": "https://registry.npmjs.org/tween-functions/-/tween-functions-1.2.0.tgz", + "integrity": "sha512-PZBtLYcCLtEcjL14Fzb1gSxPBeL7nWvGhO5ZFPGqziCcr8uvHp0NDmdjBchp6KHL+tExcg0m3NISmKxhU394dA==", + "dev": true }, "node_modules/type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", + "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==", "peer": true }, "node_modules/type-check": { @@ -32886,27 +33125,28 @@ } }, "node_modules/typed-array-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", - "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" } }, "node_modules/typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -32916,15 +33156,16 @@ } }, "node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -32934,13 +33175,19 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -32962,9 +33209,9 @@ } }, "node_modules/typescript": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.2.tgz", - "integrity": "sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==", + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.2.tgz", + "integrity": "sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==", "dev": true, "peer": true, "bin": { @@ -32976,9 +33223,9 @@ } }, "node_modules/ua-parser-js": { - "version": "0.7.37", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.37.tgz", - "integrity": "sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA==", + "version": "0.7.38", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.38.tgz", + "integrity": "sha512-fYmIy7fKTSFAhG3fuPlubeGaMoAd6r0rSnfEsO5nEY55i26KSLt9EH7PLQiiqPUhNqYIJvSkTy1oArIcXAbPbA==", "funding": [ { "type": "opencollective", @@ -32997,42 +33244,17 @@ "node": "*" } }, - "node_modules/uglify-es": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", - "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", - "deprecated": "support for ECMAScript is superseded by `uglify-js` as of v3.13.0", - "peer": true, - "dependencies": { - "commander": "~2.13.0", - "source-map": "~0.6.1" - }, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/uglify-es/node_modules/commander": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", - "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", - "peer": true - }, - "node_modules/uglify-es/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "peer": true, - "engines": { - "node": ">=0.10.0" - } + "node_modules/ufo": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.3.tgz", + "integrity": "sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==", + "dev": true }, "node_modules/uglify-js": { - "version": "3.17.4", + "version": "3.18.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.18.0.tgz", + "integrity": "sha512-SyVVbcNBCk0dzr9XL/R/ySrmYf0s372K6/hFklzgcp2lBFyXtw4I7BOdDjlLhE1aVqaI/SHWXWmYdlZxuyF38A==", "dev": true, - "license": "BSD-2-Clause", "optional": true, "bin": { "uglifyjs": "bin/uglifyjs" @@ -33076,14 +33298,16 @@ }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "engines": { "node": ">=4" } }, "node_modules/unicode-match-property-ecmascript": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" @@ -33094,22 +33318,24 @@ }, "node_modules/unicode-match-property-value-ecmascript": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", "engines": { "node": ">=4" } }, "node_modules/unicode-property-aliases-ecmascript": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "engines": { "node": ">=4" } }, "node_modules/unified": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", - "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", "dependencies": { "@types/unist": "^3.0.0", "bail": "^2.0.0", @@ -33124,11 +33350,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/unified/node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" - }, "node_modules/unified/node_modules/is-plain-obj": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", @@ -33166,8 +33387,9 @@ }, "node_modules/unique-string": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", "dev": true, - "license": "MIT", "dependencies": { "crypto-random-string": "^2.0.0" }, @@ -33176,9 +33398,12 @@ } }, "node_modules/unist-util-is": { - "version": "4.1.0", - "dev": true, - "license": "MIT", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dependencies": { + "@types/unist": "^3.0.0" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" @@ -33196,11 +33421,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-position/node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" - }, "node_modules/unist-util-remove-position": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", @@ -33214,50 +33434,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-remove-position/node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" - }, - "node_modules/unist-util-remove-position/node_modules/unist-util-is": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", - "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-remove-position/node_modules/unist-util-visit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", - "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-remove-position/node_modules/unist-util-visit-parents": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", - "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/unist-util-stringify-position": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", @@ -33270,19 +33446,14 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-stringify-position/node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" - }, "node_modules/unist-util-visit": { - "version": "2.0.3", - "dev": true, - "license": "MIT", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0", - "unist-util-visit-parents": "^3.0.0" + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" }, "funding": { "type": "opencollective", @@ -33290,12 +33461,12 @@ } }, "node_modules/unist-util-visit-parents": { - "version": "3.1.1", - "dev": true, - "license": "MIT", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0" + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" }, "funding": { "type": "opencollective", @@ -33307,7 +33478,6 @@ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 10.0.0" } @@ -33339,16 +33509,17 @@ }, "node_modules/untildify": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", + "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", "funding": [ { "type": "opencollective", @@ -33363,10 +33534,9 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.1.2", + "picocolors": "^1.0.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -33394,7 +33564,6 @@ "resolved": "https://registry.npmjs.org/url/-/url-0.11.3.tgz", "integrity": "sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==", "dev": true, - "license": "MIT", "dependencies": { "punycode": "^1.4.1", "qs": "^6.11.2" @@ -33410,13 +33579,14 @@ }, "node_modules/url/node_modules/punycode": { "version": "1.4.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true }, "node_modules/use-callback-ref": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz", - "integrity": "sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.2.tgz", + "integrity": "sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==", "dependencies": { "tslib": "^2.0.0" }, @@ -33465,8 +33635,9 @@ }, "node_modules/use-resize-observer": { "version": "9.1.0", + "resolved": "https://registry.npmjs.org/use-resize-observer/-/use-resize-observer-9.1.0.tgz", + "integrity": "sha512-R25VqO9Wb3asSD4eqtcxk8sJalvIOYBqS8MNZlpDSQ4l4xMQxC/J7Id9HoTqPq8FwULIn0PVW+OAqF2dyYbjow==", "dev": true, - "license": "MIT", "dependencies": { "@juggle/resize-observer": "^3.3.1" }, @@ -33554,9 +33725,9 @@ } }, "node_modules/v8-to-istanbul": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", - "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", @@ -33612,16 +33783,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/vfile-message/node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" - }, - "node_modules/vfile/node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" - }, "node_modules/vlq": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz", @@ -33669,9 +33830,9 @@ } }, "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", + "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -33704,9 +33865,9 @@ "peer": true }, "node_modules/web-streams-polyfill": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", - "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", "engines": { "node": ">= 8" } @@ -33726,33 +33887,33 @@ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "node_modules/webpack": { - "version": "5.89.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz", - "integrity": "sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==", + "version": "5.92.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.92.1.tgz", + "integrity": "sha512-JECQ7IwJb+7fgUFBlrJzbyu3GEuNBcdqr1LD7IbSzwkSmIevTm8PF+wej3Oxuz/JFBUZ6O1o43zsPkwm1C4TmA==", "dependencies": { "@types/eslint-scope": "^3.7.3", - "@types/estree": "^1.0.0", - "@webassemblyjs/ast": "^1.11.5", - "@webassemblyjs/wasm-edit": "^1.11.5", - "@webassemblyjs/wasm-parser": "^1.11.5", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", "acorn": "^8.7.1", - "acorn-import-assertions": "^1.9.0", - "browserslist": "^4.14.5", + "acorn-import-attributes": "^1.9.5", + "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.15.0", + "enhanced-resolve": "^5.17.0", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", + "graceful-fs": "^4.2.11", "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", "schema-utils": "^3.2.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.7", - "watchpack": "^2.4.0", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", "webpack-sources": "^3.2.3" }, "bin": { @@ -33816,12 +33977,6 @@ } } }, - "node_modules/webpack-cli/node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true - }, "node_modules/webpack-cli/node_modules/interpret": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", @@ -33859,69 +34014,10 @@ } } }, - "node_modules/webpack-dev-middleware/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/webpack-dev-middleware/node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true - }, - "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/webpack-dev-middleware/node_modules/schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/webpack-dev-server": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.1.tgz", - "integrity": "sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==", + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz", + "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==", "dev": true, "dependencies": { "@types/bonjour": "^3.5.9", @@ -33930,7 +34026,7 @@ "@types/serve-index": "^1.9.1", "@types/serve-static": "^1.13.10", "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.1", + "@types/ws": "^8.5.5", "ansi-html-community": "^0.0.8", "bonjour-service": "^1.0.11", "chokidar": "^3.5.3", @@ -33943,6 +34039,7 @@ "html-entities": "^2.3.2", "http-proxy-middleware": "^2.0.3", "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", "open": "^8.0.9", "p-retry": "^4.5.0", "rimraf": "^3.0.2", @@ -33951,8 +34048,8 @@ "serve-index": "^1.9.1", "sockjs": "^0.3.24", "spdy": "^4.0.2", - "webpack-dev-middleware": "^5.3.1", - "ws": "^8.4.2" + "webpack-dev-middleware": "^5.3.4", + "ws": "^8.13.0" }, "bin": { "webpack-dev-server": "bin/webpack-dev-server.js" @@ -33968,108 +34065,23 @@ "webpack": "^4.37.0 || ^5.0.0" }, "peerDependenciesMeta": { + "webpack": { + "optional": true + }, "webpack-cli": { "optional": true } } }, - "node_modules/webpack-dev-server/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/webpack-dev-server/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/webpack-dev-server/node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true - }, "node_modules/webpack-dev-server/node_modules/ipaddr.js": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", - "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", "dev": true, "engines": { "node": ">= 10" } }, - "node_modules/webpack-dev-server/node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/webpack-dev-server/node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", - "dev": true, - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/webpack-dev-server/node_modules/schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/webpack-dev-server/node_modules/webpack-dev-middleware": { "version": "5.3.4", "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", @@ -34093,31 +34105,11 @@ "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.14.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", - "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/webpack-hot-middleware": { - "version": "2.25.4", + "version": "2.26.1", + "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.26.1.tgz", + "integrity": "sha512-khZGfAeJx6I8K9zKohEWWYN6KDlVw2DHownoe+6Vtwj1LP9WFgegXnVMSkZ/dBEBtXFwrkkydsaPFlB7f8wU2A==", "dev": true, - "license": "MIT", "dependencies": { "ansi-html-community": "0.0.8", "html-entities": "^2.1.0", @@ -34148,25 +34140,18 @@ }, "node_modules/webpack-virtual-modules": { "version": "0.5.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz", + "integrity": "sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==" }, "node_modules/webpack/node_modules/@types/estree": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" }, - "node_modules/webpack/node_modules/acorn-import-assertions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", - "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", - "peerDependencies": { - "acorn": "^8" - } - }, "node_modules/webpack/node_modules/enhanced-resolve": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", - "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", + "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -34175,6 +34160,23 @@ "node": ">=10.13.0" } }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, "node_modules/webpack/node_modules/tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", @@ -34220,9 +34222,9 @@ } }, "node_modules/whatwg-fetch": { - "version": "3.6.19", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.19.tgz", - "integrity": "sha512-d67JP4dHSbm2TrpFj8AbO8DnL1JXL5J9u0Kq2xW6d0TFDbCA3Muhdt8orXC22utleTVj7Prqt82baN6RBvnEgw==" + "version": "3.6.20", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", + "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==" }, "node_modules/whatwg-url": { "version": "5.0.0", @@ -34289,15 +34291,18 @@ } }, "node_modules/which-collection": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", - "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", "dev": true, "dependencies": { - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-weakmap": "^2.0.1", - "is-weakset": "^2.0.1" + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -34310,15 +34315,15 @@ "peer": true }, "node_modules/which-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", - "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -34362,15 +34367,16 @@ "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "peer": true, + "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/wordwrap": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true }, "node_modules/world-calendars": { "version": "1.0.3", @@ -34400,8 +34406,9 @@ "node_modules/wrap-ansi-cjs": { "name": "wrap-ansi", "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -34416,8 +34423,9 @@ }, "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -34461,11 +34469,24 @@ } }, "node_modules/ws": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", - "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", - "dependencies": { - "async-limiter": "~1.0.0" + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "devOptional": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, "node_modules/xlsx": { @@ -34533,9 +34554,9 @@ } }, "node_modules/y-webrtc": { - "version": "10.2.6", - "resolved": "https://registry.npmjs.org/y-webrtc/-/y-webrtc-10.2.6.tgz", - "integrity": "sha512-1kZ4YYwksFZi8+l8mTebVX9vW6Q5MnqxMkvNU700X5dBE38usurt/JgeXSIQRpK3NwUYYb9y63Jn9FMpMH6/vA==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/y-webrtc/-/y-webrtc-10.3.0.tgz", + "integrity": "sha512-KalJr7dCgUgyVFxoG3CQYbpS0O2qybegD0vI4bYnYHI0MOwoVbucED3RZ5f2o1a5HZb1qEssUKS0H/Upc6p1lA==", "dependencies": { "lib0": "^0.2.42", "simple-peer": "^9.11.0", @@ -34558,31 +34579,10 @@ "yjs": "^13.6.8" } }, - "node_modules/y-webrtc/node_modules/ws": { - "version": "8.14.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", - "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", - "optional": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/y-websocket": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/y-websocket/-/y-websocket-1.5.0.tgz", - "integrity": "sha512-A8AO6XtnQlYwWFytWdkDCeXg4l8ghRTIw5h2YUgUYDmEC9ugWGIwYNW80yadhSFAF7CvuWTEkQNEpevnH6EiZw==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/y-websocket/-/y-websocket-1.5.4.tgz", + "integrity": "sha512-Y3021uy0anOIHqAPyAZbNDoR05JuMEGjRNI8c+K9MHzVS8dWoImdJUjccljAznc8H2L7WkIXhRHZ1igWNRSgPw==", "dependencies": { "lib0": "^0.2.52", "lodash.debounce": "^4.0.8", @@ -34592,6 +34592,10 @@ "y-websocket": "bin/server.js", "y-websocket-server": "bin/server.js" }, + "engines": { + "node": ">=16.0.0", + "npm": ">=8.0.0" + }, "funding": { "type": "GitHub Sponsors ❤", "url": "https://github.com/sponsors/dmonad" @@ -34604,6 +34608,15 @@ "yjs": "^13.5.6" } }, + "node_modules/y-websocket/node_modules/ws": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", + "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", + "optional": true, + "dependencies": { + "async-limiter": "~1.0.0" + } + }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -34661,17 +34674,18 @@ }, "node_modules/yauzl": { "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", "dev": true, - "license": "MIT", "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" } }, "node_modules/yjs": { - "version": "13.6.10", - "resolved": "https://registry.npmjs.org/yjs/-/yjs-13.6.10.tgz", - "integrity": "sha512-1JcyQek1vaMyrDm7Fqfa+pvHg/DURSbVo4VmeN7wjnTKB/lZrfIPhdCj7d8sboK6zLfRBJXegTjc9JlaDd8/Zw==", + "version": "13.6.18", + "resolved": "https://registry.npmjs.org/yjs/-/yjs-13.6.18.tgz", + "integrity": "sha512-GBTjO4QCmv2HFKFkYIJl7U77hIB1o22vSCSQD1Ge8ZxWbIbn8AltI4gyXbtL+g5/GJep67HCMq3Y5AmNwDSyEg==", "dependencies": { "lib0": "^0.2.86" }, @@ -34702,9 +34716,9 @@ "peer": true }, "node_modules/zustand": { - "version": "4.4.7", - "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.4.7.tgz", - "integrity": "sha512-QFJWJMdlETcI69paJwhSMJz7PPWjVP8Sjhclxmxmxv/RYI7ZOvR5BHX+ktH0we9gTWQMxcne8q1OY8xxz604gw==", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.2.tgz", + "integrity": "sha512-2cN1tPkDVkwCy5ickKrI7vijSjPksFRfqS6237NzT0vqSsztTNnQdHw9mmN7uBdk3gceVXU0a+21jFzFzAc9+g==", "dependencies": { "use-sync-external-store": "1.2.0" }, @@ -34713,7 +34727,7 @@ }, "peerDependencies": { "@types/react": ">=16.8", - "immer": ">=9.0", + "immer": ">=9.0.6", "react": ">=16.8" }, "peerDependenciesMeta": { diff --git a/plugins/package-lock.json b/plugins/package-lock.json index f0cb5d4650..188856360c 100644 --- a/plugins/package-lock.json +++ b/plugins/package-lock.json @@ -96,1008 +96,1116 @@ "node": ">=12.17" } }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@ampproject/remapping": { - "version": "2.2.1", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, - "license": "Apache-2.0", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@aws-crypto/crc32": { - "version": "3.0.0", - "license": "Apache-2.0", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", + "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", "dependencies": { - "@aws-crypto/util": "^3.0.0", + "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", - "tslib": "^1.11.1" + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, "node_modules/@aws-crypto/crc32c": { - "version": "3.0.0", - "license": "Apache-2.0", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-5.2.0.tgz", + "integrity": "sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==", "dependencies": { - "@aws-crypto/util": "^3.0.0", + "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", - "tslib": "^1.11.1" - } - }, - "node_modules/@aws-crypto/ie11-detection": { - "version": "3.0.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^1.11.1" + "tslib": "^2.6.2" } }, "node_modules/@aws-crypto/sha1-browser": { - "version": "3.0.0", - "license": "Apache-2.0", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz", + "integrity": "sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==", "dependencies": { - "@aws-crypto/ie11-detection": "^3.0.0", - "@aws-crypto/supports-web-crypto": "^3.0.0", - "@aws-crypto/util": "^3.0.0", + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "@aws-sdk/util-locate-window": "^3.0.0", - "@aws-sdk/util-utf8-browser": "^3.0.0", - "tslib": "^1.11.1" + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" } }, "node_modules/@aws-crypto/sha256-browser": { - "version": "3.0.0", - "license": "Apache-2.0", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", + "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", "dependencies": { - "@aws-crypto/ie11-detection": "^3.0.0", - "@aws-crypto/sha256-js": "^3.0.0", - "@aws-crypto/supports-web-crypto": "^3.0.0", - "@aws-crypto/util": "^3.0.0", + "@aws-crypto/sha256-js": "^5.2.0", + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "@aws-sdk/util-locate-window": "^3.0.0", - "@aws-sdk/util-utf8-browser": "^3.0.0", - "tslib": "^1.11.1" + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" } }, "node_modules/@aws-crypto/sha256-js": { - "version": "3.0.0", - "license": "Apache-2.0", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", + "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", "dependencies": { - "@aws-crypto/util": "^3.0.0", + "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", - "tslib": "^1.11.1" + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, "node_modules/@aws-crypto/supports-web-crypto": { - "version": "3.0.0", - "license": "Apache-2.0", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", + "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", "dependencies": { - "tslib": "^1.11.1" + "tslib": "^2.6.2" } }, "node_modules/@aws-crypto/util": { - "version": "3.0.0", - "license": "Apache-2.0", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", + "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", "dependencies": { "@aws-sdk/types": "^3.222.0", - "@aws-sdk/util-utf8-browser": "^3.0.0", - "tslib": "^1.11.1" + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" } }, "node_modules/@aws-sdk/client-cognito-identity": { - "version": "3.465.0", - "license": "Apache-2.0", + "version": "3.600.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.600.0.tgz", + "integrity": "sha512-8dYsnDLiD0rjujRiZZl0E57heUkHqMSFZHBi0YMs57SM8ODPxK3tahwDYZtS7bqanvFKZwGy+o9jIcij7jBOlA==", "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.465.0", - "@aws-sdk/core": "3.465.0", - "@aws-sdk/credential-provider-node": "3.465.0", - "@aws-sdk/middleware-host-header": "3.465.0", - "@aws-sdk/middleware-logger": "3.465.0", - "@aws-sdk/middleware-recursion-detection": "3.465.0", - "@aws-sdk/middleware-signing": "3.465.0", - "@aws-sdk/middleware-user-agent": "3.465.0", - "@aws-sdk/region-config-resolver": "3.465.0", - "@aws-sdk/types": "3.465.0", - "@aws-sdk/util-endpoints": "3.465.0", - "@aws-sdk/util-user-agent-browser": "3.465.0", - "@aws-sdk/util-user-agent-node": "3.465.0", - "@smithy/config-resolver": "^2.0.18", - "@smithy/fetch-http-handler": "^2.2.6", - "@smithy/hash-node": "^2.0.15", - "@smithy/invalid-dependency": "^2.0.13", - "@smithy/middleware-content-length": "^2.0.15", - "@smithy/middleware-endpoint": "^2.2.0", - "@smithy/middleware-retry": "^2.0.20", - "@smithy/middleware-serde": "^2.0.13", - "@smithy/middleware-stack": "^2.0.7", - "@smithy/node-config-provider": "^2.1.5", - "@smithy/node-http-handler": "^2.1.9", - "@smithy/protocol-http": "^3.0.9", - "@smithy/smithy-client": "^2.1.15", - "@smithy/types": "^2.5.0", - "@smithy/url-parser": "^2.0.13", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.0", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.19", - "@smithy/util-defaults-mode-node": "^2.0.25", - "@smithy/util-endpoints": "^1.0.4", - "@smithy/util-retry": "^2.0.6", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/client-sso-oidc": "3.600.0", + "@aws-sdk/client-sts": "3.600.0", + "@aws-sdk/core": "3.598.0", + "@aws-sdk/credential-provider-node": "3.600.0", + "@aws-sdk/middleware-host-header": "3.598.0", + "@aws-sdk/middleware-logger": "3.598.0", + "@aws-sdk/middleware-recursion-detection": "3.598.0", + "@aws-sdk/middleware-user-agent": "3.598.0", + "@aws-sdk/region-config-resolver": "3.598.0", + "@aws-sdk/types": "3.598.0", + "@aws-sdk/util-endpoints": "3.598.0", + "@aws-sdk/util-user-agent-browser": "3.598.0", + "@aws-sdk/util-user-agent-node": "3.598.0", + "@smithy/config-resolver": "^3.0.2", + "@smithy/core": "^2.2.1", + "@smithy/fetch-http-handler": "^3.0.2", + "@smithy/hash-node": "^3.0.1", + "@smithy/invalid-dependency": "^3.0.1", + "@smithy/middleware-content-length": "^3.0.1", + "@smithy/middleware-endpoint": "^3.0.2", + "@smithy/middleware-retry": "^3.0.4", + "@smithy/middleware-serde": "^3.0.1", + "@smithy/middleware-stack": "^3.0.1", + "@smithy/node-config-provider": "^3.1.1", + "@smithy/node-http-handler": "^3.0.1", + "@smithy/protocol-http": "^4.0.1", + "@smithy/smithy-client": "^3.1.2", + "@smithy/types": "^3.1.0", + "@smithy/url-parser": "^3.0.1", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.4", + "@smithy/util-defaults-mode-node": "^3.0.4", + "@smithy/util-endpoints": "^2.0.2", + "@smithy/util-middleware": "^3.0.1", + "@smithy/util-retry": "^3.0.1", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@aws-sdk/client-s3": { - "version": "3.465.0", - "license": "Apache-2.0", + "version": "3.600.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.600.0.tgz", + "integrity": "sha512-iYoKbJTputbf+ubkX6gSK/y/4uJEBRaXZ18jykLdBQ8UJuGrk2gqvV8h7OlGAhToCeysmmMqM0vDWyLt6lP8nw==", "dependencies": { - "@aws-crypto/sha1-browser": "3.0.0", - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.465.0", - "@aws-sdk/core": "3.465.0", - "@aws-sdk/credential-provider-node": "3.465.0", - "@aws-sdk/middleware-bucket-endpoint": "3.465.0", - "@aws-sdk/middleware-expect-continue": "3.465.0", - "@aws-sdk/middleware-flexible-checksums": "3.465.0", - "@aws-sdk/middleware-host-header": "3.465.0", - "@aws-sdk/middleware-location-constraint": "3.465.0", - "@aws-sdk/middleware-logger": "3.465.0", - "@aws-sdk/middleware-recursion-detection": "3.465.0", - "@aws-sdk/middleware-sdk-s3": "3.465.0", - "@aws-sdk/middleware-signing": "3.465.0", - "@aws-sdk/middleware-ssec": "3.465.0", - "@aws-sdk/middleware-user-agent": "3.465.0", - "@aws-sdk/region-config-resolver": "3.465.0", - "@aws-sdk/signature-v4-multi-region": "3.465.0", - "@aws-sdk/types": "3.465.0", - "@aws-sdk/util-endpoints": "3.465.0", - "@aws-sdk/util-user-agent-browser": "3.465.0", - "@aws-sdk/util-user-agent-node": "3.465.0", - "@aws-sdk/xml-builder": "3.465.0", - "@smithy/config-resolver": "^2.0.18", - "@smithy/eventstream-serde-browser": "^2.0.13", - "@smithy/eventstream-serde-config-resolver": "^2.0.13", - "@smithy/eventstream-serde-node": "^2.0.13", - "@smithy/fetch-http-handler": "^2.2.6", - "@smithy/hash-blob-browser": "^2.0.14", - "@smithy/hash-node": "^2.0.15", - "@smithy/hash-stream-node": "^2.0.15", - "@smithy/invalid-dependency": "^2.0.13", - "@smithy/md5-js": "^2.0.15", - "@smithy/middleware-content-length": "^2.0.15", - "@smithy/middleware-endpoint": "^2.2.0", - "@smithy/middleware-retry": "^2.0.20", - "@smithy/middleware-serde": "^2.0.13", - "@smithy/middleware-stack": "^2.0.7", - "@smithy/node-config-provider": "^2.1.5", - "@smithy/node-http-handler": "^2.1.9", - "@smithy/protocol-http": "^3.0.9", - "@smithy/smithy-client": "^2.1.15", - "@smithy/types": "^2.5.0", - "@smithy/url-parser": "^2.0.13", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.0", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.19", - "@smithy/util-defaults-mode-node": "^2.0.25", - "@smithy/util-endpoints": "^1.0.4", - "@smithy/util-retry": "^2.0.6", - "@smithy/util-stream": "^2.0.20", - "@smithy/util-utf8": "^2.0.2", - "@smithy/util-waiter": "^2.0.13", - "fast-xml-parser": "4.2.5", - "tslib": "^2.5.0" + "@aws-crypto/sha1-browser": "5.2.0", + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/client-sso-oidc": "3.600.0", + "@aws-sdk/client-sts": "3.600.0", + "@aws-sdk/core": "3.598.0", + "@aws-sdk/credential-provider-node": "3.600.0", + "@aws-sdk/middleware-bucket-endpoint": "3.598.0", + "@aws-sdk/middleware-expect-continue": "3.598.0", + "@aws-sdk/middleware-flexible-checksums": "3.598.0", + "@aws-sdk/middleware-host-header": "3.598.0", + "@aws-sdk/middleware-location-constraint": "3.598.0", + "@aws-sdk/middleware-logger": "3.598.0", + "@aws-sdk/middleware-recursion-detection": "3.598.0", + "@aws-sdk/middleware-sdk-s3": "3.598.0", + "@aws-sdk/middleware-signing": "3.598.0", + "@aws-sdk/middleware-ssec": "3.598.0", + "@aws-sdk/middleware-user-agent": "3.598.0", + "@aws-sdk/region-config-resolver": "3.598.0", + "@aws-sdk/signature-v4-multi-region": "3.598.0", + "@aws-sdk/types": "3.598.0", + "@aws-sdk/util-endpoints": "3.598.0", + "@aws-sdk/util-user-agent-browser": "3.598.0", + "@aws-sdk/util-user-agent-node": "3.598.0", + "@aws-sdk/xml-builder": "3.598.0", + "@smithy/config-resolver": "^3.0.2", + "@smithy/core": "^2.2.1", + "@smithy/eventstream-serde-browser": "^3.0.2", + "@smithy/eventstream-serde-config-resolver": "^3.0.1", + "@smithy/eventstream-serde-node": "^3.0.2", + "@smithy/fetch-http-handler": "^3.0.2", + "@smithy/hash-blob-browser": "^3.1.0", + "@smithy/hash-node": "^3.0.1", + "@smithy/hash-stream-node": "^3.1.0", + "@smithy/invalid-dependency": "^3.0.1", + "@smithy/md5-js": "^3.0.1", + "@smithy/middleware-content-length": "^3.0.1", + "@smithy/middleware-endpoint": "^3.0.2", + "@smithy/middleware-retry": "^3.0.4", + "@smithy/middleware-serde": "^3.0.1", + "@smithy/middleware-stack": "^3.0.1", + "@smithy/node-config-provider": "^3.1.1", + "@smithy/node-http-handler": "^3.0.1", + "@smithy/protocol-http": "^4.0.1", + "@smithy/smithy-client": "^3.1.2", + "@smithy/types": "^3.1.0", + "@smithy/url-parser": "^3.0.1", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.4", + "@smithy/util-defaults-mode-node": "^3.0.4", + "@smithy/util-endpoints": "^2.0.2", + "@smithy/util-retry": "^3.0.1", + "@smithy/util-stream": "^3.0.2", + "@smithy/util-utf8": "^3.0.0", + "@smithy/util-waiter": "^3.0.1", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-s3/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@aws-sdk/client-sesv2": { - "version": "3.465.0", - "license": "Apache-2.0", + "version": "3.600.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sesv2/-/client-sesv2-3.600.0.tgz", + "integrity": "sha512-DYIScSADLD9U8KNDjQIY77yRe0m9pyJITj39FnyPlMH3SSxtiHAse/Bz/IHwkQ9Am+vilRFA3jICpKU0SlSBmA==", "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.465.0", - "@aws-sdk/core": "3.465.0", - "@aws-sdk/credential-provider-node": "3.465.0", - "@aws-sdk/middleware-host-header": "3.465.0", - "@aws-sdk/middleware-logger": "3.465.0", - "@aws-sdk/middleware-recursion-detection": "3.465.0", - "@aws-sdk/middleware-signing": "3.465.0", - "@aws-sdk/middleware-user-agent": "3.465.0", - "@aws-sdk/region-config-resolver": "3.465.0", - "@aws-sdk/types": "3.465.0", - "@aws-sdk/util-endpoints": "3.465.0", - "@aws-sdk/util-user-agent-browser": "3.465.0", - "@aws-sdk/util-user-agent-node": "3.465.0", - "@smithy/config-resolver": "^2.0.18", - "@smithy/fetch-http-handler": "^2.2.6", - "@smithy/hash-node": "^2.0.15", - "@smithy/invalid-dependency": "^2.0.13", - "@smithy/middleware-content-length": "^2.0.15", - "@smithy/middleware-endpoint": "^2.2.0", - "@smithy/middleware-retry": "^2.0.20", - "@smithy/middleware-serde": "^2.0.13", - "@smithy/middleware-stack": "^2.0.7", - "@smithy/node-config-provider": "^2.1.5", - "@smithy/node-http-handler": "^2.1.9", - "@smithy/protocol-http": "^3.0.9", - "@smithy/smithy-client": "^2.1.15", - "@smithy/types": "^2.5.0", - "@smithy/url-parser": "^2.0.13", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.0", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.19", - "@smithy/util-defaults-mode-node": "^2.0.25", - "@smithy/util-endpoints": "^1.0.4", - "@smithy/util-retry": "^2.0.6", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/client-sso-oidc": "3.600.0", + "@aws-sdk/client-sts": "3.600.0", + "@aws-sdk/core": "3.598.0", + "@aws-sdk/credential-provider-node": "3.600.0", + "@aws-sdk/middleware-host-header": "3.598.0", + "@aws-sdk/middleware-logger": "3.598.0", + "@aws-sdk/middleware-recursion-detection": "3.598.0", + "@aws-sdk/middleware-user-agent": "3.598.0", + "@aws-sdk/region-config-resolver": "3.598.0", + "@aws-sdk/types": "3.598.0", + "@aws-sdk/util-endpoints": "3.598.0", + "@aws-sdk/util-user-agent-browser": "3.598.0", + "@aws-sdk/util-user-agent-node": "3.598.0", + "@smithy/config-resolver": "^3.0.2", + "@smithy/core": "^2.2.1", + "@smithy/fetch-http-handler": "^3.0.2", + "@smithy/hash-node": "^3.0.1", + "@smithy/invalid-dependency": "^3.0.1", + "@smithy/middleware-content-length": "^3.0.1", + "@smithy/middleware-endpoint": "^3.0.2", + "@smithy/middleware-retry": "^3.0.4", + "@smithy/middleware-serde": "^3.0.1", + "@smithy/middleware-stack": "^3.0.1", + "@smithy/node-config-provider": "^3.1.1", + "@smithy/node-http-handler": "^3.0.1", + "@smithy/protocol-http": "^4.0.1", + "@smithy/smithy-client": "^3.1.2", + "@smithy/types": "^3.1.0", + "@smithy/url-parser": "^3.0.1", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.4", + "@smithy/util-defaults-mode-node": "^3.0.4", + "@smithy/util-endpoints": "^2.0.2", + "@smithy/util-middleware": "^3.0.1", + "@smithy/util-retry": "^3.0.1", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-sesv2/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@aws-sdk/client-sso": { - "version": "3.465.0", - "license": "Apache-2.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.598.0.tgz", + "integrity": "sha512-nOI5lqPYa+YZlrrzwAJywJSw3MKVjvu6Ge2fCqQUNYMfxFB0NAaDFnl0EPjXi+sEbtCuz/uWE77poHbqiZ+7Iw==", "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.465.0", - "@aws-sdk/middleware-host-header": "3.465.0", - "@aws-sdk/middleware-logger": "3.465.0", - "@aws-sdk/middleware-recursion-detection": "3.465.0", - "@aws-sdk/middleware-user-agent": "3.465.0", - "@aws-sdk/region-config-resolver": "3.465.0", - "@aws-sdk/types": "3.465.0", - "@aws-sdk/util-endpoints": "3.465.0", - "@aws-sdk/util-user-agent-browser": "3.465.0", - "@aws-sdk/util-user-agent-node": "3.465.0", - "@smithy/config-resolver": "^2.0.18", - "@smithy/fetch-http-handler": "^2.2.6", - "@smithy/hash-node": "^2.0.15", - "@smithy/invalid-dependency": "^2.0.13", - "@smithy/middleware-content-length": "^2.0.15", - "@smithy/middleware-endpoint": "^2.2.0", - "@smithy/middleware-retry": "^2.0.20", - "@smithy/middleware-serde": "^2.0.13", - "@smithy/middleware-stack": "^2.0.7", - "@smithy/node-config-provider": "^2.1.5", - "@smithy/node-http-handler": "^2.1.9", - "@smithy/protocol-http": "^3.0.9", - "@smithy/smithy-client": "^2.1.15", - "@smithy/types": "^2.5.0", - "@smithy/url-parser": "^2.0.13", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.0", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.19", - "@smithy/util-defaults-mode-node": "^2.0.25", - "@smithy/util-endpoints": "^1.0.4", - "@smithy/util-retry": "^2.0.6", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.598.0", + "@aws-sdk/middleware-host-header": "3.598.0", + "@aws-sdk/middleware-logger": "3.598.0", + "@aws-sdk/middleware-recursion-detection": "3.598.0", + "@aws-sdk/middleware-user-agent": "3.598.0", + "@aws-sdk/region-config-resolver": "3.598.0", + "@aws-sdk/types": "3.598.0", + "@aws-sdk/util-endpoints": "3.598.0", + "@aws-sdk/util-user-agent-browser": "3.598.0", + "@aws-sdk/util-user-agent-node": "3.598.0", + "@smithy/config-resolver": "^3.0.2", + "@smithy/core": "^2.2.1", + "@smithy/fetch-http-handler": "^3.0.2", + "@smithy/hash-node": "^3.0.1", + "@smithy/invalid-dependency": "^3.0.1", + "@smithy/middleware-content-length": "^3.0.1", + "@smithy/middleware-endpoint": "^3.0.2", + "@smithy/middleware-retry": "^3.0.4", + "@smithy/middleware-serde": "^3.0.1", + "@smithy/middleware-stack": "^3.0.1", + "@smithy/node-config-provider": "^3.1.1", + "@smithy/node-http-handler": "^3.0.1", + "@smithy/protocol-http": "^4.0.1", + "@smithy/smithy-client": "^3.1.2", + "@smithy/types": "^3.1.0", + "@smithy/url-parser": "^3.0.1", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.4", + "@smithy/util-defaults-mode-node": "^3.0.4", + "@smithy/util-endpoints": "^2.0.2", + "@smithy/util-middleware": "^3.0.1", + "@smithy/util-retry": "^3.0.1", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-sso/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" + "node_modules/@aws-sdk/client-sso-oidc": { + "version": "3.600.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.600.0.tgz", + "integrity": "sha512-7+I8RWURGfzvChyNQSyj5/tKrqRbzRl7H+BnTOf/4Vsw1nFOi5ROhlhD4X/Y0QCTacxnaoNcIrqnY7uGGvVRzw==", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/client-sts": "3.600.0", + "@aws-sdk/core": "3.598.0", + "@aws-sdk/credential-provider-node": "3.600.0", + "@aws-sdk/middleware-host-header": "3.598.0", + "@aws-sdk/middleware-logger": "3.598.0", + "@aws-sdk/middleware-recursion-detection": "3.598.0", + "@aws-sdk/middleware-user-agent": "3.598.0", + "@aws-sdk/region-config-resolver": "3.598.0", + "@aws-sdk/types": "3.598.0", + "@aws-sdk/util-endpoints": "3.598.0", + "@aws-sdk/util-user-agent-browser": "3.598.0", + "@aws-sdk/util-user-agent-node": "3.598.0", + "@smithy/config-resolver": "^3.0.2", + "@smithy/core": "^2.2.1", + "@smithy/fetch-http-handler": "^3.0.2", + "@smithy/hash-node": "^3.0.1", + "@smithy/invalid-dependency": "^3.0.1", + "@smithy/middleware-content-length": "^3.0.1", + "@smithy/middleware-endpoint": "^3.0.2", + "@smithy/middleware-retry": "^3.0.4", + "@smithy/middleware-serde": "^3.0.1", + "@smithy/middleware-stack": "^3.0.1", + "@smithy/node-config-provider": "^3.1.1", + "@smithy/node-http-handler": "^3.0.1", + "@smithy/protocol-http": "^4.0.1", + "@smithy/smithy-client": "^3.1.2", + "@smithy/types": "^3.1.0", + "@smithy/url-parser": "^3.0.1", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.4", + "@smithy/util-defaults-mode-node": "^3.0.4", + "@smithy/util-endpoints": "^2.0.2", + "@smithy/util-middleware": "^3.0.1", + "@smithy/util-retry": "^3.0.1", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } }, "node_modules/@aws-sdk/client-sts": { - "version": "3.465.0", - "license": "Apache-2.0", + "version": "3.600.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.600.0.tgz", + "integrity": "sha512-KQG97B7LvTtTiGmjlrG1LRAY8wUvCQzrmZVV5bjrJ/1oXAU7DITYwVbSJeX9NWg6hDuSk0VE3MFwIXS2SvfLIA==", "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.465.0", - "@aws-sdk/credential-provider-node": "3.465.0", - "@aws-sdk/middleware-host-header": "3.465.0", - "@aws-sdk/middleware-logger": "3.465.0", - "@aws-sdk/middleware-recursion-detection": "3.465.0", - "@aws-sdk/middleware-sdk-sts": "3.465.0", - "@aws-sdk/middleware-signing": "3.465.0", - "@aws-sdk/middleware-user-agent": "3.465.0", - "@aws-sdk/region-config-resolver": "3.465.0", - "@aws-sdk/types": "3.465.0", - "@aws-sdk/util-endpoints": "3.465.0", - "@aws-sdk/util-user-agent-browser": "3.465.0", - "@aws-sdk/util-user-agent-node": "3.465.0", - "@smithy/config-resolver": "^2.0.18", - "@smithy/fetch-http-handler": "^2.2.6", - "@smithy/hash-node": "^2.0.15", - "@smithy/invalid-dependency": "^2.0.13", - "@smithy/middleware-content-length": "^2.0.15", - "@smithy/middleware-endpoint": "^2.2.0", - "@smithy/middleware-retry": "^2.0.20", - "@smithy/middleware-serde": "^2.0.13", - "@smithy/middleware-stack": "^2.0.7", - "@smithy/node-config-provider": "^2.1.5", - "@smithy/node-http-handler": "^2.1.9", - "@smithy/protocol-http": "^3.0.9", - "@smithy/smithy-client": "^2.1.15", - "@smithy/types": "^2.5.0", - "@smithy/url-parser": "^2.0.13", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.0", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.19", - "@smithy/util-defaults-mode-node": "^2.0.25", - "@smithy/util-endpoints": "^1.0.4", - "@smithy/util-retry": "^2.0.6", - "@smithy/util-utf8": "^2.0.2", - "fast-xml-parser": "4.2.5", - "tslib": "^2.5.0" + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/client-sso-oidc": "3.600.0", + "@aws-sdk/core": "3.598.0", + "@aws-sdk/credential-provider-node": "3.600.0", + "@aws-sdk/middleware-host-header": "3.598.0", + "@aws-sdk/middleware-logger": "3.598.0", + "@aws-sdk/middleware-recursion-detection": "3.598.0", + "@aws-sdk/middleware-user-agent": "3.598.0", + "@aws-sdk/region-config-resolver": "3.598.0", + "@aws-sdk/types": "3.598.0", + "@aws-sdk/util-endpoints": "3.598.0", + "@aws-sdk/util-user-agent-browser": "3.598.0", + "@aws-sdk/util-user-agent-node": "3.598.0", + "@smithy/config-resolver": "^3.0.2", + "@smithy/core": "^2.2.1", + "@smithy/fetch-http-handler": "^3.0.2", + "@smithy/hash-node": "^3.0.1", + "@smithy/invalid-dependency": "^3.0.1", + "@smithy/middleware-content-length": "^3.0.1", + "@smithy/middleware-endpoint": "^3.0.2", + "@smithy/middleware-retry": "^3.0.4", + "@smithy/middleware-serde": "^3.0.1", + "@smithy/middleware-stack": "^3.0.1", + "@smithy/node-config-provider": "^3.1.1", + "@smithy/node-http-handler": "^3.0.1", + "@smithy/protocol-http": "^4.0.1", + "@smithy/smithy-client": "^3.1.2", + "@smithy/types": "^3.1.0", + "@smithy/url-parser": "^3.0.1", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.4", + "@smithy/util-defaults-mode-node": "^3.0.4", + "@smithy/util-endpoints": "^2.0.2", + "@smithy/util-middleware": "^3.0.1", + "@smithy/util-retry": "^3.0.1", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-sts/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@aws-sdk/core": { - "version": "3.465.0", - "license": "Apache-2.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.598.0.tgz", + "integrity": "sha512-HaSjt7puO5Cc7cOlrXFCW0rtA0BM9lvzjl56x0A20Pt+0wxXGeTOZZOkXQIepbrFkV2e/HYukuT9e99vXDm59g==", "dependencies": { - "@smithy/smithy-client": "^2.1.15", - "tslib": "^2.5.0" + "@smithy/core": "^2.2.1", + "@smithy/protocol-http": "^4.0.1", + "@smithy/signature-v4": "^3.1.0", + "@smithy/smithy-client": "^3.1.2", + "@smithy/types": "^3.1.0", + "fast-xml-parser": "4.2.5", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/core/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@aws-sdk/credential-provider-cognito-identity": { - "version": "3.465.0", - "license": "Apache-2.0", + "version": "3.600.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.600.0.tgz", + "integrity": "sha512-AIM+B06d1+71EuBrk2UR9ZZgRS3a+ARxE3oZKMZYlfqtZ3kY8w4DkhEt7OVruc6uSsMhkrcQT6nxsOxFSi4RtA==", "dependencies": { - "@aws-sdk/client-cognito-identity": "3.465.0", - "@aws-sdk/types": "3.465.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" + "@aws-sdk/client-cognito-identity": "3.600.0", + "@aws-sdk/types": "3.598.0", + "@smithy/property-provider": "^3.1.1", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/credential-provider-cognito-identity/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.465.0", - "license": "Apache-2.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.598.0.tgz", + "integrity": "sha512-vi1khgn7yXzLCcgSIzQrrtd2ilUM0dWodxj3PQ6BLfP0O+q1imO3hG1nq7DVyJtq7rFHs6+9N8G4mYvTkxby2w==", "dependencies": { - "@aws-sdk/types": "3.465.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.598.0", + "@smithy/property-provider": "^3.1.1", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/credential-provider-env/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.465.0", - "license": "Apache-2.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.598.0.tgz", + "integrity": "sha512-N7cIafi4HVlQvEgvZSo1G4T9qb/JMLGMdBsDCT5XkeJrF0aptQWzTFH0jIdZcLrMYvzPcuEyO3yCBe6cy/ba0g==", "dependencies": { - "@aws-sdk/types": "3.465.0", - "@smithy/fetch-http-handler": "^2.2.6", - "@smithy/node-http-handler": "^2.1.9", - "@smithy/property-provider": "^2.0.0", - "@smithy/protocol-http": "^3.0.9", - "@smithy/smithy-client": "^2.1.15", - "@smithy/types": "^2.5.0", - "@smithy/util-stream": "^2.0.20", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.598.0", + "@smithy/fetch-http-handler": "^3.0.2", + "@smithy/node-http-handler": "^3.0.1", + "@smithy/property-provider": "^3.1.1", + "@smithy/protocol-http": "^4.0.1", + "@smithy/smithy-client": "^3.1.2", + "@smithy/types": "^3.1.0", + "@smithy/util-stream": "^3.0.2", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/credential-provider-http/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.465.0", - "license": "Apache-2.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.598.0.tgz", + "integrity": "sha512-/ppcIVUbRwDIwJDoYfp90X3+AuJo2mvE52Y1t2VSrvUovYn6N4v95/vXj6LS8CNDhz2jvEJYmu+0cTMHdhI6eA==", "dependencies": { - "@aws-sdk/credential-provider-env": "3.465.0", - "@aws-sdk/credential-provider-process": "3.465.0", - "@aws-sdk/credential-provider-sso": "3.465.0", - "@aws-sdk/credential-provider-web-identity": "3.465.0", - "@aws-sdk/types": "3.465.0", - "@smithy/credential-provider-imds": "^2.0.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" + "@aws-sdk/credential-provider-env": "3.598.0", + "@aws-sdk/credential-provider-http": "3.598.0", + "@aws-sdk/credential-provider-process": "3.598.0", + "@aws-sdk/credential-provider-sso": "3.598.0", + "@aws-sdk/credential-provider-web-identity": "3.598.0", + "@aws-sdk/types": "3.598.0", + "@smithy/credential-provider-imds": "^3.1.1", + "@smithy/property-provider": "^3.1.1", + "@smithy/shared-ini-file-loader": "^3.1.1", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.598.0" } }, - "node_modules/@aws-sdk/credential-provider-ini/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.465.0", - "license": "Apache-2.0", + "version": "3.600.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.600.0.tgz", + "integrity": "sha512-1pC7MPMYD45J7yFjA90SxpR0yaSvy+yZiq23aXhAPZLYgJBAxHLu0s0mDCk/piWGPh8+UGur5K0bVdx4B1D5hw==", "dependencies": { - "@aws-sdk/credential-provider-env": "3.465.0", - "@aws-sdk/credential-provider-ini": "3.465.0", - "@aws-sdk/credential-provider-process": "3.465.0", - "@aws-sdk/credential-provider-sso": "3.465.0", - "@aws-sdk/credential-provider-web-identity": "3.465.0", - "@aws-sdk/types": "3.465.0", - "@smithy/credential-provider-imds": "^2.0.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" + "@aws-sdk/credential-provider-env": "3.598.0", + "@aws-sdk/credential-provider-http": "3.598.0", + "@aws-sdk/credential-provider-ini": "3.598.0", + "@aws-sdk/credential-provider-process": "3.598.0", + "@aws-sdk/credential-provider-sso": "3.598.0", + "@aws-sdk/credential-provider-web-identity": "3.598.0", + "@aws-sdk/types": "3.598.0", + "@smithy/credential-provider-imds": "^3.1.1", + "@smithy/property-provider": "^3.1.1", + "@smithy/shared-ini-file-loader": "^3.1.1", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/credential-provider-node/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.465.0", - "license": "Apache-2.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.598.0.tgz", + "integrity": "sha512-rM707XbLW8huMk722AgjVyxu2tMZee++fNA8TJVNgs1Ma02Wx6bBrfIvlyK0rCcIRb0WdQYP6fe3Xhiu4e8IBA==", "dependencies": { - "@aws-sdk/types": "3.465.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.598.0", + "@smithy/property-provider": "^3.1.1", + "@smithy/shared-ini-file-loader": "^3.1.1", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/credential-provider-process/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.465.0", - "license": "Apache-2.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.598.0.tgz", + "integrity": "sha512-5InwUmrAuqQdOOgxTccRayMMkSmekdLk6s+az9tmikq0QFAHUCtofI+/fllMXSR9iL6JbGYi1940+EUmS4pHJA==", "dependencies": { - "@aws-sdk/client-sso": "3.465.0", - "@aws-sdk/token-providers": "3.465.0", - "@aws-sdk/types": "3.465.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" + "@aws-sdk/client-sso": "3.598.0", + "@aws-sdk/token-providers": "3.598.0", + "@aws-sdk/types": "3.598.0", + "@smithy/property-provider": "^3.1.1", + "@smithy/shared-ini-file-loader": "^3.1.1", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/credential-provider-sso/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.465.0", - "license": "Apache-2.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.598.0.tgz", + "integrity": "sha512-GV5GdiMbz5Tz9JO4NJtRoFXjW0GPEujA0j+5J/B723rTN+REHthJu48HdBKouHGhdzkDWkkh1bu52V02Wprw8w==", "dependencies": { - "@aws-sdk/types": "3.465.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.598.0", + "@smithy/property-provider": "^3.1.1", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.598.0" } }, - "node_modules/@aws-sdk/credential-provider-web-identity/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@aws-sdk/credential-providers": { - "version": "3.465.0", - "license": "Apache-2.0", + "version": "3.600.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.600.0.tgz", + "integrity": "sha512-cC9uqmX0rgx1efiJGqeR+i0EXr8RQ5SAzH7M45WNBZpYiLEe6reWgIYJY9hmOxuaoMdWSi8kekuN3IjTIORRjw==", "dependencies": { - "@aws-sdk/client-cognito-identity": "3.465.0", - "@aws-sdk/client-sso": "3.465.0", - "@aws-sdk/client-sts": "3.465.0", - "@aws-sdk/credential-provider-cognito-identity": "3.465.0", - "@aws-sdk/credential-provider-env": "3.465.0", - "@aws-sdk/credential-provider-http": "3.465.0", - "@aws-sdk/credential-provider-ini": "3.465.0", - "@aws-sdk/credential-provider-node": "3.465.0", - "@aws-sdk/credential-provider-process": "3.465.0", - "@aws-sdk/credential-provider-sso": "3.465.0", - "@aws-sdk/credential-provider-web-identity": "3.465.0", - "@aws-sdk/types": "3.465.0", - "@smithy/credential-provider-imds": "^2.0.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" + "@aws-sdk/client-cognito-identity": "3.600.0", + "@aws-sdk/client-sso": "3.598.0", + "@aws-sdk/client-sts": "3.600.0", + "@aws-sdk/credential-provider-cognito-identity": "3.600.0", + "@aws-sdk/credential-provider-env": "3.598.0", + "@aws-sdk/credential-provider-http": "3.598.0", + "@aws-sdk/credential-provider-ini": "3.598.0", + "@aws-sdk/credential-provider-node": "3.600.0", + "@aws-sdk/credential-provider-process": "3.598.0", + "@aws-sdk/credential-provider-sso": "3.598.0", + "@aws-sdk/credential-provider-web-identity": "3.598.0", + "@aws-sdk/types": "3.598.0", + "@smithy/credential-provider-imds": "^3.1.1", + "@smithy/property-provider": "^3.1.1", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/credential-providers/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@aws-sdk/middleware-bucket-endpoint": { - "version": "3.465.0", - "license": "Apache-2.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.598.0.tgz", + "integrity": "sha512-PM7BcFfGUSkmkT6+LU9TyJiB4S8yI7dfuKQDwK5ZR3P7MKaK4Uj4yyDiv0oe5xvkF6+O2+rShj+eh8YuWkOZ/Q==", "dependencies": { - "@aws-sdk/types": "3.465.0", - "@aws-sdk/util-arn-parser": "3.465.0", - "@smithy/node-config-provider": "^2.1.5", - "@smithy/protocol-http": "^3.0.9", - "@smithy/types": "^2.5.0", - "@smithy/util-config-provider": "^2.0.0", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.598.0", + "@aws-sdk/util-arn-parser": "3.568.0", + "@smithy/node-config-provider": "^3.1.1", + "@smithy/protocol-http": "^4.0.1", + "@smithy/types": "^3.1.0", + "@smithy/util-config-provider": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/middleware-bucket-endpoint/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@aws-sdk/middleware-expect-continue": { - "version": "3.465.0", - "license": "Apache-2.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.598.0.tgz", + "integrity": "sha512-ZuHW18kaeHR8TQyhEOYMr8VwiIh0bMvF7J1OTqXHxDteQIavJWA3CbfZ9sgS4XGtrBZDyHJhjZKeCfLhN2rq3w==", "dependencies": { - "@aws-sdk/types": "3.465.0", - "@smithy/protocol-http": "^3.0.9", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.598.0", + "@smithy/protocol-http": "^4.0.1", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/middleware-expect-continue/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@aws-sdk/middleware-flexible-checksums": { - "version": "3.465.0", - "license": "Apache-2.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.598.0.tgz", + "integrity": "sha512-xukAzds0GQXvMEY9G6qt+CzwVzTx8NyKKh04O2Q+nOch6QQ8Rs+2kTRy3Z4wQmXq2pK9hlOWb5nXA7HWpmz6Ng==", "dependencies": { - "@aws-crypto/crc32": "3.0.0", - "@aws-crypto/crc32c": "3.0.0", - "@aws-sdk/types": "3.465.0", - "@smithy/is-array-buffer": "^2.0.0", - "@smithy/protocol-http": "^3.0.9", - "@smithy/types": "^2.5.0", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" + "@aws-crypto/crc32": "5.2.0", + "@aws-crypto/crc32c": "5.2.0", + "@aws-sdk/types": "3.598.0", + "@smithy/is-array-buffer": "^3.0.0", + "@smithy/protocol-http": "^4.0.1", + "@smithy/types": "^3.1.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.465.0", - "license": "Apache-2.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.598.0.tgz", + "integrity": "sha512-WiaG059YBQwQraNejLIi0gMNkX7dfPZ8hDIhvMr5aVPRbaHH8AYF3iNSsXYCHvA2Cfa1O9haYXsuMF9flXnCmA==", "dependencies": { - "@aws-sdk/types": "3.465.0", - "@smithy/protocol-http": "^3.0.9", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.598.0", + "@smithy/protocol-http": "^4.0.1", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/middleware-host-header/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@aws-sdk/middleware-location-constraint": { - "version": "3.465.0", - "license": "Apache-2.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.598.0.tgz", + "integrity": "sha512-8oybQxN3F1ISOMULk7JKJz5DuAm5hCUcxMW9noWShbxTJuStNvuHf/WLUzXrf8oSITyYzIHPtf8VPlKR7I3orQ==", "dependencies": { - "@aws-sdk/types": "3.465.0", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.598.0", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/middleware-location-constraint/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@aws-sdk/middleware-logger": { - "version": "3.465.0", - "license": "Apache-2.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.598.0.tgz", + "integrity": "sha512-bxBjf/VYiu3zfu8SYM2S9dQQc3tz5uBAOcPz/Bt8DyyK3GgOpjhschH/2XuUErsoUO1gDJqZSdGOmuHGZQn00Q==", "dependencies": { - "@aws-sdk/types": "3.465.0", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.598.0", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/middleware-logger/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.465.0", - "license": "Apache-2.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.598.0.tgz", + "integrity": "sha512-vjT9BeFY9FeN0f8hm2l6F53tI0N5bUq6RcDkQXKNabXBnQxKptJRad6oP2X5y3FoVfBLOuDkQgiC2940GIPxtQ==", "dependencies": { - "@aws-sdk/types": "3.465.0", - "@smithy/protocol-http": "^3.0.9", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.598.0", + "@smithy/protocol-http": "^4.0.1", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/middleware-recursion-detection/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.465.0", - "license": "Apache-2.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.598.0.tgz", + "integrity": "sha512-5AGtLAh9wyK6ANPYfaKTqJY1IFJyePIxsEbxa7zS6REheAqyVmgJFaGu3oQ5XlxfGr5Uq59tFTRkyx26G1HkHA==", "dependencies": { - "@aws-sdk/types": "3.465.0", - "@aws-sdk/util-arn-parser": "3.465.0", - "@smithy/node-config-provider": "^2.1.5", - "@smithy/protocol-http": "^3.0.9", - "@smithy/signature-v4": "^2.0.0", - "@smithy/smithy-client": "^2.1.15", - "@smithy/types": "^2.5.0", - "@smithy/util-config-provider": "^2.0.0", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.598.0", + "@aws-sdk/util-arn-parser": "3.568.0", + "@smithy/node-config-provider": "^3.1.1", + "@smithy/protocol-http": "^4.0.1", + "@smithy/signature-v4": "^3.1.0", + "@smithy/smithy-client": "^3.1.2", + "@smithy/types": "^3.1.0", + "@smithy/util-config-provider": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "node_modules/@aws-sdk/middleware-sdk-sts": { - "version": "3.465.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/middleware-signing": "3.465.0", - "@aws-sdk/types": "3.465.0", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-sdk-sts/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@aws-sdk/middleware-signing": { - "version": "3.465.0", - "license": "Apache-2.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.598.0.tgz", + "integrity": "sha512-XKb05DYx/aBPqz6iCapsCbIl8aD8EihTuPCs51p75QsVfbQoVr4TlFfIl5AooMSITzojdAQqxt021YtvxjtxIQ==", "dependencies": { - "@aws-sdk/types": "3.465.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/protocol-http": "^3.0.9", - "@smithy/signature-v4": "^2.0.0", - "@smithy/types": "^2.5.0", - "@smithy/util-middleware": "^2.0.6", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.598.0", + "@smithy/property-provider": "^3.1.1", + "@smithy/protocol-http": "^4.0.1", + "@smithy/signature-v4": "^3.1.0", + "@smithy/types": "^3.1.0", + "@smithy/util-middleware": "^3.0.1", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/middleware-signing/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@aws-sdk/middleware-ssec": { - "version": "3.465.0", - "license": "Apache-2.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.598.0.tgz", + "integrity": "sha512-f0p2xP8IC1uJ5e/tND1l81QxRtRFywEdnbtKCE0H6RSn4UIt2W3Dohe1qQDbnh27okF0PkNW6BJGdSAz3p7qbA==", "dependencies": { - "@aws-sdk/types": "3.465.0", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.598.0", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/middleware-ssec/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.465.0", - "license": "Apache-2.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.598.0.tgz", + "integrity": "sha512-4tjESlHG5B5MdjUaLK7tQs/miUtHbb6deauQx8ryqSBYOhfHVgb1ZnzvQR0bTrhpqUg0WlybSkDaZAICf9xctg==", "dependencies": { - "@aws-sdk/types": "3.465.0", - "@aws-sdk/util-endpoints": "3.465.0", - "@smithy/protocol-http": "^3.0.9", - "@smithy/types": "^2.5.0", + "@aws-sdk/types": "3.598.0", + "@aws-sdk/util-endpoints": "3.598.0", + "@smithy/protocol-http": "^4.0.1", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/node-http-handler": { + "version": "3.374.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.374.0.tgz", + "integrity": "sha512-v1Z6m0wwkf65/tKuhwrtPRqVoOtNkDTRn2MBMtxCwEw+8V8Q+YRFqVgGN+J1n53ktE0G5OYVBux/NHiAjJHReQ==", + "deprecated": "This package has moved to @smithy/node-http-handler", + "dependencies": { + "@smithy/node-http-handler": "^1.0.2", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/middleware-user-agent/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" + "node_modules/@aws-sdk/node-http-handler/node_modules/@smithy/abort-controller": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-1.1.0.tgz", + "integrity": "sha512-5imgGUlZL4dW4YWdMYAKLmal9ny/tlenM81QZY7xYyb76z9Z/QOg7oM5Ak9HQl8QfFTlGVWwcMXl+54jroRgEQ==", + "dependencies": { + "@smithy/types": "^1.2.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/node-http-handler/node_modules/@smithy/node-http-handler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-1.1.0.tgz", + "integrity": "sha512-d3kRriEgaIiGXLziAM8bjnaLn1fthCJeTLZIwEIpzQqe6yPX0a+yQoLCTyjb2fvdLwkMoG4p7THIIB5cj5lkbg==", + "dependencies": { + "@smithy/abort-controller": "^1.1.0", + "@smithy/protocol-http": "^1.2.0", + "@smithy/querystring-builder": "^1.1.0", + "@smithy/types": "^1.2.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/node-http-handler/node_modules/@smithy/protocol-http": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-1.2.0.tgz", + "integrity": "sha512-GfGfruksi3nXdFok5RhgtOnWe5f6BndzYfmEXISD+5gAGdayFGpjWu5pIqIweTudMtse20bGbc+7MFZXT1Tb8Q==", + "dependencies": { + "@smithy/types": "^1.2.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/node-http-handler/node_modules/@smithy/querystring-builder": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-1.1.0.tgz", + "integrity": "sha512-gDEi4LxIGLbdfjrjiY45QNbuDmpkwh9DX4xzrR2AzjjXpxwGyfSpbJaYhXARw9p17VH0h9UewnNQXNwaQyYMDA==", + "dependencies": { + "@smithy/types": "^1.2.0", + "@smithy/util-uri-escape": "^1.1.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/node-http-handler/node_modules/@smithy/types": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-1.2.0.tgz", + "integrity": "sha512-z1r00TvBqF3dh4aHhya7nz1HhvCg4TRmw51fjMrh5do3h+ngSstt/yKlNbHeb9QxJmFbmN8KEVSWgb1bRvfEoA==", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/node-http-handler/node_modules/@smithy/util-uri-escape": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-1.1.0.tgz", + "integrity": "sha512-/jL/V1xdVRt5XppwiaEU8Etp5WHZj609n0xMTuehmCqdoOFbId1M+aEeDWZsQ+8JbEB/BJ6ynY2SlYmOaKtt8w==", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } }, "node_modules/@aws-sdk/region-config-resolver": { - "version": "3.465.0", - "license": "Apache-2.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.598.0.tgz", + "integrity": "sha512-oYXhmTokSav4ytmWleCr3rs/1nyvZW/S0tdi6X7u+dLNL5Jee+uMxWGzgOrWK6wrQOzucLVjS4E/wA11Kv2GTw==", "dependencies": { - "@smithy/node-config-provider": "^2.1.5", - "@smithy/types": "^2.5.0", - "@smithy/util-config-provider": "^2.0.0", - "@smithy/util-middleware": "^2.0.6", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.598.0", + "@smithy/node-config-provider": "^3.1.1", + "@smithy/types": "^3.1.0", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-middleware": "^3.0.1", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/region-config-resolver/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@aws-sdk/s3-request-presigner": { - "version": "3.465.0", - "license": "Apache-2.0", + "version": "3.600.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.600.0.tgz", + "integrity": "sha512-MYRwgti1DDc9/Q9AzvTQy0Ih0j4vLe0zYLV3qtSI0H8G02yRqTzet2s/76pUNOYJK9ASSgcxQ9yeV9EGKBwndQ==", "dependencies": { - "@aws-sdk/signature-v4-multi-region": "3.465.0", - "@aws-sdk/types": "3.465.0", - "@aws-sdk/util-format-url": "3.465.0", - "@smithy/middleware-endpoint": "^2.2.0", - "@smithy/protocol-http": "^3.0.9", - "@smithy/smithy-client": "^2.1.15", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" + "@aws-sdk/signature-v4-multi-region": "3.598.0", + "@aws-sdk/types": "3.598.0", + "@aws-sdk/util-format-url": "3.598.0", + "@smithy/middleware-endpoint": "^3.0.2", + "@smithy/protocol-http": "^4.0.1", + "@smithy/smithy-client": "^3.1.2", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/s3-request-presigner/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.465.0", - "license": "Apache-2.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.598.0.tgz", + "integrity": "sha512-1r/EyTrO1gSa1FirnR8V7mabr7gk+l+HkyTI0fcTSr8ucB7gmYyW6WjkY8JCz13VYHFK62usCEDS7yoJoJOzTA==", "dependencies": { - "@aws-sdk/middleware-sdk-s3": "3.465.0", - "@aws-sdk/types": "3.465.0", - "@smithy/protocol-http": "^3.0.9", - "@smithy/signature-v4": "^2.0.0", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" + "@aws-sdk/middleware-sdk-s3": "3.598.0", + "@aws-sdk/types": "3.598.0", + "@smithy/protocol-http": "^4.0.1", + "@smithy/signature-v4": "^3.1.0", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/signature-v4-multi-region/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@aws-sdk/token-providers": { - "version": "3.465.0", - "license": "Apache-2.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.598.0.tgz", + "integrity": "sha512-TKY1EVdHVBnZqpyxyTHdpZpa1tUpb6nxVeRNn1zWG8QB5MvH4ALLd/jR+gtmWDNQbIG4cVuBOZFVL8hIYicKTA==", "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/middleware-host-header": "3.465.0", - "@aws-sdk/middleware-logger": "3.465.0", - "@aws-sdk/middleware-recursion-detection": "3.465.0", - "@aws-sdk/middleware-user-agent": "3.465.0", - "@aws-sdk/region-config-resolver": "3.465.0", - "@aws-sdk/types": "3.465.0", - "@aws-sdk/util-endpoints": "3.465.0", - "@aws-sdk/util-user-agent-browser": "3.465.0", - "@aws-sdk/util-user-agent-node": "3.465.0", - "@smithy/config-resolver": "^2.0.18", - "@smithy/fetch-http-handler": "^2.2.6", - "@smithy/hash-node": "^2.0.15", - "@smithy/invalid-dependency": "^2.0.13", - "@smithy/middleware-content-length": "^2.0.15", - "@smithy/middleware-endpoint": "^2.2.0", - "@smithy/middleware-retry": "^2.0.20", - "@smithy/middleware-serde": "^2.0.13", - "@smithy/middleware-stack": "^2.0.7", - "@smithy/node-config-provider": "^2.1.5", - "@smithy/node-http-handler": "^2.1.9", - "@smithy/property-provider": "^2.0.0", - "@smithy/protocol-http": "^3.0.9", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/smithy-client": "^2.1.15", - "@smithy/types": "^2.5.0", - "@smithy/url-parser": "^2.0.13", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.0", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.19", - "@smithy/util-defaults-mode-node": "^2.0.25", - "@smithy/util-endpoints": "^1.0.4", - "@smithy/util-retry": "^2.0.6", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.598.0", + "@smithy/property-provider": "^3.1.1", + "@smithy/shared-ini-file-loader": "^3.1.1", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sso-oidc": "^3.598.0" } }, - "node_modules/@aws-sdk/token-providers/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@aws-sdk/types": { - "version": "3.465.0", - "license": "Apache-2.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.598.0.tgz", + "integrity": "sha512-742uRl6z7u0LFmZwDrFP6r1wlZcgVPw+/TilluDJmCAR8BgRw3IR+743kUXKBGd8QZDRW2n6v/PYsi/AWCDDMQ==", "dependencies": { - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/types/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@aws-sdk/util-arn-parser": { - "version": "3.465.0", - "license": "Apache-2.0", + "version": "3.568.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.568.0.tgz", + "integrity": "sha512-XUKJWWo+KOB7fbnPP0+g/o5Ulku/X53t7i/h+sPHr5xxYTJJ9CYnbToo95mzxe7xWvkLrsNtJ8L+MnNn9INs2w==", "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/util-arn-parser/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@aws-sdk/util-endpoints": { - "version": "3.465.0", - "license": "Apache-2.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.598.0.tgz", + "integrity": "sha512-Qo9UoiVVZxcOEdiOMZg3xb1mzkTxrhd4qSlg5QQrfWPJVx/QOg+Iy0NtGxPtHtVZNHZxohYwDwV/tfsnDSE2gQ==", "dependencies": { - "@aws-sdk/types": "3.465.0", - "@smithy/util-endpoints": "^1.0.4", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.598.0", + "@smithy/types": "^3.1.0", + "@smithy/util-endpoints": "^2.0.2", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/util-endpoints/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@aws-sdk/util-format-url": { - "version": "3.465.0", - "license": "Apache-2.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-format-url/-/util-format-url-3.598.0.tgz", + "integrity": "sha512-1X0PlREk5K6tQg8rFZOjoKVtDyI1WgbKJNCymHhMye6STryY6fhuuayKstiDThkqDYxqahjUJz/Tl2p5W3rbcw==", "dependencies": { - "@aws-sdk/types": "3.465.0", - "@smithy/querystring-builder": "^2.0.13", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.598.0", + "@smithy/querystring-builder": "^3.0.1", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/util-format-url/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@aws-sdk/util-locate-window": { - "version": "3.465.0", - "license": "Apache-2.0", + "version": "3.568.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.568.0.tgz", + "integrity": "sha512-3nh4TINkXYr+H41QaPelCceEB2FXP3fxp93YZXB/kqJvX0U9j0N0Uk45gvsjmEPzG8XxkPEeLIfT2I1M7A6Lig==", "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/util-locate-window/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.465.0", - "license": "Apache-2.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.598.0.tgz", + "integrity": "sha512-36Sxo6F+ykElaL1mWzWjlg+1epMpSe8obwhCN1yGE7Js9ywy5U6k6l+A3q3YM9YRbm740sNxncbwLklMvuhTKw==", "dependencies": { - "@aws-sdk/types": "3.465.0", - "@smithy/types": "^2.5.0", + "@aws-sdk/types": "3.598.0", + "@smithy/types": "^3.1.0", "bowser": "^2.11.0", - "tslib": "^2.5.0" + "tslib": "^2.6.2" } }, - "node_modules/@aws-sdk/util-user-agent-browser/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.465.0", - "license": "Apache-2.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.598.0.tgz", + "integrity": "sha512-oyWGcOlfTdzkC6SVplyr0AGh54IMrDxbhg5RxJ5P+V4BKfcDoDcZV9xenUk9NsOi9MuUjxMumb9UJGkDhM1m0A==", "dependencies": { - "@aws-sdk/types": "3.465.0", - "@smithy/node-config-provider": "^2.1.5", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.598.0", + "@smithy/node-config-provider": "^3.1.1", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" }, "peerDependencies": { "aws-crt": ">=1.0.0" @@ -1108,38 +1216,22 @@ } } }, - "node_modules/@aws-sdk/util-user-agent-node/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "node_modules/@aws-sdk/util-utf8-browser": { - "version": "3.259.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.3.1" - } - }, - "node_modules/@aws-sdk/util-utf8-browser/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@aws-sdk/xml-builder": { - "version": "3.465.0", - "license": "Apache-2.0", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.598.0.tgz", + "integrity": "sha512-ZIa2RK7CHFTZ4gwK77WRtsZ6vF7xwRXxJ8KQIxK2duhoTVcn0xYxpFLdW9WZZZvdP9GIF3Loqvf8DRdeU5Jc7Q==", "dependencies": { - "tslib": "^2.5.0" + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/xml-builder/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@azure/abort-controller": { "version": "1.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz", + "integrity": "sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==", "dependencies": { "tslib": "^2.2.0" }, @@ -1147,207 +1239,253 @@ "node": ">=12.0.0" } }, - "node_modules/@azure/abort-controller/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@azure/core-auth": { - "version": "1.5.0", - "license": "MIT", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.7.2.tgz", + "integrity": "sha512-Igm/S3fDYmnMq1uKS38Ae1/m37B3zigdlZw+kocwEhh5GjyKjPrXKO2J6rzpC1wAxrNil/jX9BJRqBshyjnF3g==", "dependencies": { - "@azure/abort-controller": "^1.0.0", + "@azure/abort-controller": "^2.0.0", "@azure/core-util": "^1.1.0", - "tslib": "^2.2.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, - "node_modules/@azure/core-auth/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" + "node_modules/@azure/core-auth/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, "node_modules/@azure/core-client": { - "version": "1.7.3", - "license": "MIT", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.9.2.tgz", + "integrity": "sha512-kRdry/rav3fUKHl/aDLd/pDLcB+4pOFwPPTVEExuMyaI5r+JBbMWqRbCY1pn5BniDaU3lRxO9eaQ1AmSMehl/w==", "dependencies": { - "@azure/abort-controller": "^1.0.0", + "@azure/abort-controller": "^2.0.0", "@azure/core-auth": "^1.4.0", "@azure/core-rest-pipeline": "^1.9.1", "@azure/core-tracing": "^1.0.0", - "@azure/core-util": "^1.0.0", + "@azure/core-util": "^1.6.1", "@azure/logger": "^1.0.0", - "tslib": "^2.2.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, - "node_modules/@azure/core-client/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "node_modules/@azure/core-http": { - "version": "3.0.4", - "license": "MIT", + "node_modules/@azure/core-client/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", "dependencies": { - "@azure/abort-controller": "^1.0.0", - "@azure/core-auth": "^1.3.0", - "@azure/core-tracing": "1.0.0-preview.13", - "@azure/core-util": "^1.1.1", - "@azure/logger": "^1.0.0", - "@types/node-fetch": "^2.5.0", - "@types/tunnel": "^0.0.3", - "form-data": "^4.0.0", - "node-fetch": "^2.6.7", - "process": "^0.11.10", - "tslib": "^2.2.0", - "tunnel": "^0.0.6", - "uuid": "^8.3.0", - "xml2js": "^0.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@azure/core-http-compat": { - "version": "1.3.0", - "license": "MIT", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/core-http-compat/-/core-http-compat-2.1.2.tgz", + "integrity": "sha512-5MnV1yqzZwgNLLjlizsU3QqOeQChkIXw781Fwh1xdAqJR5AA32IUaq6xv1BICJvfbHoa+JYcaij2HFkhLbNTJQ==", "dependencies": { - "@azure/abort-controller": "^1.0.4", + "@azure/abort-controller": "^2.0.0", "@azure/core-client": "^1.3.0", "@azure/core-rest-pipeline": "^1.3.0" }, "engines": { - "node": ">=12.0.0" + "node": ">=18.0.0" } }, - "node_modules/@azure/core-http/node_modules/@azure/core-tracing": { - "version": "1.0.0-preview.13", - "license": "MIT", + "node_modules/@azure/core-http-compat/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", "dependencies": { - "@opentelemetry/api": "^1.0.1", - "tslib": "^2.2.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@azure/core-http/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "node_modules/@azure/core-http/node_modules/uuid": { - "version": "8.3.2", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" + "node": ">=18.0.0" } }, "node_modules/@azure/core-lro": { - "version": "2.5.4", - "license": "MIT", + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@azure/core-lro/-/core-lro-2.7.2.tgz", + "integrity": "sha512-0YIpccoX8m/k00O7mDDMdJpbr6mf1yWo2dfmxt5A8XVZVVMz2SSKaEbMCeJRvgQ0IaSlqhjT47p4hVIRRy90xw==", "dependencies": { - "@azure/abort-controller": "^1.0.0", + "@azure/abort-controller": "^2.0.0", "@azure/core-util": "^1.2.0", "@azure/logger": "^1.0.0", - "tslib": "^2.2.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, - "node_modules/@azure/core-lro/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" + "node_modules/@azure/core-lro/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, "node_modules/@azure/core-paging": { - "version": "1.5.0", - "license": "MIT", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.6.2.tgz", + "integrity": "sha512-YKWi9YuCU04B55h25cnOYZHxXYtEvQEbKST5vqRga7hWY9ydd3FZHdeQF8pyh+acWZvppw13M/LMGx0LABUVMA==", "dependencies": { - "tslib": "^2.2.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, - "node_modules/@azure/core-paging/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@azure/core-rest-pipeline": { - "version": "1.12.2", - "license": "MIT", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.16.0.tgz", + "integrity": "sha512-CeuTvsXxCUmEuxH5g/aceuSl6w2EugvNHKAtKKVdiX915EjJJxAwfzNNWZreNnbxHZ2fi0zaM6wwS23x2JVqSQ==", "dependencies": { - "@azure/abort-controller": "^1.0.0", + "@azure/abort-controller": "^2.0.0", "@azure/core-auth": "^1.4.0", "@azure/core-tracing": "^1.0.1", - "@azure/core-util": "^1.3.0", + "@azure/core-util": "^1.9.0", "@azure/logger": "^1.0.0", - "form-data": "^4.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "tslib": "^2.2.0" + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=16.0.0" + "node": ">=18.0.0" } }, - "node_modules/@azure/core-rest-pipeline/node_modules/@tootallnate/once": { - "version": "2.0.0", - "license": "MIT", + "node_modules/@azure/core-rest-pipeline/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dependencies": { + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 10" + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-rest-pipeline/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" } }, "node_modules/@azure/core-rest-pipeline/node_modules/http-proxy-agent": { - "version": "5.0.0", - "license": "MIT", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@azure/core-rest-pipeline/node_modules/https-proxy-agent": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "dependencies": { + "agent-base": "^7.0.2", "debug": "4" }, "engines": { - "node": ">= 6" + "node": ">= 14" } }, - "node_modules/@azure/core-rest-pipeline/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@azure/core-tracing": { - "version": "1.0.1", - "license": "MIT", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.1.2.tgz", + "integrity": "sha512-dawW9ifvWAWmUm9/h+/UQ2jrdvjCJ7VJEuCJ6XVNudzcOwm53BFZH4Q845vjfgoUAM8ZxokvVNxNxAITc502YA==", "dependencies": { - "tslib": "^2.2.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=12.0.0" + "node": ">=18.0.0" } }, - "node_modules/@azure/core-tracing/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@azure/core-util": { - "version": "1.6.1", - "license": "MIT", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.9.0.tgz", + "integrity": "sha512-AfalUQ1ZppaKuxPPMsFEUdX6GZPB3d9paR9d/TTL7Ow2De8cJaC7ibi7kWVlFAVPCYo31OcnGymc0R89DX8Oaw==", "dependencies": { - "@azure/abort-controller": "^1.0.0", - "tslib": "^2.2.0" + "@azure/abort-controller": "^2.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=16.0.0" + "node": ">=18.0.0" } }, - "node_modules/@azure/core-util/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" + "node_modules/@azure/core-util/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-xml": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@azure/core-xml/-/core-xml-1.4.2.tgz", + "integrity": "sha512-CW3MZhApe/S4iikbYKE7s83fjDBPIr2kpidX+hlGRwh7N4o1nIpQ/PfJTeioqhfqdMvRtheEl+ft64fyTaLNaA==", + "dependencies": { + "fast-xml-parser": "^4.3.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-xml/node_modules/fast-xml-parser": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.0.tgz", + "integrity": "sha512-kLY3jFlwIYwBNDojclKsNAC12sfD6NwW74QB2CoNGPvtVxjliYehVunB3HYyNi+n4Tt1dAcgwYvmKF/Z18flqg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + }, + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + } + ], + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } }, "node_modules/@azure/cosmos": { "version": "3.17.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@azure/cosmos/-/cosmos-3.17.3.tgz", + "integrity": "sha512-wBglkQ6Irjv5Vo2iw8fd6eYj60WYRSSg4/0DBkeOP6BwQ4RA91znsOHd6s3qG6UAbNgYuzC9Nnq07vlFFZkHEw==", "dependencies": { "@azure/abort-controller": "^1.0.0", "@azure/core-auth": "^1.3.0", @@ -1367,20 +1505,10 @@ "node": ">=14.0.0" } }, - "node_modules/@azure/cosmos/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "node_modules/@azure/cosmos/node_modules/uuid": { - "version": "8.3.2", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/@azure/identity": { "version": "1.5.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-1.5.2.tgz", + "integrity": "sha512-vqyeRbd2i0h9F4mqW5JbkP1xfabqKQ21l/81osKhpOQ2LtwaJW6nw4+0PsVYnxcbPHFCIZt6EWAk74a3OGYZJA==", "dependencies": { "@azure/core-auth": "^1.3.0", "@azure/core-client": "^1.0.0", @@ -1408,7 +1536,8 @@ }, "node_modules/@azure/identity/node_modules/@azure/core-tracing": { "version": "1.0.0-preview.12", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.0-preview.12.tgz", + "integrity": "sha512-nvo2Wc4EKZGN6eFu9n3U7OXmASmL8VxoPIH7xaD6OlQqi44bouF0YIi9ID5rEsKLiAU59IYx6M297nqWVMWPDg==", "dependencies": { "@opentelemetry/api": "^1.0.0", "tslib": "^2.2.0" @@ -1419,30 +1548,50 @@ }, "node_modules/@azure/identity/node_modules/axios": { "version": "0.21.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", "dependencies": { "follow-redirects": "^1.14.0" } }, - "node_modules/@azure/identity/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" + "node_modules/@azure/identity/node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/@azure/identity/node_modules/uuid": { - "version": "8.3.2", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" + "node_modules/@azure/identity/node_modules/qs": { + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.1.tgz", + "integrity": "sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/@azure/keyvault-keys": { - "version": "4.7.2", - "license": "MIT", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@azure/keyvault-keys/-/keyvault-keys-4.8.0.tgz", + "integrity": "sha512-jkuYxgkw0aaRfk40OQhFqDIupqblIOIlYESWB6DKCVDxQet1pyv86Tfk9M+5uFM0+mCs6+MUHU+Hxh3joiUn4Q==", "dependencies": { "@azure/abort-controller": "^1.0.0", "@azure/core-auth": "^1.3.0", "@azure/core-client": "^1.5.0", - "@azure/core-http-compat": "^1.3.0", + "@azure/core-http-compat": "^2.0.1", "@azure/core-lro": "^2.2.0", "@azure/core-paging": "^1.1.1", "@azure/core-rest-pipeline": "^1.8.1", @@ -1452,34 +1601,29 @@ "tslib": "^2.2.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, - "node_modules/@azure/keyvault-keys/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@azure/logger": { - "version": "1.0.4", - "license": "MIT", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.1.2.tgz", + "integrity": "sha512-l170uE7bsKpIU6B/giRc9i4NI0Mj+tANMMMxf7Zi/5cKzEqPayP7+X1WPrG7e+91JgY8N+7K7nF2WOi7iVhXvg==", "dependencies": { - "tslib": "^2.2.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, - "node_modules/@azure/logger/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@azure/ms-rest-azure-env": { "version": "2.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@azure/ms-rest-azure-env/-/ms-rest-azure-env-2.0.0.tgz", + "integrity": "sha512-dG76W7ElfLi+fbTjnZVGj+M9e0BIEJmRxU6fHaUQ12bZBe8EJKYb2GV50YWNaP2uJiVQ5+7nXEVj1VN1UQtaEw==" }, "node_modules/@azure/ms-rest-js": { "version": "2.7.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@azure/ms-rest-js/-/ms-rest-js-2.7.0.tgz", + "integrity": "sha512-ngbzWbqF+NmztDOpLBVDxYM+XLcUj7nKhxGbSU9WtIsXfRB//cf2ZbAG5HkOrhU9/wd/ORRB6lM/d69RKVjiyA==", "dependencies": { "@azure/core-auth": "^1.1.4", "abort-controller": "^3.0.0", @@ -1493,7 +1637,8 @@ }, "node_modules/@azure/ms-rest-js/node_modules/form-data": { "version": "2.5.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -1503,16 +1648,35 @@ "node": ">= 0.12" } }, - "node_modules/@azure/ms-rest-js/node_modules/uuid": { - "version": "8.3.2", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" + "node_modules/@azure/ms-rest-js/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@azure/ms-rest-js/node_modules/xml2js": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", + "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/@azure/ms-rest-js/node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "engines": { + "node": ">=4.0" } }, "node_modules/@azure/ms-rest-nodeauth": { "version": "3.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@azure/ms-rest-nodeauth/-/ms-rest-nodeauth-3.1.1.tgz", + "integrity": "sha512-UA/8dgLy3+ZiwJjAZHxL4MUB14fFQPkaAOZ94jsTW/Z6WmoOeny2+cLk0+dyIX/iH6qSrEWKwbStEeB970B9pA==", "dependencies": { "@azure/ms-rest-azure-env": "^2.0.0", "@azure/ms-rest-js": "^2.0.4", @@ -1521,7 +1685,8 @@ }, "node_modules/@azure/msal-common": { "version": "4.5.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-4.5.1.tgz", + "integrity": "sha512-/i5dXM+QAtO+6atYd5oHGBAx48EGSISkXNXViheliOQe+SIFMDo3gSq3lL54W0suOSAsVPws3XnTaIHlla0PIQ==", "dependencies": { "debug": "^4.1.1" }, @@ -1531,7 +1696,9 @@ }, "node_modules/@azure/msal-node": { "version": "1.0.0-beta.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.0.0-beta.6.tgz", + "integrity": "sha512-ZQI11Uz1j0HJohb9JZLRD8z0moVcPks1AFW4Q/Gcl67+QvH4aKEJti7fjCcipEEZYb/qzLSO8U6IZgPYytsiJQ==", + "deprecated": "A newer major version of this library is available. Please upgrade to the latest available version.", "dependencies": { "@azure/msal-common": "^4.0.0", "axios": "^0.21.1", @@ -1541,14 +1708,16 @@ }, "node_modules/@azure/msal-node/node_modules/axios": { "version": "0.21.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", "dependencies": { "follow-redirects": "^1.14.0" } }, "node_modules/@azure/msal-node/node_modules/jsonwebtoken": { "version": "8.5.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", "dependencies": { "jws": "^3.2.2", "lodash.includes": "^4.3.0", @@ -1568,7 +1737,8 @@ }, "node_modules/@azure/msal-node/node_modules/jwa": { "version": "1.4.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", "dependencies": { "buffer-equal-constant-time": "1.0.1", "ecdsa-sig-formatter": "1.0.11", @@ -1577,7 +1747,8 @@ }, "node_modules/@azure/msal-node/node_modules/jws": { "version": "3.2.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", "dependencies": { "jwa": "^1.4.1", "safe-buffer": "^5.0.1" @@ -1585,81 +1756,69 @@ }, "node_modules/@azure/msal-node/node_modules/semver": { "version": "5.7.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "bin": { "semver": "bin/semver" } }, - "node_modules/@azure/msal-node/node_modules/uuid": { - "version": "8.3.2", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/@azure/storage-blob": { - "version": "12.17.0", - "license": "MIT", + "version": "12.23.0", + "resolved": "https://registry.npmjs.org/@azure/storage-blob/-/storage-blob-12.23.0.tgz", + "integrity": "sha512-c1KJ5R5hqR/HtvmFtTn/Y1BNMq45NUBp0LZH7yF8WFMET+wmESgEr0FVTu/Z5NonmfUjbgJZG5Nh8xHc5RdWGQ==", "dependencies": { "@azure/abort-controller": "^1.0.0", - "@azure/core-http": "^3.0.0", + "@azure/core-auth": "^1.4.0", + "@azure/core-client": "^1.6.2", + "@azure/core-http-compat": "^2.0.0", "@azure/core-lro": "^2.2.0", "@azure/core-paging": "^1.1.1", - "@azure/core-tracing": "1.0.0-preview.13", + "@azure/core-rest-pipeline": "^1.10.1", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.6.1", + "@azure/core-xml": "^1.3.2", "@azure/logger": "^1.0.0", "events": "^3.0.0", "tslib": "^2.2.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, - "node_modules/@azure/storage-blob/node_modules/@azure/core-tracing": { - "version": "1.0.0-preview.13", - "license": "MIT", - "dependencies": { - "@opentelemetry/api": "^1.0.1", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@azure/storage-blob/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@babel/code-frame": { "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/highlight": "^7.10.4" } }, "node_modules/@babel/compat-data": { - "version": "7.23.5", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz", + "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.23.5", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz", + "integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==", "dev": true, - "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.5", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.5", - "@babel/parser": "^7.23.5", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.5", - "@babel/types": "^7.23.5", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helpers": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/template": "^7.24.7", + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -1675,102 +1834,42 @@ } }, "node_modules/@babel/core/node_modules/@babel/code-frame": { - "version": "7.23.5", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/core/node_modules/ansi-styles": { - "version": "3.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/core/node_modules/chalk": { - "version": "2.4.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/core/node_modules/color-convert": { - "version": "1.9.3", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/core/node_modules/color-name": { - "version": "1.1.3", - "dev": true, - "license": "MIT" - }, "node_modules/@babel/core/node_modules/convert-source-map": { "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@babel/core/node_modules/escape-string-regexp": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/core/node_modules/has-flag": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true }, "node_modules/@babel/core/node_modules/semver": { "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, - "node_modules/@babel/core/node_modules/supports-color": { - "version": "5.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/generator": { - "version": "7.23.5", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", + "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/types": "^7.23.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", + "@babel/types": "^7.24.7", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" }, "engines": { @@ -1778,13 +1877,14 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.15", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz", + "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", + "@babel/compat-data": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "browserslist": "^4.22.2", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -1794,64 +1894,74 @@ }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", "dev": true, - "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.23.0", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", + "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", + "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/types": "^7.22.15" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz", + "integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1861,80 +1971,89 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz", + "integrity": "sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", + "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.23.5", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz", + "integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.23.5", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.7.tgz", + "integrity": "sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.5", - "@babel/types": "^7.23.5" + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.23.4", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-validator-identifier": "^7.24.7", "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" @@ -1942,8 +2061,9 @@ }, "node_modules/@babel/highlight/node_modules/ansi-styles": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -1953,8 +2073,9 @@ }, "node_modules/@babel/highlight/node_modules/chalk": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -1966,37 +2087,42 @@ }, "node_modules/@babel/highlight/node_modules/color-convert": { "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "1.1.3" } }, "node_modules/@babel/highlight/node_modules/color-name": { "version": "1.1.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true }, "node_modules/@babel/highlight/node_modules/escape-string-regexp": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/@babel/highlight/node_modules/has-flag": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/@babel/highlight/node_modules/supports-color": { "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -2005,9 +2131,10 @@ } }, "node_modules/@babel/parser": { - "version": "7.23.5", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", + "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", "dev": true, - "license": "MIT", "bin": { "parser": "bin/babel-parser.js" }, @@ -2017,8 +2144,9 @@ }, "node_modules/@babel/plugin-syntax-async-generators": { "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -2028,8 +2156,9 @@ }, "node_modules/@babel/plugin-syntax-bigint": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -2039,8 +2168,9 @@ }, "node_modules/@babel/plugin-syntax-class-properties": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" }, @@ -2050,8 +2180,9 @@ }, "node_modules/@babel/plugin-syntax-import-meta": { "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -2061,8 +2192,9 @@ }, "node_modules/@babel/plugin-syntax-json-strings": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -2072,8 +2204,9 @@ }, "node_modules/@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -2083,8 +2216,9 @@ }, "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -2094,8 +2228,9 @@ }, "node_modules/@babel/plugin-syntax-numeric-separator": { "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -2105,8 +2240,9 @@ }, "node_modules/@babel/plugin-syntax-object-rest-spread": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -2116,8 +2252,9 @@ }, "node_modules/@babel/plugin-syntax-optional-catch-binding": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -2127,8 +2264,9 @@ }, "node_modules/@babel/plugin-syntax-optional-chaining": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -2138,8 +2276,9 @@ }, "node_modules/@babel/plugin-syntax-top-level-await": { "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -2151,11 +2290,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.23.3", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz", + "integrity": "sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2165,8 +2305,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.23.5", - "license": "MIT", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz", + "integrity": "sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==", "peer": true, "dependencies": { "regenerator-runtime": "^0.14.0" @@ -2176,108 +2317,47 @@ } }, "node_modules/@babel/template": { - "version": "7.22.15", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", + "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/template/node_modules/@babel/code-frame": { - "version": "7.23.5", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/template/node_modules/ansi-styles": { - "version": "3.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/template/node_modules/chalk": { - "version": "2.4.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/template/node_modules/color-convert": { - "version": "1.9.3", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/template/node_modules/color-name": { - "version": "1.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/@babel/template/node_modules/escape-string-regexp": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/template/node_modules/has-flag": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/template/node_modules/supports-color": { - "version": "5.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/traverse": { - "version": "7.23.5", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", + "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.5", - "@babel/types": "^7.23.5", - "debug": "^4.1.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7", + "debug": "^4.3.1", "globals": "^11.1.0" }, "engines": { @@ -2285,96 +2365,35 @@ } }, "node_modules/@babel/traverse/node_modules/@babel/code-frame": { - "version": "7.23.5", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/traverse/node_modules/ansi-styles": { - "version": "3.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/traverse/node_modules/chalk": { - "version": "2.4.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/traverse/node_modules/color-convert": { - "version": "1.9.3", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/traverse/node_modules/color-name": { - "version": "1.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/@babel/traverse/node_modules/escape-string-regexp": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/@babel/traverse/node_modules/globals": { "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/traverse/node_modules/has-flag": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/traverse/node_modules/supports-color": { - "version": "5.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, "engines": { "node": ">=4" } }, "node_modules/@babel/types": { - "version": "7.23.5", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", + "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2383,19 +2402,22 @@ }, "node_modules/@bcoe/v8-coverage": { "version": "0.2.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true }, "node_modules/@colors/colors": { "version": "1.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", + "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", "engines": { "node": ">=0.1.90" } }, "node_modules/@dabh/diagnostics": { "version": "2.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", + "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", "dependencies": { "colorspace": "1.1.x", "enabled": "2.0.x", @@ -2403,13 +2425,12 @@ } }, "node_modules/@databricks/sql": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/@databricks/sql/-/sql-1.8.2.tgz", - "integrity": "sha512-Ry8VUuzkALAoanzVLswbXZCxwmL7I0W3WPMclTCzvh7emVnGqEcpI8vheKddoiumJQOAVgyCKqoQF63nQnXZtg==", + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/@databricks/sql/-/sql-1.8.4.tgz", + "integrity": "sha512-FB8JfRMTANMdzVnXjdeRK+FF8FWgoq8goXzAQIikz2Q1QYET77WJrCsbLaQLX3EfWy6HabNHVv0C2xlcFmHITg==", "dependencies": { "apache-arrow": "^13.0.0", "commander": "^9.3.0", - "lz4": "^0.6.5", "node-fetch": "^2.6.12", "node-int64": "^0.4.0", "open": "^8.4.2", @@ -2421,30 +2442,9 @@ }, "engines": { "node": ">=14.0.0" - } - }, - "node_modules/@databricks/sql/node_modules/commander": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", - "engines": { - "node": "^12.20.0 || >=14" - } - }, - "node_modules/@databricks/sql/node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "optionalDependencies": { + "lz4": "^0.6.5" } }, "node_modules/@databricks/sql/node_modules/uuid": { @@ -2461,8 +2461,9 @@ }, "node_modules/@eslint/eslintrc": { "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", "dev": true, - "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.1.1", @@ -2480,20 +2481,23 @@ }, "node_modules/@eslint/eslintrc/node_modules/ignore": { "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/@gar/promisify": { "version": "1.1.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true }, "node_modules/@google-cloud/bigquery": { "version": "5.12.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@google-cloud/bigquery/-/bigquery-5.12.0.tgz", + "integrity": "sha512-UaIvvuKpyJhCRBkxEJXnJwvxOxkGoZHvSs9IsS0MNUS4YphcbWYOyzRMufV5gxdsr7XNSd+36Nj/n/7vyZiCqQ==", "dependencies": { "@google-cloud/common": "^3.9.0", "@google-cloud/paginator": "^3.0.0", @@ -2514,21 +2518,16 @@ }, "node_modules/@google-cloud/bigquery/node_modules/arrify": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", "engines": { "node": ">=8" } }, - "node_modules/@google-cloud/bigquery/node_modules/uuid": { - "version": "8.3.2", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/@google-cloud/common": { "version": "3.10.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-3.10.0.tgz", + "integrity": "sha512-XMbJYMh/ZSaZnbnrrOFfR/oQrb0SxG4qh6hDisWCoEbFcBHV0qHQo4uXfeMCzolx2Mfkh6VDaOGg+hyJsmxrlw==", "dependencies": { "@google-cloud/projectify": "^2.0.0", "@google-cloud/promisify": "^2.0.0", @@ -2546,19 +2545,21 @@ }, "node_modules/@google-cloud/common/node_modules/arrify": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", "engines": { "node": ">=8" } }, "node_modules/@google-cloud/firestore": { - "version": "7.1.0", - "license": "Apache-2.0", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@google-cloud/firestore/-/firestore-7.8.0.tgz", + "integrity": "sha512-m21BWVZLz7H7NF8HZ5hCGUSCEJKNwYB5yzQqDTuE9YUzNDRMDei3BwVDht5k4xF636sGlnobyBL+dcbthSGONg==", "dependencies": { "fast-deep-equal": "^3.1.1", "functional-red-black-tree": "^1.0.1", - "google-gax": "^4.0.4", - "protobufjs": "^7.2.5" + "google-gax": "^4.3.3", + "protobufjs": "^7.2.6" }, "engines": { "node": ">=14.0.0" @@ -2566,7 +2567,8 @@ }, "node_modules/@google-cloud/paginator": { "version": "3.0.7", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-3.0.7.tgz", + "integrity": "sha512-jJNutk0arIQhmpUUQJPJErsojqo834KcyB6X7a1mxuic8i1tKXxde8E69IZxNZawRIlZdIK2QY4WALvlK5MzYQ==", "dependencies": { "arrify": "^2.0.0", "extend": "^3.0.2" @@ -2577,28 +2579,32 @@ }, "node_modules/@google-cloud/paginator/node_modules/arrify": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", "engines": { "node": ">=8" } }, "node_modules/@google-cloud/projectify": { "version": "2.1.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-2.1.1.tgz", + "integrity": "sha512-+rssMZHnlh0twl122gXY4/aCrk0G1acBqkHFfYddtsqpYXGxA29nj9V5V9SfC+GyOG00l650f6lG9KL+EpFEWQ==", "engines": { "node": ">=10" } }, "node_modules/@google-cloud/promisify": { "version": "2.0.4", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-2.0.4.tgz", + "integrity": "sha512-j8yRSSqswWi1QqUGKVEKOG03Q7qOoZP6/h2zN2YO+F5h2+DHU0bSrHCK9Y7lo2DI9fBd8qGAw795sf+3Jva4yA==", "engines": { "node": ">=10" } }, "node_modules/@google-cloud/storage": { "version": "5.20.5", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-5.20.5.tgz", + "integrity": "sha512-lOs/dCyveVF8TkVFnFSF7IGd0CJrTm91qiK6JLu+Z8qiT+7Ag0RyVhxZIWkhiACqwABo7kSHDm8FdH8p2wxSSw==", "dependencies": { "@google-cloud/paginator": "^3.0.7", "@google-cloud/projectify": "^2.0.0", @@ -2630,14 +2636,16 @@ }, "node_modules/@google-cloud/storage/node_modules/arrify": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", "engines": { "node": ">=8" } }, "node_modules/@google-cloud/storage/node_modules/p-limit": { "version": "3.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -2648,31 +2656,26 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@google-cloud/storage/node_modules/uuid": { - "version": "8.3.2", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/@grpc/grpc-js": { - "version": "1.9.12", - "license": "Apache-2.0", + "version": "1.10.9", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.10.9.tgz", + "integrity": "sha512-5tcgUctCG0qoNyfChZifz2tJqbRbXVO9J7X6duFcOjY3HUNCxg5D0ZCK7EP9vIcZ0zRpLU9bWkyCqVCLZ46IbQ==", "dependencies": { - "@grpc/proto-loader": "^0.7.8", - "@types/node": ">=12.12.47" + "@grpc/proto-loader": "^0.7.13", + "@js-sdsl/ordered-map": "^4.4.2" }, "engines": { - "node": "^8.13.0 || >=10.10.0" + "node": ">=12.10.0" } }, "node_modules/@grpc/proto-loader": { - "version": "0.7.10", - "license": "Apache-2.0", + "version": "0.7.13", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.13.tgz", + "integrity": "sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==", "dependencies": { "lodash.camelcase": "^4.3.0", "long": "^5.0.0", - "protobufjs": "^7.2.4", + "protobufjs": "^7.2.5", "yargs": "^17.7.2" }, "bin": { @@ -2684,7 +2687,8 @@ }, "node_modules/@grpc/proto-loader/node_modules/cliui": { "version": "8.0.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -2694,9 +2698,26 @@ "node": ">=12" } }, + "node_modules/@grpc/proto-loader/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/@grpc/proto-loader/node_modules/yargs": { "version": "17.7.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -2712,15 +2733,18 @@ }, "node_modules/@grpc/proto-loader/node_modules/yargs-parser": { "version": "21.1.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "engines": { "node": ">=12" } }, "node_modules/@humanwhocodes/config-array": { "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "deprecated": "Use @eslint/config-array instead", "dev": true, - "license": "Apache-2.0", "dependencies": { "@humanwhocodes/object-schema": "^1.2.0", "debug": "^4.1.1", @@ -2732,26 +2756,120 @@ }, "node_modules/@humanwhocodes/object-schema": { "version": "1.2.1", - "dev": true, - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true }, "node_modules/@hutson/parse-repository-url": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", + "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=6.9.0" } }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/@isaacs/string-locale-compare": { "version": "1.1.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz", + "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==", + "dev": true }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, - "license": "ISC", "dependencies": { "camelcase": "^5.3.1", "find-up": "^4.1.0", @@ -2765,24 +2883,27 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@jest/console": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", + "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", "dev": true, - "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "@types/node": "*", @@ -2797,8 +2918,9 @@ }, "node_modules/@jest/core": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", + "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", "dev": true, - "license": "MIT", "dependencies": { "@jest/console": "^27.5.1", "@jest/reporters": "^27.5.1", @@ -2843,8 +2965,9 @@ }, "node_modules/@jest/environment": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", "dev": true, - "license": "MIT", "dependencies": { "@jest/fake-timers": "^27.5.1", "@jest/types": "^27.5.1", @@ -2857,8 +2980,9 @@ }, "node_modules/@jest/fake-timers": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", "dev": true, - "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "@sinonjs/fake-timers": "^8.0.1", @@ -2873,8 +2997,9 @@ }, "node_modules/@jest/globals": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", "dev": true, - "license": "MIT", "dependencies": { "@jest/environment": "^27.5.1", "@jest/types": "^27.5.1", @@ -2886,8 +3011,9 @@ }, "node_modules/@jest/reporters": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", + "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", "dev": true, - "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^0.2.3", "@jest/console": "^27.5.1", @@ -2929,8 +3055,9 @@ }, "node_modules/@jest/source-map": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", + "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", "dev": true, - "license": "MIT", "dependencies": { "callsites": "^3.0.0", "graceful-fs": "^4.2.9", @@ -2942,8 +3069,9 @@ }, "node_modules/@jest/test-result": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", + "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", "dev": true, - "license": "MIT", "dependencies": { "@jest/console": "^27.5.1", "@jest/types": "^27.5.1", @@ -2956,8 +3084,9 @@ }, "node_modules/@jest/test-sequencer": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", + "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", "dev": true, - "license": "MIT", "dependencies": { "@jest/test-result": "^27.5.1", "graceful-fs": "^4.2.9", @@ -2970,8 +3099,9 @@ }, "node_modules/@jest/transform": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/core": "^7.1.0", "@jest/types": "^27.5.1", @@ -2995,8 +3125,9 @@ }, "node_modules/@jest/types": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, - "license": "MIT", "dependencies": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -3009,43 +3140,48 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, - "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.2", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, - "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -3053,12 +3189,24 @@ }, "node_modules/@js-joda/core": { "version": "3.2.0", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/@js-joda/core/-/core-3.2.0.tgz", + "integrity": "sha512-PMqgJ0sw5B7FKb2d5bWYIoxjri+QlW/Pys7+Rw82jSH0QN3rB05jZ/VrrsUdh1w4+i2kw9JOejXGq/KhDOX7Kg==" + }, + "node_modules/@js-sdsl/ordered-map": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz", + "integrity": "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } }, "node_modules/@lerna/add": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/add/-/add-5.6.2.tgz", + "integrity": "sha512-NHrm7kYiqP+EviguY7/NltJ3G9vGmJW6v2BASUOhP9FZDhYbq3O+rCDlFdoVRNtcyrSg90rZFMOWHph4KOoCQQ==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "@lerna/bootstrap": "5.6.2", "@lerna/command": "5.6.2", @@ -3077,8 +3225,10 @@ }, "node_modules/@lerna/bootstrap": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/bootstrap/-/bootstrap-5.6.2.tgz", + "integrity": "sha512-S2fMOEXbef7nrybQhzBywIGSLhuiQ5huPp1sU+v9Y6XEBsy/2IA+lb0gsZosvPqlRfMtiaFstL+QunaBhlWECA==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "@lerna/command": "5.6.2", "@lerna/filter-options": "5.6.2", @@ -3109,8 +3259,10 @@ }, "node_modules/@lerna/changed": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/changed/-/changed-5.6.2.tgz", + "integrity": "sha512-uUgrkdj1eYJHQGsXXlpH5oEAfu3x0qzeTjgvpdNrxHEdQWi7zWiW59hRadmiImc14uJJYIwVK5q/QLugrsdGFQ==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "@lerna/collect-updates": "5.6.2", "@lerna/command": "5.6.2", @@ -3123,8 +3275,10 @@ }, "node_modules/@lerna/check-working-tree": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/check-working-tree/-/check-working-tree-5.6.2.tgz", + "integrity": "sha512-6Vf3IB6p+iNIubwVgr8A/KOmGh5xb4SyRmhFtAVqe33yWl2p3yc+mU5nGoz4ET3JLF1T9MhsePj0hNt6qyOTLQ==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "@lerna/collect-uncommitted": "5.6.2", "@lerna/describe-ref": "5.6.2", @@ -3136,8 +3290,9 @@ }, "node_modules/@lerna/child-process": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/child-process/-/child-process-5.6.2.tgz", + "integrity": "sha512-QIOQ3jIbWdduHd5892fbo3u7/dQgbhzEBB7cvf+Ys/iCPP8UQrBECi1lfRgA4kcTKC2MyMz0SoyXZz/lFcXc3A==", "dev": true, - "license": "MIT", "dependencies": { "chalk": "^4.1.0", "execa": "^5.0.0", @@ -3149,8 +3304,10 @@ }, "node_modules/@lerna/clean": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/clean/-/clean-5.6.2.tgz", + "integrity": "sha512-A7j8r0Hk2pGyLUyaCmx4keNHen1L/KdcOjb4nR6X8GtTJR5AeA47a8rRKOCz9wwdyMPlo2Dau7d3RV9viv7a5g==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "@lerna/command": "5.6.2", "@lerna/filter-options": "5.6.2", @@ -3167,8 +3324,10 @@ }, "node_modules/@lerna/cli": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/cli/-/cli-5.6.2.tgz", + "integrity": "sha512-w0NRIEqDOmYKlA5t0iyqx0hbY7zcozvApmfvwF0lhkuhf3k6LRAFSamtimGQWicC779a7J2NXw4ASuBV47Fs1Q==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "@lerna/global-options": "5.6.2", "dedent": "^0.7.0", @@ -3181,8 +3340,10 @@ }, "node_modules/@lerna/collect-uncommitted": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/collect-uncommitted/-/collect-uncommitted-5.6.2.tgz", + "integrity": "sha512-i0jhxpypyOsW2PpPwIw4xg6EPh7/N3YuiI6P2yL7PynZ8nOv8DkIdoyMkhUP4gALjBfckH8Bj94eIaKMviqW4w==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "@lerna/child-process": "5.6.2", "chalk": "^4.1.0", @@ -3194,8 +3355,10 @@ }, "node_modules/@lerna/collect-updates": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/collect-updates/-/collect-updates-5.6.2.tgz", + "integrity": "sha512-DdTK13X6PIsh9HINiMniFeiivAizR/1FBB+hDVe6tOhsXFBfjHMw1xZhXlE+mYIoFmDm1UFK7zvQSexoaxRqFA==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "@lerna/child-process": "5.6.2", "@lerna/describe-ref": "5.6.2", @@ -3209,8 +3372,10 @@ }, "node_modules/@lerna/command": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/command/-/command-5.6.2.tgz", + "integrity": "sha512-eLVGI9TmxcaGt1M7TXGhhBZoeWOtOedMiH7NuCGHtL6TMJ9k+SCExyx+KpNmE6ImyNOzws6EvYLPLjftiqmoaA==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "@lerna/child-process": "5.6.2", "@lerna/package-graph": "5.6.2", @@ -3229,8 +3394,10 @@ }, "node_modules/@lerna/conventional-commits": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/conventional-commits/-/conventional-commits-5.6.2.tgz", + "integrity": "sha512-fPrJpYJhxCgY2uyOCTcAAC6+T6lUAtpEGxLbjWHWTb13oKKEygp9THoFpe6SbAD0fYMb3jeZCZCqNofM62rmuA==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "@lerna/validation-error": "5.6.2", "conventional-changelog-angular": "^5.0.12", @@ -3249,8 +3416,9 @@ }, "node_modules/@lerna/create": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/create/-/create-5.6.2.tgz", + "integrity": "sha512-+Y5cMUxMNXjTTU9IHpgRYIwKo39w+blui1P+s+qYlZUSCUAew0xNpOBG8iN0Nc5X9op4U094oIdHxv7Dyz6tWQ==", "dev": true, - "license": "MIT", "dependencies": { "@lerna/child-process": "5.6.2", "@lerna/command": "5.6.2", @@ -3275,8 +3443,10 @@ }, "node_modules/@lerna/create-symlink": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/create-symlink/-/create-symlink-5.6.2.tgz", + "integrity": "sha512-0WIs3P6ohPVh2+t5axrLZDE5Dt7fe3Kv0Auj0sBiBd6MmKZ2oS76apIl0Bspdbv8jX8+TRKGv6ib0280D0dtEw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "cmd-shim": "^5.0.0", "fs-extra": "^9.1.0", @@ -3286,29 +3456,12 @@ "node": "^14.15.0 || >=16.0.0" } }, - "node_modules/@lerna/create/node_modules/builtins": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.0.0" - } - }, - "node_modules/@lerna/create/node_modules/validate-npm-package-name": { - "version": "4.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "builtins": "^5.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, "node_modules/@lerna/describe-ref": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/describe-ref/-/describe-ref-5.6.2.tgz", + "integrity": "sha512-UqU0N77aT1W8duYGir7R+Sk3jsY/c4lhcCEcnayMpFScMbAp0ETGsW04cYsHK29sgg+ZCc5zEwebBqabWhMhnA==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "@lerna/child-process": "5.6.2", "npmlog": "^6.0.2" @@ -3319,8 +3472,10 @@ }, "node_modules/@lerna/diff": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/diff/-/diff-5.6.2.tgz", + "integrity": "sha512-aHKzKvUvUI8vOcshC2Za/bdz+plM3r/ycqUrPqaERzp+kc1pYHyPeXezydVdEmgmmwmyKI5hx4+2QNnzOnun2A==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "@lerna/child-process": "5.6.2", "@lerna/command": "5.6.2", @@ -3333,8 +3488,10 @@ }, "node_modules/@lerna/exec": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/exec/-/exec-5.6.2.tgz", + "integrity": "sha512-meZozok5stK7S0oAVn+kdbTmU+kHj9GTXjW7V8kgwG9ld+JJMTH3nKK1L3mEKyk9TFu9vFWyEOF7HNK6yEOoVg==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "@lerna/child-process": "5.6.2", "@lerna/command": "5.6.2", @@ -3350,8 +3507,10 @@ }, "node_modules/@lerna/filter-options": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/filter-options/-/filter-options-5.6.2.tgz", + "integrity": "sha512-4Z0HIhPak2TabTsUqEBQaQeOqgqEt0qyskvsY0oviYvqP/nrJfJBZh4H93jIiNQF59LJCn5Ce3KJJrLExxjlzw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "@lerna/collect-updates": "5.6.2", "@lerna/filter-packages": "5.6.2", @@ -3364,8 +3523,10 @@ }, "node_modules/@lerna/filter-packages": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/filter-packages/-/filter-packages-5.6.2.tgz", + "integrity": "sha512-el9V2lTEG0Bbz+Omo45hATkRVnChCTJhcTpth19cMJ6mQ4M5H4IgbWCJdFMBi/RpTnOhz9BhJxDbj95kuIvvzw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "@lerna/validation-error": "5.6.2", "multimatch": "^5.0.0", @@ -3377,8 +3538,10 @@ }, "node_modules/@lerna/get-npm-exec-opts": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-5.6.2.tgz", + "integrity": "sha512-0RbSDJ+QC9D5UWZJh3DN7mBIU1NhBmdHOE289oHSkjDY+uEjdzMPkEUy+wZ8fCzMLFnnNQkAEqNaOAzZ7dmFLA==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "npmlog": "^6.0.2" }, @@ -3388,8 +3551,10 @@ }, "node_modules/@lerna/get-packed": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/get-packed/-/get-packed-5.6.2.tgz", + "integrity": "sha512-pp5nNDmtrtd21aKHjwwOY5CS7XNIHxINzGa+Jholn1jMDYUtdskpN++ZqYbATGpW831++NJuiuBVyqAWi9xbXg==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "fs-extra": "^9.1.0", "ssri": "^9.0.1", @@ -3401,8 +3566,10 @@ }, "node_modules/@lerna/github-client": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/github-client/-/github-client-5.6.2.tgz", + "integrity": "sha512-pjALazZoRZtKqfwLBwmW3HPptVhQm54PvA8s3qhCQ+3JkqrZiIFwkkxNZxs3jwzr+aaSOzfhSzCndg0urb0GXA==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "@lerna/child-process": "5.6.2", "@octokit/plugin-enterprise-rest": "^6.0.1", @@ -3416,8 +3583,10 @@ }, "node_modules/@lerna/gitlab-client": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/gitlab-client/-/gitlab-client-5.6.2.tgz", + "integrity": "sha512-TInJmbrsmYIwUyrRxytjO82KjJbRwm67F7LoZs1shAq6rMvNqi4NxSY9j+hT/939alFmEq1zssoy/caeLXHRfQ==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "node-fetch": "^2.6.1", "npmlog": "^6.0.2" @@ -3428,16 +3597,20 @@ }, "node_modules/@lerna/global-options": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/global-options/-/global-options-5.6.2.tgz", + "integrity": "sha512-kaKELURXTlczthNJskdOvh6GGMyt24qat0xMoJZ8plYMdofJfhz24h1OFcvB/EwCUwP/XV1+ohE5P+vdktbrEg==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "engines": { "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/has-npm-version": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/has-npm-version/-/has-npm-version-5.6.2.tgz", + "integrity": "sha512-kXCnSzffmTWsaK0ol30coyCfO8WH26HFbmJjRBzKv7VGkuAIcB6gX2gqRRgNLLlvI+Yrp+JSlpVNVnu15SEH2g==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "@lerna/child-process": "5.6.2", "semver": "^7.3.4" @@ -3448,8 +3621,10 @@ }, "node_modules/@lerna/import": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/import/-/import-5.6.2.tgz", + "integrity": "sha512-xQUE49mtcP0z3KUdXBsyvp8rGDz6phuYUoQbhcFRJ7WPcQKzMvtm0XYrER6c2YWEX7QOuDac6tU82P8zTrTBaA==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "@lerna/child-process": "5.6.2", "@lerna/command": "5.6.2", @@ -3466,8 +3641,10 @@ }, "node_modules/@lerna/info": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/info/-/info-5.6.2.tgz", + "integrity": "sha512-MPjY5Olj+fiZHgfEdwXUFRKamdEuLr9Ob/qut8JsB/oQSQ4ALdQfnrOcMT8lJIcC2R67EA5yav2lHPBIkezm8A==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "@lerna/command": "5.6.2", "@lerna/output": "5.6.2", @@ -3479,8 +3656,10 @@ }, "node_modules/@lerna/init": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/init/-/init-5.6.2.tgz", + "integrity": "sha512-ahU3/lgF+J8kdJAQysihFJROHthkIDXfHmvhw7AYnzf94HjxGNXj7nz6i3At1/dM/1nQhR+4/uNR1/OU4tTYYQ==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "@lerna/child-process": "5.6.2", "@lerna/command": "5.6.2", @@ -3495,8 +3674,10 @@ }, "node_modules/@lerna/link": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/link/-/link-5.6.2.tgz", + "integrity": "sha512-hXxQ4R3z6rUF1v2x62oIzLyeHL96u7ZBhxqYMJrm763D1VMSDcHKF9CjJfc6J9vH5Z2ZbL6CQg50Hw5mUpJbjg==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "@lerna/command": "5.6.2", "@lerna/package-graph": "5.6.2", @@ -3511,8 +3692,10 @@ }, "node_modules/@lerna/list": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/list/-/list-5.6.2.tgz", + "integrity": "sha512-WjE5O2tQ3TcS+8LqXUaxi0YdldhxUhNihT5+Gg4vzGdIlrPDioO50Zjo9d8jOU7i3LMIk6EzCma0sZr2CVfEGg==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "@lerna/command": "5.6.2", "@lerna/filter-options": "5.6.2", @@ -3525,8 +3708,10 @@ }, "node_modules/@lerna/listable": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/listable/-/listable-5.6.2.tgz", + "integrity": "sha512-8Yp49BwkY/5XqVru38Zko+6Wj/sgbwzJfIGEPy3Qu575r1NA/b9eI1gX22aMsEeXUeGOybR7nWT5ewnPQHjqvA==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "@lerna/query-graph": "5.6.2", "chalk": "^4.1.0", @@ -3538,8 +3723,10 @@ }, "node_modules/@lerna/log-packed": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/log-packed/-/log-packed-5.6.2.tgz", + "integrity": "sha512-O9GODG7tMtWk+2fufn2MOkIDBYMRoKBhYMHshO5Aw/VIsH76DIxpX1koMzWfUngM/C70R4uNAKcVWineX4qzIw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "byte-size": "^7.0.0", "columnify": "^1.6.0", @@ -3552,8 +3739,10 @@ }, "node_modules/@lerna/npm-conf": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/npm-conf/-/npm-conf-5.6.2.tgz", + "integrity": "sha512-gWDPhw1wjXYXphk/PAghTLexO5T6abVFhXb+KOMCeem366mY0F5bM88PiorL73aErTNUoR8n+V4X29NTZzDZpQ==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "config-chain": "^1.1.12", "pify": "^5.0.0" @@ -3564,8 +3753,10 @@ }, "node_modules/@lerna/npm-dist-tag": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/npm-dist-tag/-/npm-dist-tag-5.6.2.tgz", + "integrity": "sha512-t2RmxV6Eog4acXkUI+EzWuYVbeVVY139pANIWS9qtdajfgp4GVXZi1S8mAIb70yeHdNpCp1mhK0xpCrFH9LvGQ==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "@lerna/otplease": "5.6.2", "npm-package-arg": "8.1.1", @@ -3578,8 +3769,10 @@ }, "node_modules/@lerna/npm-install": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/npm-install/-/npm-install-5.6.2.tgz", + "integrity": "sha512-AT226zdEo+uGENd37jwYgdALKJAIJK4pNOfmXWZWzVb9oMOr8I2YSjPYvSYUNG7gOo2YJQU8x5Zd7OShv2924Q==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "@lerna/child-process": "5.6.2", "@lerna/get-npm-exec-opts": "5.6.2", @@ -3595,8 +3788,10 @@ }, "node_modules/@lerna/npm-publish": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/npm-publish/-/npm-publish-5.6.2.tgz", + "integrity": "sha512-ldSyewCfv9fAeC5xNjL0HKGSUxcC048EJoe/B+KRUmd+IPidvZxMEzRu08lSC/q3V9YeUv9ZvRnxATXOM8CffA==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "@lerna/otplease": "5.6.2", "@lerna/run-lifecycle": "5.6.2", @@ -3613,8 +3808,10 @@ }, "node_modules/@lerna/npm-run-script": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/npm-run-script/-/npm-run-script-5.6.2.tgz", + "integrity": "sha512-MOQoWNcAyJivM8SYp0zELM7vg/Dj07j4YMdxZkey+S1UO0T4/vKBxb575o16hH4WeNzC3Pd7WBlb7C8dLOfNwQ==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "@lerna/child-process": "5.6.2", "@lerna/get-npm-exec-opts": "5.6.2", @@ -3626,8 +3823,10 @@ }, "node_modules/@lerna/otplease": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/otplease/-/otplease-5.6.2.tgz", + "integrity": "sha512-dGS4lzkEQVTMAgji82jp8RK6UK32wlzrBAO4P4iiVHCUTuwNLsY9oeBXvVXSMrosJnl6Hbe0NOvi43mqSucGoA==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "@lerna/prompt": "5.6.2" }, @@ -3637,8 +3836,10 @@ }, "node_modules/@lerna/output": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/output/-/output-5.6.2.tgz", + "integrity": "sha512-++d+bfOQwY66yo7q1XuAvRcqtRHCG45e/awP5xQomTZ6R1rhWiZ3whWdc9Z6lF7+UtBB9toSYYffKU/xc3L0yQ==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "npmlog": "^6.0.2" }, @@ -3648,8 +3849,10 @@ }, "node_modules/@lerna/pack-directory": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/pack-directory/-/pack-directory-5.6.2.tgz", + "integrity": "sha512-w5Jk5fo+HkN4Le7WMOudTcmAymcf0xPd302TqAQncjXpk0cb8tZbj+5bbNHsGb58GRjOIm5icQbHXooQUxbHhA==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "@lerna/get-packed": "5.6.2", "@lerna/package": "5.6.2", @@ -3665,8 +3868,10 @@ }, "node_modules/@lerna/package": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/package/-/package-5.6.2.tgz", + "integrity": "sha512-LaOC8moyM5J9WnRiWZkedjOninSclBOJyPqhif6mHb2kCFX6jAroNYzE8KM4cphu8CunHuhI6Ixzswtv+Dultw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "load-json-file": "^6.2.0", "npm-package-arg": "8.1.1", @@ -3678,8 +3883,10 @@ }, "node_modules/@lerna/package-graph": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/package-graph/-/package-graph-5.6.2.tgz", + "integrity": "sha512-TmL61qBBvA3Tc4qICDirZzdFFwWOA6qicIXUruLiE2PblRowRmCO1bKrrP6XbDOspzwrkPef6N2F2/5gHQAnkQ==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "@lerna/prerelease-id-from-version": "5.6.2", "@lerna/validation-error": "5.6.2", @@ -3693,8 +3900,10 @@ }, "node_modules/@lerna/prerelease-id-from-version": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-5.6.2.tgz", + "integrity": "sha512-7gIm9fecWFVNy2kpj/KbH11bRcpyANAwpsft3X5m6J7y7A6FTUscCbEvl3ZNdpQKHNuvnHgCtkm3A5PMSCEgkA==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "semver": "^7.3.4" }, @@ -3704,8 +3913,10 @@ }, "node_modules/@lerna/profiler": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/profiler/-/profiler-5.6.2.tgz", + "integrity": "sha512-okwkagP5zyRIOYTceu/9/esW7UZFt7lyL6q6ZgpSG3TYC5Ay+FXLtS6Xiha/FQdVdumFqKULDWTGovzUlxcwaw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "fs-extra": "^9.1.0", "npmlog": "^6.0.2", @@ -3717,8 +3928,10 @@ }, "node_modules/@lerna/project": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/project/-/project-5.6.2.tgz", + "integrity": "sha512-kPIMcIy/0DVWM91FPMMFmXyAnCuuLm3NdhnA8NusE//VuY9wC6QC/3OwuCY39b2dbko/fPZheqKeAZkkMH6sGg==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "@lerna/package": "5.6.2", "@lerna/validation-error": "5.6.2", @@ -3740,13 +3953,15 @@ }, "node_modules/@lerna/project/node_modules/argparse": { "version": "2.0.1", - "dev": true, - "license": "Python-2.0" + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "node_modules/@lerna/project/node_modules/js-yaml": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -3756,16 +3971,19 @@ }, "node_modules/@lerna/project/node_modules/resolve-from": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@lerna/prompt": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/prompt/-/prompt-5.6.2.tgz", + "integrity": "sha512-4hTNmVYADEr0GJTMegWV+GW6n+dzKx1vN9v2ISqyle283Myv930WxuyO0PeYGqTrkneJsyPreCMovuEGCvZ0iQ==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "inquirer": "^8.2.4", "npmlog": "^6.0.2" @@ -3776,8 +3994,10 @@ }, "node_modules/@lerna/publish": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/publish/-/publish-5.6.2.tgz", + "integrity": "sha512-QaW0GjMJMuWlRNjeDCjmY/vjriGSWgkLS23yu8VKNtV5U3dt5yIKA3DNGV3HgZACuu45kQxzMDsfLzgzbGNtYA==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "@lerna/check-working-tree": "5.6.2", "@lerna/child-process": "5.6.2", @@ -3814,8 +4034,10 @@ }, "node_modules/@lerna/pulse-till-done": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/pulse-till-done/-/pulse-till-done-5.6.2.tgz", + "integrity": "sha512-eA/X1RCxU5YGMNZmbgPi+Kyfx1Q3bn4P9jo/LZy+/NRRr1po3ASXP2GJZ1auBh/9A2ELDvvKTOXCVHqczKC6rA==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "npmlog": "^6.0.2" }, @@ -3825,8 +4047,10 @@ }, "node_modules/@lerna/query-graph": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/query-graph/-/query-graph-5.6.2.tgz", + "integrity": "sha512-KRngr96yBP8XYDi9/U62fnGO+ZXqm04Qk6a2HtoTr/ha8QvO1s7Tgm0xs/G7qWXDQHZgunWIbmK/LhxM7eFQrw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "@lerna/package-graph": "5.6.2" }, @@ -3836,8 +4060,10 @@ }, "node_modules/@lerna/resolve-symlink": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/resolve-symlink/-/resolve-symlink-5.6.2.tgz", + "integrity": "sha512-PDQy+7M8JEFtwIVHJgWvSxHkxJf9zXCENkvIWDB+SsoDPhw9+caewt46bTeP5iGm9pOMu3oZukaWo/TvF7sNjg==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "fs-extra": "^9.1.0", "npmlog": "^6.0.2", @@ -3849,8 +4075,10 @@ }, "node_modules/@lerna/rimraf-dir": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/rimraf-dir/-/rimraf-dir-5.6.2.tgz", + "integrity": "sha512-jgEfzz7uBUiQKteq3G8MtJiA2D2VoKmZSSY3VSiW/tPOSXYxxSHxEsClQdCeNa6+sYrDNDT8fP6MJ3lPLjDeLA==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "@lerna/child-process": "5.6.2", "npmlog": "^6.0.2", @@ -3863,8 +4091,10 @@ }, "node_modules/@lerna/run": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/run/-/run-5.6.2.tgz", + "integrity": "sha512-c2kJxdFrNg5KOkrhmgwKKUOsfSrGNlFCe26EttufOJ3xfY0VnXlEw9rHOkTgwtu7969rfCdyaVP1qckMrF1Dgw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "@lerna/command": "5.6.2", "@lerna/filter-options": "5.6.2", @@ -3883,8 +4113,10 @@ }, "node_modules/@lerna/run-lifecycle": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/run-lifecycle/-/run-lifecycle-5.6.2.tgz", + "integrity": "sha512-u9gGgq/50Fm8dvfcc/TSHOCAQvzLD7poVanDMhHYWOAqRDnellJEEmA1K/Yka4vZmySrzluahkry9G6jcREt+g==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "@lerna/npm-conf": "5.6.2", "@npmcli/run-script": "^4.1.7", @@ -3897,8 +4129,10 @@ }, "node_modules/@lerna/run-topologically": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/run-topologically/-/run-topologically-5.6.2.tgz", + "integrity": "sha512-QQ/jGOIsVvUg3izShWsd67RlWYh9UOH2yw97Ol1zySX9+JspCMVQrn9eKq1Pk8twQOFhT87LpT/aaxbTBgREPw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "@lerna/query-graph": "5.6.2", "p-queue": "^6.6.2" @@ -3909,8 +4143,10 @@ }, "node_modules/@lerna/symlink-binary": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/symlink-binary/-/symlink-binary-5.6.2.tgz", + "integrity": "sha512-Cth+miwYyO81WAmrQbPBrLHuF+F0UUc0el5kRXLH6j5zzaRS3kMM68r40M7MmfH8m3GPi7691UARoWFEotW5jw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "@lerna/create-symlink": "5.6.2", "@lerna/package": "5.6.2", @@ -3923,8 +4159,10 @@ }, "node_modules/@lerna/symlink-dependencies": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/symlink-dependencies/-/symlink-dependencies-5.6.2.tgz", + "integrity": "sha512-dUVNQLEcjVOIQiT9OlSAKt0ykjyJPy8l9i4NJDe2/0XYaUjo8PWsxJ0vrutz27jzi2aZUy07ASmowQZEmnLHAw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "@lerna/create-symlink": "5.6.2", "@lerna/resolve-symlink": "5.6.2", @@ -3939,8 +4177,10 @@ }, "node_modules/@lerna/temp-write": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/temp-write/-/temp-write-5.6.2.tgz", + "integrity": "sha512-S5ZNVTurSwWBmc9kh5alfSjmO3+BnRT6shYtOlmVIUYqWeYVYA5C1Htj322bbU4CSNCMFK6NQl4qGKL17HMuig==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.1.15", "is-stream": "^2.0.0", @@ -3951,8 +4191,9 @@ }, "node_modules/@lerna/temp-write/node_modules/make-dir": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, - "license": "MIT", "dependencies": { "semver": "^6.0.0" }, @@ -3965,32 +4206,29 @@ }, "node_modules/@lerna/temp-write/node_modules/semver": { "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, - "node_modules/@lerna/temp-write/node_modules/uuid": { - "version": "8.3.2", - "dev": true, - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/@lerna/timer": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/timer/-/timer-5.6.2.tgz", + "integrity": "sha512-AjMOiLc2B+5Nzdd9hNORetAdZ/WK8YNGX/+2ypzM68TMAPfIT5C40hMlSva9Yg4RsBz22REopXgM5s2zQd5ZQA==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "engines": { "node": "^14.15.0 || >=16.0.0" } }, "node_modules/@lerna/validation-error": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/validation-error/-/validation-error-5.6.2.tgz", + "integrity": "sha512-4WlDUHaa+RSJNyJRtX3gVIAPVzjZD2tle8AJ0ZYBfdZnZmG0VlB2pD1FIbOQPK8sY2h5m0cHLRvfLoLncqHvdQ==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "npmlog": "^6.0.2" }, @@ -4000,8 +4238,10 @@ }, "node_modules/@lerna/version": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/version/-/version-5.6.2.tgz", + "integrity": "sha512-odNSR2rTbHW++xMZSQKu/F6Syrd/sUvwDLPaMKktoOSPKmycHt/eWcuQQyACdtc43Iqeu4uQd7PCLsniqOVFrw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "@lerna/check-working-tree": "5.6.2", "@lerna/child-process": "5.6.2", @@ -4037,8 +4277,10 @@ }, "node_modules/@lerna/write-log-file": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@lerna/write-log-file/-/write-log-file-5.6.2.tgz", + "integrity": "sha512-J09l18QnWQ3sXIRwuJkjXY3+KwPR2uO5NgbZGE3GXJK1V/LzOBRMvjGAIbuQHXw25uqe7vpLUpB8drtnFrubCQ==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "dependencies": { "npmlog": "^6.0.2", "write-file-atomic": "^4.0.1" @@ -4049,8 +4291,9 @@ }, "node_modules/@lerna/write-log-file/node_modules/write-file-atomic": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, - "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^3.0.7" @@ -4060,8 +4303,9 @@ } }, "node_modules/@mongodb-js/saslprep": { - "version": "1.1.1", - "license": "MIT", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.7.tgz", + "integrity": "sha512-dCHW/oEX0KJ4NjDULBo3JiOaK5+6axtpBbS+ao2ZInoAL9/YRQLhXzSNAFz7hP4nzLkIqsfYAK/PDE3+XHny0Q==", "optional": true, "dependencies": { "sparse-bitfield": "^3.0.3" @@ -4069,8 +4313,9 @@ }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, - "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -4081,16 +4326,18 @@ }, "node_modules/@nodelib/fs.stat": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, - "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/@nodelib/fs.walk": { "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, - "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -4101,7 +4348,8 @@ }, "node_modules/@notionhq/client": { "version": "1.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@notionhq/client/-/client-1.0.4.tgz", + "integrity": "sha512-m7zZ5l3RUktayf1lRBV1XMb8HSKsmWTv/LZPqP7UGC1NMzOlc+bbTOPNQ4CP/c1P4cP61VWLb/zBq7a3c0nMaw==", "dependencies": { "@types/node-fetch": "^2.5.10", "node-fetch": "^2.6.1" @@ -4112,8 +4360,9 @@ }, "node_modules/@npmcli/arborist": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-5.3.0.tgz", + "integrity": "sha512-+rZ9zgL1lnbl8Xbb1NQdMjveOMwj4lIYfcDtyJHHi5x4X8jtR6m8SXooJMZy5vmFVZ8w7A2Bnd/oX9eTuU8w5A==", "dev": true, - "license": "ISC", "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", "@npmcli/installed-package-contents": "^1.0.7", @@ -4157,18 +4406,11 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/@npmcli/arborist/node_modules/builtins": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.0.0" - } - }, "node_modules/@npmcli/arborist/node_modules/hosted-git-info": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^7.5.1" }, @@ -4178,16 +4420,18 @@ }, "node_modules/@npmcli/arborist/node_modules/lru-cache": { "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, - "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/@npmcli/arborist/node_modules/npm-package-arg": { "version": "9.1.2", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", + "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", "dev": true, - "license": "ISC", "dependencies": { "hosted-git-info": "^5.0.0", "proc-log": "^2.0.1", @@ -4198,21 +4442,11 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/@npmcli/arborist/node_modules/validate-npm-package-name": { - "version": "4.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "builtins": "^5.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, "node_modules/@npmcli/fs": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", "dev": true, - "license": "ISC", "dependencies": { "@gar/promisify": "^1.1.3", "semver": "^7.3.5" @@ -4223,8 +4457,9 @@ }, "node_modules/@npmcli/git": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.2.tgz", + "integrity": "sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/promise-spawn": "^3.0.0", "lru-cache": "^7.4.4", @@ -4242,16 +4477,18 @@ }, "node_modules/@npmcli/git/node_modules/lru-cache": { "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, - "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/@npmcli/installed-package-contents": { "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", + "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", "dev": true, - "license": "ISC", "dependencies": { "npm-bundled": "^1.1.1", "npm-normalize-package-bin": "^1.0.1" @@ -4265,8 +4502,9 @@ }, "node_modules/@npmcli/map-workspaces": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-2.0.4.tgz", + "integrity": "sha512-bMo0aAfwhVwqoVM5UzX1DJnlvVvzDCHae821jv48L1EsrYwfOZChlqWYXEtto/+BkBXetPbEWgau++/brh4oVg==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/name-from-folder": "^1.0.1", "glob": "^8.0.1", @@ -4279,16 +4517,19 @@ }, "node_modules/@npmcli/map-workspaces/node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/@npmcli/map-workspaces/node_modules/glob": { "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -4305,8 +4546,9 @@ }, "node_modules/@npmcli/map-workspaces/node_modules/minimatch": { "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -4316,8 +4558,9 @@ }, "node_modules/@npmcli/metavuln-calculator": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-3.1.1.tgz", + "integrity": "sha512-n69ygIaqAedecLeVH3KnO39M6ZHiJ2dEv5A7DGvcqCB8q17BGUgW8QaanIkbWUo2aYGZqJaOORTLAlIvKjNDKA==", "dev": true, - "license": "ISC", "dependencies": { "cacache": "^16.0.0", "json-parse-even-better-errors": "^2.3.1", @@ -4330,8 +4573,10 @@ }, "node_modules/@npmcli/move-file": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "deprecated": "This functionality has been moved to @npmcli/fs", "dev": true, - "license": "MIT", "dependencies": { "mkdirp": "^1.0.4", "rimraf": "^3.0.2" @@ -4342,21 +4587,24 @@ }, "node_modules/@npmcli/name-from-folder": { "version": "1.0.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-1.0.1.tgz", + "integrity": "sha512-qq3oEfcLFwNfEYOQ8HLimRGKlD8WSeGEdtUa7hmzpR8Sa7haL1KVQrvgO6wqMjhWFFVjgtrh1gIxDz+P8sjUaA==", + "dev": true }, "node_modules/@npmcli/node-gyp": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz", + "integrity": "sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A==", "dev": true, - "license": "ISC", "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/@npmcli/package-json": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-2.0.0.tgz", + "integrity": "sha512-42jnZ6yl16GzjWSH7vtrmWyJDGVa/LXPdpN2rcUWolFjc9ON2N3uz0qdBbQACfmhuJZ2lbKYtmK5qx68ZPLHMA==", "dev": true, - "license": "ISC", "dependencies": { "json-parse-even-better-errors": "^2.3.1" }, @@ -4366,8 +4614,9 @@ }, "node_modules/@npmcli/promise-spawn": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz", + "integrity": "sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g==", "dev": true, - "license": "ISC", "dependencies": { "infer-owner": "^1.0.4" }, @@ -4377,8 +4626,9 @@ }, "node_modules/@npmcli/run-script": { "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.2.1.tgz", + "integrity": "sha512-7dqywvVudPSrRCW5nTHpHgeWnbBtz8cFkOuKrecm6ih+oO9ciydhWt6OF7HlqupRRmB8Q/gECVdB9LMfToJbRg==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/node-gyp": "^2.0.0", "@npmcli/promise-spawn": "^3.0.0", @@ -4392,16 +4642,18 @@ }, "node_modules/@nrwl/cli": { "version": "15.9.7", + "resolved": "https://registry.npmjs.org/@nrwl/cli/-/cli-15.9.7.tgz", + "integrity": "sha512-1jtHBDuJzA57My5nLzYiM372mJW0NY6rFKxlWt5a0RLsAZdPTHsd8lE3Gs9XinGC1jhXbruWmhhnKyYtZvX/zA==", "dev": true, - "license": "MIT", "dependencies": { "nx": "15.9.7" } }, "node_modules/@nrwl/devkit": { "version": "15.9.7", + "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-15.9.7.tgz", + "integrity": "sha512-Sb7Am2TMT8AVq8e+vxOlk3AtOA2M0qCmhBzoM1OJbdHaPKc0g0UgSnWRml1kPGg5qfPk72tWclLoZJ5/ut0vTg==", "dev": true, - "license": "MIT", "dependencies": { "ejs": "^3.1.7", "ignore": "^5.0.4", @@ -4413,13 +4665,43 @@ "nx": ">= 14.1 <= 16" } }, - "node_modules/@nrwl/devkit/node_modules/tslib": { - "version": "2.6.2", + "node_modules/@nrwl/devkit/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "license": "0BSD" + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@nrwl/devkit/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@nrwl/devkit/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/@nrwl/nx-darwin-arm64": { "version": "15.9.7", + "resolved": "https://registry.npmjs.org/@nrwl/nx-darwin-arm64/-/nx-darwin-arm64-15.9.7.tgz", + "integrity": "sha512-aBUgnhlkrgC0vu0fK6eb9Vob7eFnkuknrK+YzTjmLrrZwj7FGNAeyGXSlyo1dVokIzjVKjJg2saZZ0WQbfuCJw==", "cpu": [ "arm64" ], @@ -4432,10 +4714,139 @@ "node": ">= 10" } }, + "node_modules/@nrwl/nx-darwin-x64": { + "version": "15.9.7", + "resolved": "https://registry.npmjs.org/@nrwl/nx-darwin-x64/-/nx-darwin-x64-15.9.7.tgz", + "integrity": "sha512-L+elVa34jhGf1cmn38Z0sotQatmLovxoASCIw5r1CBZZeJ5Tg7Y9nOwjRiDixZxNN56hPKXm6xl9EKlVHVeKlg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nrwl/nx-linux-arm-gnueabihf": { + "version": "15.9.7", + "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-15.9.7.tgz", + "integrity": "sha512-pqmfqqEUGFu6PmmHKyXyUw1Al0Ki8PSaR0+ndgCAb1qrekVDGDfznJfaqxN0JSLeolPD6+PFtLyXNr9ZyPFlFg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nrwl/nx-linux-arm64-gnu": { + "version": "15.9.7", + "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-15.9.7.tgz", + "integrity": "sha512-NYOa/eRrqmM+In5g3M0rrPVIS9Z+q6fvwXJYf/KrjOHqqan/KL+2TOfroA30UhcBrwghZvib7O++7gZ2hzwOnA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nrwl/nx-linux-arm64-musl": { + "version": "15.9.7", + "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-arm64-musl/-/nx-linux-arm64-musl-15.9.7.tgz", + "integrity": "sha512-zyStqjEcmbvLbejdTOrLUSEdhnxNtdQXlmOuymznCzYUEGRv+4f7OAepD3yRoR0a/57SSORZmmGQB7XHZoYZJA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nrwl/nx-linux-x64-gnu": { + "version": "15.9.7", + "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-x64-gnu/-/nx-linux-x64-gnu-15.9.7.tgz", + "integrity": "sha512-saNK5i2A8pKO3Il+Ejk/KStTApUpWgCxjeUz9G+T8A+QHeDloZYH2c7pU/P3jA9QoNeKwjVO9wYQllPL9loeVg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nrwl/nx-linux-x64-musl": { + "version": "15.9.7", + "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-x64-musl/-/nx-linux-x64-musl-15.9.7.tgz", + "integrity": "sha512-extIUThYN94m4Vj4iZggt6hhMZWQSukBCo8pp91JHnDcryBg7SnYmnikwtY1ZAFyyRiNFBLCKNIDFGkKkSrZ9Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nrwl/nx-win32-arm64-msvc": { + "version": "15.9.7", + "resolved": "https://registry.npmjs.org/@nrwl/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-15.9.7.tgz", + "integrity": "sha512-GSQ54hJ5AAnKZb4KP4cmBnJ1oC4ILxnrG1mekxeM65c1RtWg9NpBwZ8E0gU3xNrTv8ZNsBeKi/9UhXBxhsIh8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nrwl/nx-win32-x64-msvc": { + "version": "15.9.7", + "resolved": "https://registry.npmjs.org/@nrwl/nx-win32-x64-msvc/-/nx-win32-x64-msvc-15.9.7.tgz", + "integrity": "sha512-x6URof79RPd8AlapVbPefUD3ynJZpmah3tYaYZ9xZRMXojVtEHV8Qh5vysKXQ1rNYJiiB8Ah6evSKWLbAH60tw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, "node_modules/@nrwl/tao": { "version": "15.9.7", + "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-15.9.7.tgz", + "integrity": "sha512-OBnHNvQf3vBH0qh9YnvBQQWyyFZ+PWguF6dJ8+1vyQYlrLVk/XZ8nJ4ukWFb+QfPv/O8VBmqaofaOI9aFC4yTw==", "dev": true, - "license": "MIT", "dependencies": { "nx": "15.9.7" }, @@ -4445,16 +4856,18 @@ }, "node_modules/@octokit/auth-token": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.4.tgz", + "integrity": "sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ==", "dev": true, - "license": "MIT", "engines": { "node": ">= 14" } }, "node_modules/@octokit/core": { "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.2.4.tgz", + "integrity": "sha512-rYKilwgzQ7/imScn3M9/pFfUf4I1AZEH3KhyJmtPdE2zfaXAn2mFfUy4FbKewzc2We5y/LlKLj36fWJLKC2SIQ==", "dev": true, - "license": "MIT", "dependencies": { "@octokit/auth-token": "^3.0.0", "@octokit/graphql": "^5.0.0", @@ -4470,8 +4883,9 @@ }, "node_modules/@octokit/endpoint": { "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.6.tgz", + "integrity": "sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==", "dev": true, - "license": "MIT", "dependencies": { "@octokit/types": "^9.0.0", "is-plain-object": "^5.0.0", @@ -4483,8 +4897,9 @@ }, "node_modules/@octokit/graphql": { "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.6.tgz", + "integrity": "sha512-Fxyxdy/JH0MnIB5h+UQ3yCoh1FG4kWXfFKkpWqjZHw/p+Kc8Y44Hu/kCgNBT6nU1shNumEchmW/sUO1JuQnPcw==", "dev": true, - "license": "MIT", "dependencies": { "@octokit/request": "^6.0.0", "@octokit/types": "^9.0.0", @@ -4496,18 +4911,21 @@ }, "node_modules/@octokit/openapi-types": { "version": "18.1.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.1.1.tgz", + "integrity": "sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw==", + "dev": true }, "node_modules/@octokit/plugin-enterprise-rest": { "version": "6.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz", + "integrity": "sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==", + "dev": true }, "node_modules/@octokit/plugin-paginate-rest": { "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-6.1.2.tgz", + "integrity": "sha512-qhrmtQeHU/IivxucOV1bbI/xZyC/iOBhclokv7Sut5vnejAIAEXVcGQeRpQlU39E0WwK9lNvJHphHri/DB6lbQ==", "dev": true, - "license": "MIT", "dependencies": { "@octokit/tsconfig": "^1.0.2", "@octokit/types": "^9.2.3" @@ -4521,16 +4939,18 @@ }, "node_modules/@octokit/plugin-request-log": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", + "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", "dev": true, - "license": "MIT", "peerDependencies": { "@octokit/core": ">=3" } }, "node_modules/@octokit/plugin-rest-endpoint-methods": { "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-7.2.3.tgz", + "integrity": "sha512-I5Gml6kTAkzVlN7KCtjOM+Ruwe/rQppp0QU372K1GP7kNOYEKe8Xn5BW4sE62JAHdwpq95OQK/qGNyKQMUzVgA==", "dev": true, - "license": "MIT", "dependencies": { "@octokit/types": "^10.0.0" }, @@ -4543,16 +4963,18 @@ }, "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": { "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-10.0.0.tgz", + "integrity": "sha512-Vm8IddVmhCgU1fxC1eyinpwqzXPEYu0NrYzD3YZjlGjyftdLBTeqNblRC0jmJmgxbJIsQlyogVeGnrNaaMVzIg==", "dev": true, - "license": "MIT", "dependencies": { "@octokit/openapi-types": "^18.0.0" } }, "node_modules/@octokit/request": { "version": "6.2.8", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.8.tgz", + "integrity": "sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==", "dev": true, - "license": "MIT", "dependencies": { "@octokit/endpoint": "^7.0.0", "@octokit/request-error": "^3.0.0", @@ -4567,8 +4989,9 @@ }, "node_modules/@octokit/request-error": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.3.tgz", + "integrity": "sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==", "dev": true, - "license": "MIT", "dependencies": { "@octokit/types": "^9.0.0", "deprecation": "^2.0.0", @@ -4580,8 +5003,9 @@ }, "node_modules/@octokit/rest": { "version": "19.0.13", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-19.0.13.tgz", + "integrity": "sha512-/EzVox5V9gYGdbAI+ovYj3nXQT1TtTHRT+0eZPcuC05UFSWO3mdO9UY1C0i2eLF9Un1ONJkAk+IEtYGAC+TahA==", "dev": true, - "license": "MIT", "dependencies": { "@octokit/core": "^4.2.1", "@octokit/plugin-paginate-rest": "^6.1.2", @@ -4594,20 +5018,23 @@ }, "node_modules/@octokit/tsconfig": { "version": "1.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@octokit/tsconfig/-/tsconfig-1.0.2.tgz", + "integrity": "sha512-I0vDR0rdtP8p2lGMzvsJzbhdOWy405HcGovrspJ8RRibHnyRgggUSNO5AIox5LmqiwmatHKYsvj6VGFHkqS7lA==", + "dev": true }, "node_modules/@octokit/types": { "version": "9.3.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", + "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", "dev": true, - "license": "MIT", "dependencies": { "@octokit/openapi-types": "^18.0.0" } }, "node_modules/@opensearch-project/opensearch": { "version": "1.2.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@opensearch-project/opensearch/-/opensearch-1.2.0.tgz", + "integrity": "sha512-bX0aUz5e7rlY1lKz1rFrqnNbl/l1CHvvysYB2Jn+C3WNs7nL6FnQjuxLhGwyRdW9W1bFokDoOVgPMIOi/Nn9/g==", "dependencies": { "aws4": "^1.11.0", "debug": "^4.3.1", @@ -4621,20 +5048,23 @@ }, "node_modules/@opensearch-project/opensearch/node_modules/ms": { "version": "2.1.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/@opentelemetry/api": { - "version": "1.7.0", - "license": "Apache-2.0", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", "engines": { "node": ">=8.0.0" } }, "node_modules/@parcel/watcher": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.4.tgz", + "integrity": "sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg==", "dev": true, "hasInstallScript": true, - "license": "MIT", "dependencies": { "node-addon-api": "^3.2.1", "node-gyp-build": "^4.3.0" @@ -4647,30 +5077,39 @@ "url": "https://opencollective.com/parcel" } }, - "node_modules/@parcel/watcher/node_modules/node-addon-api": { - "version": "3.2.1", - "dev": true, - "license": "MIT" + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true, + "engines": { + "node": ">=14" + } }, "node_modules/@protobufjs/aspromise": { "version": "1.1.2", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" }, "node_modules/@protobufjs/base64": { "version": "1.1.2", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" }, "node_modules/@protobufjs/codegen": { "version": "2.0.4", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" }, "node_modules/@protobufjs/eventemitter": { "version": "1.1.0", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" }, "node_modules/@protobufjs/fetch": { "version": "1.1.0", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", "dependencies": { "@protobufjs/aspromise": "^1.1.1", "@protobufjs/inquire": "^1.1.0" @@ -4678,28 +5117,35 @@ }, "node_modules/@protobufjs/float": { "version": "1.0.2", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" }, "node_modules/@protobufjs/inquire": { "version": "1.1.0", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" }, "node_modules/@protobufjs/path": { "version": "1.1.2", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" }, "node_modules/@protobufjs/pool": { "version": "1.1.0", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" }, "node_modules/@protobufjs/utf8": { "version": "1.1.0", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" }, "node_modules/@sap/hana-client": { - "version": "2.18.27", + "version": "2.21.26", + "resolved": "https://registry.npmjs.org/@sap/hana-client/-/hana-client-2.21.26.tgz", + "integrity": "sha512-GnIT/yIODzOuaJyAlZFdL2eLsSGclxajZ3yMXNwPjxu3ub06tuQ5VXMZBeeivOJ45zkDHMUJJv4sx/fIO7BOjQ==", "hasInstallScript": true, - "license": "SEE LICENSE IN developer-license-3_1.txt", + "hasShrinkwrap": true, "dependencies": { "debug": "3.1.0" }, @@ -4709,18 +5155,19 @@ }, "node_modules/@sap/hana-client/node_modules/debug": { "version": "3.1.0", - "license": "MIT", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "dependencies": { "ms": "2.0.0" } }, "node_modules/@sap/hana-client/node_modules/ms": { "version": "2.0.0", - "license": "MIT" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/@sendgrid/client": { "version": "7.7.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@sendgrid/client/-/client-7.7.0.tgz", + "integrity": "sha512-SxH+y8jeAQSnDavrTD0uGDXYIIkFylCo+eDofVmZLQ0f862nnqbC3Vd1ej6b7Le7lboyzQF6F7Fodv02rYspuA==", "dependencies": { "@sendgrid/helpers": "^7.7.0", "axios": "^0.26.0" @@ -4729,9 +5176,18 @@ "node": "6.* || 8.* || >=10.*" } }, + "node_modules/@sendgrid/client/node_modules/axios": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", + "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", + "dependencies": { + "follow-redirects": "^1.14.8" + } + }, "node_modules/@sendgrid/helpers": { "version": "7.7.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@sendgrid/helpers/-/helpers-7.7.0.tgz", + "integrity": "sha512-3AsAxfN3GDBcXoZ/y1mzAAbKzTtUZ5+ZrHOmWQ279AuaFXUNCh9bPnRpN504bgveTqoW+11IzPg3I0WVgDINpw==", "dependencies": { "deepmerge": "^4.2.2" }, @@ -4741,7 +5197,8 @@ }, "node_modules/@sendgrid/mail": { "version": "7.7.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@sendgrid/mail/-/mail-7.7.0.tgz", + "integrity": "sha512-5+nApPE9wINBvHSUxwOxkkQqM/IAAaBYoP9hw7WwgDNQPxraruVqHizeTitVtKGiqWCKm2mnjh4XGN3fvFLqaw==", "dependencies": { "@sendgrid/client": "^7.7.0", "@sendgrid/helpers": "^7.7.0" @@ -4752,7 +5209,8 @@ }, "node_modules/@sindresorhus/is": { "version": "4.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", "engines": { "node": ">=10" }, @@ -4762,789 +5220,675 @@ }, "node_modules/@sinonjs/commons": { "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", + "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "type-detect": "4.0.8" } }, "node_modules/@sinonjs/fake-timers": { "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^1.7.0" } }, "node_modules/@smithy/abort-controller": { - "version": "2.0.14", - "license": "Apache-2.0", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.1.0.tgz", + "integrity": "sha512-XOm4LkuC0PsK1sf2bBJLIlskn5ghmVxiEBVlo/jg0R8hxASBKYYgOoJEhKWgOr4vWGkN+5rC+oyBAqHYtxjnwQ==", "dependencies": { - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/abort-controller/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/chunked-blob-reader": { - "version": "2.0.0", - "license": "Apache-2.0", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-3.0.0.tgz", + "integrity": "sha512-sbnURCwjF0gSToGlsBiAmd1lRCmSn72nu9axfJu5lIx6RUEgHu6GwTMbqCdhQSi0Pumcm5vFxsi9XWXb2mTaoA==", "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" } }, "node_modules/@smithy/chunked-blob-reader-native": { - "version": "2.0.1", - "license": "Apache-2.0", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-3.0.0.tgz", + "integrity": "sha512-VDkpCYW+peSuM4zJip5WDfqvg2Mo/e8yxOv3VF1m11y7B8KKMKVFtmZWDe36Fvk8rGuWrPZHHXZ7rR7uM5yWyg==", "dependencies": { - "@smithy/util-base64": "^2.0.1", - "tslib": "^2.5.0" + "@smithy/util-base64": "^3.0.0", + "tslib": "^2.6.2" } }, - "node_modules/@smithy/chunked-blob-reader-native/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "node_modules/@smithy/chunked-blob-reader/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/config-resolver": { - "version": "2.0.19", - "license": "Apache-2.0", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.3.tgz", + "integrity": "sha512-4wHqCMkdfVDP4qmr4fVPYOFOH+vKhOv3X4e6KEU9wIC8xXUQ24tnF4CW+sddGDX1zU86GGyQ7A+rg2xmUD6jpQ==", "dependencies": { - "@smithy/node-config-provider": "^2.1.6", - "@smithy/types": "^2.6.0", - "@smithy/util-config-provider": "^2.0.0", - "@smithy/util-middleware": "^2.0.7", - "tslib": "^2.5.0" + "@smithy/node-config-provider": "^3.1.2", + "@smithy/types": "^3.2.0", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-middleware": "^3.0.2", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/config-resolver/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" + "node_modules/@smithy/core": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.2.3.tgz", + "integrity": "sha512-SpyLOL2vgE6sUYM6nQfu82OirCPkCDKctyG3aMgjMlDPTJpUlmlNH0ttu9ZWwzEjrzzr8uABmPjJTRI7gk1HFQ==", + "dependencies": { + "@smithy/middleware-endpoint": "^3.0.3", + "@smithy/middleware-retry": "^3.0.6", + "@smithy/middleware-serde": "^3.0.2", + "@smithy/protocol-http": "^4.0.2", + "@smithy/smithy-client": "^3.1.4", + "@smithy/types": "^3.2.0", + "@smithy/util-middleware": "^3.0.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } }, "node_modules/@smithy/credential-provider-imds": { - "version": "2.1.2", - "license": "Apache-2.0", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.1.2.tgz", + "integrity": "sha512-gqVmUaNoeqyrOAjgZg+rTmFLsphh/vS59LCMdFfVpthVS0jbfBzvBmEPktBd+y9ME4DYMGHFAMSYJDK8q0noOQ==", "dependencies": { - "@smithy/node-config-provider": "^2.1.6", - "@smithy/property-provider": "^2.0.15", - "@smithy/types": "^2.6.0", - "@smithy/url-parser": "^2.0.14", - "tslib": "^2.5.0" + "@smithy/node-config-provider": "^3.1.2", + "@smithy/property-provider": "^3.1.2", + "@smithy/types": "^3.2.0", + "@smithy/url-parser": "^3.0.2", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/credential-provider-imds/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/eventstream-codec": { - "version": "2.0.14", - "license": "Apache-2.0", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-3.1.1.tgz", + "integrity": "sha512-s29NxV/ng1KXn6wPQ4qzJuQDjEtxLdS0+g5PQFirIeIZrp66FXVJ5IpZRowbt/42zB5dY8TqJ0G0L9KkgtsEZg==", "dependencies": { - "@aws-crypto/crc32": "3.0.0", - "@smithy/types": "^2.6.0", - "@smithy/util-hex-encoding": "^2.0.0", - "tslib": "^2.5.0" + "@aws-crypto/crc32": "5.2.0", + "@smithy/types": "^3.2.0", + "@smithy/util-hex-encoding": "^3.0.0", + "tslib": "^2.6.2" } }, - "node_modules/@smithy/eventstream-codec/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/eventstream-serde-browser": { - "version": "2.0.14", - "license": "Apache-2.0", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.3.tgz", + "integrity": "sha512-ZXKmNAHl6SWKYuVmtoEc/hBQ7Nym/rbAx2SrqoJHn0i9QopIP7fG1AWmoFIeS5R3/VL6AwUIZMR0g8qnjjVRRA==", "dependencies": { - "@smithy/eventstream-serde-universal": "^2.0.14", - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "@smithy/eventstream-serde-universal": "^3.0.3", + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/eventstream-serde-browser/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/eventstream-serde-config-resolver": { - "version": "2.0.14", - "license": "Apache-2.0", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.0.2.tgz", + "integrity": "sha512-QbE3asvvBUZr7PwbOaxkSfKDjTAmWZkqh2G7pkYlD4jRkT1Y9nufeyu0OBPlLoF4+gl3YMpSVO7TESe8bVkD+g==", "dependencies": { - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/eventstream-serde-config-resolver/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/eventstream-serde-node": { - "version": "2.0.14", - "license": "Apache-2.0", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.3.tgz", + "integrity": "sha512-v61Ftn7x/ubWFqH7GHFAL/RaU7QZImTbuV95DYugYYItzpO7KaHYEuO8EskCaBpZEfzOxhUGKm4teS9YUSt69Q==", "dependencies": { - "@smithy/eventstream-serde-universal": "^2.0.14", - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "@smithy/eventstream-serde-universal": "^3.0.3", + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/eventstream-serde-node/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/eventstream-serde-universal": { - "version": "2.0.14", - "license": "Apache-2.0", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.3.tgz", + "integrity": "sha512-YXYt3Cjhu9tRrahbTec2uOjwOSeCNfQurcWPGNEUspBhqHoA3KrDrVj+jGbCLWvwkwhzqDnnaeHAxm+IxAjOAQ==", "dependencies": { - "@smithy/eventstream-codec": "^2.0.14", - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "@smithy/eventstream-codec": "^3.1.1", + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/eventstream-serde-universal/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/fetch-http-handler": { - "version": "2.2.7", - "license": "Apache-2.0", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.1.0.tgz", + "integrity": "sha512-s7oQjEOUH9TYjctpITtWF4qxOdg7pBrP9eigEQ8SBsxF3dRFV0S28pGMllC83DUr7ECmErhO/BUwnULfoNhKgQ==", "dependencies": { - "@smithy/protocol-http": "^3.0.10", - "@smithy/querystring-builder": "^2.0.14", - "@smithy/types": "^2.6.0", - "@smithy/util-base64": "^2.0.1", - "tslib": "^2.5.0" + "@smithy/protocol-http": "^4.0.2", + "@smithy/querystring-builder": "^3.0.2", + "@smithy/types": "^3.2.0", + "@smithy/util-base64": "^3.0.0", + "tslib": "^2.6.2" } }, - "node_modules/@smithy/fetch-http-handler/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/hash-blob-browser": { - "version": "2.0.15", - "license": "Apache-2.0", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-3.1.1.tgz", + "integrity": "sha512-8RwdPG7arvL5pfMAFsH6jfBVcC7MDR1LYHjKevZPHREkVtORIQkRfm2K8px7giJt7x0zzQJnWamrsDM4ig8nTQ==", "dependencies": { - "@smithy/chunked-blob-reader": "^2.0.0", - "@smithy/chunked-blob-reader-native": "^2.0.1", - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "@smithy/chunked-blob-reader": "^3.0.0", + "@smithy/chunked-blob-reader-native": "^3.0.0", + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" } }, - "node_modules/@smithy/hash-blob-browser/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/hash-node": { - "version": "2.0.16", - "license": "Apache-2.0", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.2.tgz", + "integrity": "sha512-43uGA6o6QJQdXwAogybdTDHDd3SCdKyoiHIHb8PpdE2rKmVicjG9b1UgVwdgO8QPytmVqHFaUw27M3LZKwu8Yg==", "dependencies": { - "@smithy/types": "^2.6.0", - "@smithy/util-buffer-from": "^2.0.0", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" + "@smithy/types": "^3.2.0", + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/hash-node/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/hash-stream-node": { - "version": "2.0.16", - "license": "Apache-2.0", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-3.1.1.tgz", + "integrity": "sha512-+uvJHPrFNE9crkh3INVS9FmDcx1DoywDgIzlRWlPy7gqoD8jG14os9ATIFY7wN/ARPz1EWlkCHUap70oXxMmjA==", "dependencies": { - "@smithy/types": "^2.6.0", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" + "@smithy/types": "^3.2.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/hash-stream-node/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/invalid-dependency": { - "version": "2.0.14", - "license": "Apache-2.0", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.2.tgz", + "integrity": "sha512-+BAY3fMhomtq470tswXyrdVBSUhiLuhBVT+rOmpbz5e04YX+s1dX4NxTLzZGwBjCpeWZNtTxP8zbIvvFk81gUg==", "dependencies": { - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" } }, - "node_modules/@smithy/invalid-dependency/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/is-array-buffer": { - "version": "2.0.0", - "license": "Apache-2.0", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", + "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/is-array-buffer/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/md5-js": { - "version": "2.0.16", - "license": "Apache-2.0", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-3.0.2.tgz", + "integrity": "sha512-WlSK9br7fkVucTkCXporwuOttCR3cJ1GV70J8ENYXGNc0nUTPzMdWCyHztgnbbKoekVMjGZOEu+8I52nOdzqwQ==", "dependencies": { - "@smithy/types": "^2.6.0", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" + "@smithy/types": "^3.2.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" } }, - "node_modules/@smithy/md5-js/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/middleware-content-length": { - "version": "2.0.16", - "license": "Apache-2.0", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.2.tgz", + "integrity": "sha512-/Havz3PkYIEmwpqkyRTR21yJsWnFbD1ec4H1pUL+TkDnE7RCQkAVUQepLL/UeCaZeCBXvfdoKbOjSbV01xIinQ==", "dependencies": { - "@smithy/protocol-http": "^3.0.10", - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "@smithy/protocol-http": "^4.0.2", + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/middleware-content-length/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/middleware-endpoint": { - "version": "2.2.1", - "license": "Apache-2.0", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.0.3.tgz", + "integrity": "sha512-ARAXHodhj4tttKa9y75zvENdSoHq6VGsSi7XS3+yLutrnxttJs6N10UMInCC1yi3/bopT8xug3iOP/y9R6sKJQ==", "dependencies": { - "@smithy/middleware-serde": "^2.0.14", - "@smithy/node-config-provider": "^2.1.6", - "@smithy/shared-ini-file-loader": "^2.2.5", - "@smithy/types": "^2.6.0", - "@smithy/url-parser": "^2.0.14", - "@smithy/util-middleware": "^2.0.7", - "tslib": "^2.5.0" + "@smithy/middleware-serde": "^3.0.2", + "@smithy/node-config-provider": "^3.1.2", + "@smithy/shared-ini-file-loader": "^3.1.2", + "@smithy/types": "^3.2.0", + "@smithy/url-parser": "^3.0.2", + "@smithy/util-middleware": "^3.0.2", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/middleware-endpoint/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/middleware-retry": { - "version": "2.0.21", - "license": "Apache-2.0", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.6.tgz", + "integrity": "sha512-ICsFKp8eAyIMmxN5UT3IU37S6886L879TKtgxPsn/VD/laYNwqTLmJaCAn5//+2fRIrV0dnHp6LFlMwdXlWoUQ==", "dependencies": { - "@smithy/node-config-provider": "^2.1.6", - "@smithy/protocol-http": "^3.0.10", - "@smithy/service-error-classification": "^2.0.7", - "@smithy/types": "^2.6.0", - "@smithy/util-middleware": "^2.0.7", - "@smithy/util-retry": "^2.0.7", - "tslib": "^2.5.0", - "uuid": "^8.3.2" + "@smithy/node-config-provider": "^3.1.2", + "@smithy/protocol-http": "^4.0.2", + "@smithy/service-error-classification": "^3.0.2", + "@smithy/smithy-client": "^3.1.4", + "@smithy/types": "^3.2.0", + "@smithy/util-middleware": "^3.0.2", + "@smithy/util-retry": "^3.0.2", + "tslib": "^2.6.2", + "uuid": "^9.0.1" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/middleware-retry/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/middleware-retry/node_modules/uuid": { - "version": "8.3.2", - "license": "MIT", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], "bin": { "uuid": "dist/bin/uuid" } }, "node_modules/@smithy/middleware-serde": { - "version": "2.0.14", - "license": "Apache-2.0", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.2.tgz", + "integrity": "sha512-oT2abV5zLhBucJe1LIIFEcRgIBDbZpziuMPswTMbBQNcaEUycLFvX63zsFmqfwG+/ZQKsNx+BSE8W51CMuK7Yw==", "dependencies": { - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/middleware-serde/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/middleware-stack": { - "version": "2.0.8", - "license": "Apache-2.0", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.2.tgz", + "integrity": "sha512-6fRcxomlNKBPIy/YjcnC7YHpMAjRvGUYlYVJAfELqZjkW0vQegNcImjY7T1HgYA6u3pAcCxKVBLYnkTw8z/l0A==", "dependencies": { - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/middleware-stack/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/node-config-provider": { - "version": "2.1.6", - "license": "Apache-2.0", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.2.tgz", + "integrity": "sha512-388fEAa7+6ORj/BDC70peg3fyFBTTXJyXfXJ0Bwd6FYsRltePr2oGzIcm5AuC1WUSLtZ/dF+hYOnfTMs04rLvA==", "dependencies": { - "@smithy/property-provider": "^2.0.15", - "@smithy/shared-ini-file-loader": "^2.2.5", - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "@smithy/property-provider": "^3.1.2", + "@smithy/shared-ini-file-loader": "^3.1.2", + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/node-config-provider/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/node-http-handler": { - "version": "2.1.10", - "license": "Apache-2.0", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.1.0.tgz", + "integrity": "sha512-pOpgB6B+VLXLwAyyvRz+ZAVXABlbAsJ2xvn3WZvrppAPImxwQOPFbeSUzWYMhpC8Tr7yQ3R8fG990QDhskkf1Q==", "dependencies": { - "@smithy/abort-controller": "^2.0.14", - "@smithy/protocol-http": "^3.0.10", - "@smithy/querystring-builder": "^2.0.14", - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "@smithy/abort-controller": "^3.1.0", + "@smithy/protocol-http": "^4.0.2", + "@smithy/querystring-builder": "^3.0.2", + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/node-http-handler/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/property-provider": { - "version": "2.0.15", - "license": "Apache-2.0", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.2.tgz", + "integrity": "sha512-Hzp32BpeFFexBpO1z+ts8okbq/VLzJBadxanJAo/Wf2CmvXMBp6Q/TLWr7Js6IbMEcr0pDZ02V3u1XZkuQUJaA==", "dependencies": { - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/property-provider/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/protocol-http": { - "version": "3.0.10", - "license": "Apache-2.0", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.0.2.tgz", + "integrity": "sha512-X/90xNWIOqSR2tLUyWxVIBdatpm35DrL44rI/xoeBWUuanE0iyCXJpTcnqlOpnEzgcu0xCKE06+g70TTu2j7RQ==", "dependencies": { - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/protocol-http/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/querystring-builder": { - "version": "2.0.14", - "license": "Apache-2.0", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.2.tgz", + "integrity": "sha512-xhv1+HacDYsOLdNt7zW+8Fe779KYAzmWvzs9bC5NlKM8QGYCwwuFwDBynhlU4D5twgi2pZ14Lm4h6RiAazCtmA==", "dependencies": { - "@smithy/types": "^2.6.0", - "@smithy/util-uri-escape": "^2.0.0", - "tslib": "^2.5.0" + "@smithy/types": "^3.2.0", + "@smithy/util-uri-escape": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/querystring-builder/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/querystring-parser": { - "version": "2.0.14", - "license": "Apache-2.0", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.2.tgz", + "integrity": "sha512-C5hyRKgrZGPNh5QqIWzXnW+LXVrPmVQO0iJKjHeb5v3C61ZkP9QhrKmbfchcTyg/VnaE0tMNf/nmLpQlWuiqpg==", "dependencies": { - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/querystring-parser/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/service-error-classification": { - "version": "2.0.7", - "license": "Apache-2.0", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-3.0.2.tgz", + "integrity": "sha512-cu0WV2XRttItsuXlcM0kq5MKdphbMMmSd2CXF122dJ75NrFE0o7rruXFGfxAp3BKzgF/DMxX+PllIA/cj4FHMw==", "dependencies": { - "@smithy/types": "^2.6.0" + "@smithy/types": "^3.2.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/shared-ini-file-loader": { - "version": "2.2.5", - "license": "Apache-2.0", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.2.tgz", + "integrity": "sha512-tgnXrXbLMO8vo6VeuqabMw/eTzQHlLmZx0TC0TjtjJghnD0Xl4pEnJtBjTJr6XF5fHMNrt5BcczDXHJT9yNQnA==", "dependencies": { - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/shared-ini-file-loader/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/signature-v4": { - "version": "2.0.16", - "license": "Apache-2.0", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-3.1.1.tgz", + "integrity": "sha512-2/vlG86Sr489XX8TA/F+VDA+P04ESef04pSz0wRtlQBExcSPjqO08rvrkcas2zLnJ51i+7ukOURCkgqixBYjSQ==", "dependencies": { - "@smithy/eventstream-codec": "^2.0.14", - "@smithy/is-array-buffer": "^2.0.0", - "@smithy/types": "^2.6.0", - "@smithy/util-hex-encoding": "^2.0.0", - "@smithy/util-middleware": "^2.0.7", - "@smithy/util-uri-escape": "^2.0.0", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" + "@smithy/is-array-buffer": "^3.0.0", + "@smithy/types": "^3.2.0", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-middleware": "^3.0.2", + "@smithy/util-uri-escape": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/signature-v4/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/smithy-client": { - "version": "2.1.16", - "license": "Apache-2.0", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.1.4.tgz", + "integrity": "sha512-y6xJROGrIoitjpwXLY7P9luDHvuT9jWpAluliuSFdBymFxcl6iyQjo9U/JhYfRHFNTruqsvKOrOESVuPGEcRmQ==", "dependencies": { - "@smithy/middleware-stack": "^2.0.8", - "@smithy/types": "^2.6.0", - "@smithy/util-stream": "^2.0.21", - "tslib": "^2.5.0" + "@smithy/middleware-endpoint": "^3.0.3", + "@smithy/middleware-stack": "^3.0.2", + "@smithy/protocol-http": "^4.0.2", + "@smithy/types": "^3.2.0", + "@smithy/util-stream": "^3.0.4", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/smithy-client/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/types": { - "version": "2.6.0", - "license": "Apache-2.0", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.2.0.tgz", + "integrity": "sha512-cKyeKAPazZRVqm7QPvcPD2jEIt2wqDPAL1KJKb0f/5I7uhollvsWZuZKLclmyP6a+Jwmr3OV3t+X0pZUUHS9BA==", "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/types/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/url-parser": { - "version": "2.0.14", - "license": "Apache-2.0", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.2.tgz", + "integrity": "sha512-pRiPHrgibeAr4avtXDoBHmTLtthwA4l8jKYRfZjNgp+bBPyxDMPRg2TMJaYxqbKemvrOkHu9MIBTv2RkdNfD6w==", "dependencies": { - "@smithy/querystring-parser": "^2.0.14", - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "@smithy/querystring-parser": "^3.0.2", + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" } }, - "node_modules/@smithy/url-parser/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/util-base64": { - "version": "2.0.1", - "license": "Apache-2.0", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-3.0.0.tgz", + "integrity": "sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==", "dependencies": { - "@smithy/util-buffer-from": "^2.0.0", - "tslib": "^2.5.0" + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/util-base64/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/util-body-length-browser": { - "version": "2.0.0", - "license": "Apache-2.0", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz", + "integrity": "sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==", "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" } }, - "node_modules/@smithy/util-body-length-browser/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/util-body-length-node": { - "version": "2.1.0", - "license": "Apache-2.0", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-3.0.0.tgz", + "integrity": "sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==", "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/util-body-length-node/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/util-buffer-from": { - "version": "2.0.0", - "license": "Apache-2.0", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", + "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", "dependencies": { - "@smithy/is-array-buffer": "^2.0.0", - "tslib": "^2.5.0" + "@smithy/is-array-buffer": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/util-buffer-from/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/util-config-provider": { - "version": "2.0.0", - "license": "Apache-2.0", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-3.0.0.tgz", + "integrity": "sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==", "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/util-config-provider/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/util-defaults-mode-browser": { - "version": "2.0.20", - "license": "Apache-2.0", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.6.tgz", + "integrity": "sha512-tAgoc++Eq+KL7g55+k108pn7nAob3GLWNEMbXhZIQyBcBNaE/o3+r4AEbae0A8bWvLRvArVsjeiuhMykGa04/A==", "dependencies": { - "@smithy/property-provider": "^2.0.15", - "@smithy/smithy-client": "^2.1.16", - "@smithy/types": "^2.6.0", + "@smithy/property-provider": "^3.1.2", + "@smithy/smithy-client": "^3.1.4", + "@smithy/types": "^3.2.0", "bowser": "^2.11.0", - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { "node": ">= 10.0.0" } }, - "node_modules/@smithy/util-defaults-mode-browser/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/util-defaults-mode-node": { - "version": "2.0.26", - "license": "Apache-2.0", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.6.tgz", + "integrity": "sha512-UNerul6/E8aiCyFTBHk+RSIZCo7m96d/N5K3FeO/wFeZP6oy5HAicLzxqa85Wjv7MkXSxSySX29L/LwTV/QMag==", "dependencies": { - "@smithy/config-resolver": "^2.0.19", - "@smithy/credential-provider-imds": "^2.1.2", - "@smithy/node-config-provider": "^2.1.6", - "@smithy/property-provider": "^2.0.15", - "@smithy/smithy-client": "^2.1.16", - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "@smithy/config-resolver": "^3.0.3", + "@smithy/credential-provider-imds": "^3.1.2", + "@smithy/node-config-provider": "^3.1.2", + "@smithy/property-provider": "^3.1.2", + "@smithy/smithy-client": "^3.1.4", + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" }, "engines": { "node": ">= 10.0.0" } }, - "node_modules/@smithy/util-defaults-mode-node/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/util-endpoints": { - "version": "1.0.5", - "license": "Apache-2.0", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.0.3.tgz", + "integrity": "sha512-Dyi+pfLglDHSGsKSYunuUUSFM5V0tz7UDgv1Ex97yg+Xkn0Eb0rH0rcvl1n0MaJ11fac3HKDOH0DkALyQYCQag==", "dependencies": { - "@smithy/node-config-provider": "^2.1.6", - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "@smithy/node-config-provider": "^3.1.2", + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/util-endpoints/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/util-hex-encoding": { - "version": "2.0.0", - "license": "Apache-2.0", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-3.0.0.tgz", + "integrity": "sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==", "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/util-hex-encoding/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/util-middleware": { - "version": "2.0.7", - "license": "Apache-2.0", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.2.tgz", + "integrity": "sha512-7WW5SD0XVrpfqljBYzS5rLR+EiDzl7wCVJZ9Lo6ChNFV4VYDk37Z1QI5w/LnYtU/QKnSawYoHRd7VjSyC8QRQQ==", "dependencies": { - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/util-middleware/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/util-retry": { - "version": "2.0.7", - "license": "Apache-2.0", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.2.tgz", + "integrity": "sha512-HUVOb1k8p/IH6WFUjsLa+L9H1Zi/FAAB2CDOpWuffI1b2Txi6sknau8kNfC46Xrt39P1j2KDzCE1UlLa2eW5+A==", "dependencies": { - "@smithy/service-error-classification": "^2.0.7", - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "@smithy/service-error-classification": "^3.0.2", + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/util-retry/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/util-stream": { - "version": "2.0.21", - "license": "Apache-2.0", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.0.4.tgz", + "integrity": "sha512-CcMioiaOOsEVdb09pS7ux1ij7QcQ2jE/cE1+iin1DXMeRgAEQN/47m7Xztu7KFQuQsj0A5YwB2UN45q97CqKCg==", "dependencies": { - "@smithy/fetch-http-handler": "^2.2.7", - "@smithy/node-http-handler": "^2.1.10", - "@smithy/types": "^2.6.0", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-buffer-from": "^2.0.0", - "@smithy/util-hex-encoding": "^2.0.0", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" + "@smithy/fetch-http-handler": "^3.1.0", + "@smithy/node-http-handler": "^3.1.0", + "@smithy/types": "^3.2.0", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/util-stream/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/util-uri-escape": { - "version": "2.0.0", - "license": "Apache-2.0", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz", + "integrity": "sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==", "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/util-uri-escape/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/util-utf8": { - "version": "2.0.2", - "license": "Apache-2.0", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", + "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", "dependencies": { - "@smithy/util-buffer-from": "^2.0.0", - "tslib": "^2.5.0" + "@smithy/util-buffer-from": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/util-utf8/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@smithy/util-waiter": { - "version": "2.0.14", - "license": "Apache-2.0", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-3.1.1.tgz", + "integrity": "sha512-xT+Bbpe5sSrC7cCWSElOreDdWzqovR1V+7xrp+fmwGAA+TPYBb78iasaXjO1pa+65sY6JjW5GtGeIoJwCK9B1g==", "dependencies": { - "@smithy/abort-controller": "^2.0.14", - "@smithy/types": "^2.6.0", - "tslib": "^2.5.0" + "@smithy/abort-controller": "^3.1.0", + "@smithy/types": "^3.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/util-waiter/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, "node_modules/@szmarczak/http-timer": { "version": "4.0.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", "dependencies": { "defer-to-connect": "^2.0.0" }, @@ -5554,7 +5898,8 @@ }, "node_modules/@techteamer/ocsp": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@techteamer/ocsp/-/ocsp-1.0.1.tgz", + "integrity": "sha512-q4pW5wAC6Pc3JI8UePwE37CkLQ5gDGZMgjSX4MEEm4D4Di59auDQ8UNIDzC4gRnPNmmcwjpPxozq8p5pjiOmOw==", "dependencies": { "asn1.js": "^5.4.1", "asn1.js-rfc2560": "^5.0.1", @@ -5745,8 +6090,9 @@ }, "node_modules/@tootallnate/once": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 6" } @@ -5758,8 +6104,9 @@ }, "node_modules/@types/babel__core": { "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", @@ -5769,33 +6116,37 @@ } }, "node_modules/@types/babel__generator": { - "version": "7.6.7", + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/types": "^7.0.0" } }, "node_modules/@types/babel__template": { "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "dev": true, - "license": "MIT", "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" } }, "node_modules/@types/babel__traverse": { - "version": "7.20.4", + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/types": "^7.20.7" } }, "node_modules/@types/cacheable-request": { "version": "6.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", "dependencies": { "@types/http-cache-semantics": "*", "@types/keyv": "^3.1.4", @@ -5805,7 +6156,8 @@ }, "node_modules/@types/caseless": { "version": "0.12.5", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", + "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==" }, "node_modules/@types/command-line-args": { "version": "5.2.0", @@ -5818,46 +6170,53 @@ "integrity": "sha512-n7RlEEJ+4x4TS7ZQddTmNSxP+zziEG0TNsMfiRIxcIVXt71ENJ9ojeXmGO3wPoTdn7pJcU2xc3CJYMktNT6DPg==" }, "node_modules/@types/geojson": { - "version": "7946.0.13", - "license": "MIT" + "version": "7946.0.14", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz", + "integrity": "sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==" }, "node_modules/@types/graceful-fs": { "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/http-cache-semantics": { "version": "4.0.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==" }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true }, "node_modules/@types/istanbul-lib-report": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", "dev": true, - "license": "MIT", "dependencies": { "@types/istanbul-lib-coverage": "*" } }, "node_modules/@types/istanbul-reports": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/istanbul-lib-report": "*" } }, "node_modules/@types/jest": { "version": "27.5.2", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.2.tgz", + "integrity": "sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==", "dev": true, - "license": "MIT", "dependencies": { "jest-matcher-utils": "^27.0.0", "pretty-format": "^27.0.0" @@ -5865,40 +6224,47 @@ }, "node_modules/@types/json-schema": { "version": "7.0.15", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true }, "node_modules/@types/keyv": { "version": "3.1.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", "dependencies": { "@types/node": "*" } }, "node_modules/@types/long": { "version": "4.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" }, "node_modules/@types/minimatch": { "version": "3.0.5", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true }, "node_modules/@types/minimist": { "version": "1.2.5", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", + "dev": true }, "node_modules/@types/node": { - "version": "20.10.2", - "license": "MIT", + "version": "20.14.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.8.tgz", + "integrity": "sha512-DO+2/jZinXfROG7j7WKFn/3C6nFwxy2lLpgLjEXJz+0XKphZlTLJ14mo8Vfg8X5BWN6XjyESXq+LcYdT7tR3bA==", "dependencies": { "undici-types": "~5.26.4" } }, "node_modules/@types/node-fetch": { - "version": "2.6.9", - "license": "MIT", + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.11.tgz", + "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==", "dependencies": { "@types/node": "*", "form-data": "^4.0.0" @@ -5913,22 +6279,25 @@ } }, "node_modules/@types/nodemailer": { - "version": "6.4.14", + "version": "6.4.15", + "resolved": "https://registry.npmjs.org/@types/nodemailer/-/nodemailer-6.4.15.tgz", + "integrity": "sha512-0EBJxawVNjPkng1zm2vopRctuWVCxk34JcIlRuXSf54habUWdz1FB7wHDqOqvDa8Mtpt0Q3LTXQkAs2LNyK5jQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/normalize-package-data": { "version": "2.4.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true }, "node_modules/@types/oracledb": { "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@types/oracledb/-/oracledb-5.3.1.tgz", + "integrity": "sha512-FXxNytI8CQ16pwAlUwRXwQeuLS/PSDuUcQQddUSbWeuFnpzMEgjMz5+7m531Q/y1RIUzZ+HU7mIvidB4oZ0bEA==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*" } @@ -5940,17 +6309,20 @@ }, "node_modules/@types/parse-json": { "version": "4.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "dev": true }, "node_modules/@types/prettier": { "version": "2.7.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", + "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", + "dev": true }, "node_modules/@types/request": { "version": "2.48.12", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.12.tgz", + "integrity": "sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==", "dependencies": { "@types/caseless": "*", "@types/node": "*", @@ -5960,7 +6332,8 @@ }, "node_modules/@types/request/node_modules/form-data": { "version": "2.5.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -5972,14 +6345,16 @@ }, "node_modules/@types/responselike": { "version": "1.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", + "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", "dependencies": { "@types/node": "*" } }, "node_modules/@types/snowflake-sdk": { - "version": "1.6.18", - "license": "MIT", + "version": "1.6.24", + "resolved": "https://registry.npmjs.org/@types/snowflake-sdk/-/snowflake-sdk-1.6.24.tgz", + "integrity": "sha512-CgRp971LQJr970YSySCeIoNfX/29s9ZUnwhVjl8uL62kC7UoTNdNRwwyGCQ7Ca/fECRu8nK47pZpw8xmVWDn9Q==", "dependencies": { "@types/node": "*", "generic-pool": "^3.9.0" @@ -5987,38 +6362,37 @@ }, "node_modules/@types/stack-utils": { "version": "2.0.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true }, "node_modules/@types/stoppable": { "version": "1.1.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/stoppable/-/stoppable-1.1.3.tgz", + "integrity": "sha512-7wGKIBJGE4ZxFjk9NkjAxZMLlIXroETqP1FJCdoSvKmEznwmBxQFmTB1dsCkAvVcNemuSZM5qkkd9HE/NL2JTw==", "dependencies": { "@types/node": "*" } }, "node_modules/@types/tough-cookie": { "version": "4.0.5", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==" }, "node_modules/@types/triple-beam": { "version": "1.3.5", - "license": "MIT" - }, - "node_modules/@types/tunnel": { - "version": "0.0.3", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } + "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz", + "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==" }, "node_modules/@types/webidl-conversions": { "version": "7.0.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", + "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==" }, "node_modules/@types/whatwg-url": { "version": "8.2.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", + "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", "dependencies": { "@types/node": "*", "@types/webidl-conversions": "*" @@ -6026,21 +6400,24 @@ }, "node_modules/@types/yargs": { "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", "dev": true, - "license": "MIT", "dependencies": { "@types/yargs-parser": "*" } }, "node_modules/@types/yargs-parser": { "version": "21.0.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", + "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", "dev": true, - "license": "MIT", "dependencies": { "@typescript-eslint/experimental-utils": "4.33.0", "@typescript-eslint/scope-manager": "4.33.0", @@ -6070,8 +6447,9 @@ }, "node_modules/@typescript-eslint/experimental-utils": { "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", + "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", "dev": true, - "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.7", "@typescript-eslint/scope-manager": "4.33.0", @@ -6093,8 +6471,9 @@ }, "node_modules/@typescript-eslint/parser": { "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", + "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/scope-manager": "4.33.0", "@typescript-eslint/types": "4.33.0", @@ -6119,8 +6498,9 @@ }, "node_modules/@typescript-eslint/scope-manager": { "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", + "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", "dev": true, - "license": "MIT", "dependencies": { "@typescript-eslint/types": "4.33.0", "@typescript-eslint/visitor-keys": "4.33.0" @@ -6135,8 +6515,9 @@ }, "node_modules/@typescript-eslint/types": { "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", + "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", "dev": true, - "license": "MIT", "engines": { "node": "^8.10.0 || ^10.13.0 || >=11.10.1" }, @@ -6147,8 +6528,9 @@ }, "node_modules/@typescript-eslint/typescript-estree": { "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", + "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "4.33.0", "@typescript-eslint/visitor-keys": "4.33.0", @@ -6173,8 +6555,9 @@ }, "node_modules/@typescript-eslint/visitor-keys": { "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", + "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", "dev": true, - "license": "MIT", "dependencies": { "@typescript-eslint/types": "4.33.0", "eslint-visitor-keys": "^2.0.0" @@ -6198,7 +6581,8 @@ }, "node_modules/@woocommerce/woocommerce-rest-api": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@woocommerce/woocommerce-rest-api/-/woocommerce-rest-api-1.0.1.tgz", + "integrity": "sha512-YBk3EEYE0zax/egx6Rhpbu6hcCFyZpYQrjH9JO4NUGU3n3T0W9Edn7oAUbjL/c7Oezcg+UaQluCaKjY/B3zwxg==", "dependencies": { "axios": "^0.19.0", "create-hmac": "^1.1.7", @@ -6211,21 +6595,25 @@ }, "node_modules/@woocommerce/woocommerce-rest-api/node_modules/axios": { "version": "0.19.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", + "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", + "deprecated": "Critical security vulnerability fixed in v0.21.1. For more information, see https://github.com/axios/axios/pull/3410", "dependencies": { "follow-redirects": "1.5.10" } }, "node_modules/@woocommerce/woocommerce-rest-api/node_modules/debug": { "version": "3.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "dependencies": { "ms": "2.0.0" } }, "node_modules/@woocommerce/woocommerce-rest-api/node_modules/follow-redirects": { "version": "1.5.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", "dependencies": { "debug": "=3.1.0" }, @@ -6235,24 +6623,28 @@ }, "node_modules/@woocommerce/woocommerce-rest-api/node_modules/ms": { "version": "2.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/@xmldom/xmldom": { "version": "0.8.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", "engines": { "node": ">=10.0.0" } }, "node_modules/@yarnpkg/lockfile": { "version": "1.1.0", - "dev": true, - "license": "BSD-2-Clause" + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true }, "node_modules/@yarnpkg/parsers": { "version": "3.0.0-rc.46", + "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.46.tgz", + "integrity": "sha512-aiATs7pSutzda/rq8fnuPwTglyVwjM22bNnK2ZgjrpAjQHSSl3lztd2f9evst1W/qnC58DRz7T7QndUDumAR4Q==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "js-yaml": "^3.10.0", "tslib": "^2.4.0" @@ -6261,15 +6653,11 @@ "node": ">=14.15.0" } }, - "node_modules/@yarnpkg/parsers/node_modules/tslib": { - "version": "2.6.2", - "dev": true, - "license": "0BSD" - }, "node_modules/@zkochan/js-yaml": { "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz", + "integrity": "sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg==", "dev": true, - "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -6279,27 +6667,33 @@ }, "node_modules/@zkochan/js-yaml/node_modules/argparse": { "version": "2.0.1", - "dev": true, - "license": "Python-2.0" + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "node_modules/@zxing/text-encoding": { "version": "0.9.0", - "license": "(Unlicense OR Apache-2.0)", + "resolved": "https://registry.npmjs.org/@zxing/text-encoding/-/text-encoding-0.9.0.tgz", + "integrity": "sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==", "optional": true }, "node_modules/abab": { "version": "2.0.6", - "dev": true, - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "deprecated": "Use your platform's native atob() and btoa() methods instead", + "dev": true }, "node_modules/abbrev": { "version": "1.1.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true }, "node_modules/abort-controller": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", "dependencies": { "event-target-shim": "^5.0.0" }, @@ -6309,8 +6703,9 @@ }, "node_modules/acorn": { "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "dev": true, - "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -6320,8 +6715,9 @@ }, "node_modules/acorn-globals": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", "dev": true, - "license": "MIT", "dependencies": { "acorn": "^7.1.1", "acorn-walk": "^7.1.1" @@ -6329,23 +6725,27 @@ }, "node_modules/acorn-jsx": { "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, - "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "node_modules/acorn-walk": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.4.0" } }, "node_modules/adal-node": { "version": "0.2.4", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/adal-node/-/adal-node-0.2.4.tgz", + "integrity": "sha512-zIcvbwQFKMUtKxxj8YMHeTT1o/TPXfVNsTXVgXD8sxwV6h4AFQgK77dRciGhuEF9/Sdm3UQPJVPc/6XxrccSeA==", + "deprecated": "This package is no longer supported. Please migrate to @azure/msal-node.", "dependencies": { "@xmldom/xmldom": "^0.8.3", "async": "^2.6.3", @@ -6362,21 +6762,24 @@ }, "node_modules/adal-node/node_modules/async": { "version": "2.6.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dependencies": { "lodash": "^4.17.14" } }, "node_modules/adal-node/node_modules/axios": { "version": "0.21.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", "dependencies": { "follow-redirects": "^1.14.0" } }, "node_modules/adal-node/node_modules/jwa": { "version": "1.4.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", "dependencies": { "buffer-equal-constant-time": "1.0.1", "ecdsa-sig-formatter": "1.0.11", @@ -6385,20 +6788,32 @@ }, "node_modules/adal-node/node_modules/jws": { "version": "3.2.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", "dependencies": { "jwa": "^1.4.1", "safe-buffer": "^5.0.1" } }, + "node_modules/adal-node/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, "node_modules/add-stream": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", + "integrity": "sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==", + "dev": true }, "node_modules/agent-base": { "version": "6.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dependencies": { "debug": "4" }, @@ -6408,8 +6823,9 @@ }, "node_modules/agentkeepalive": { "version": "4.5.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", "dev": true, - "license": "MIT", "dependencies": { "humanize-ms": "^1.2.1" }, @@ -6419,8 +6835,9 @@ }, "node_modules/aggregate-error": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, - "license": "MIT", "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -6431,7 +6848,8 @@ }, "node_modules/ajv": { "version": "6.12.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -6445,23 +6863,26 @@ }, "node_modules/ansi-align": { "version": "3.0.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", "dependencies": { "string-width": "^4.1.0" } }, "node_modules/ansi-colors": { "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/ansi-escapes": { "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, - "license": "MIT", "dependencies": { "type-fest": "^0.21.3" }, @@ -6474,8 +6895,9 @@ }, "node_modules/ansi-escapes/node_modules/type-fest": { "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -6485,14 +6907,16 @@ }, "node_modules/ansi-regex": { "version": "5.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "engines": { "node": ">=8" } }, "node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { "color-convert": "^2.0.1" }, @@ -6505,8 +6929,9 @@ }, "node_modules/anymatch": { "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, - "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -6540,20 +6965,18 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.3.0.tgz", "integrity": "sha512-cumHmIAf6On83X7yP+LrsEyUOf/YlociZelmpRYaGFydoaPdxdt80MAbu6vWerQT2COCp2nPvHdsbD7tHn/YlQ==" }, - "node_modules/apache-arrow/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, "node_modules/aproba": { "version": "2.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true }, "node_modules/are-we-there-yet": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "deprecated": "This package is no longer supported.", "dev": true, - "license": "ISC", "dependencies": { "delegates": "^1.0.0", "readable-stream": "^3.6.0" @@ -6564,7 +6987,8 @@ }, "node_modules/argparse": { "version": "1.0.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dependencies": { "sprintf-js": "~1.0.2" } @@ -6579,47 +7003,54 @@ }, "node_modules/array-differ": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/array-ify": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", + "dev": true }, "node_modules/array-union": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/arrify": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/asap": { "version": "2.0.6", - "license": "MIT" + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" }, "node_modules/asn1": { "version": "0.2.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", "dependencies": { "safer-buffer": "~2.1.0" } }, "node_modules/asn1.js": { "version": "5.4.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", "dependencies": { "bn.js": "^4.0.0", "inherits": "^2.0.1", @@ -6629,7 +7060,8 @@ }, "node_modules/asn1.js-rfc2560": { "version": "5.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/asn1.js-rfc2560/-/asn1.js-rfc2560-5.0.1.tgz", + "integrity": "sha512-1PrVg6kuBziDN3PGFmRk3QrjpKvP9h/Hv5yMrFZvC1kpzP6dQRzf5BpKstANqHBkaOUmTpakJWhicTATOA/SbA==", "dependencies": { "asn1.js-rfc5280": "^3.0.0" }, @@ -6639,14 +7071,16 @@ }, "node_modules/asn1.js-rfc5280": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/asn1.js-rfc5280/-/asn1.js-rfc5280-3.0.0.tgz", + "integrity": "sha512-Y2LZPOWeZ6qehv698ZgOGGCZXBQShObWnGthTrIFlIQjuV1gg2B8QOhWFRExq/MR1VnPpIIe7P9vX2vElxv+Pg==", "dependencies": { "asn1.js": "^5.0.0" } }, "node_modules/assert-plus": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", "engines": { "node": ">=0.8" } @@ -6662,22 +7096,19 @@ "node": ">=4" } }, - "node_modules/ast-types/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, "node_modules/astral-regex": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/async": { "version": "3.2.5", - "license": "MIT" + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" }, "node_modules/async-limiter": { "version": "1.0.1", @@ -6686,40 +7117,49 @@ }, "node_modules/async-retry": { "version": "1.3.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", + "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", "dependencies": { "retry": "0.13.1" } }, "node_modules/async-retry/node_modules/retry": { "version": "0.13.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", "engines": { "node": ">= 4" } }, "node_modules/asynckit": { "version": "0.4.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "node_modules/at-least-node": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "dev": true, - "license": "ISC", "engines": { "node": ">= 4.0.0" } }, "node_modules/athena-express": { "version": "7.1.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/athena-express/-/athena-express-7.1.5.tgz", + "integrity": "sha512-YLCaKQWyLDUjyHNH939H0eTTP/FbgZutx8vn5qzMUiAaMrS2DWaClL9g27nPMIad9QcJYdF1HIA6KfAH0c5txg==", "dependencies": { "csvtojson": "^2.0.10" } }, "node_modules/available-typed-arrays": { - "version": "1.0.5", - "license": "MIT", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -6728,8 +7168,10 @@ } }, "node_modules/aws-sdk": { - "version": "2.1510.0", - "license": "Apache-2.0", + "version": "2.1646.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1646.0.tgz", + "integrity": "sha512-PAvDiR8ow3zjO0T5HMda04kXIzQ5e1zeWxWGSUodRwu9W569gZPBnqzcPX3PJFNAKBZnZBdbNgsci1g2nXCcBg==", + "hasInstallScript": true, "dependencies": { "buffer": "4.9.2", "events": "1.1.1", @@ -6740,26 +7182,44 @@ "url": "0.10.3", "util": "^0.12.4", "uuid": "8.0.0", - "xml2js": "0.5.0" + "xml2js": "0.6.2" }, "engines": { "node": ">= 10.0.0" } }, + "node_modules/aws-sdk/node_modules/buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, "node_modules/aws-sdk/node_modules/events": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==", "engines": { "node": ">=0.4.x" } }, + "node_modules/aws-sdk/node_modules/ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + }, "node_modules/aws-sdk/node_modules/punycode": { "version": "1.3.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" }, "node_modules/aws-sdk/node_modules/url": { "version": "0.10.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", + "integrity": "sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==", "dependencies": { "punycode": "1.3.2", "querystring": "0.2.0" @@ -6767,33 +7227,40 @@ }, "node_modules/aws-sdk/node_modules/uuid": { "version": "8.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", + "integrity": "sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==", "bin": { "uuid": "dist/bin/uuid" } }, "node_modules/aws-sign2": { "version": "0.7.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", "engines": { "node": "*" } }, "node_modules/aws4": { - "version": "1.12.0", - "license": "MIT" + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.0.tgz", + "integrity": "sha512-3AungXC4I8kKsS9PuS4JH2nc+0bVY/mjgrephHTIi8fpEeGsTHBUJeosp0Wc1myYMElmD0B3Oc4XL/HVJ4PV2g==" }, "node_modules/axios": { - "version": "0.26.1", - "license": "MIT", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", "dependencies": { - "follow-redirects": "^1.14.8" + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, "node_modules/babel-jest": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", + "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", "dev": true, - "license": "MIT", "dependencies": { "@jest/transform": "^27.5.1", "@jest/types": "^27.5.1", @@ -6813,8 +7280,9 @@ }, "node_modules/babel-plugin-istanbul": { "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@istanbuljs/load-nyc-config": "^1.0.0", @@ -6828,8 +7296,9 @@ }, "node_modules/babel-plugin-jest-hoist": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", + "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/template": "^7.3.3", "@babel/types": "^7.3.3", @@ -6842,8 +7311,9 @@ }, "node_modules/babel-preset-current-node-syntax": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-bigint": "^7.8.3", @@ -6864,8 +7334,9 @@ }, "node_modules/babel-preset-jest": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", + "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", "dev": true, - "license": "MIT", "dependencies": { "babel-plugin-jest-hoist": "^27.5.1", "babel-preset-current-node-syntax": "^1.0.0" @@ -6879,10 +7350,13 @@ }, "node_modules/balanced-match": { "version": "1.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/base64-js": { "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "funding": [ { "type": "github", @@ -6896,8 +7370,7 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/basic-ftp": { "version": "5.0.5", @@ -6909,26 +7382,30 @@ }, "node_modules/bcrypt-pbkdf": { "version": "1.0.2", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", "dependencies": { "tweetnacl": "^0.14.3" } }, "node_modules/before-after-hook": { "version": "2.2.3", - "dev": true, - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", + "dev": true }, "node_modules/big-integer": { "version": "1.6.52", - "license": "Unlicense", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", "engines": { "node": ">=0.6" } }, "node_modules/big.js": { "version": "6.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-6.2.1.tgz", + "integrity": "sha512-bCtHMwL9LeDIozFn+oNhhFoq+yQ3BNdnsLSASUxLciOb1vgvpHsIO1dsENiGMgbb4SkP5TrzWzRiLddn8ahVOQ==", "engines": { "node": "*" }, @@ -6939,15 +7416,17 @@ }, "node_modules/bignumber.js": { "version": "9.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", "engines": { "node": "*" } }, "node_modules/bin-links": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-3.0.3.tgz", + "integrity": "sha512-zKdnMPWEdh4F5INR07/eBrodC7QrF5JKvqskjz/ZZRXg5YSAZIbn8zGhbhUrElzHBZ2fvEQdOU59RHcTG3GiwA==", "dev": true, - "license": "ISC", "dependencies": { "cmd-shim": "^5.0.0", "mkdirp-infer-owner": "^2.0.0", @@ -6962,16 +7441,18 @@ }, "node_modules/bin-links/node_modules/npm-normalize-package-bin": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", "dev": true, - "license": "ISC", "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/bin-links/node_modules/write-file-atomic": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, - "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^3.0.7" @@ -6981,79 +7462,48 @@ } }, "node_modules/binascii": { - "version": "0.0.2" + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/binascii/-/binascii-0.0.2.tgz", + "integrity": "sha512-rA2CrUl1+6yKrn+XgLs8Hdy18OER1UW146nM+ixzhQXDY+Bd3ySkyIJGwF2a4I45JwbvF1mDL/nWkqBwpOcdBA==" }, "node_modules/bl": { - "version": "5.1.0", - "license": "MIT", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "devOptional": true, "dependencies": { - "buffer": "^6.0.3", + "buffer": "^5.5.0", "inherits": "^2.0.4", "readable-stream": "^3.4.0" } }, - "node_modules/bl/node_modules/buffer": { - "version": "6.0.3", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/bl/node_modules/ieee754": { - "version": "1.2.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, "node_modules/block-stream2": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/block-stream2/-/block-stream2-2.1.0.tgz", + "integrity": "sha512-suhjmLI57Ewpmq00qaygS8UgEq2ly2PCItenIyhMqVjo4t4pGzqMvfgJuX8iWTeSDdfSSqS6j38fL4ToNL7Pfg==", "dependencies": { "readable-stream": "^3.4.0" } }, "node_modules/bluebird": { "version": "3.7.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "node_modules/bn.js": { "version": "4.12.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" }, "node_modules/bowser": { "version": "2.11.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", + "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==" }, "node_modules/boxen": { "version": "3.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-3.2.0.tgz", + "integrity": "sha512-cU4J/+NodM3IHdSL2yN8bqYqnmlBTidDR4RC7nJs61ZmtGz8VZzM3HLQX0zY5mrSmPtR3xWwsq2jOUQqFZN8+A==", "dependencies": { "ansi-align": "^3.0.0", "camelcase": "^5.3.1", @@ -7070,14 +7520,16 @@ }, "node_modules/boxen/node_modules/ansi-regex": { "version": "4.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", "engines": { "node": ">=6" } }, "node_modules/boxen/node_modules/ansi-styles": { "version": "3.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dependencies": { "color-convert": "^1.9.0" }, @@ -7087,7 +7539,8 @@ }, "node_modules/boxen/node_modules/chalk": { "version": "2.4.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -7099,43 +7552,50 @@ }, "node_modules/boxen/node_modules/color-convert": { "version": "1.9.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dependencies": { "color-name": "1.1.3" } }, "node_modules/boxen/node_modules/color-name": { "version": "1.1.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "node_modules/boxen/node_modules/emoji-regex": { "version": "7.0.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" }, "node_modules/boxen/node_modules/escape-string-regexp": { "version": "1.0.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "engines": { "node": ">=0.8.0" } }, "node_modules/boxen/node_modules/has-flag": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "engines": { "node": ">=4" } }, "node_modules/boxen/node_modules/is-fullwidth-code-point": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", "engines": { "node": ">=4" } }, "node_modules/boxen/node_modules/string-width": { "version": "3.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dependencies": { "emoji-regex": "^7.0.1", "is-fullwidth-code-point": "^2.0.0", @@ -7147,7 +7607,8 @@ }, "node_modules/boxen/node_modules/strip-ansi": { "version": "5.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dependencies": { "ansi-regex": "^4.1.0" }, @@ -7157,7 +7618,8 @@ }, "node_modules/boxen/node_modules/supports-color": { "version": "5.5.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dependencies": { "has-flag": "^3.0.0" }, @@ -7167,25 +7629,28 @@ }, "node_modules/boxen/node_modules/type-fest": { "version": "0.3.1", - "license": "(MIT OR CC0-1.0)", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", "engines": { "node": ">=6" } }, "node_modules/brace-expansion": { "version": "1.1.11", - "license": "MIT", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "node_modules/braces": { - "version": "3.0.2", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, - "license": "MIT", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -7193,21 +7658,27 @@ }, "node_modules/browser-or-node": { "version": "2.1.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/browser-or-node/-/browser-or-node-2.1.1.tgz", + "integrity": "sha512-8CVjaLJGuSKMVTxJ2DpBl5XnlNDiT4cQFeuCJJrvJmts9YrTZDizTX7PjC2s6W4x+MBGZeEY6dGMrF04/6Hgqg==" }, "node_modules/browser-process-hrtime": { "version": "1.0.0", - "dev": true, - "license": "BSD-2-Clause" + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true }, "node_modules/browser-request": { "version": "0.3.3", + "resolved": "https://registry.npmjs.org/browser-request/-/browser-request-0.3.3.tgz", + "integrity": "sha512-YyNI4qJJ+piQG6MMEuo7J3Bzaqssufx04zpEKYfSrl/1Op59HWali9zMtBpXnkmqMcOuWJPZvudrm9wISmnCbg==", "engines": [ "node" ] }, "node_modules/browserslist": { - "version": "4.22.1", + "version": "4.23.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz", + "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", "dev": true, "funding": [ { @@ -7223,12 +7694,11 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001541", - "electron-to-chromium": "^1.4.535", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.13" + "caniuse-lite": "^1.0.30001629", + "electron-to-chromium": "^1.4.796", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.16" }, "bin": { "browserslist": "cli.js" @@ -7239,8 +7709,9 @@ }, "node_modules/bs-logger": { "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", "dev": true, - "license": "MIT", "dependencies": { "fast-json-stable-stringify": "2.x" }, @@ -7250,15 +7721,17 @@ }, "node_modules/bser": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { "node-int64": "^0.4.0" } }, "node_modules/bson": { "version": "4.7.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz", + "integrity": "sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==", "dependencies": { "buffer": "^5.6.0" }, @@ -7266,8 +7739,10 @@ "node": ">=6.9.0" } }, - "node_modules/bson/node_modules/buffer": { + "node_modules/buffer": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "funding": [ { "type": "github", @@ -7282,59 +7757,52 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" } }, - "node_modules/buffer": { - "version": "4.9.2", - "license": "MIT", - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, "node_modules/buffer-crc32": { "version": "0.2.13", - "license": "MIT", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "engines": { "node": "*" } }, "node_modules/buffer-equal-constant-time": { "version": "1.0.1", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" }, "node_modules/buffer-from": { "version": "1.1.2", - "license": "MIT" - }, - "node_modules/buffer-writer": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">=4" - } + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, "node_modules/builtins": { - "version": "1.0.3", - "license": "MIT" + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", + "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", + "dev": true, + "dependencies": { + "semver": "^7.0.0" + } }, "node_modules/byte-size": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/byte-size/-/byte-size-7.0.1.tgz", + "integrity": "sha512-crQdqyCwhokxwV1UyDzLZanhkugAgft7vt0qbbdt60C6Zf3CAiGmtUCylbtYwrU6loOUw3euGrNtW1J651ot1A==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/cacache": { "version": "16.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/fs": "^2.1.0", "@npmcli/move-file": "^2.0.0", @@ -7361,16 +7829,19 @@ }, "node_modules/cacache/node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/cacache/node_modules/glob": { "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -7387,16 +7858,18 @@ }, "node_modules/cacache/node_modules/lru-cache": { "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, - "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/cacache/node_modules/minimatch": { "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -7404,38 +7877,18 @@ "node": ">=10" } }, - "node_modules/cacache/node_modules/unique-filename": { - "version": "2.0.1", - "dev": true, - "license": "ISC", - "dependencies": { - "unique-slug": "^3.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/cacache/node_modules/unique-slug": { - "version": "3.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, "node_modules/cacheable-lookup": { "version": "5.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", "engines": { "node": ">=10.6.0" } }, "node_modules/cacheable-request": { "version": "7.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", "dependencies": { "clone-response": "^1.0.2", "get-stream": "^5.1.0", @@ -7451,7 +7904,8 @@ }, "node_modules/cacheable-request/node_modules/get-stream": { "version": "5.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dependencies": { "pump": "^3.0.0" }, @@ -7463,12 +7917,18 @@ } }, "node_modules/call-bind": { - "version": "1.0.5", - "license": "MIT", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.1", - "set-function-length": "^1.1.1" + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -7476,23 +7936,26 @@ }, "node_modules/callsites": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/camelcase": { "version": "5.3.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "engines": { "node": ">=6" } }, "node_modules/camelcase-keys": { "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", "dev": true, - "license": "MIT", "dependencies": { "camelcase": "^5.3.1", "map-obj": "^4.0.0", @@ -7506,7 +7969,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001565", + "version": "1.0.30001636", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001636.tgz", + "integrity": "sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg==", "dev": true, "funding": [ { @@ -7521,16 +7986,17 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ], - "license": "CC-BY-4.0" + ] }, "node_modules/caseless": { "version": "0.12.0", - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" }, "node_modules/chalk": { "version": "4.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -7558,27 +8024,32 @@ }, "node_modules/char-regex": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/chardet": { "version": "0.7.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true }, "node_modules/chownr": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "dev": true, - "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/ci-info": { "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "dev": true, "funding": [ { @@ -7586,39 +8057,43 @@ "url": "https://github.com/sponsors/sibiraj-s" } ], - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/cint": { "version": "8.2.1", - "license": "ISC" + "resolved": "https://registry.npmjs.org/cint/-/cint-8.2.1.tgz", + "integrity": "sha512-gyWqJHXgDFPNx7PEyFJotutav+al92TTC3dWlMFyTETlOyKBQMZb7Cetqmj3GlrnSILHwSJRwf4mIGzc7C5lXw==" }, "node_modules/cipher-base": { "version": "1.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" } }, "node_modules/cjs-module-lexer": { - "version": "1.2.3", - "dev": true, - "license": "MIT" + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz", + "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==", + "dev": true }, "node_modules/clean-stack": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/cli-boxes": { "version": "2.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", "engines": { "node": ">=6" }, @@ -7628,8 +8103,9 @@ }, "node_modules/cli-cursor": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, - "license": "MIT", "dependencies": { "restore-cursor": "^3.1.0" }, @@ -7639,8 +8115,9 @@ }, "node_modules/cli-spinners": { "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" }, @@ -7650,6 +8127,8 @@ }, "node_modules/cli-table": { "version": "0.3.11", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz", + "integrity": "sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==", "dependencies": { "colors": "1.0.3" }, @@ -7659,15 +8138,17 @@ }, "node_modules/cli-width": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", "dev": true, - "license": "ISC", "engines": { "node": ">= 10" } }, "node_modules/clickhouse": { "version": "2.6.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/clickhouse/-/clickhouse-2.6.0.tgz", + "integrity": "sha512-HC5OV99GJOup4qZsTuWWPpXlj+847Z0OeygDU2x22rNYost0V/vWapzFWYZdV/5iRbGMrhFQPOyQEzmGvoaWRQ==", "dependencies": { "JSONStream": "1.3.4", "lodash": "4.17.21", @@ -7679,21 +8160,10 @@ "uuid": "3.4.0" } }, - "node_modules/clickhouse/node_modules/form-data": { - "version": "2.3.3", - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, "node_modules/clickhouse/node_modules/JSONStream": { "version": "1.3.4", - "license": "(MIT OR Apache-2.0)", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.4.tgz", + "integrity": "sha512-Y7vfi3I5oMOYIr+WxV8NZxDSwcbNgzdKYsTNInmycOq9bUYwGg9ryu57Wg5NLmCjqdFPNUmpMBo3kSJN9tCbXg==", "dependencies": { "jsonparse": "^1.2.0", "through": ">=2.2.7 <3" @@ -7705,79 +8175,57 @@ "node": "*" } }, - "node_modules/clickhouse/node_modules/punycode": { - "version": "1.4.1", - "license": "MIT" - }, - "node_modules/clickhouse/node_modules/qs": { - "version": "6.5.3", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/clickhouse/node_modules/request": { - "version": "2.88.0", - "license": "Apache-2.0", - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.0", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/clickhouse/node_modules/tough-cookie": { - "version": "2.4.3", - "license": "BSD-3-Clause", - "dependencies": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - }, - "engines": { - "node": ">=0.8" + "node_modules/clickhouse/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" } }, "node_modules/cliui": { "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, - "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^7.0.0" } }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/clone": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8" } }, "node_modules/clone-deep": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, - "license": "MIT", "dependencies": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", @@ -7789,8 +8237,9 @@ }, "node_modules/clone-deep/node_modules/is-plain-object": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, - "license": "MIT", "dependencies": { "isobject": "^3.0.1" }, @@ -7800,7 +8249,8 @@ }, "node_modules/clone-response": { "version": "1.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", "dependencies": { "mimic-response": "^1.0.0" }, @@ -7810,15 +8260,17 @@ }, "node_modules/cluster-key-slot": { "version": "1.1.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", + "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", "engines": { "node": ">=0.10.0" } }, "node_modules/cmd-shim": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-5.0.0.tgz", + "integrity": "sha512-qkCtZ59BidfEwHltnJwkyVZn+XQojdAySM1D1gSeh11Z4pW1Kpolkyo53L5noc0nrxmIvyFwTmJRo4xs7FFLPw==", "dev": true, - "license": "ISC", "dependencies": { "mkdirp-infer-owner": "^2.0.0" }, @@ -7828,8 +8280,9 @@ }, "node_modules/co": { "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true, - "license": "MIT", "engines": { "iojs": ">= 1.0.0", "node": ">= 0.12.0" @@ -7837,12 +8290,14 @@ }, "node_modules/collect-v8-coverage": { "version": "1.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true }, "node_modules/color": { "version": "3.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", "dependencies": { "color-convert": "^1.9.3", "color-string": "^1.6.0" @@ -7850,7 +8305,8 @@ }, "node_modules/color-convert": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { "color-name": "~1.1.4" }, @@ -7860,11 +8316,13 @@ }, "node_modules/color-name": { "version": "1.1.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/color-string": { "version": "1.9.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", "dependencies": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" @@ -7872,37 +8330,43 @@ }, "node_modules/color-support": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true, - "license": "ISC", "bin": { "color-support": "bin.js" } }, "node_modules/color/node_modules/color-convert": { "version": "1.9.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dependencies": { "color-name": "1.1.3" } }, "node_modules/color/node_modules/color-name": { "version": "1.1.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "node_modules/colorette": { "version": "2.0.16", - "license": "MIT" + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==" }, "node_modules/colors": { "version": "1.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", "engines": { "node": ">=0.1.90" } }, "node_modules/colorspace": { "version": "1.1.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", + "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", "dependencies": { "color": "^3.1.3", "text-hex": "1.0.x" @@ -7910,8 +8374,9 @@ }, "node_modules/columnify": { "version": "1.6.0", + "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", + "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==", "dev": true, - "license": "MIT", "dependencies": { "strip-ansi": "^6.0.1", "wcwidth": "^1.0.0" @@ -7922,7 +8387,8 @@ }, "node_modules/combined-stream": { "version": "1.0.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dependencies": { "delayed-stream": "~1.0.0" }, @@ -7975,21 +8441,24 @@ } }, "node_modules/commander": { - "version": "7.2.0", - "license": "MIT", + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", "engines": { - "node": ">= 10" + "node": "^12.20.0 || >=14" } }, "node_modules/common-ancestor-path": { "version": "1.0.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", + "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==", + "dev": true }, "node_modules/compare-func": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", "dev": true, - "license": "MIT", "dependencies": { "array-ify": "^1.0.0", "dot-prop": "^5.1.0" @@ -7997,8 +8466,9 @@ }, "node_modules/compare-func/node_modules/dot-prop": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", "dev": true, - "license": "MIT", "dependencies": { "is-obj": "^2.0.0" }, @@ -8008,7 +8478,8 @@ }, "node_modules/compressible": { "version": "2.0.18", - "license": "MIT", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "dependencies": { "mime-db": ">= 1.43.0 < 2" }, @@ -8018,15 +8489,17 @@ }, "node_modules/concat-map": { "version": "0.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "node_modules/concat-stream": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", "dev": true, "engines": [ "node >= 6.0" ], - "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "inherits": "^2.0.3", @@ -8036,8 +8509,9 @@ }, "node_modules/config-chain": { "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", "dev": true, - "license": "MIT", "dependencies": { "ini": "^1.3.4", "proto-list": "~1.2.1" @@ -8045,7 +8519,8 @@ }, "node_modules/configstore": { "version": "5.0.1", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", "dependencies": { "dot-prop": "^5.2.0", "graceful-fs": "^4.1.2", @@ -8060,7 +8535,8 @@ }, "node_modules/configstore/node_modules/dot-prop": { "version": "5.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", "dependencies": { "is-obj": "^2.0.0" }, @@ -8070,7 +8546,8 @@ }, "node_modules/configstore/node_modules/make-dir": { "version": "3.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dependencies": { "semver": "^6.0.0" }, @@ -8083,20 +8560,23 @@ }, "node_modules/configstore/node_modules/semver": { "version": "6.3.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } }, "node_modules/console-control-strings": { "version": "1.1.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true }, "node_modules/conventional-changelog-angular": { "version": "5.0.13", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", + "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", "dev": true, - "license": "ISC", "dependencies": { "compare-func": "^2.0.0", "q": "^1.5.1" @@ -8107,8 +8587,9 @@ }, "node_modules/conventional-changelog-core": { "version": "4.2.4", + "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz", + "integrity": "sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==", "dev": true, - "license": "MIT", "dependencies": { "add-stream": "^1.0.0", "conventional-changelog-writer": "^5.0.0", @@ -8131,16 +8612,18 @@ }, "node_modules/conventional-changelog-preset-loader": { "version": "2.3.4", + "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz", + "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/conventional-changelog-writer": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz", + "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==", "dev": true, - "license": "MIT", "dependencies": { "conventional-commits-filter": "^2.0.7", "dateformat": "^3.0.0", @@ -8161,16 +8644,18 @@ }, "node_modules/conventional-changelog-writer/node_modules/semver": { "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/conventional-commits-filter": { "version": "2.0.7", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", + "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", "dev": true, - "license": "MIT", "dependencies": { "lodash.ismatch": "^4.4.0", "modify-values": "^1.0.0" @@ -8181,8 +8666,9 @@ }, "node_modules/conventional-commits-parser": { "version": "3.2.4", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", + "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", "dev": true, - "license": "MIT", "dependencies": { "is-text-path": "^1.0.1", "JSONStream": "^1.0.4", @@ -8200,8 +8686,9 @@ }, "node_modules/conventional-recommended-bump": { "version": "6.1.0", + "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz", + "integrity": "sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==", "dev": true, - "license": "MIT", "dependencies": { "concat-stream": "^2.0.0", "conventional-changelog-preset-loader": "^2.3.4", @@ -8221,12 +8708,15 @@ }, "node_modules/convert-source-map": { "version": "1.9.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true }, "node_modules/copy-concurrently": { "version": "1.0.5", - "license": "ISC", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "deprecated": "This package is no longer supported.", "dependencies": { "aproba": "^1.1.1", "fs-write-stream-atomic": "^1.0.8", @@ -8238,11 +8728,13 @@ }, "node_modules/copy-concurrently/node_modules/aproba": { "version": "1.2.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" }, "node_modules/copy-concurrently/node_modules/mkdirp": { "version": "0.5.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dependencies": { "minimist": "^1.2.6" }, @@ -8252,7 +8744,9 @@ }, "node_modules/copy-concurrently/node_modules/rimraf": { "version": "2.7.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dependencies": { "glob": "^7.1.3" }, @@ -8261,13 +8755,15 @@ } }, "node_modules/core-util-is": { - "version": "1.0.2", - "license": "MIT" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, "node_modules/cosmiconfig": { "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", "dev": true, - "license": "MIT", "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", @@ -8281,7 +8777,8 @@ }, "node_modules/create-hash": { "version": "1.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "dependencies": { "cipher-base": "^1.0.1", "inherits": "^2.0.1", @@ -8292,7 +8789,8 @@ }, "node_modules/create-hmac": { "version": "1.1.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "dependencies": { "cipher-base": "^1.0.3", "create-hash": "^1.1.0", @@ -8304,8 +8802,8 @@ }, "node_modules/cross-spawn": { "version": "7.0.3", - "dev": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -8317,20 +8815,23 @@ }, "node_modules/crypto-random-string": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", "engines": { "node": ">=8" } }, "node_modules/cssom": { "version": "0.4.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true }, "node_modules/cssstyle": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", "dev": true, - "license": "MIT", "dependencies": { "cssom": "~0.3.6" }, @@ -8340,12 +8841,14 @@ }, "node_modules/cssstyle/node_modules/cssom": { "version": "0.3.8", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true }, "node_modules/csvtojson": { "version": "2.0.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/csvtojson/-/csvtojson-2.0.10.tgz", + "integrity": "sha512-lUWFxGKyhraKCW8Qghz6Z0f2l/PqB1W3AO0HKJzGIQ5JRSlR651ekJDiGJbBT4sRNNv5ddnSGVEnsxP9XRCVpQ==", "dependencies": { "bluebird": "^3.5.1", "lodash": "^4.17.3", @@ -8360,7 +8863,8 @@ }, "node_modules/csvtojson/node_modules/strip-bom": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", "dependencies": { "is-utf8": "^0.2.0" }, @@ -8371,23 +8875,27 @@ "node_modules/cuint": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", - "integrity": "sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw==" + "integrity": "sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw==", + "optional": true }, "node_modules/cyclist": { "version": "1.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.2.tgz", + "integrity": "sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA==" }, "node_modules/dargs": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", + "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/dashdash": { "version": "1.14.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", "dependencies": { "assert-plus": "^1.0.0" }, @@ -8405,8 +8913,9 @@ }, "node_modules/data-urls": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", "dev": true, - "license": "MIT", "dependencies": { "abab": "^2.0.3", "whatwg-mimetype": "^2.3.0", @@ -8418,26 +8927,30 @@ }, "node_modules/date-utils": { "version": "1.2.21", - "license": "MIT", + "resolved": "https://registry.npmjs.org/date-utils/-/date-utils-1.2.21.tgz", + "integrity": "sha512-wJMBjqlwXR0Iv0wUo/lFbhSQ7MmG1hl36iuxuE91kW+5b5sWbase73manEqNH9sOLFAMG83B4ffNKq9/Iq0FVA==", "engines": { "node": ">0.4.0" } }, "node_modules/dateformat": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", "dev": true, - "license": "MIT", "engines": { "node": "*" } }, "node_modules/dayjs": { - "version": "1.11.10", - "license": "MIT" + "version": "1.11.11", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz", + "integrity": "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==" }, "node_modules/debug": { - "version": "4.3.4", - "license": "MIT", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "dependencies": { "ms": "2.1.2" }, @@ -8452,24 +8965,28 @@ }, "node_modules/debuglog": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", + "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "license": "MIT", "engines": { "node": "*" } }, "node_modules/decamelize": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/decamelize-keys": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", "dev": true, - "license": "MIT", "dependencies": { "decamelize": "^1.1.0", "map-obj": "^1.0.0" @@ -8483,27 +9000,31 @@ }, "node_modules/decamelize-keys/node_modules/map-obj": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/decimal.js": { "version": "10.4.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "dev": true }, "node_modules/decode-uri-component": { "version": "0.2.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", "engines": { "node": ">=0.10" } }, "node_modules/decompress-response": { "version": "6.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", "dependencies": { "mimic-response": "^3.1.0" }, @@ -8516,7 +9037,8 @@ }, "node_modules/decompress-response/node_modules/mimic-response": { "version": "3.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", "engines": { "node": ">=10" }, @@ -8526,32 +9048,37 @@ }, "node_modules/dedent": { "version": "0.7.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true }, "node_modules/deep-extend": { "version": "0.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "engines": { "node": ">=4.0.0" } }, "node_modules/deep-is": { "version": "0.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true }, "node_modules/deepmerge": { "version": "4.3.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "engines": { "node": ">=0.10.0" } }, "node_modules/defaults": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dev": true, - "license": "MIT", "dependencies": { "clone": "^1.0.2" }, @@ -8561,26 +9088,32 @@ }, "node_modules/defer-to-connect": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", "engines": { "node": ">=10" } }, "node_modules/define-data-property": { - "version": "1.1.1", - "license": "MIT", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/define-lazy-prop": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "engines": { "node": ">=8" } @@ -8600,46 +9133,53 @@ }, "node_modules/delayed-stream": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "engines": { "node": ">=0.4.0" } }, "node_modules/delegates": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true }, "node_modules/denque": { "version": "1.5.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz", + "integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==", "engines": { "node": ">=0.10" } }, "node_modules/depd": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "engines": { "node": ">= 0.8" } }, "node_modules/deprecation": { "version": "2.3.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true }, "node_modules/detect-indent": { "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/detect-libc": { - "version": "2.0.2", - "license": "Apache-2.0", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", "optional": true, "engines": { "node": ">=8" @@ -8647,16 +9187,18 @@ }, "node_modules/detect-newline": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/dezalgo": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", "dev": true, - "license": "ISC", "dependencies": { "asap": "^2.0.0", "wrappy": "1" @@ -8664,16 +9206,18 @@ }, "node_modules/diff-sequences": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", "dev": true, - "license": "MIT", "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/dir-glob": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, - "license": "MIT", "dependencies": { "path-type": "^4.0.0" }, @@ -8683,8 +9227,9 @@ }, "node_modules/doctrine": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, - "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -8694,8 +9239,10 @@ }, "node_modules/domexception": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "deprecated": "Use your platform's native DOMException instead", "dev": true, - "license": "MIT", "dependencies": { "webidl-conversions": "^5.0.0" }, @@ -8705,16 +9252,18 @@ }, "node_modules/domexception/node_modules/webidl-conversions": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=8" } }, "node_modules/dot-prop": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", "dev": true, - "license": "MIT", "dependencies": { "is-obj": "^2.0.0" }, @@ -8727,50 +9276,67 @@ }, "node_modules/dotenv": { "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=10" } }, "node_modules/duplexer": { "version": "0.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true }, "node_modules/duplexer3": { "version": "0.1.5", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", + "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==" }, "node_modules/duplexify": { - "version": "4.1.2", - "license": "MIT", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz", + "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==", "dependencies": { "end-of-stream": "^1.4.1", "inherits": "^2.0.3", "readable-stream": "^3.1.1", - "stream-shift": "^1.0.0" + "stream-shift": "^1.0.2" } }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, "node_modules/ecc-jsbn": { "version": "0.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", "dependencies": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" } }, + "node_modules/ecc-jsbn/node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" + }, "node_modules/ecdsa-sig-formatter": { "version": "1.0.11", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", "dependencies": { "safe-buffer": "^5.0.1" } }, "node_modules/ejs": { - "version": "3.1.9", + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", "dev": true, - "license": "Apache-2.0", "dependencies": { "jake": "^10.8.5" }, @@ -8782,14 +9348,16 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.601", - "dev": true, - "license": "ISC" + "version": "1.4.810", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.810.tgz", + "integrity": "sha512-Kaxhu4T7SJGpRQx99tq216gCq2nMxJo+uuT6uzz9l8TVN2stL7M06MIIXAtr9jsrLs2Glflgf2vMQRepxawOdQ==", + "dev": true }, "node_modules/emittery": { "version": "0.8.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", + "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -8799,22 +9367,26 @@ }, "node_modules/emoji-regex": { "version": "8.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/enabled": { "version": "2.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" }, "node_modules/encoding": { "version": "0.1.13", - "license": "MIT", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "dependencies": { "iconv-lite": "^0.6.2" } }, "node_modules/encoding/node_modules/iconv-lite": { "version": "0.6.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -8824,15 +9396,17 @@ }, "node_modules/end-of-stream": { "version": "1.4.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dependencies": { "once": "^1.4.0" } }, "node_modules/enquirer": { "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-colors": "^4.1.1", "strip-ansi": "^6.0.1" @@ -8842,21 +9416,35 @@ } }, "node_modules/ent": { - "version": "2.2.0", - "license": "MIT" + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.1.tgz", + "integrity": "sha512-QHuXVeZx9d+tIQAz/XztU0ZwZf2Agg9CcXcgE1rurqvdBeDBrpSwjl8/6XUqMg7tw2Y7uAdKb2sRv+bSEFqQ5A==", + "dependencies": { + "punycode": "^1.4.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ent/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" }, "node_modules/env-paths": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/envinfo": { - "version": "7.11.0", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", + "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==", "dev": true, - "license": "MIT", "bin": { "envinfo": "dist/cli.js" }, @@ -8866,39 +9454,64 @@ }, "node_modules/err-code": { "version": "2.0.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true }, "node_modules/error-ex": { "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, - "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es6-promise": { "version": "4.2.8", - "license": "MIT" + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" }, "node_modules/es6-promisify": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", "dependencies": { "es6-promise": "^4.0.3" } }, "node_modules/escalade": { - "version": "3.1.1", - "license": "MIT", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "engines": { "node": ">=6" } }, "node_modules/escape-string-regexp": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -8908,7 +9521,8 @@ }, "node_modules/escodegen": { "version": "2.1.0", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", "dependencies": { "esprima": "^4.0.1", "estraverse": "^5.2.0", @@ -8927,15 +9541,17 @@ }, "node_modules/escodegen/node_modules/estraverse": { "version": "5.3.0", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "engines": { "node": ">=4.0" } }, "node_modules/eslint": { "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "7.12.11", "@eslint/eslintrc": "^0.4.3", @@ -8990,8 +9606,9 @@ }, "node_modules/eslint-config-prettier": { "version": "8.10.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", + "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", "dev": true, - "license": "MIT", "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -9001,8 +9618,9 @@ }, "node_modules/eslint-plugin-jest": { "version": "24.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-24.7.0.tgz", + "integrity": "sha512-wUxdF2bAZiYSKBclsUMrYHH6WxiBreNjyDxbRv345TIvPeoCEgPNEn3Sa+ZrSqsf1Dl9SqqSREXMHExlMMu1DA==", "dev": true, - "license": "MIT", "dependencies": { "@typescript-eslint/experimental-utils": "^4.0.1" }, @@ -9021,8 +9639,9 @@ }, "node_modules/eslint-plugin-prettier": { "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz", + "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==", "dev": true, - "license": "MIT", "dependencies": { "prettier-linter-helpers": "^1.0.0" }, @@ -9041,8 +9660,9 @@ }, "node_modules/eslint-scope": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -9053,8 +9673,9 @@ }, "node_modules/eslint-utils": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, - "license": "MIT", "dependencies": { "eslint-visitor-keys": "^2.0.0" }, @@ -9070,16 +9691,18 @@ }, "node_modules/eslint-visitor-keys": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=10" } }, "node_modules/eslint/node_modules/eslint-utils": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, - "license": "MIT", "dependencies": { "eslint-visitor-keys": "^1.1.0" }, @@ -9092,31 +9715,35 @@ }, "node_modules/eslint/node_modules/eslint-utils/node_modules/eslint-visitor-keys": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=4" } }, "node_modules/eslint/node_modules/ignore": { "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/esm": { "version": "3.2.25", - "license": "MIT", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", "engines": { "node": ">=6" } }, "node_modules/espree": { "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "acorn": "^7.4.0", "acorn-jsx": "^5.3.1", @@ -9128,15 +9755,17 @@ }, "node_modules/espree/node_modules/eslint-visitor-keys": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=4" } }, "node_modules/esprima": { "version": "4.0.1", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -9147,8 +9776,9 @@ }, "node_modules/esquery": { "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -9158,16 +9788,18 @@ }, "node_modules/esquery/node_modules/estraverse": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/esrecurse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -9177,50 +9809,57 @@ }, "node_modules/esrecurse/node_modules/estraverse": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/estraverse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/esutils": { "version": "2.0.3", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "engines": { "node": ">=0.10.0" } }, "node_modules/event-target-shim": { "version": "5.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", "engines": { "node": ">=6" } }, "node_modules/eventemitter3": { "version": "4.0.7", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true }, "node_modules/events": { "version": "3.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "engines": { "node": ">=0.8.x" } }, "node_modules/execa": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, - "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -9241,6 +9880,8 @@ }, "node_modules/exit": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true, "engines": { "node": ">= 0.8.0" @@ -9248,7 +9889,8 @@ }, "node_modules/expand-template": { "version": "2.0.3", - "license": "(MIT OR WTFPL)", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", "optional": true, "engines": { "node": ">=6" @@ -9256,7 +9898,8 @@ }, "node_modules/expand-tilde": { "version": "2.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", "dependencies": { "homedir-polyfill": "^1.0.1" }, @@ -9266,8 +9909,9 @@ }, "node_modules/expect": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", "dev": true, - "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "jest-get-type": "^27.5.1", @@ -9280,17 +9924,20 @@ }, "node_modules/exponential-backoff": { "version": "3.1.1", - "dev": true, - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", + "dev": true }, "node_modules/extend": { "version": "3.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, "node_modules/external-editor": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dev": true, - "license": "MIT", "dependencies": { "chardet": "^0.7.0", "iconv-lite": "^0.4.24", @@ -9302,8 +9949,9 @@ }, "node_modules/external-editor/node_modules/tmp": { "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, - "license": "MIT", "dependencies": { "os-tmpdir": "~1.0.2" }, @@ -9313,23 +9961,27 @@ }, "node_modules/extsprintf": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", "engines": [ "node >=0.6.0" - ], - "license": "MIT" + ] }, "node_modules/fast-deep-equal": { "version": "3.1.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/fast-diff": { "version": "1.3.0", - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==" }, "node_modules/fast-glob": { "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, - "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -9343,19 +9995,24 @@ }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "node_modules/fast-levenshtein": { "version": "2.0.6", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true }, "node_modules/fast-text-encoding": { "version": "1.0.6", - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz", + "integrity": "sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==" }, "node_modules/fast-xml-parser": { "version": "4.2.5", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz", + "integrity": "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==", "funding": [ { "type": "paypal", @@ -9366,7 +10023,6 @@ "url": "https://github.com/sponsors/NaturalIntelligence" } ], - "license": "MIT", "dependencies": { "strnum": "^1.0.5" }, @@ -9376,39 +10032,46 @@ }, "node_modules/fastest-levenshtein": { "version": "1.0.16", - "license": "MIT", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", "engines": { "node": ">= 4.9.1" } }, "node_modules/fastq": { - "version": "1.15.0", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, - "license": "ISC", "dependencies": { "reusify": "^1.0.4" } }, "node_modules/fb-watchman": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dev": true, - "license": "Apache-2.0", "dependencies": { "bser": "2.1.1" } }, "node_modules/fecha": { "version": "4.2.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" }, "node_modules/figgy-pudding": { "version": "3.5.2", - "license": "ISC" + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "deprecated": "This module is no longer supported." }, "node_modules/figures": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, - "license": "MIT", "dependencies": { "escape-string-regexp": "^1.0.5" }, @@ -9421,16 +10084,18 @@ }, "node_modules/figures/node_modules/escape-string-regexp": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/file-entry-cache": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, - "license": "MIT", "dependencies": { "flat-cache": "^3.0.4" }, @@ -9440,24 +10105,27 @@ }, "node_modules/filelist": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dev": true, - "license": "Apache-2.0", "dependencies": { "minimatch": "^5.0.1" } }, "node_modules/filelist/node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/filelist/node_modules/minimatch": { "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -9466,9 +10134,10 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, - "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -9478,7 +10147,8 @@ }, "node_modules/filter-obj": { "version": "1.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", "engines": { "node": ">=0.10.0" } @@ -9496,7 +10166,8 @@ }, "node_modules/find-up": { "version": "4.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -9507,16 +10178,18 @@ }, "node_modules/flat": { "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, - "license": "BSD-3-Clause", "bin": { "flat": "cli.js" } }, "node_modules/flat-cache": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, - "license": "MIT", "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.3", @@ -9532,13 +10205,15 @@ "integrity": "sha512-vE+SI9vrJDwi1oETtTIFldC/o9GsVKRM+s6EL0nQgxXlYV1Vc4Tk30hj4xGICftInKQKj1F3up2n8UbIVobISQ==" }, "node_modules/flatted": { - "version": "3.2.9", - "dev": true, - "license": "ISC" + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true }, "node_modules/flush-write-stream": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", "dependencies": { "inherits": "^2.0.3", "readable-stream": "^2.3.6" @@ -9546,7 +10221,8 @@ }, "node_modules/flush-write-stream/node_modules/readable-stream": { "version": "2.3.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -9559,18 +10235,21 @@ }, "node_modules/flush-write-stream/node_modules/safe-buffer": { "version": "5.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "node_modules/flush-write-stream/node_modules/string_decoder": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/fn.name": { "version": "1.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" }, "node_modules/follow-redirects": { "version": "1.15.6", @@ -9593,14 +10272,42 @@ }, "node_modules/for-each": { "version": "0.3.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dependencies": { "is-callable": "^1.1.3" } }, + "node_modules/foreground-child": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", + "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/forever-agent": { "version": "0.6.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", "engines": { "node": "*" } @@ -9620,14 +10327,16 @@ }, "node_modules/form-data-encoder": { "version": "2.1.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", + "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", "engines": { "node": ">= 14.17" } }, "node_modules/from2": { "version": "2.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", "dependencies": { "inherits": "^2.0.1", "readable-stream": "^2.0.0" @@ -9635,7 +10344,8 @@ }, "node_modules/from2/node_modules/readable-stream": { "version": "2.3.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -9648,24 +10358,28 @@ }, "node_modules/from2/node_modules/safe-buffer": { "version": "5.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "node_modules/from2/node_modules/string_decoder": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/fs-constants": { "version": "1.0.0", - "devOptional": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "devOptional": true }, "node_modules/fs-extra": { "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, - "license": "MIT", "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", @@ -9678,8 +10392,9 @@ }, "node_modules/fs-minipass": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -9689,7 +10404,9 @@ }, "node_modules/fs-write-stream-atomic": { "version": "1.0.10", - "license": "ISC", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==", + "deprecated": "This package is no longer supported.", "dependencies": { "graceful-fs": "^4.1.2", "iferr": "^0.1.5", @@ -9699,7 +10416,8 @@ }, "node_modules/fs-write-stream-atomic/node_modules/readable-stream": { "version": "2.3.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -9712,23 +10430,28 @@ }, "node_modules/fs-write-stream-atomic/node_modules/safe-buffer": { "version": "5.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "node_modules/fs-write-stream-atomic/node_modules/string_decoder": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/fs.realpath": { "version": "1.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "node_modules/fsevents": { "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, - "license": "MIT", + "hasInstallScript": true, "optional": true, "os": [ "darwin" @@ -9739,19 +10462,23 @@ }, "node_modules/function-bind": { "version": "1.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/functional-red-black-tree": { "version": "1.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==" }, "node_modules/gauge": { "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "deprecated": "This package is no longer supported.", "dev": true, - "license": "ISC", "dependencies": { "aproba": "^1.0.3 || ^2.0.0", "color-support": "^1.1.3", @@ -9768,7 +10495,8 @@ }, "node_modules/gaxios": { "version": "4.3.3", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.3.3.tgz", + "integrity": "sha512-gSaYYIO1Y3wUtdfHmjDUZ8LWaxJQpiavzbF5Kq53akSzvmVg0RfyOcFDbO1KJ/KCGRFz2qG+lS81F0nkr7cRJA==", "dependencies": { "abort-controller": "^3.0.0", "extend": "^3.0.2", @@ -9782,7 +10510,8 @@ }, "node_modules/gcp-metadata": { "version": "4.3.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.3.1.tgz", + "integrity": "sha512-x850LS5N7V1F3UcV7PoupzGsyD6iVwTVvsh3tbXfkctZnBnjW5yu5z1/3k3SehF7TyoTIe78rJs02GMMy+LF+A==", "dependencies": { "gaxios": "^4.0.0", "json-bigint": "^1.0.0" @@ -9793,62 +10522,74 @@ }, "node_modules/generate-function": { "version": "2.3.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", + "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", "dependencies": { "is-property": "^1.0.2" } }, "node_modules/generic-pool": { "version": "3.9.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.9.0.tgz", + "integrity": "sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==", "engines": { "node": ">= 4" } }, "node_modules/genfun": { "version": "5.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz", + "integrity": "sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==" }, "node_modules/gensync": { "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/get-caller-file": { "version": "2.0.5", - "license": "ISC", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "engines": { "node": "6.* || 8.* || >= 10.*" } }, "node_modules/get-intrinsic": { - "version": "1.2.2", - "license": "MIT", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dependencies": { + "es-errors": "^1.3.0", "function-bind": "^1.1.2", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", "hasown": "^2.0.0" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/get-package-type": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=8.0.0" } }, "node_modules/get-pkg-repo": { "version": "4.2.1", + "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz", + "integrity": "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==", "dev": true, - "license": "MIT", "dependencies": { "@hutson/parse-repository-url": "^3.0.0", "hosted-git-info": "^4.0.0", @@ -9864,8 +10605,9 @@ }, "node_modules/get-pkg-repo/node_modules/readable-stream": { "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, - "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -9878,21 +10620,24 @@ }, "node_modules/get-pkg-repo/node_modules/safe-buffer": { "version": "5.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "node_modules/get-pkg-repo/node_modules/string_decoder": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, - "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/get-pkg-repo/node_modules/through2": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dev": true, - "license": "MIT", "dependencies": { "readable-stream": "~2.3.6", "xtend": "~4.0.1" @@ -9900,8 +10645,9 @@ }, "node_modules/get-port": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", + "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" }, @@ -9911,14 +10657,16 @@ }, "node_modules/get-stdin": { "version": "7.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-7.0.0.tgz", + "integrity": "sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==", "engines": { "node": ">=8" } }, "node_modules/get-stream": { "version": "6.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "engines": { "node": ">=10" }, @@ -9955,19 +10703,22 @@ }, "node_modules/getopts": { "version": "2.2.5", - "license": "MIT" + "resolved": "https://registry.npmjs.org/getopts/-/getopts-2.2.5.tgz", + "integrity": "sha512-9jb7AW5p3in+IiJWhQiZmmwkpLaR/ccTWdWQCtZM66HJcHHLegowh4q4tSD7gouUyeNvFWRavfK9GXosQHDpFA==" }, "node_modules/getpass": { "version": "0.1.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", "dependencies": { "assert-plus": "^1.0.0" } }, "node_modules/git-raw-commits": { "version": "2.0.11", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz", + "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==", "dev": true, - "license": "MIT", "dependencies": { "dargs": "^7.0.0", "lodash": "^4.17.15", @@ -9984,8 +10735,9 @@ }, "node_modules/git-remote-origin-url": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", + "integrity": "sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==", "dev": true, - "license": "MIT", "dependencies": { "gitconfiglocal": "^1.0.0", "pify": "^2.3.0" @@ -9996,16 +10748,18 @@ }, "node_modules/git-remote-origin-url/node_modules/pify": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/git-semver-tags": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz", + "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==", "dev": true, - "license": "MIT", "dependencies": { "meow": "^8.0.0", "semver": "^6.0.0" @@ -10019,16 +10773,18 @@ }, "node_modules/git-semver-tags/node_modules/semver": { "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/git-up": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/git-up/-/git-up-7.0.0.tgz", + "integrity": "sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==", "dev": true, - "license": "MIT", "dependencies": { "is-ssh": "^1.4.0", "parse-url": "^8.1.0" @@ -10036,28 +10792,33 @@ }, "node_modules/git-url-parse": { "version": "13.1.1", + "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-13.1.1.tgz", + "integrity": "sha512-PCFJyeSSdtnbfhSNRw9Wk96dDCNx+sogTe4YNXeXSJxt7xz5hvXekuRn9JX7m+Mf4OscCu8h+mtAl3+h5Fo8lQ==", "dev": true, - "license": "MIT", "dependencies": { "git-up": "^7.0.0" } }, "node_modules/gitconfiglocal": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", + "integrity": "sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==", "dev": true, - "license": "BSD", "dependencies": { "ini": "^1.3.2" } }, "node_modules/github-from-package": { "version": "0.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", "optional": true }, "node_modules/glob": { "version": "7.2.3", - "license": "ISC", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -10075,8 +10836,9 @@ }, "node_modules/glob-parent": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -10086,7 +10848,8 @@ }, "node_modules/global-dirs": { "version": "0.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==", "dependencies": { "ini": "^1.3.4" }, @@ -10095,9 +10858,10 @@ } }, "node_modules/globals": { - "version": "13.23.0", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, - "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -10110,8 +10874,9 @@ }, "node_modules/globby": { "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, - "license": "MIT", "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -10129,7 +10894,8 @@ }, "node_modules/google-auth-library": { "version": "7.14.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.14.1.tgz", + "integrity": "sha512-5Rk7iLNDFhFeBYc3s8l1CqzbEBcdhwR193RlD4vSNFajIcINKI8W8P0JLmBpwymHqqWbX34pJDQu39cSy/6RsA==", "dependencies": { "arrify": "^2.0.0", "base64-js": "^1.3.0", @@ -10147,14 +10913,16 @@ }, "node_modules/google-auth-library/node_modules/arrify": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", "engines": { "node": ">=8" } }, "node_modules/google-auth-library/node_modules/lru-cache": { "version": "6.0.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dependencies": { "yallist": "^4.0.0" }, @@ -10164,23 +10932,26 @@ }, "node_modules/google-auth-library/node_modules/yallist": { "version": "4.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/google-gax": { - "version": "4.0.5", - "license": "Apache-2.0", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-4.3.7.tgz", + "integrity": "sha512-3bnD8RASQyaxOYTdWLgwpQco/aytTxFavoI/UN5QN5txDLp8QRrBHNtCUJ5+Ago+551GD92jG8jJduwvmaneUw==", "dependencies": { - "@grpc/grpc-js": "~1.9.6", - "@grpc/proto-loader": "^0.7.0", + "@grpc/grpc-js": "^1.10.9", + "@grpc/proto-loader": "^0.7.13", "@types/long": "^4.0.0", "abort-controller": "^3.0.0", "duplexify": "^4.0.0", - "google-auth-library": "^9.0.0", + "google-auth-library": "^9.3.0", "node-fetch": "^2.6.1", "object-hash": "^3.0.0", - "proto3-json-serializer": "^2.0.0", - "protobufjs": "7.2.5", - "retry-request": "^7.0.0" + "proto3-json-serializer": "^2.0.2", + "protobufjs": "^7.3.2", + "retry-request": "^7.0.0", + "uuid": "^9.0.1" }, "engines": { "node": ">=14" @@ -10188,14 +10959,16 @@ }, "node_modules/google-gax/node_modules/@tootallnate/once": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "engines": { "node": ">= 10" } }, "node_modules/google-gax/node_modules/agent-base": { - "version": "7.1.0", - "license": "MIT", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "dependencies": { "debug": "^4.3.4" }, @@ -10204,13 +10977,15 @@ } }, "node_modules/google-gax/node_modules/gaxios": { - "version": "6.1.1", - "license": "Apache-2.0", + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.6.0.tgz", + "integrity": "sha512-bpOZVQV5gthH/jVCSuYuokRo2bTKOcuBiVWpjmTn6C5Agl5zclGfTljuGsQZxwwDBkli+YhZhP4TdlqTnhOezQ==", "dependencies": { "extend": "^3.0.2", "https-proxy-agent": "^7.0.1", "is-stream": "^2.0.0", - "node-fetch": "^2.6.9" + "node-fetch": "^2.6.9", + "uuid": "^9.0.1" }, "engines": { "node": ">=14" @@ -10218,7 +10993,8 @@ }, "node_modules/google-gax/node_modules/gcp-metadata": { "version": "6.1.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", + "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", "dependencies": { "gaxios": "^6.0.0", "json-bigint": "^1.0.0" @@ -10228,8 +11004,9 @@ } }, "node_modules/google-gax/node_modules/google-auth-library": { - "version": "9.4.1", - "license": "Apache-2.0", + "version": "9.11.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.11.0.tgz", + "integrity": "sha512-epX3ww/mNnhl6tL45EQ/oixsY8JLEgUFoT4A5E/5iAR4esld9Kqv6IJGk7EmGuOgDvaarwF95hU2+v7Irql9lw==", "dependencies": { "base64-js": "^1.3.0", "ecdsa-sig-formatter": "^1.0.11", @@ -10243,8 +11020,9 @@ } }, "node_modules/google-gax/node_modules/gtoken": { - "version": "7.0.1", - "license": "MIT", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", + "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", "dependencies": { "gaxios": "^6.0.0", "jws": "^4.0.0" @@ -10255,7 +11033,8 @@ }, "node_modules/google-gax/node_modules/http-proxy-agent": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "dependencies": { "@tootallnate/once": "2", "agent-base": "6", @@ -10267,7 +11046,8 @@ }, "node_modules/google-gax/node_modules/http-proxy-agent/node_modules/agent-base": { "version": "6.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dependencies": { "debug": "4" }, @@ -10276,8 +11056,9 @@ } }, "node_modules/google-gax/node_modules/https-proxy-agent": { - "version": "7.0.2", - "license": "MIT", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", "dependencies": { "agent-base": "^7.0.2", "debug": "4" @@ -10287,11 +11068,11 @@ } }, "node_modules/google-gax/node_modules/retry-request": { - "version": "7.0.1", - "license": "MIT", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-7.0.2.tgz", + "integrity": "sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w==", "dependencies": { "@types/request": "^2.48.8", - "debug": "^4.1.1", "extend": "^3.0.2", "teeny-request": "^9.0.0" }, @@ -10301,7 +11082,8 @@ }, "node_modules/google-gax/node_modules/teeny-request": { "version": "9.0.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-9.0.0.tgz", + "integrity": "sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==", "dependencies": { "http-proxy-agent": "^5.0.0", "https-proxy-agent": "^5.0.0", @@ -10315,7 +11097,8 @@ }, "node_modules/google-gax/node_modules/teeny-request/node_modules/agent-base": { "version": "6.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dependencies": { "debug": "4" }, @@ -10325,7 +11108,8 @@ }, "node_modules/google-gax/node_modules/teeny-request/node_modules/https-proxy-agent": { "version": "5.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dependencies": { "agent-base": "6", "debug": "4" @@ -10336,18 +11120,20 @@ }, "node_modules/google-gax/node_modules/uuid": { "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], - "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } }, "node_modules/google-p12-pem": { "version": "3.1.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.1.4.tgz", + "integrity": "sha512-HHuHmkLgwjdmVRngf5+gSmpkyaRI6QmOg77J8tkNBHhNEI62sGHyw4/+UkgyZEI7h84NbWprXDJ+sa3xOYFvTg==", "dependencies": { "node-forge": "^1.3.1" }, @@ -10360,7 +11146,8 @@ }, "node_modules/gopd": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -10370,7 +11157,8 @@ }, "node_modules/got": { "version": "11.8.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", "dependencies": { "@sindresorhus/is": "^4.0.0", "@szmarczak/http-timer": "^4.0.5", @@ -10393,11 +11181,13 @@ }, "node_modules/graceful-fs": { "version": "4.2.11", - "license": "ISC" + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "node_modules/gtoken": { "version": "5.3.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-5.3.2.tgz", + "integrity": "sha512-gkvEKREW7dXWF8NV8pVrKfW7WqReAmjjkMBh6lNCCGOM4ucS0r0YyXXl0r/9Yj8wcW/32ISkfc8h5mPTDbtifQ==", "dependencies": { "gaxios": "^4.0.0", "google-p12-pem": "^3.1.3", @@ -10409,8 +11199,9 @@ }, "node_modules/handlebars": { "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", "dev": true, - "license": "MIT", "dependencies": { "minimist": "^1.2.5", "neo-async": "^2.6.2", @@ -10429,14 +11220,17 @@ }, "node_modules/har-schema": { "version": "2.0.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", "engines": { "node": ">=4" } }, "node_modules/har-validator": { "version": "5.1.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", "dependencies": { "ajv": "^6.12.3", "har-schema": "^2.0.0" @@ -10447,15 +11241,17 @@ }, "node_modules/hard-rejection": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/has-ansi": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", "dependencies": { "ansi-regex": "^2.0.0" }, @@ -10465,31 +11261,35 @@ }, "node_modules/has-ansi/node_modules/ansi-regex": { "version": "2.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "engines": { "node": ">=0.10.0" } }, "node_modules/has-flag": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "engines": { "node": ">=8" } }, "node_modules/has-property-descriptors": { - "version": "1.0.1", - "license": "MIT", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dependencies": { - "get-intrinsic": "^1.2.2" + "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-proto": { - "version": "1.0.1", - "license": "MIT", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "engines": { "node": ">= 0.4" }, @@ -10499,7 +11299,8 @@ }, "node_modules/has-symbols": { "version": "1.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "engines": { "node": ">= 0.4" }, @@ -10508,10 +11309,11 @@ } }, "node_modules/has-tostringtag": { - "version": "1.0.0", - "license": "MIT", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dependencies": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -10522,19 +11324,22 @@ }, "node_modules/has-unicode": { "version": "2.0.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true }, "node_modules/has-yarn": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", "engines": { "node": ">=8" } }, "node_modules/hash-base": { "version": "3.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", "dependencies": { "inherits": "^2.0.4", "readable-stream": "^3.6.0", @@ -10546,11 +11351,13 @@ }, "node_modules/hash-stream-validation": { "version": "0.2.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/hash-stream-validation/-/hash-stream-validation-0.2.4.tgz", + "integrity": "sha512-Gjzu0Xn7IagXVkSu9cSFuK1fqzwtLwFhNhVL8IFJijRNMgUttFbBSIAzKuSIrsFMO1+g1RlsoN49zPIbwPDMGQ==" }, "node_modules/hasown": { - "version": "2.0.0", - "license": "MIT", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dependencies": { "function-bind": "^1.1.2" }, @@ -10560,7 +11367,8 @@ }, "node_modules/homedir-polyfill": { "version": "1.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", "dependencies": { "parse-passwd": "^1.0.0" }, @@ -10570,8 +11378,9 @@ }, "node_modules/hosted-git-info": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -10581,8 +11390,9 @@ }, "node_modules/hosted-git-info/node_modules/lru-cache": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -10592,17 +11402,20 @@ }, "node_modules/hosted-git-info/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/hpagent": { "version": "0.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/hpagent/-/hpagent-0.1.2.tgz", + "integrity": "sha512-ePqFXHtSQWAFXYmj+JtOTHr84iNrII4/QRlAAPPE+zqnKy4xJo7Ie1Y4kC7AdB+LxLxSTTzBMASsEcy0q8YyvQ==" }, "node_modules/html-encoding-sniffer": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", "dev": true, - "license": "MIT", "dependencies": { "whatwg-encoding": "^1.0.5" }, @@ -10610,19 +11423,37 @@ "node": ">=10" } }, + "node_modules/html-entities": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", + "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] + }, "node_modules/html-escaper": { "version": "2.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true }, "node_modules/http-cache-semantics": { "version": "4.1.1", - "license": "BSD-2-Clause" + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" }, "node_modules/http-proxy-agent": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", "dev": true, - "license": "MIT", "dependencies": { "@tootallnate/once": "1", "agent-base": "6", @@ -10634,7 +11465,8 @@ }, "node_modules/http-signature": { "version": "1.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", "dependencies": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -10647,7 +11479,8 @@ }, "node_modules/http2-wrapper": { "version": "1.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", "dependencies": { "quick-lru": "^5.1.1", "resolve-alpn": "^1.0.0" @@ -10658,7 +11491,8 @@ }, "node_modules/http2-wrapper/node_modules/quick-lru": { "version": "5.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", "engines": { "node": ">=10" }, @@ -10668,7 +11502,8 @@ }, "node_modules/https-proxy-agent": { "version": "5.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dependencies": { "agent-base": "6", "debug": "4" @@ -10679,23 +11514,26 @@ }, "node_modules/human-signals": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=10.17.0" } }, "node_modules/humanize-ms": { "version": "1.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", "dependencies": { "ms": "^2.0.0" } }, "node_modules/iconv-lite": { "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, - "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -10704,32 +11542,76 @@ } }, "node_modules/ieee754": { - "version": "1.1.13", - "license": "BSD-3-Clause" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, "node_modules/iferr": { "version": "0.1.5", - "license": "MIT" + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==" }, "node_modules/ignore": { - "version": "5.3.0", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/ignore-walk": { - "version": "3.0.4", - "license": "ISC", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz", + "integrity": "sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==", + "dev": true, "dependencies": { - "minimatch": "^3.0.4" + "minimatch": "^5.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/ignore-walk/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/ignore-walk/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" } }, "node_modules/import-fresh": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, - "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -10743,15 +11625,17 @@ }, "node_modules/import-lazy": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==", "engines": { "node": ">=4" } }, "node_modules/import-local": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "dev": true, - "license": "MIT", "dependencies": { "pkg-dir": "^4.2.0", "resolve-cwd": "^3.0.0" @@ -10768,26 +11652,31 @@ }, "node_modules/imurmurhash": { "version": "0.1.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "engines": { "node": ">=0.8.19" } }, "node_modules/indent-string": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/infer-owner": { "version": "1.0.4", - "license": "ISC" + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" }, "node_modules/inflight": { "version": "1.0.6", - "license": "ISC", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -10795,16 +11684,19 @@ }, "node_modules/inherits": { "version": "2.0.4", - "license": "ISC" + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/ini": { "version": "1.3.8", - "license": "ISC" + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, "node_modules/init-package-json": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-3.0.2.tgz", + "integrity": "sha512-YhlQPEjNFqlGdzrBfDNRLhvoSgX7iQRgSxgsNknRQ9ITXFT7UMfVMWhBTOh2Y+25lRnGrv5Xz8yZwQ3ACR6T3A==", "dev": true, - "license": "ISC", "dependencies": { "npm-package-arg": "^9.0.1", "promzard": "^0.3.0", @@ -10818,18 +11710,11 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/init-package-json/node_modules/builtins": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.0.0" - } - }, "node_modules/init-package-json/node_modules/hosted-git-info": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^7.5.1" }, @@ -10839,16 +11724,18 @@ }, "node_modules/init-package-json/node_modules/lru-cache": { "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, - "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/init-package-json/node_modules/npm-package-arg": { "version": "9.1.2", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", + "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", "dev": true, - "license": "ISC", "dependencies": { "hosted-git-info": "^5.0.0", "proc-log": "^2.0.1", @@ -10859,21 +11746,11 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/init-package-json/node_modules/validate-npm-package-name": { - "version": "4.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "builtins": "^5.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, "node_modules/inquirer": { "version": "8.2.6", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz", + "integrity": "sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==", "dev": true, - "license": "MIT", "dependencies": { "ansi-escapes": "^4.2.1", "chalk": "^4.1.1", @@ -10895,29 +11772,18 @@ "node": ">=12.0.0" } }, - "node_modules/inquirer/node_modules/wrap-ansi": { - "version": "6.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/interpret": { "version": "2.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", "engines": { "node": ">= 0.10" } }, "node_modules/ioredis": { "version": "4.28.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-4.28.5.tgz", + "integrity": "sha512-3GYo0GJtLqgNXj4YhrisLaNNvWSNwSS2wS4OELGfGxH8I69+XfNdnmV1AyN+ZqMh0i7eX+SWjrwFKDBDgfBC1A==", "dependencies": { "cluster-key-slot": "^1.1.0", "debug": "^4.3.1", @@ -10941,32 +11807,54 @@ }, "node_modules/ioredis/node_modules/p-map": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", "engines": { "node": ">=6" } }, "node_modules/ip": { - "version": "2.0.0", - "license": "MIT" + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha512-rBtCAQAJm8A110nbwn6YdveUnuZH3WrC36IwkRXxDnq53JvXA2NVQvB7IHyKomxK1MJ4VDNw3UtFDdXQ+AvLYA==" + }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/ip-address/node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" }, "node_modules/ipaddr.js": { - "version": "2.1.0", - "license": "MIT", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", "engines": { "node": ">= 10" } }, "node_modules/is": { "version": "3.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is/-/is-3.3.0.tgz", + "integrity": "sha512-nW24QBoPcFGGHJGUwnfpI7Yc5CdqWNdsyHQszVE/z2pKHXzh7FZ5GWhJqSyaQ9wMkQnsTx+kAI8bHlCX4tKdbg==", "engines": { "node": "*" } }, "node_modules/is-arguments": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -10980,12 +11868,14 @@ }, "node_modules/is-arrayish": { "version": "0.2.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true }, "node_modules/is-callable": { "version": "1.2.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "engines": { "node": ">= 0.4" }, @@ -10995,7 +11885,8 @@ }, "node_modules/is-ci": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", "dependencies": { "ci-info": "^2.0.0" }, @@ -11005,13 +11896,18 @@ }, "node_modules/is-ci/node_modules/ci-info": { "version": "2.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" }, "node_modules/is-core-module": { - "version": "2.13.1", - "license": "MIT", + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz", + "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==", "dependencies": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -11019,7 +11915,8 @@ }, "node_modules/is-docker": { "version": "2.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "bin": { "is-docker": "cli.js" }, @@ -11032,30 +11929,34 @@ }, "node_modules/is-extglob": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "engines": { "node": ">=8" } }, "node_modules/is-generator-fn": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/is-generator-function": { "version": "1.0.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -11068,8 +11969,9 @@ }, "node_modules/is-glob": { "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, - "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -11079,7 +11981,8 @@ }, "node_modules/is-installed-globally": { "version": "0.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", + "integrity": "sha512-ERNhMg+i/XgDwPIPF3u24qpajVreaiSuvpb1Uu0jugw7KKcxGyCX8cgp8P5fwTmAuXku6beDHHECdKArjlg7tw==", "dependencies": { "global-dirs": "^0.1.0", "is-path-inside": "^1.0.0" @@ -11090,42 +11993,48 @@ }, "node_modules/is-interactive": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-lambda": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true }, "node_modules/is-npm": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-3.0.0.tgz", + "integrity": "sha512-wsigDr1Kkschp2opC4G3yA6r9EgVA6NjRpWzIi9axXqeIaAATPRJc4uLujXe3Nd9uO8KoDyA4MD6aZSeXTADhA==", "engines": { "node": ">=8" } }, "node_modules/is-number": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.12.0" } }, "node_modules/is-obj": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "engines": { "node": ">=8" } }, "node_modules/is-path-inside": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g==", "dependencies": { "path-is-inside": "^1.0.1" }, @@ -11135,40 +12044,46 @@ }, "node_modules/is-plain-obj": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-plain-object": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-potential-custom-element-name": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true }, "node_modules/is-property": { "version": "1.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==" }, "node_modules/is-ssh": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz", + "integrity": "sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==", "dev": true, - "license": "MIT", "dependencies": { "protocols": "^2.0.1" } }, "node_modules/is-stream": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "engines": { "node": ">=8" }, @@ -11178,8 +12093,9 @@ }, "node_modules/is-text-path": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==", "dev": true, - "license": "MIT", "dependencies": { "text-extensions": "^1.0.0" }, @@ -11188,10 +12104,11 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.12", - "license": "MIT", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dependencies": { - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -11202,12 +12119,14 @@ }, "node_modules/is-typedarray": { "version": "1.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" }, "node_modules/is-unicode-supported": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -11217,11 +12136,13 @@ }, "node_modules/is-utf8": { "version": "0.2.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==" }, "node_modules/is-wsl": { "version": "2.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dependencies": { "is-docker": "^2.0.0" }, @@ -11231,20 +12152,24 @@ }, "node_modules/is-yarn-global": { "version": "0.3.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" }, "node_modules/isarray": { "version": "1.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, "node_modules/isexe": { "version": "2.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "node_modules/isobject": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -11259,20 +12184,23 @@ }, "node_modules/isstream": { "version": "0.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" }, "node_modules/istanbul-lib-coverage": { "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=8" } }, "node_modules/istanbul-lib-instrument": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.12.3", "@babel/parser": "^7.14.7", @@ -11286,16 +12214,18 @@ }, "node_modules/istanbul-lib-instrument/node_modules/semver": { "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/istanbul-lib-report": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^4.0.0", @@ -11307,8 +12237,9 @@ }, "node_modules/istanbul-lib-source-maps": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "debug": "^4.1.1", "istanbul-lib-coverage": "^3.0.0", @@ -11319,9 +12250,10 @@ } }, "node_modules/istanbul-reports": { - "version": "3.1.6", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" @@ -11330,10 +12262,28 @@ "node": ">=8" } }, + "node_modules/jackspeak": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz", + "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/jake": { - "version": "10.8.7", + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.1.tgz", + "integrity": "sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w==", "dev": true, - "license": "Apache-2.0", "dependencies": { "async": "^3.2.3", "chalk": "^4.0.2", @@ -11349,8 +12299,9 @@ }, "node_modules/jest": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", + "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", "dev": true, - "license": "MIT", "dependencies": { "@jest/core": "^27.5.1", "import-local": "^3.0.2", @@ -11373,8 +12324,9 @@ }, "node_modules/jest-changed-files": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", + "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", "dev": true, - "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "execa": "^5.0.0", @@ -11386,8 +12338,9 @@ }, "node_modules/jest-circus": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", + "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", "dev": true, - "license": "MIT", "dependencies": { "@jest/environment": "^27.5.1", "@jest/test-result": "^27.5.1", @@ -11415,8 +12368,9 @@ }, "node_modules/jest-cli": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", + "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", "dev": true, - "license": "MIT", "dependencies": { "@jest/core": "^27.5.1", "@jest/test-result": "^27.5.1", @@ -11448,8 +12402,9 @@ }, "node_modules/jest-config": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", + "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/core": "^7.8.0", "@jest/test-sequencer": "^27.5.1", @@ -11490,8 +12445,9 @@ }, "node_modules/jest-diff": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", "dev": true, - "license": "MIT", "dependencies": { "chalk": "^4.0.0", "diff-sequences": "^27.5.1", @@ -11504,8 +12460,9 @@ }, "node_modules/jest-docblock": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", + "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", "dev": true, - "license": "MIT", "dependencies": { "detect-newline": "^3.0.0" }, @@ -11515,8 +12472,9 @@ }, "node_modules/jest-each": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", + "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", "dev": true, - "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "chalk": "^4.0.0", @@ -11530,8 +12488,9 @@ }, "node_modules/jest-environment-jsdom": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", + "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", "dev": true, - "license": "MIT", "dependencies": { "@jest/environment": "^27.5.1", "@jest/fake-timers": "^27.5.1", @@ -11547,8 +12506,9 @@ }, "node_modules/jest-environment-node": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", + "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", "dev": true, - "license": "MIT", "dependencies": { "@jest/environment": "^27.5.1", "@jest/fake-timers": "^27.5.1", @@ -11563,16 +12523,18 @@ }, "node_modules/jest-get-type": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", "dev": true, - "license": "MIT", "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-haste-map": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", "dev": true, - "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "@types/graceful-fs": "^4.1.2", @@ -11596,8 +12558,9 @@ }, "node_modules/jest-jasmine2": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", + "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", "dev": true, - "license": "MIT", "dependencies": { "@jest/environment": "^27.5.1", "@jest/source-map": "^27.5.1", @@ -11623,8 +12586,9 @@ }, "node_modules/jest-leak-detector": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", + "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", "dev": true, - "license": "MIT", "dependencies": { "jest-get-type": "^27.5.1", "pretty-format": "^27.5.1" @@ -11635,8 +12599,9 @@ }, "node_modules/jest-matcher-utils": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", "dev": true, - "license": "MIT", "dependencies": { "chalk": "^4.0.0", "jest-diff": "^27.5.1", @@ -11649,8 +12614,9 @@ }, "node_modules/jest-message-util": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.12.13", "@jest/types": "^27.5.1", @@ -11667,85 +12633,23 @@ } }, "node_modules/jest-message-util/node_modules/@babel/code-frame": { - "version": "7.23.5", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/jest-message-util/node_modules/@babel/code-frame/node_modules/chalk": { - "version": "2.4.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-message-util/node_modules/ansi-styles": { - "version": "3.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-message-util/node_modules/color-convert": { - "version": "1.9.3", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/jest-message-util/node_modules/color-name": { - "version": "1.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-message-util/node_modules/escape-string-regexp": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/jest-message-util/node_modules/has-flag": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-message-util/node_modules/supports-color": { - "version": "5.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/jest-mock": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", "dev": true, - "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "@types/node": "*" @@ -11756,8 +12660,9 @@ }, "node_modules/jest-pnp-resolver": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" }, @@ -11772,16 +12677,18 @@ }, "node_modules/jest-regex-util": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", "dev": true, - "license": "MIT", "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-resolve": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", "dev": true, - "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "chalk": "^4.0.0", @@ -11800,8 +12707,9 @@ }, "node_modules/jest-resolve-dependencies": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", + "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", "dev": true, - "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "jest-regex-util": "^27.5.1", @@ -11813,8 +12721,9 @@ }, "node_modules/jest-runner": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", + "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", "dev": true, - "license": "MIT", "dependencies": { "@jest/console": "^27.5.1", "@jest/environment": "^27.5.1", @@ -11844,8 +12753,9 @@ }, "node_modules/jest-runtime": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", + "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", "dev": true, - "license": "MIT", "dependencies": { "@jest/environment": "^27.5.1", "@jest/fake-timers": "^27.5.1", @@ -11876,8 +12786,9 @@ }, "node_modules/jest-serializer": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", + "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*", "graceful-fs": "^4.2.9" @@ -11888,8 +12799,9 @@ }, "node_modules/jest-snapshot": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", + "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/core": "^7.7.2", "@babel/generator": "^7.7.2", @@ -11920,8 +12832,9 @@ }, "node_modules/jest-util": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", "dev": true, - "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "@types/node": "*", @@ -11936,8 +12849,9 @@ }, "node_modules/jest-validate": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", "dev": true, - "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "camelcase": "^6.2.0", @@ -11952,8 +12866,9 @@ }, "node_modules/jest-validate/node_modules/camelcase": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -11963,8 +12878,9 @@ }, "node_modules/jest-watcher": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", + "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", "dev": true, - "license": "MIT", "dependencies": { "@jest/test-result": "^27.5.1", "@jest/types": "^27.5.1", @@ -11980,8 +12896,9 @@ }, "node_modules/jest-worker": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -11993,8 +12910,9 @@ }, "node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -12007,30 +12925,34 @@ }, "node_modules/jju": { "version": "1.4.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", + "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==" }, "node_modules/jmespath": { "version": "0.16.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", + "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==", "engines": { "node": ">= 0.6.0" } }, "node_modules/jose": { - "version": "4.15.5", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.5.tgz", - "integrity": "sha512-jc7BFxgKPKi94uOvEmzlSWFFe2+vASyXaKUpdQKatWAESU2MWjDfFf0fdfc83CDKcA5QecabZeNLyfhe3yKNkg==", + "version": "4.15.7", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.7.tgz", + "integrity": "sha512-L7ioP+JAuZe8v+T5+zVI9Tx8LtU8BL7NxkyDFVMv+Qr3JW0jSoYDedLtodaXwfqMpeCyx4WXFNyu9tJt4WvC1A==", "funding": { "url": "https://github.com/sponsors/panva" } }, "node_modules/js-tokens": { "version": "4.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/js-yaml": { "version": "3.14.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -12041,16 +12963,19 @@ }, "node_modules/jsbi": { "version": "3.2.5", - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/jsbi/-/jsbi-3.2.5.tgz", + "integrity": "sha512-aBE4n43IPvjaddScbvWRA2YlTzKEynHzu7MqOyTipdHucf/VxS63ViCjxYRg86M8Rxwbt/GfzHl1kKERkt45fQ==" }, "node_modules/jsbn": { - "version": "0.1.1", - "license": "MIT" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" }, "node_modules/jsdom": { "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", "dev": true, - "license": "MIT", "dependencies": { "abab": "^2.0.5", "acorn": "^8.2.4", @@ -12093,9 +13018,10 @@ } }, "node_modules/jsdom/node_modules/acorn": { - "version": "8.11.2", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", + "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", "dev": true, - "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -12119,8 +13045,9 @@ }, "node_modules/jsesc": { "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true, - "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, @@ -12130,7 +13057,8 @@ }, "node_modules/json-bigint": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", + "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", "dependencies": { "bignumber.js": "^9.0.0" } @@ -12145,56 +13073,67 @@ }, "node_modules/json-buffer": { "version": "3.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" }, "node_modules/json-parse-better-errors": { "version": "1.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true }, "node_modules/json-parse-helpfulerror": { "version": "1.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz", + "integrity": "sha512-XgP0FGR77+QhUxjXkwOMkC94k3WtqEBfcnjWqhRd82qTat4SWKRE+9kUnynz/shm3I4ea2+qISvTIeGTNU7kJg==", "dependencies": { "jju": "^1.1.0" } }, "node_modules/json-schema": { "version": "0.4.0", - "license": "(AFL-2.1 OR BSD-3-Clause)" + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" }, "node_modules/json-schema-traverse": { "version": "0.4.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true }, "node_modules/json-stream": { "version": "1.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-stream/-/json-stream-1.0.0.tgz", + "integrity": "sha512-H/ZGY0nIAg3QcOwE1QN/rK/Fa7gJn7Ii5obwp6zyPO4xiPNwpIMjqy2gwjBEGqzkF/vSWEIBQCBuN19hYiL6Qg==" }, "node_modules/json-stringify-nice": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz", + "integrity": "sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==", "dev": true, - "license": "ISC", "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/json-stringify-safe": { "version": "5.0.1", - "license": "ISC" + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" }, "node_modules/json5": { "version": "2.2.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "bin": { "json5": "lib/cli.js" }, @@ -12204,12 +13143,14 @@ }, "node_modules/jsonc-parser": { "version": "3.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true }, "node_modules/jsonfile": { "version": "6.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dependencies": { "universalify": "^2.0.0" }, @@ -12219,14 +13160,16 @@ }, "node_modules/jsonparse": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", "engines": [ "node >= 0.2.0" - ], - "license": "MIT" + ] }, "node_modules/JSONStream": { "version": "1.3.5", - "license": "(MIT OR Apache-2.0)", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", "dependencies": { "jsonparse": "^1.2.0", "through": ">=2.2.7 <3" @@ -12240,7 +13183,8 @@ }, "node_modules/jsonwebtoken": { "version": "9.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", "dependencies": { "jws": "^3.2.2", "lodash.includes": "^4.3.0", @@ -12260,7 +13204,8 @@ }, "node_modules/jsonwebtoken/node_modules/jwa": { "version": "1.4.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", "dependencies": { "buffer-equal-constant-time": "1.0.1", "ecdsa-sig-formatter": "1.0.11", @@ -12269,7 +13214,8 @@ }, "node_modules/jsonwebtoken/node_modules/jws": { "version": "3.2.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", "dependencies": { "jwa": "^1.4.1", "safe-buffer": "^5.0.1" @@ -12277,7 +13223,8 @@ }, "node_modules/jsprim": { "version": "1.4.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", "dependencies": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -12290,17 +13237,20 @@ }, "node_modules/just-diff": { "version": "5.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/just-diff/-/just-diff-5.2.0.tgz", + "integrity": "sha512-6ufhP9SHjb7jibNFrNxyFZ6od3g+An6Ai9mhGRvcYe8UJlH0prseN64M+6ZBBUoKYHZsitDP42gAJ8+eVWr3lw==", + "dev": true }, "node_modules/just-diff-apply": { "version": "5.5.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/just-diff-apply/-/just-diff-apply-5.5.0.tgz", + "integrity": "sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw==", + "dev": true }, "node_modules/jwa": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", "dependencies": { "buffer-equal-constant-time": "1.0.1", "ecdsa-sig-formatter": "1.0.11", @@ -12309,7 +13259,8 @@ }, "node_modules/jws": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", "dependencies": { "jwa": "^2.0.0", "safe-buffer": "^5.0.1" @@ -12317,39 +13268,50 @@ }, "node_modules/keytar": { "version": "7.9.0", + "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz", + "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==", "hasInstallScript": true, - "license": "MIT", "optional": true, "dependencies": { "node-addon-api": "^4.3.0", "prebuild-install": "^7.0.1" } }, + "node_modules/keytar/node_modules/node-addon-api": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", + "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", + "optional": true + }, "node_modules/keyv": { "version": "4.5.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dependencies": { "json-buffer": "3.0.1" } }, "node_modules/kind-of": { "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/kleur": { "version": "3.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "engines": { "node": ">=6" } }, "node_modules/knex": { "version": "0.95.15", - "license": "MIT", + "resolved": "https://registry.npmjs.org/knex/-/knex-0.95.15.tgz", + "integrity": "sha512-Loq6WgHaWlmL2bfZGWPsy4l8xw4pOE+tmLGkPG0auBppxpI0UcK+GYCycJcqz9W54f2LiGewkCVLBm3Wq4ur/w==", "dependencies": { "colorette": "2.0.16", "commander": "^7.1.0", @@ -12392,9 +13354,18 @@ } } }, + "node_modules/knex/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } + }, "node_modules/knex/node_modules/debug": { "version": "4.3.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dependencies": { "ms": "2.1.2" }, @@ -12409,18 +13380,21 @@ }, "node_modules/knex/node_modules/resolve-from": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "engines": { "node": ">=8" } }, "node_modules/kuler": { "version": "2.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" }, "node_modules/latest-version": { "version": "5.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", "dependencies": { "package-json": "^6.3.0" }, @@ -12430,8 +13404,9 @@ }, "node_modules/lerna": { "version": "5.6.2", + "resolved": "https://registry.npmjs.org/lerna/-/lerna-5.6.2.tgz", + "integrity": "sha512-Y0yMPslvnBnTZi7Nrs/gDyYZYauNf61xWNCehISHIORxZmmpoluNkcWTfcyb47is5uJQCv5QJX5xKKubbs+a6w==", "dev": true, - "license": "MIT", "dependencies": { "@lerna/add": "5.6.2", "@lerna/bootstrap": "5.6.2", @@ -12466,16 +13441,18 @@ }, "node_modules/leven": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/levn": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, - "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -12486,8 +13463,9 @@ }, "node_modules/libnpmaccess": { "version": "6.0.4", + "resolved": "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-6.0.4.tgz", + "integrity": "sha512-qZ3wcfIyUoW0+qSFkMBovcTrSGJ3ZeyvpR7d5N9pEYv/kXs8sHP2wiqEIXBKLFrZlmM0kR0RJD7mtfLngtlLag==", "dev": true, - "license": "ISC", "dependencies": { "aproba": "^2.0.0", "minipass": "^3.1.1", @@ -12498,18 +13476,11 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/libnpmaccess/node_modules/builtins": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.0.0" - } - }, "node_modules/libnpmaccess/node_modules/hosted-git-info": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^7.5.1" }, @@ -12519,16 +13490,18 @@ }, "node_modules/libnpmaccess/node_modules/lru-cache": { "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, - "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/libnpmaccess/node_modules/npm-package-arg": { "version": "9.1.2", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", + "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", "dev": true, - "license": "ISC", "dependencies": { "hosted-git-info": "^5.0.0", "proc-log": "^2.0.1", @@ -12539,20 +13512,11 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/libnpmaccess/node_modules/validate-npm-package-name": { - "version": "4.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "builtins": "^5.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, "node_modules/libnpmconfig": { "version": "1.2.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/libnpmconfig/-/libnpmconfig-1.2.1.tgz", + "integrity": "sha512-9esX8rTQAHqarx6qeZqmGQKBNZR5OIbl/Ayr0qQDy3oXja2iFVQQI81R6GZ2a02bSNZ9p3YOGX1O6HHCb1X7kA==", + "deprecated": "This module is not used anymore. npm config is parsed by npm itself and by @npmcli/config", "dependencies": { "figgy-pudding": "^3.5.1", "find-up": "^3.0.0", @@ -12561,7 +13525,8 @@ }, "node_modules/libnpmconfig/node_modules/find-up": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dependencies": { "locate-path": "^3.0.0" }, @@ -12571,7 +13536,8 @@ }, "node_modules/libnpmconfig/node_modules/locate-path": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dependencies": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -12582,7 +13548,8 @@ }, "node_modules/libnpmconfig/node_modules/p-locate": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dependencies": { "p-limit": "^2.0.0" }, @@ -12592,15 +13559,17 @@ }, "node_modules/libnpmconfig/node_modules/path-exists": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "engines": { "node": ">=4" } }, "node_modules/libnpmpublish": { "version": "6.0.5", + "resolved": "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-6.0.5.tgz", + "integrity": "sha512-LUR08JKSviZiqrYTDfywvtnsnxr+tOvBU0BF8H+9frt7HMvc6Qn6F8Ubm72g5hDTHbq8qupKfDvDAln2TVPvFg==", "dev": true, - "license": "ISC", "dependencies": { "normalize-package-data": "^4.0.0", "npm-package-arg": "^9.0.1", @@ -12612,18 +13581,11 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/libnpmpublish/node_modules/builtins": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.0.0" - } - }, "node_modules/libnpmpublish/node_modules/hosted-git-info": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^7.5.1" }, @@ -12633,16 +13595,18 @@ }, "node_modules/libnpmpublish/node_modules/lru-cache": { "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, - "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/libnpmpublish/node_modules/normalize-package-data": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", + "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^5.0.0", "is-core-module": "^2.8.1", @@ -12655,8 +13619,9 @@ }, "node_modules/libnpmpublish/node_modules/npm-package-arg": { "version": "9.1.2", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", + "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", "dev": true, - "license": "ISC", "dependencies": { "hosted-git-info": "^5.0.0", "proc-log": "^2.0.1", @@ -12667,26 +13632,20 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/libnpmpublish/node_modules/validate-npm-package-name": { - "version": "4.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "builtins": "^5.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, "node_modules/lines-and-columns": { - "version": "1.2.4", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", + "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", "dev": true, - "license": "MIT" + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } }, "node_modules/load-json-file": { "version": "6.2.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-6.2.0.tgz", + "integrity": "sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.1.15", "parse-json": "^5.0.0", @@ -12699,15 +13658,17 @@ }, "node_modules/load-json-file/node_modules/type-fest": { "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } }, "node_modules/locate-path": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dependencies": { "p-locate": "^4.1.0" }, @@ -12717,7 +13678,8 @@ }, "node_modules/lodash": { "version": "4.17.21", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "node_modules/lodash.assignwith": { "version": "4.2.0", @@ -12726,72 +13688,88 @@ }, "node_modules/lodash.camelcase": { "version": "4.3.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" }, "node_modules/lodash.defaults": { "version": "4.2.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" }, "node_modules/lodash.flatten": { "version": "4.4.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==" }, "node_modules/lodash.includes": { "version": "4.3.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" }, "node_modules/lodash.isarguments": { "version": "3.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==" }, "node_modules/lodash.isboolean": { "version": "3.0.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" }, "node_modules/lodash.isinteger": { "version": "4.0.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" }, "node_modules/lodash.ismatch": { "version": "4.4.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", + "integrity": "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==", + "dev": true }, "node_modules/lodash.isnumber": { "version": "3.0.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" }, "node_modules/lodash.isplainobject": { "version": "4.0.6", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" }, "node_modules/lodash.isstring": { "version": "4.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" }, "node_modules/lodash.memoize": { "version": "4.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true }, "node_modules/lodash.merge": { "version": "4.6.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true }, "node_modules/lodash.once": { "version": "4.1.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" }, "node_modules/lodash.truncate": { "version": "4.4.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true }, "node_modules/log-symbols": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, - "license": "MIT", "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -12805,7 +13783,8 @@ }, "node_modules/logform": { "version": "2.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.6.0.tgz", + "integrity": "sha512-1ulHeNPp6k/LD8H91o7VYFBng5i1BDE7HoKxVbZiGFidS1Rj65qcywLxX+pVfAPoQJEjRdvKcusKwOupHCVOVQ==", "dependencies": { "@colors/colors": "1.6.0", "@types/triple-beam": "^1.3.2", @@ -12819,8 +13798,9 @@ } }, "node_modules/loglevel": { - "version": "1.8.1", - "license": "MIT", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.1.tgz", + "integrity": "sha512-hP3I3kCrDIMuRwAwHltphhDM1r8i55H33GgqjXbrisuJhF4kRhW1dNuxsRklp4bXl8DSdLaNLuiL4A/LWRfxvg==", "engines": { "node": ">= 0.6.0" }, @@ -12831,11 +13811,13 @@ }, "node_modules/long": { "version": "5.2.3", - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" }, "node_modules/loose-envify": { "version": "1.4.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -12845,14 +13827,16 @@ }, "node_modules/lowercase-keys": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", "engines": { "node": ">=8" } }, "node_modules/lru-cache": { "version": "5.1.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dependencies": { "yallist": "^3.0.2" } @@ -12862,6 +13846,7 @@ "resolved": "https://registry.npmjs.org/lz4/-/lz4-0.6.5.tgz", "integrity": "sha512-KSZcJU49QZOlJSItaeIU3p8WoAvkTmD9fJqeahQXNu1iQ/kR0/mQLdbrK8JY9MY8f6AhJoMrihp1nu1xDbscSQ==", "hasInstallScript": true, + "optional": true, "dependencies": { "buffer": "^5.2.1", "cuint": "^0.2.2", @@ -12872,33 +13857,11 @@ "node": ">= 0.10" } }, - "node_modules/lz4/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, "node_modules/make-dir": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, - "license": "MIT", "dependencies": { "semver": "^7.5.3" }, @@ -12911,13 +13874,15 @@ }, "node_modules/make-error": { "version": "1.3.6", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true }, "node_modules/make-fetch-happen": { "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", "dev": true, - "license": "ISC", "dependencies": { "agentkeepalive": "^4.2.1", "cacache": "^16.1.0", @@ -12942,16 +13907,18 @@ }, "node_modules/make-fetch-happen/node_modules/@tootallnate/once": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true, - "license": "MIT", "engines": { "node": ">= 10" } }, "node_modules/make-fetch-happen/node_modules/http-proxy-agent": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "dev": true, - "license": "MIT", "dependencies": { "@tootallnate/once": "2", "agent-base": "6", @@ -12963,24 +13930,27 @@ }, "node_modules/make-fetch-happen/node_modules/lru-cache": { "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, - "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/makeerror": { "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "tmpl": "1.0.5" } }, "node_modules/map-obj": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" }, @@ -12989,34 +13959,32 @@ } }, "node_modules/mariadb": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/mariadb/-/mariadb-3.2.3.tgz", - "integrity": "sha512-Hyc1ehdUJwzvvzcLU2juZS528wJ6oE8pUlpgY0BAOdpKWcdN1motuugi5lC3jkpCkFpyNknHG7Yg66KASl3aPg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/mariadb/-/mariadb-3.3.1.tgz", + "integrity": "sha512-L8bh4iuZU3J8H7Co7rQ6OY9FDLItAN1rGy8kPA7Dyxo8AiHADuuONoypKKp1pE09drs6e5LR7UW9luLZ/A4znA==", "dependencies": { - "@types/geojson": "^7946.0.10", - "@types/node": "^17.0.45", + "@types/geojson": "^7946.0.14", + "@types/node": "^20.11.17", "denque": "^2.1.0", "iconv-lite": "^0.6.3", - "lru-cache": "^10.0.1" + "lru-cache": "^10.2.0" }, "engines": { - "node": ">= 12" + "node": ">= 14" } }, - "node_modules/mariadb/node_modules/@types/node": { - "version": "17.0.45", - "license": "MIT" - }, "node_modules/mariadb/node_modules/denque": { "version": "2.1.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", "engines": { "node": ">=0.10" } }, "node_modules/mariadb/node_modules/iconv-lite": { "version": "0.6.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -13025,15 +13993,17 @@ } }, "node_modules/mariadb/node_modules/lru-cache": { - "version": "10.1.0", - "license": "ISC", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", "engines": { "node": "14 || >=16.14" } }, "node_modules/md5.js": { "version": "1.3.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", "dependencies": { "hash-base": "^3.0.0", "inherits": "^2.0.1", @@ -13042,13 +14012,15 @@ }, "node_modules/memory-pager": { "version": "1.5.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", "optional": true }, "node_modules/meow": { "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", "dev": true, - "license": "MIT", "dependencies": { "@types/minimist": "^1.2.0", "camelcase-keys": "^6.2.2", @@ -13071,13 +14043,15 @@ }, "node_modules/meow/node_modules/hosted-git-info": { "version": "2.8.9", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true }, "node_modules/meow/node_modules/read-pkg": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, - "license": "MIT", "dependencies": { "@types/normalize-package-data": "^2.4.0", "normalize-package-data": "^2.5.0", @@ -13090,8 +14064,9 @@ }, "node_modules/meow/node_modules/read-pkg-up": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, - "license": "MIT", "dependencies": { "find-up": "^4.1.0", "read-pkg": "^5.2.0", @@ -13106,16 +14081,18 @@ }, "node_modules/meow/node_modules/read-pkg-up/node_modules/type-fest": { "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } }, "node_modules/meow/node_modules/read-pkg/node_modules/normalize-package-data": { "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", @@ -13125,24 +14102,27 @@ }, "node_modules/meow/node_modules/read-pkg/node_modules/type-fest": { "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } }, "node_modules/meow/node_modules/semver": { "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver" } }, "node_modules/meow/node_modules/type-fest": { "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -13152,23 +14132,26 @@ }, "node_modules/merge-stream": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true }, "node_modules/merge2": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/micromatch": { - "version": "4.0.5", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", "dev": true, - "license": "MIT", "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -13177,7 +14160,8 @@ }, "node_modules/mime": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", "bin": { "mime": "cli.js" }, @@ -13187,14 +14171,16 @@ }, "node_modules/mime-db": { "version": "1.52.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { "version": "2.1.35", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dependencies": { "mime-db": "1.52.0" }, @@ -13204,34 +14190,39 @@ }, "node_modules/mimic-fn": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/mimic-response": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", "engines": { "node": ">=4" } }, "node_modules/min-indent": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/minimalistic-assert": { "version": "1.0.1", - "license": "ISC" + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" }, "node_modules/minimatch": { "version": "3.1.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -13241,15 +14232,17 @@ }, "node_modules/minimist": { "version": "1.2.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/minimist-options": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", "dev": true, - "license": "MIT", "dependencies": { "arrify": "^1.0.1", "is-plain-obj": "^1.1.0", @@ -13261,7 +14254,8 @@ }, "node_modules/minio": { "version": "7.1.3", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/minio/-/minio-7.1.3.tgz", + "integrity": "sha512-xPrLjWkTT5E7H7VnzOjF//xBp9I40jYB4aWhb2xTFopXXfw+Wo82DDWngdUju7Doy3Wk7R8C4LAgwhLHHnf0wA==", "dependencies": { "async": "^3.2.4", "block-stream2": "^2.1.0", @@ -13282,26 +14276,31 @@ "node": "^16 || ^18 || >=20" } }, - "node_modules/minio/node_modules/query-string": { - "version": "7.1.3", - "license": "MIT", + "node_modules/minio/node_modules/xml2js": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", + "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", "dependencies": { - "decode-uri-component": "^0.2.2", - "filter-obj": "^1.1.0", - "split-on-first": "^1.0.0", - "strict-uri-encode": "^2.0.0" + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4.0.0" + } + }, + "node_modules/minio/node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "engines": { + "node": ">=4.0" } }, "node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -13311,8 +14310,9 @@ }, "node_modules/minipass-collect": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -13322,8 +14322,9 @@ }, "node_modules/minipass-fetch": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", "dev": true, - "license": "MIT", "dependencies": { "minipass": "^3.1.6", "minipass-sized": "^1.0.3", @@ -13338,8 +14339,9 @@ }, "node_modules/minipass-flush": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -13349,8 +14351,9 @@ }, "node_modules/minipass-json-stream": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", "dev": true, - "license": "MIT", "dependencies": { "jsonparse": "^1.3.1", "minipass": "^3.0.0" @@ -13358,8 +14361,9 @@ }, "node_modules/minipass-pipeline": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -13369,8 +14373,9 @@ }, "node_modules/minipass-sized": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -13380,13 +14385,15 @@ }, "node_modules/minipass/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/minizlib": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "dev": true, - "license": "MIT", "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" @@ -13397,12 +14404,14 @@ }, "node_modules/minizlib/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/mississippi": { "version": "3.0.0", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", "dependencies": { "concat-stream": "^1.5.0", "duplexify": "^3.4.2", @@ -13421,10 +14430,11 @@ }, "node_modules/mississippi/node_modules/concat-stream": { "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "engines": [ "node >= 0.8" ], - "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "inherits": "^2.0.3", @@ -13434,7 +14444,8 @@ }, "node_modules/mississippi/node_modules/duplexify": { "version": "3.7.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", "dependencies": { "end-of-stream": "^1.0.0", "inherits": "^2.0.1", @@ -13444,7 +14455,8 @@ }, "node_modules/mississippi/node_modules/pumpify": { "version": "1.5.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", "dependencies": { "duplexify": "^3.6.0", "inherits": "^2.0.3", @@ -13453,7 +14465,8 @@ }, "node_modules/mississippi/node_modules/pumpify/node_modules/pump": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -13461,7 +14474,8 @@ }, "node_modules/mississippi/node_modules/readable-stream": { "version": "2.3.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -13474,18 +14488,21 @@ }, "node_modules/mississippi/node_modules/safe-buffer": { "version": "5.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "node_modules/mississippi/node_modules/string_decoder": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/mississippi/node_modules/through2": { "version": "2.0.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dependencies": { "readable-stream": "~2.3.6", "xtend": "~4.0.1" @@ -13493,7 +14510,8 @@ }, "node_modules/mkdirp": { "version": "1.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "bin": { "mkdirp": "bin/cmd.js" }, @@ -13503,13 +14521,15 @@ }, "node_modules/mkdirp-classic": { "version": "0.5.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", "optional": true }, "node_modules/mkdirp-infer-owner": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz", + "integrity": "sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw==", "dev": true, - "license": "ISC", "dependencies": { "chownr": "^2.0.0", "infer-owner": "^1.0.4", @@ -13521,22 +14541,25 @@ }, "node_modules/modify-values": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", + "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/moment": { - "version": "2.29.4", - "license": "MIT", + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", "engines": { "node": "*" } }, "node_modules/moment-timezone": { - "version": "0.5.43", - "license": "MIT", + "version": "0.5.45", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.45.tgz", + "integrity": "sha512-HIWmqA86KcmCAhnMAN0wuDOARV/525R2+lOLotuGFzn4HO+FH+/645z2wx0Dt3iDv6/p61SIvKnDstISainhLQ==", "dependencies": { "moment": "^2.29.4" }, @@ -13545,8 +14568,9 @@ } }, "node_modules/mongodb": { - "version": "4.17.1", - "license": "Apache-2.0", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.17.2.tgz", + "integrity": "sha512-mLV7SEiov2LHleRJPMPrK2PMyhXFZt2UQLC4VD4pnth3jMjYKHhtqfwwkkvS/NXuo/Fp3vbhaNcXrIDaLRb9Tg==", "dependencies": { "bson": "^4.7.2", "mongodb-connection-string-url": "^2.6.0", @@ -13562,7 +14586,8 @@ }, "node_modules/mongodb-connection-string-url": { "version": "2.6.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz", + "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==", "dependencies": { "@types/whatwg-url": "^8.2.1", "whatwg-url": "^11.0.0" @@ -13570,7 +14595,8 @@ }, "node_modules/mongodb-connection-string-url/node_modules/tr46": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", "dependencies": { "punycode": "^2.1.1" }, @@ -13580,14 +14606,16 @@ }, "node_modules/mongodb-connection-string-url/node_modules/webidl-conversions": { "version": "7.0.0", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", "engines": { "node": ">=12" } }, "node_modules/mongodb-connection-string-url/node_modules/whatwg-url": { "version": "11.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", "dependencies": { "tr46": "^3.0.0", "webidl-conversions": "^7.0.0" @@ -13598,7 +14626,9 @@ }, "node_modules/move-concurrently": { "version": "1.0.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==", + "deprecated": "This package is no longer supported.", "dependencies": { "aproba": "^1.1.1", "copy-concurrently": "^1.0.0", @@ -13610,11 +14640,13 @@ }, "node_modules/move-concurrently/node_modules/aproba": { "version": "1.2.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" }, "node_modules/move-concurrently/node_modules/mkdirp": { "version": "0.5.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dependencies": { "minimist": "^1.2.6" }, @@ -13624,7 +14656,9 @@ }, "node_modules/move-concurrently/node_modules/rimraf": { "version": "2.7.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dependencies": { "glob": "^7.1.3" }, @@ -13634,11 +14668,14 @@ }, "node_modules/ms": { "version": "2.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/msal": { "version": "1.4.18", - "license": "MIT", + "resolved": "https://registry.npmjs.org/msal/-/msal-1.4.18.tgz", + "integrity": "sha512-QyWMWrZqpwtK6LEqhwtbikxIWqA1EOcdMvDeIDjIXdGU29wM4orwq538sPe1+JfKDIgPmJj1Fgi5B7luaw/IyA==", + "deprecated": "This package is no longer supported. Please use @azure/msal-browser instead.", "dependencies": { "tslib": "^1.9.3" }, @@ -13646,10 +14683,16 @@ "node": ">=0.8.0" } }, + "node_modules/msal/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, "node_modules/multimatch": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz", + "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==", "dev": true, - "license": "MIT", "dependencies": { "@types/minimatch": "^3.0.3", "array-differ": "^3.0.0", @@ -13666,20 +14709,23 @@ }, "node_modules/multimatch/node_modules/arrify": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/mute-stream": { "version": "0.0.8", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true }, "node_modules/mysql2": { - "version": "3.6.5", - "license": "MIT", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.10.1.tgz", + "integrity": "sha512-6zo1T3GILsXMCex3YEu7hCz2OXLUarxFsxvFcUHWMpkPtmZLeTTWgRdc1gWyNJiYt6AxITmIf9bZDRy/jAfWew==", "dependencies": { "denque": "^2.1.0", "generate-function": "^2.3.1", @@ -13696,14 +14742,16 @@ }, "node_modules/mysql2/node_modules/denque": { "version": "2.1.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", "engines": { "node": ">=0.10" } }, "node_modules/mysql2/node_modules/iconv-lite": { "version": "0.6.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -13713,14 +14761,16 @@ }, "node_modules/mysql2/node_modules/lru-cache": { "version": "8.0.5", - "license": "ISC", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz", + "integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==", "engines": { "node": ">=16.14" } }, "node_modules/named-placeholders": { "version": "1.1.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.3.tgz", + "integrity": "sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==", "dependencies": { "lru-cache": "^7.14.1" }, @@ -13730,46 +14780,54 @@ }, "node_modules/named-placeholders/node_modules/lru-cache": { "version": "7.18.3", - "license": "ISC", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "engines": { "node": ">=12" } }, "node_modules/nan": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.19.0.tgz", - "integrity": "sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw==" + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz", + "integrity": "sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==", + "optional": true }, "node_modules/napi-build-utils": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", "optional": true }, "node_modules/native-duplexpair": { "version": "1.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/native-duplexpair/-/native-duplexpair-1.0.0.tgz", + "integrity": "sha512-E7QQoM+3jvNtlmyfqRZ0/U75VFgCls+fSkbml2MpgWkWyz3ox8Y58gNhfuziuQYGNNQAbFZJQck55LHCnCK6CA==" }, "node_modules/natural-compare": { "version": "1.4.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true }, "node_modules/negotiator": { "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/neo-async": { "version": "2.6.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true }, "node_modules/nested-error-stacks": { "version": "2.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.0.1.tgz", + "integrity": "sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A==" }, "node_modules/netmask": { "version": "2.0.2", @@ -13780,8 +14838,9 @@ } }, "node_modules/nock": { - "version": "13.4.0", - "license": "MIT", + "version": "13.5.4", + "resolved": "https://registry.npmjs.org/nock/-/nock-13.5.4.tgz", + "integrity": "sha512-yAyTfdeNJGGBFxWdzSKCBYxs5FxLbCg5X5Q4ets974hcQzG1+qCxvIyOo4j2Ry6MUlhWVMX4OoYDefAIIwupjw==", "dependencies": { "debug": "^4.1.0", "json-stringify-safe": "^5.0.1", @@ -13792,8 +14851,9 @@ } }, "node_modules/node-abi": { - "version": "3.51.0", - "license": "MIT", + "version": "3.65.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.65.0.tgz", + "integrity": "sha512-ThjYBfoDNr08AWx6hGaRbfPwxKV9kVzAzOzlLKbk2CuqXE2xnCh+cbAGnwM3t8Lq4v9rUB7VfondlkBckcJrVA==", "optional": true, "dependencies": { "semver": "^7.3.5" @@ -13804,16 +14864,19 @@ }, "node_modules/node-abort-controller": { "version": "3.1.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", + "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==" }, "node_modules/node-addon-api": { - "version": "4.3.0", - "license": "MIT", - "optional": true + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": true }, "node_modules/node-alias": { "version": "1.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/node-alias/-/node-alias-1.0.4.tgz", + "integrity": "sha512-9uG48bfkbG9BlKe8QrlxuiPNaKl3wpQn6tJbrojVqgkJuWIO28ifRKrRDrrK+ee72rJ25EaE//PhSIo8E29lLw==", "dependencies": { "chalk": "^1.1.1", "lodash": "^4.2.0" @@ -13824,21 +14887,24 @@ }, "node_modules/node-alias/node_modules/ansi-regex": { "version": "2.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "engines": { "node": ">=0.10.0" } }, "node_modules/node-alias/node_modules/ansi-styles": { "version": "2.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", "engines": { "node": ">=0.10.0" } }, "node_modules/node-alias/node_modules/chalk": { "version": "1.1.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", "dependencies": { "ansi-styles": "^2.2.1", "escape-string-regexp": "^1.0.2", @@ -13852,14 +14918,16 @@ }, "node_modules/node-alias/node_modules/escape-string-regexp": { "version": "1.0.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "engines": { "node": ">=0.8.0" } }, "node_modules/node-alias/node_modules/strip-ansi": { "version": "3.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dependencies": { "ansi-regex": "^2.0.0" }, @@ -13869,7 +14937,8 @@ }, "node_modules/node-alias/node_modules/supports-color": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", "engines": { "node": ">=0.8.0" } @@ -13884,7 +14953,8 @@ }, "node_modules/node-fetch": { "version": "2.7.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -13907,7 +14977,9 @@ }, "node_modules/node-fetch-npm": { "version": "2.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz", + "integrity": "sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg==", + "deprecated": "This module is not used anymore, npm uses minipass-fetch for its fetch implementation now", "dependencies": { "encoding": "^0.1.11", "json-parse-better-errors": "^1.0.0", @@ -13919,15 +14991,18 @@ }, "node_modules/node-fetch/node_modules/tr46": { "version": "0.0.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, "node_modules/node-fetch/node_modules/webidl-conversions": { "version": "3.0.1", - "license": "BSD-2-Clause" + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "node_modules/node-fetch/node_modules/whatwg-url": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -13935,15 +15010,17 @@ }, "node_modules/node-forge": { "version": "1.3.1", - "license": "(BSD-3-Clause OR GPL-2.0)", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", "engines": { "node": ">= 6.13.0" } }, "node_modules/node-gyp": { "version": "9.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.1.tgz", + "integrity": "sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==", "dev": true, - "license": "MIT", "dependencies": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", @@ -13965,9 +15042,10 @@ } }, "node_modules/node-gyp-build": { - "version": "4.7.1", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.1.tgz", + "integrity": "sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==", "dev": true, - "license": "MIT", "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", @@ -13976,8 +15054,9 @@ }, "node_modules/node-gyp/node_modules/nopt": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", "dev": true, - "license": "ISC", "dependencies": { "abbrev": "^1.0.0" }, @@ -13990,24 +15069,28 @@ }, "node_modules/node-int64": { "version": "0.4.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==" }, "node_modules/node-releases": { "version": "2.0.14", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true }, "node_modules/nodemailer": { - "version": "6.9.7", - "license": "MIT-0", + "version": "6.9.14", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.14.tgz", + "integrity": "sha512-Dobp/ebDKBvz91sbtRKhcznLThrKxKt97GI2FAlAyy+fk19j73Uz3sBXolVtmcXjaorivqsbbbjDY+Jkt4/bQA==", "engines": { "node": ">=6.0.0" } }, "node_modules/nopt": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", "dev": true, - "license": "ISC", "dependencies": { "abbrev": "1" }, @@ -14020,8 +15103,9 @@ }, "node_modules/normalize-package-data": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^4.0.1", "is-core-module": "^2.5.0", @@ -14034,15 +15118,17 @@ }, "node_modules/normalize-path": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/normalize-url": { "version": "6.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", "engines": { "node": ">=10" }, @@ -14052,14 +15138,16 @@ }, "node_modules/npm-bundled": { "version": "1.1.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", "dependencies": { "npm-normalize-package-bin": "^1.0.1" } }, "node_modules/npm-check-updates": { "version": "3.1.20", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-3.1.20.tgz", + "integrity": "sha512-mc9BAoOYSTwP/IvoA+ofdkWSipwRvhgC0qop1PvlMZojgzi7N/dykdxOIWrw0OlZPnEKvXkKFEuPk97LrvXE1A==", "dependencies": { "chalk": "^2.4.2", "cint": "^8.2.1", @@ -14092,7 +15180,8 @@ }, "node_modules/npm-check-updates/node_modules/agent-base": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", "dependencies": { "es6-promisify": "^5.0.0" }, @@ -14101,8 +15190,9 @@ } }, "node_modules/npm-check-updates/node_modules/agentkeepalive": { - "version": "3.5.2", - "license": "MIT", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.5.3.tgz", + "integrity": "sha512-yqXL+k5rr8+ZRpOAntkaaRgWgE5o8ESAj5DyRmVTCSoZxXmqemb9Dd7T4i5UzwuERdLAJUy6XzR9zFVuf0kzkw==", "dependencies": { "humanize-ms": "^1.2.1" }, @@ -14112,7 +15202,8 @@ }, "node_modules/npm-check-updates/node_modules/ansi-styles": { "version": "3.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dependencies": { "color-convert": "^1.9.0" }, @@ -14120,9 +15211,15 @@ "node": ">=4" } }, + "node_modules/npm-check-updates/node_modules/builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==" + }, "node_modules/npm-check-updates/node_modules/cacache": { "version": "12.0.4", - "license": "ISC", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", "dependencies": { "bluebird": "^3.5.5", "chownr": "^1.1.1", @@ -14143,7 +15240,8 @@ }, "node_modules/npm-check-updates/node_modules/chalk": { "version": "2.4.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -14155,51 +15253,60 @@ }, "node_modules/npm-check-updates/node_modules/chownr": { "version": "1.1.4", - "license": "ISC" + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" }, "node_modules/npm-check-updates/node_modules/color-convert": { "version": "1.9.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dependencies": { "color-name": "1.1.3" } }, "node_modules/npm-check-updates/node_modules/color-name": { "version": "1.1.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "node_modules/npm-check-updates/node_modules/commander": { "version": "2.20.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, "node_modules/npm-check-updates/node_modules/debug": { "version": "3.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "dependencies": { "ms": "2.0.0" } }, "node_modules/npm-check-updates/node_modules/err-code": { "version": "1.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha512-CJAN+O0/yA1CKfRn9SXOGctSpEM7DCon/r/5r2eXFMY2zCCJBasFhcM5I+1kh3Ap11FsQCX+vGHceNPvpWKhoA==" }, "node_modules/npm-check-updates/node_modules/escape-string-regexp": { "version": "1.0.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "engines": { "node": ">=0.8.0" } }, "node_modules/npm-check-updates/node_modules/fs-minipass": { "version": "1.2.7", - "license": "ISC", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", "dependencies": { "minipass": "^2.6.0" } }, "node_modules/npm-check-updates/node_modules/get-stream": { "version": "4.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "dependencies": { "pump": "^3.0.0" }, @@ -14209,22 +15316,26 @@ }, "node_modules/npm-check-updates/node_modules/has-flag": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "engines": { "node": ">=4" } }, "node_modules/npm-check-updates/node_modules/hosted-git-info": { "version": "2.8.9", - "license": "ISC" + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" }, "node_modules/npm-check-updates/node_modules/http-cache-semantics": { "version": "3.8.1", - "license": "BSD-2-Clause" + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==" }, "node_modules/npm-check-updates/node_modules/http-proxy-agent": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", + "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", "dependencies": { "agent-base": "4", "debug": "3.1.0" @@ -14235,7 +15346,8 @@ }, "node_modules/npm-check-updates/node_modules/https-proxy-agent": { "version": "2.2.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", "dependencies": { "agent-base": "^4.3.0", "debug": "^3.1.0" @@ -14244,13 +15356,18 @@ "node": ">= 4.5.0" } }, - "node_modules/npm-check-updates/node_modules/ip": { - "version": "1.1.5", - "license": "MIT" + "node_modules/npm-check-updates/node_modules/ignore-walk": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", + "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", + "dependencies": { + "minimatch": "^3.0.4" + } }, "node_modules/npm-check-updates/node_modules/make-fetch-happen": { "version": "5.0.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz", + "integrity": "sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag==", "dependencies": { "agentkeepalive": "^3.4.1", "cacache": "^12.0.0", @@ -14267,7 +15384,8 @@ }, "node_modules/npm-check-updates/node_modules/minipass": { "version": "2.9.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", "dependencies": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -14275,14 +15393,16 @@ }, "node_modules/npm-check-updates/node_modules/minizlib": { "version": "1.3.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", "dependencies": { "minipass": "^2.9.0" } }, "node_modules/npm-check-updates/node_modules/mkdirp": { "version": "0.5.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dependencies": { "minimist": "^1.2.6" }, @@ -14292,11 +15412,13 @@ }, "node_modules/npm-check-updates/node_modules/ms": { "version": "2.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/npm-check-updates/node_modules/normalize-package-data": { "version": "2.5.0", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", @@ -14306,14 +15428,16 @@ }, "node_modules/npm-check-updates/node_modules/normalize-package-data/node_modules/semver": { "version": "5.7.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "bin": { "semver": "bin/semver" } }, "node_modules/npm-check-updates/node_modules/npm-package-arg": { "version": "6.1.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz", + "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==", "dependencies": { "hosted-git-info": "^2.7.1", "osenv": "^0.1.5", @@ -14323,14 +15447,16 @@ }, "node_modules/npm-check-updates/node_modules/npm-package-arg/node_modules/semver": { "version": "5.7.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "bin": { "semver": "bin/semver" } }, "node_modules/npm-check-updates/node_modules/npm-packlist": { "version": "1.4.8", - "license": "ISC", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", + "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", "dependencies": { "ignore-walk": "^3.0.1", "npm-bundled": "^1.0.1", @@ -14339,7 +15465,8 @@ }, "node_modules/npm-check-updates/node_modules/npm-pick-manifest": { "version": "3.0.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz", + "integrity": "sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw==", "dependencies": { "figgy-pudding": "^3.5.1", "npm-package-arg": "^6.0.0", @@ -14348,14 +15475,16 @@ }, "node_modules/npm-check-updates/node_modules/npm-pick-manifest/node_modules/semver": { "version": "5.7.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "bin": { "semver": "bin/semver" } }, "node_modules/npm-check-updates/node_modules/npm-registry-fetch": { "version": "4.0.7", - "license": "ISC", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-4.0.7.tgz", + "integrity": "sha512-cny9v0+Mq6Tjz+e0erFAB+RYJ/AVGzkjnISiobqP8OWj9c9FLoZZu8/SPSKJWE17F1tk4018wfjV+ZbIbqC7fQ==", "dependencies": { "bluebird": "^3.5.1", "figgy-pudding": "^3.4.1", @@ -14368,7 +15497,8 @@ }, "node_modules/npm-check-updates/node_modules/pacote": { "version": "9.5.12", - "license": "MIT", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-9.5.12.tgz", + "integrity": "sha512-BUIj/4kKbwWg4RtnBncXPJd15piFSVNpTzY0rysSr3VnMowTYgkGKcaHrbReepAkjTr8lH2CVWRi58Spg2CicQ==", "dependencies": { "bluebird": "^3.5.3", "cacache": "^12.0.2", @@ -14404,14 +15534,16 @@ }, "node_modules/npm-check-updates/node_modules/pacote/node_modules/semver": { "version": "5.7.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "bin": { "semver": "bin/semver" } }, "node_modules/npm-check-updates/node_modules/promise-retry": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-1.1.1.tgz", + "integrity": "sha512-StEy2osPr28o17bIW776GtwO6+Q+M9zPiZkYfosciUUMYqjhU/ffwRAH0zN2+uvGyUsn8/YICIHRzLbPacpZGw==", "dependencies": { "err-code": "^1.0.0", "retry": "^0.10.0" @@ -14422,14 +15554,17 @@ }, "node_modules/npm-check-updates/node_modules/retry": { "version": "0.10.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", + "integrity": "sha512-ZXUSQYTHdl3uS7IuCehYfMzKyIDBNoAuUblvy5oGO5UJSUTmStUUVPXbA9Qxd173Bgre53yCQczQuHgRWAdvJQ==", "engines": { "node": "*" } }, "node_modules/npm-check-updates/node_modules/rimraf": { "version": "2.7.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dependencies": { "glob": "^7.1.3" }, @@ -14439,14 +15574,16 @@ }, "node_modules/npm-check-updates/node_modules/semver": { "version": "6.3.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } }, "node_modules/npm-check-updates/node_modules/socks": { "version": "2.3.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.3.3.tgz", + "integrity": "sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA==", "dependencies": { "ip": "1.1.5", "smart-buffer": "^4.1.0" @@ -14458,7 +15595,8 @@ }, "node_modules/npm-check-updates/node_modules/socks-proxy-agent": { "version": "4.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz", + "integrity": "sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg==", "dependencies": { "agent-base": "~4.2.1", "socks": "~2.3.2" @@ -14469,7 +15607,8 @@ }, "node_modules/npm-check-updates/node_modules/socks-proxy-agent/node_modules/agent-base": { "version": "4.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", + "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", "dependencies": { "es6-promisify": "^5.0.0" }, @@ -14479,14 +15618,16 @@ }, "node_modules/npm-check-updates/node_modules/ssri": { "version": "6.0.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", "dependencies": { "figgy-pudding": "^3.5.1" } }, "node_modules/npm-check-updates/node_modules/supports-color": { "version": "5.5.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dependencies": { "has-flag": "^3.0.0" }, @@ -14496,7 +15637,8 @@ }, "node_modules/npm-check-updates/node_modules/tar": { "version": "4.4.19", - "license": "ISC", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", + "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", "dependencies": { "chownr": "^1.1.4", "fs-minipass": "^1.2.7", @@ -14510,9 +15652,34 @@ "node": ">=4.5" } }, + "node_modules/npm-check-updates/node_modules/unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/npm-check-updates/node_modules/unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/npm-check-updates/node_modules/validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", + "dependencies": { + "builtins": "^1.0.3" + } + }, "node_modules/npm-check-updates/node_modules/which": { "version": "1.3.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dependencies": { "isexe": "^2.0.0" }, @@ -14522,12 +15689,14 @@ }, "node_modules/npm-check-updates/node_modules/y18n": { "version": "4.0.3", - "license": "ISC" + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" }, "node_modules/npm-install-checks": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-5.0.0.tgz", + "integrity": "sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "semver": "^7.1.1" }, @@ -14537,12 +15706,14 @@ }, "node_modules/npm-normalize-package-bin": { "version": "1.0.1", - "license": "ISC" + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" }, "node_modules/npm-package-arg": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.1.tgz", + "integrity": "sha512-CsP95FhWQDwNqiYS+Q0mZ7FAEDytDZAkNxQqea6IaAFJTAY9Lhhqyl0irU/6PMc7BGfUmnsbHcqxJD7XuVM/rg==", "dev": true, - "license": "ISC", "dependencies": { "hosted-git-info": "^3.0.6", "semver": "^7.0.0", @@ -14552,10 +15723,17 @@ "node": ">=10" } }, + "node_modules/npm-package-arg/node_modules/builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", + "dev": true + }, "node_modules/npm-package-arg/node_modules/hosted-git-info": { "version": "3.0.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", + "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -14565,8 +15743,9 @@ }, "node_modules/npm-package-arg/node_modules/lru-cache": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -14574,15 +15753,26 @@ "node": ">=10" } }, + "node_modules/npm-package-arg/node_modules/validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", + "dev": true, + "dependencies": { + "builtins": "^1.0.3" + } + }, "node_modules/npm-package-arg/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/npm-packlist": { "version": "5.1.3", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.3.tgz", + "integrity": "sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==", "dev": true, - "license": "ISC", "dependencies": { "glob": "^8.0.1", "ignore-walk": "^5.0.1", @@ -14598,16 +15788,19 @@ }, "node_modules/npm-packlist/node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/npm-packlist/node_modules/glob": { "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -14622,21 +15815,11 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/npm-packlist/node_modules/ignore-walk": { - "version": "5.0.1", - "dev": true, - "license": "ISC", - "dependencies": { - "minimatch": "^5.0.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, "node_modules/npm-packlist/node_modules/minimatch": { "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -14646,8 +15829,9 @@ }, "node_modules/npm-packlist/node_modules/npm-bundled": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-2.0.1.tgz", + "integrity": "sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==", "dev": true, - "license": "ISC", "dependencies": { "npm-normalize-package-bin": "^2.0.0" }, @@ -14657,16 +15841,18 @@ }, "node_modules/npm-packlist/node_modules/npm-normalize-package-bin": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", "dev": true, - "license": "ISC", "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/npm-pick-manifest": { "version": "7.0.2", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.2.tgz", + "integrity": "sha512-gk37SyRmlIjvTfcYl6RzDbSmS9Y4TOBXfsPnoYqTHARNgWbyDiCSMLUpmALDj4jjcTZpURiEfsSHJj9k7EV4Rw==", "dev": true, - "license": "ISC", "dependencies": { "npm-install-checks": "^5.0.0", "npm-normalize-package-bin": "^2.0.0", @@ -14677,18 +15863,11 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/npm-pick-manifest/node_modules/builtins": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.0.0" - } - }, "node_modules/npm-pick-manifest/node_modules/hosted-git-info": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^7.5.1" }, @@ -14698,24 +15877,27 @@ }, "node_modules/npm-pick-manifest/node_modules/lru-cache": { "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, - "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/npm-pick-manifest/node_modules/npm-normalize-package-bin": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", "dev": true, - "license": "ISC", "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/npm-pick-manifest/node_modules/npm-package-arg": { "version": "9.1.2", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", + "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", "dev": true, - "license": "ISC", "dependencies": { "hosted-git-info": "^5.0.0", "proc-log": "^2.0.1", @@ -14726,21 +15908,11 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/npm-pick-manifest/node_modules/validate-npm-package-name": { - "version": "4.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "builtins": "^5.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, "node_modules/npm-registry-fetch": { "version": "13.3.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz", + "integrity": "sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw==", "dev": true, - "license": "ISC", "dependencies": { "make-fetch-happen": "^10.0.6", "minipass": "^3.1.6", @@ -14754,18 +15926,11 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/npm-registry-fetch/node_modules/builtins": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.0.0" - } - }, "node_modules/npm-registry-fetch/node_modules/hosted-git-info": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^7.5.1" }, @@ -14775,16 +15940,18 @@ }, "node_modules/npm-registry-fetch/node_modules/lru-cache": { "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, - "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/npm-registry-fetch/node_modules/npm-package-arg": { "version": "9.1.2", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", + "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", "dev": true, - "license": "ISC", "dependencies": { "hosted-git-info": "^5.0.0", "proc-log": "^2.0.1", @@ -14795,21 +15962,11 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/npm-registry-fetch/node_modules/validate-npm-package-name": { - "version": "4.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "builtins": "^5.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, "node_modules/npm-run-path": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, - "license": "MIT", "dependencies": { "path-key": "^3.0.0" }, @@ -14819,8 +15976,10 @@ }, "node_modules/npmlog": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "deprecated": "This package is no longer supported.", "dev": true, - "license": "ISC", "dependencies": { "are-we-there-yet": "^3.0.0", "console-control-strings": "^1.1.0", @@ -14832,15 +15991,17 @@ } }, "node_modules/nwsapi": { - "version": "2.2.7", - "dev": true, - "license": "MIT" + "version": "2.2.10", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.10.tgz", + "integrity": "sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ==", + "dev": true }, "node_modules/nx": { "version": "15.9.7", + "resolved": "https://registry.npmjs.org/nx/-/nx-15.9.7.tgz", + "integrity": "sha512-1qlEeDjX9OKZEryC8i4bA+twNg+lB5RKrozlNwWx/lLJHqWPUfvUTvxh+uxlPYL9KzVReQjUuxMLFMsHNqWUrA==", "dev": true, "hasInstallScript": true, - "license": "MIT", "dependencies": { "@nrwl/cli": "15.9.7", "@nrwl/tao": "15.9.7", @@ -14907,23 +16068,15 @@ }, "node_modules/nx/node_modules/argparse": { "version": "2.0.1", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/nx/node_modules/axios": { - "version": "1.6.2", - "dev": true, - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "node_modules/nx/node_modules/enquirer": { "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", "dev": true, - "license": "MIT", "dependencies": { "ansi-colors": "^4.1.1" }, @@ -14933,8 +16086,9 @@ }, "node_modules/nx/node_modules/fast-glob": { "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", "dev": true, - "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -14948,8 +16102,9 @@ }, "node_modules/nx/node_modules/fs-extra": { "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -14961,8 +16116,10 @@ }, "node_modules/nx/node_modules/glob": { "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -14977,8 +16134,9 @@ }, "node_modules/nx/node_modules/js-yaml": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -14986,18 +16144,23 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/nx/node_modules/lines-and-columns": { - "version": "2.0.4", + "node_modules/nx/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "license": "MIT", + "dependencies": { + "yallist": "^4.0.0" + }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=10" } }, "node_modules/nx/node_modules/minimatch": { "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -15005,36 +16168,55 @@ "node": "*" } }, - "node_modules/nx/node_modules/open": { - "version": "8.4.2", + "node_modules/nx/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, - "license": "MIT", "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10" } }, - "node_modules/nx/node_modules/tslib": { - "version": "2.6.2", - "dev": true, - "license": "0BSD" - }, "node_modules/nx/node_modules/v8-compile-cache": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "node_modules/nx/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, - "license": "MIT" + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/nx/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/nx/node_modules/yargs": { "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, - "license": "MIT", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -15050,16 +16232,18 @@ }, "node_modules/nx/node_modules/yargs-parser": { "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, - "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/nx/node_modules/yargs/node_modules/cliui": { "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, - "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -15071,39 +16255,48 @@ }, "node_modules/oauth-1.0a": { "version": "2.2.6", - "license": "MIT" + "resolved": "https://registry.npmjs.org/oauth-1.0a/-/oauth-1.0a-2.2.6.tgz", + "integrity": "sha512-6bkxv3N4Gu5lty4viIcIAnq5GbxECviMBeKR3WX/q87SPQ8E8aursPZUtsXDnxCs787af09WPRBLqYrf/lwoYQ==" }, "node_modules/oauth-sign": { "version": "0.9.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", "engines": { "node": "*" } }, "node_modules/object-assign": { "version": "4.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "engines": { "node": ">=0.10.0" } }, "node_modules/object-hash": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", "engines": { "node": ">= 6" } }, "node_modules/object-inspect": { - "version": "1.13.1", - "license": "MIT", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object-keys": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "engines": { "node": ">= 0.4" } @@ -15118,22 +16311,25 @@ }, "node_modules/once": { "version": "1.4.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dependencies": { "wrappy": "1" } }, "node_modules/one-time": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", "dependencies": { "fn.name": "1.x.x" } }, "node_modules/onetime": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, - "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" }, @@ -15145,14 +16341,16 @@ } }, "node_modules/open": { - "version": "7.4.2", - "license": "MIT", + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "dependencies": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" }, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -15197,16 +16395,17 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/optionator": { - "version": "0.9.3", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, - "license": "MIT", "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" }, "engines": { "node": ">= 0.8.0" @@ -15214,8 +16413,9 @@ }, "node_modules/ora": { "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", "dev": true, - "license": "MIT", "dependencies": { "bl": "^4.1.0", "chalk": "^4.1.0", @@ -15234,64 +16434,36 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ora/node_modules/bl": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/ora/node_modules/buffer": { - "version": "5.7.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, "node_modules/oracledb": { - "version": "6.2.0", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/oracledb/-/oracledb-6.5.1.tgz", + "integrity": "sha512-JzoSGei1wnvmqgKnAZK1W650mzHTZXx+7hClV4mwsbY/ZjUtrpnojNJMYJ2jkOhj7XG5oJPfXc4GqDKaNzkxqg==", "hasInstallScript": true, - "license": "(Apache-2.0 OR UPL-1.0)", "engines": { "node": ">=14.6" } }, "node_modules/os-homedir": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", "engines": { "node": ">=0.10.0" } }, "node_modules/os-tmpdir": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "engines": { "node": ">=0.10.0" } }, "node_modules/osenv": { "version": "0.1.5", - "license": "ISC", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "deprecated": "This package is no longer supported.", "dependencies": { "os-homedir": "^1.0.0", "os-tmpdir": "^1.0.0" @@ -15299,14 +16471,16 @@ }, "node_modules/p-cancelable": { "version": "2.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", "engines": { "node": ">=8" } }, "node_modules/p-event": { "version": "4.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz", + "integrity": "sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==", "dependencies": { "p-timeout": "^3.1.0" }, @@ -15319,14 +16493,16 @@ }, "node_modules/p-finally": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", "engines": { "node": ">=4" } }, "node_modules/p-limit": { "version": "2.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dependencies": { "p-try": "^2.0.0" }, @@ -15339,7 +16515,8 @@ }, "node_modules/p-locate": { "version": "4.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dependencies": { "p-limit": "^2.2.0" }, @@ -15349,8 +16526,9 @@ }, "node_modules/p-map": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, - "license": "MIT", "dependencies": { "aggregate-error": "^3.0.0" }, @@ -15363,16 +16541,18 @@ }, "node_modules/p-map-series": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map-series/-/p-map-series-2.1.0.tgz", + "integrity": "sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/p-pipe": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-3.1.0.tgz", + "integrity": "sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" }, @@ -15382,8 +16562,9 @@ }, "node_modules/p-queue": { "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", "dev": true, - "license": "MIT", "dependencies": { "eventemitter3": "^4.0.4", "p-timeout": "^3.2.0" @@ -15397,15 +16578,17 @@ }, "node_modules/p-reduce": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", + "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/p-timeout": { "version": "3.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", "dependencies": { "p-finally": "^1.0.0" }, @@ -15415,15 +16598,17 @@ }, "node_modules/p-try": { "version": "2.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "engines": { "node": ">=6" } }, "node_modules/p-waterfall": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-waterfall/-/p-waterfall-2.1.1.tgz", + "integrity": "sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw==", "dev": true, - "license": "MIT", "dependencies": { "p-reduce": "^2.0.0" }, @@ -15453,9 +16638,9 @@ } }, "node_modules/pac-proxy-agent/node_modules/agent-base": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", - "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "dependencies": { "debug": "^4.3.4" }, @@ -15488,11 +16673,11 @@ } }, "node_modules/pac-proxy-agent/node_modules/socks-proxy-agent": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz", - "integrity": "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.3.tgz", + "integrity": "sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A==", "dependencies": { - "agent-base": "^7.0.2", + "agent-base": "^7.1.1", "debug": "^4.3.4", "socks": "^2.7.1" }, @@ -15514,7 +16699,8 @@ }, "node_modules/package-json": { "version": "6.5.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", "dependencies": { "got": "^9.6.0", "registry-auth-token": "^4.0.0", @@ -15525,16 +16711,23 @@ "node": ">=8" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==" + }, "node_modules/package-json/node_modules/@sindresorhus/is": { "version": "0.14.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", "engines": { "node": ">=6" } }, "node_modules/package-json/node_modules/@szmarczak/http-timer": { "version": "1.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", "dependencies": { "defer-to-connect": "^1.0.1" }, @@ -15544,7 +16737,8 @@ }, "node_modules/package-json/node_modules/cacheable-request": { "version": "6.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", "dependencies": { "clone-response": "^1.0.2", "get-stream": "^5.1.0", @@ -15560,7 +16754,8 @@ }, "node_modules/package-json/node_modules/cacheable-request/node_modules/get-stream": { "version": "5.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dependencies": { "pump": "^3.0.0" }, @@ -15573,7 +16768,8 @@ }, "node_modules/package-json/node_modules/decompress-response": { "version": "3.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", "dependencies": { "mimic-response": "^1.0.0" }, @@ -15583,11 +16779,13 @@ }, "node_modules/package-json/node_modules/defer-to-connect": { "version": "1.1.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" }, "node_modules/package-json/node_modules/get-stream": { "version": "4.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "dependencies": { "pump": "^3.0.0" }, @@ -15597,7 +16795,8 @@ }, "node_modules/package-json/node_modules/got": { "version": "9.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", "dependencies": { "@sindresorhus/is": "^0.14.0", "@szmarczak/http-timer": "^1.1.2", @@ -15617,65 +16816,70 @@ }, "node_modules/package-json/node_modules/got/node_modules/lowercase-keys": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", "engines": { "node": ">=0.10.0" } }, "node_modules/package-json/node_modules/json-buffer": { "version": "3.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==" }, "node_modules/package-json/node_modules/keyv": { "version": "3.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", "dependencies": { "json-buffer": "3.0.0" } }, "node_modules/package-json/node_modules/normalize-url": { "version": "4.5.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", "engines": { "node": ">=8" } }, "node_modules/package-json/node_modules/p-cancelable": { "version": "1.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", "engines": { "node": ">=6" } }, "node_modules/package-json/node_modules/responselike": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", "dependencies": { "lowercase-keys": "^1.0.0" } }, "node_modules/package-json/node_modules/responselike/node_modules/lowercase-keys": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", "engines": { "node": ">=0.10.0" } }, "node_modules/package-json/node_modules/semver": { "version": "6.3.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } }, - "node_modules/packet-reader": { - "version": "1.0.0", - "license": "MIT" - }, "node_modules/pacote": { "version": "13.6.2", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.6.2.tgz", + "integrity": "sha512-Gu8fU3GsvOPkak2CkbojR7vjs3k3P9cA6uazKTHdsdV0gpCEQq2opelnEv30KRQWgVzP5Vd/5umjcedma3MKtg==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/git": "^3.0.0", "@npmcli/installed-package-contents": "^1.0.7", @@ -15706,18 +16910,11 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/pacote/node_modules/builtins": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.0.0" - } - }, "node_modules/pacote/node_modules/hosted-git-info": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^7.5.1" }, @@ -15727,16 +16924,18 @@ }, "node_modules/pacote/node_modules/lru-cache": { "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, - "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/pacote/node_modules/npm-package-arg": { "version": "9.1.2", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", + "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", "dev": true, - "license": "ISC", "dependencies": { "hosted-git-info": "^5.0.0", "proc-log": "^2.0.1", @@ -15747,17 +16946,6 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/pacote/node_modules/validate-npm-package-name": { - "version": "4.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "builtins": "^5.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, "node_modules/pad-left": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/pad-left/-/pad-left-2.1.0.tgz", @@ -15771,7 +16959,8 @@ }, "node_modules/parallel-transform": { "version": "1.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", "dependencies": { "cyclist": "^1.0.1", "inherits": "^2.0.3", @@ -15780,7 +16969,8 @@ }, "node_modules/parallel-transform/node_modules/readable-stream": { "version": "2.3.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -15793,19 +16983,22 @@ }, "node_modules/parallel-transform/node_modules/safe-buffer": { "version": "5.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "node_modules/parallel-transform/node_modules/string_decoder": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/parent-module": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, - "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -15815,8 +17008,9 @@ }, "node_modules/parse-conflict-json": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/parse-conflict-json/-/parse-conflict-json-2.0.2.tgz", + "integrity": "sha512-jDbRGb00TAPFsKWCpZZOT93SxVP9nONOSgES3AevqRq/CHvavEBvKAjxX9p5Y5F0RZLxH9Ufd9+RwtCsa+lFDA==", "dev": true, - "license": "ISC", "dependencies": { "json-parse-even-better-errors": "^2.3.1", "just-diff": "^5.0.1", @@ -15828,8 +17022,9 @@ }, "node_modules/parse-json": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -15843,85 +17038,131 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/parse-json/node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, "node_modules/parse-passwd": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", "engines": { "node": ">=0.10.0" } }, "node_modules/parse-path": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-7.0.0.tgz", + "integrity": "sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==", "dev": true, - "license": "MIT", "dependencies": { "protocols": "^2.0.0" } }, "node_modules/parse-url": { "version": "8.1.0", + "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-8.1.0.tgz", + "integrity": "sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==", "dev": true, - "license": "MIT", "dependencies": { "parse-path": "^7.0.0" } }, "node_modules/parse5": { "version": "6.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true }, "node_modules/path-exists": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "engines": { "node": ">=8" } }, "node_modules/path-is-absolute": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "engines": { "node": ">=0.10.0" } }, "node_modules/path-is-inside": { "version": "1.0.2", - "license": "(WTFPL OR MIT)" + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==" }, "node_modules/path-key": { "version": "3.1.1", - "dev": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "engines": { "node": ">=8" } }, "node_modules/path-parse": { "version": "1.0.7", - "license": "MIT" + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-scurry/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "engines": { + "node": ">=16 || 14 >=14.17" + } }, "node_modules/path-type": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/performance-now": { "version": "2.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" }, "node_modules/pg": { - "version": "8.11.3", - "license": "MIT", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.12.0.tgz", + "integrity": "sha512-A+LHUSnwnxrnL/tZ+OLfqR1SxLN3c/pgDztZ47Rpbsd4jUytsTtwQo/TLPRzPJMp/1pbhYVhH9cuSZLAajNfjQ==", "dependencies": { - "buffer-writer": "2.0.0", - "packet-reader": "1.0.0", - "pg-connection-string": "^2.6.2", - "pg-pool": "^3.6.1", - "pg-protocol": "^1.6.0", + "pg-connection-string": "^2.6.4", + "pg-pool": "^3.6.2", + "pg-protocol": "^1.6.1", "pg-types": "^2.1.0", "pgpass": "1.x" }, @@ -15942,34 +17183,40 @@ }, "node_modules/pg-cloudflare": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz", + "integrity": "sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==", "optional": true }, "node_modules/pg-connection-string": { "version": "2.5.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", + "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==" }, "node_modules/pg-int8": { "version": "1.0.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", "engines": { "node": ">=4.0.0" } }, "node_modules/pg-pool": { - "version": "3.6.1", - "license": "MIT", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.2.tgz", + "integrity": "sha512-Htjbg8BlwXqSBQ9V8Vjtc+vzf/6fVUuak/3/XXKA9oxZprwW3IMDQTGHP+KDmVL7rtd+R1QjbnCFPuTHm3G4hg==", "peerDependencies": { "pg": ">=8.0" } }, "node_modules/pg-protocol": { - "version": "1.6.0", - "license": "MIT" + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.1.tgz", + "integrity": "sha512-jPIlvgoD63hrEuihvIg+tJhoGjUsLPn6poJY9N5CnlPd91c2T18T/9zBtLxZSb1EhYxBRoZJtzScCaWlYLtktg==" }, "node_modules/pg-types": { "version": "2.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", "dependencies": { "pg-int8": "1.0.1", "postgres-array": "~2.0.0", @@ -15982,32 +17229,37 @@ } }, "node_modules/pg/node_modules/pg-connection-string": { - "version": "2.6.2", - "license": "MIT" + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.4.tgz", + "integrity": "sha512-v+Z7W/0EO707aNMaAEfiGnGL9sxxumwLl2fJvCQtMn9Fxsg+lPpPkdcyBSv/KFgpGdYkMfn+EI1Or2EHjpgLCA==" }, "node_modules/pgpass": { "version": "1.0.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", + "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", "dependencies": { "split2": "^4.1.0" } }, "node_modules/pgpass/node_modules/split2": { "version": "4.2.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", "engines": { "node": ">= 10.x" } }, "node_modules/picocolors": { - "version": "1.0.0", - "dev": true, - "license": "ISC" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "dev": true }, "node_modules/picomatch": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8.6" }, @@ -16017,8 +17269,9 @@ }, "node_modules/pify": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -16028,16 +17281,18 @@ }, "node_modules/pirates": { "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/pkg-dir": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, - "license": "MIT", "dependencies": { "find-up": "^4.0.0" }, @@ -16047,32 +17302,45 @@ }, "node_modules/pop-iterate": { "version": "1.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/pop-iterate/-/pop-iterate-1.0.1.tgz", + "integrity": "sha512-HRCx4+KJE30JhX84wBN4+vja9bNfysxg1y28l0DuJmkoaICiv2ZSilKddbS48pq50P8d2erAhqDLbp47yv3MbQ==" + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "engines": { + "node": ">= 0.4" + } }, "node_modules/postgres-array": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", "engines": { "node": ">=4" } }, "node_modules/postgres-bytea": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", + "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", "engines": { "node": ">=0.10.0" } }, "node_modules/postgres-date": { "version": "1.0.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", "engines": { "node": ">=0.10.0" } }, "node_modules/postgres-interval": { "version": "1.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", "dependencies": { "xtend": "^4.0.0" }, @@ -16081,8 +17349,9 @@ } }, "node_modules/prebuild-install": { - "version": "7.1.1", - "license": "MIT", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz", + "integrity": "sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==", "optional": true, "dependencies": { "detect-libc": "^2.0.0", @@ -16107,23 +17376,26 @@ }, "node_modules/prelude-ls": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.8.0" } }, "node_modules/prepend-http": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", "engines": { "node": ">=4" } }, "node_modules/prettier": { "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true, - "license": "MIT", "bin": { "prettier": "bin-prettier.js" }, @@ -16136,8 +17408,9 @@ }, "node_modules/prettier-linter-helpers": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", "dev": true, - "license": "MIT", "dependencies": { "fast-diff": "^1.1.2" }, @@ -16147,8 +17420,9 @@ }, "node_modules/pretty-format": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", @@ -16160,8 +17434,9 @@ }, "node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -16171,58 +17446,59 @@ }, "node_modules/priorityqueuejs": { "version": "1.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/priorityqueuejs/-/priorityqueuejs-1.0.0.tgz", + "integrity": "sha512-lg++21mreCEOuGWTbO5DnJKAdxfjrdN0S9ysoW9SzdSJvbkWpkaDdpG/cdsPCsEnoLUwmd9m3WcZhngW7yKA2g==" }, "node_modules/proc-log": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", + "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==", "dev": true, - "license": "ISC", "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/process": { - "version": "0.11.10", - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, "node_modules/process-nextick-args": { "version": "2.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "node_modules/progress": { "version": "2.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "engines": { "node": ">=0.4.0" } }, "node_modules/promise-all-reject-late": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz", + "integrity": "sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==", "dev": true, - "license": "ISC", "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/promise-call-limit": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/promise-call-limit/-/promise-call-limit-1.0.2.tgz", + "integrity": "sha512-1vTUnfI2hzui8AEIixbdAJlFY4LFDXqQswy/2eOlThAscXCY4It8FdVuI0fMJGAB2aWGbdQf/gv0skKYXmdrHA==", "dev": true, - "license": "ISC", "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/promise-inflight": { "version": "1.0.1", - "license": "ISC" + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==" }, "node_modules/promise-retry": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", "dev": true, - "license": "MIT", "dependencies": { "err-code": "^2.0.2", "retry": "^0.12.0" @@ -16233,7 +17509,8 @@ }, "node_modules/prompts": { "version": "2.4.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" @@ -16244,38 +17521,43 @@ }, "node_modules/promzard": { "version": "0.3.0", + "resolved": "https://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz", + "integrity": "sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw==", "dev": true, - "license": "ISC", "dependencies": { "read": "1" } }, "node_modules/propagate": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", + "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", "engines": { "node": ">= 8" } }, "node_modules/proto-list": { "version": "1.2.4", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true }, "node_modules/proto3-json-serializer": { - "version": "2.0.0", - "license": "Apache-2.0", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-2.0.2.tgz", + "integrity": "sha512-SAzp/O4Yh02jGdRc+uIrGoe87dkN/XtwxfZ4ZyafJHymd79ozp5VG5nyZ7ygqPM5+cpLDjjGnYFUkngonyDPOQ==", "dependencies": { - "protobufjs": "^7.0.0" + "protobufjs": "^7.2.5" }, "engines": { "node": ">=14.0.0" } }, "node_modules/protobufjs": { - "version": "7.2.5", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.2.tgz", + "integrity": "sha512-RXyHaACeqXeqAKGLDl68rQKbmObRsTIn4TYVUUug1KfS47YWCo5MacGITEryugIgZqORCvJWEk4l449POg5Txg==", "hasInstallScript": true, - "license": "BSD-3-Clause", "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", @@ -16294,18 +17576,16 @@ "node": ">=12.0.0" } }, - "node_modules/protobufjs/node_modules/long": { - "version": "5.2.3", - "license": "Apache-2.0" - }, "node_modules/protocols": { "version": "2.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz", + "integrity": "sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==", + "dev": true }, "node_modules/protoduck": { "version": "5.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/protoduck/-/protoduck-5.0.1.tgz", + "integrity": "sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg==", "dependencies": { "genfun": "^5.0.0" } @@ -16329,9 +17609,9 @@ } }, "node_modules/proxy-agent/node_modules/agent-base": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", - "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "dependencies": { "debug": "^4.3.4" }, @@ -16372,11 +17652,11 @@ } }, "node_modules/proxy-agent/node_modules/socks-proxy-agent": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz", - "integrity": "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.3.tgz", + "integrity": "sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A==", "dependencies": { - "agent-base": "^7.0.2", + "agent-base": "^7.1.1", "debug": "^4.3.4", "socks": "^2.7.1" }, @@ -16386,19 +17666,23 @@ }, "node_modules/proxy-from-env": { "version": "1.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, "node_modules/pseudomap": { "version": "1.0.2", - "license": "ISC" + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" }, "node_modules/psl": { "version": "1.9.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" }, "node_modules/pump": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -16406,7 +17690,8 @@ }, "node_modules/pumpify": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-2.0.1.tgz", + "integrity": "sha512-m7KOje7jZxrmutanlkS1daj1dS6z6BgslzOXmcSEpIlCxM3VJH7lG5QLeck/6hgF6F4crFf01UtQmNsJfweTAw==", "dependencies": { "duplexify": "^4.1.1", "inherits": "^2.0.3", @@ -16415,55 +17700,78 @@ }, "node_modules/punycode": { "version": "2.3.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "engines": { "node": ">=6" } }, "node_modules/python-struct": { "version": "1.1.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/python-struct/-/python-struct-1.1.3.tgz", + "integrity": "sha512-UsI/mNvk25jRpGKYI38Nfbv84z48oiIWwG67DLVvjRhy8B/0aIK+5Ju5WOHgw/o9rnEmbAS00v4rgKFQeC332Q==", "dependencies": { "long": "^4.0.0" } }, "node_modules/python-struct/node_modules/long": { "version": "4.0.0", - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" }, "node_modules/q": { "version": "1.5.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "deprecated": "You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.\n\n(For a CapTP with native promises, see @endo/eventual-send and @endo/captp)", "engines": { "node": ">=0.6.0", "teleport": ">=0.2.0" } }, "node_modules/qs": { - "version": "6.11.2", - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.0.4" - }, + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", "engines": { "node": ">=0.6" + } + }, + "node_modules/query-string": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz", + "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==", + "dependencies": { + "decode-uri-component": "^0.2.2", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + }, + "engines": { + "node": ">=6" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/querystring": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", "engines": { "node": ">=0.4.x" } }, "node_modules/querystringify": { "version": "2.2.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" }, "node_modules/queue-microtask": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true, "funding": [ { @@ -16478,20 +17786,21 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/quick-lru": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/rc": { "version": "1.2.8", - "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -16504,7 +17813,8 @@ }, "node_modules/rc-config-loader": { "version": "2.0.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-2.0.5.tgz", + "integrity": "sha512-T464K2MQlnNWOblUDIglpFhyN+zYJq7jSlL++/N0hUkcmIXeNFumwXFVdtf8qhUGohn4RYQ0wdi74R575I44PQ==", "dependencies": { "debug": "^4.1.1", "js-yaml": "^3.12.0", @@ -16517,21 +17827,24 @@ }, "node_modules/rc-config-loader/node_modules/path-exists": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "engines": { "node": ">=4" } }, "node_modules/rc/node_modules/strip-json-comments": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "engines": { "node": ">=0.10.0" } }, "node_modules/react": { "version": "17.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" @@ -16542,13 +17855,15 @@ }, "node_modules/react-is": { "version": "17.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true }, "node_modules/read": { "version": "1.0.7", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", + "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", "dev": true, - "license": "ISC", "dependencies": { "mute-stream": "~0.0.4" }, @@ -16558,16 +17873,19 @@ }, "node_modules/read-cmd-shim": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-3.0.1.tgz", + "integrity": "sha512-kEmDUoYf/CDy8yZbLTmhB1X9kkjf9Q80PCNsDMb7ufrGd6zZSQA1+UyjrO+pZm5K/S4OXCWJeiIt1JA8kAsa6g==", "dev": true, - "license": "ISC", "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/read-package-json": { "version": "5.0.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.2.tgz", + "integrity": "sha512-BSzugrt4kQ/Z0krro8zhTwV1Kd79ue25IhNN/VtHFy1mG/6Tluyi+msc0UpwaoQzxSHa28mntAjIZY6kEgfR9Q==", + "deprecated": "This package is no longer supported. Please use @npmcli/package-json instead.", "dev": true, - "license": "ISC", "dependencies": { "glob": "^8.0.1", "json-parse-even-better-errors": "^2.3.1", @@ -16580,8 +17898,9 @@ }, "node_modules/read-package-json-fast": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", + "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", "dev": true, - "license": "ISC", "dependencies": { "json-parse-even-better-errors": "^2.3.0", "npm-normalize-package-bin": "^1.0.1" @@ -16592,16 +17911,19 @@ }, "node_modules/read-package-json/node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/read-package-json/node_modules/glob": { "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -16618,8 +17940,9 @@ }, "node_modules/read-package-json/node_modules/hosted-git-info": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^7.5.1" }, @@ -16629,16 +17952,18 @@ }, "node_modules/read-package-json/node_modules/lru-cache": { "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, - "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/read-package-json/node_modules/minimatch": { "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -16648,8 +17973,9 @@ }, "node_modules/read-package-json/node_modules/normalize-package-data": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", + "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^5.0.0", "is-core-module": "^2.8.1", @@ -16662,16 +17988,18 @@ }, "node_modules/read-package-json/node_modules/npm-normalize-package-bin": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", "dev": true, - "license": "ISC", "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/read-pkg": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", "dev": true, - "license": "MIT", "dependencies": { "load-json-file": "^4.0.0", "normalize-package-data": "^2.3.2", @@ -16683,8 +18011,9 @@ }, "node_modules/read-pkg-up": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==", "dev": true, - "license": "MIT", "dependencies": { "find-up": "^2.0.0", "read-pkg": "^3.0.0" @@ -16695,8 +18024,9 @@ }, "node_modules/read-pkg-up/node_modules/find-up": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", "dev": true, - "license": "MIT", "dependencies": { "locate-path": "^2.0.0" }, @@ -16706,8 +18036,9 @@ }, "node_modules/read-pkg-up/node_modules/locate-path": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", "dev": true, - "license": "MIT", "dependencies": { "p-locate": "^2.0.0", "path-exists": "^3.0.0" @@ -16718,8 +18049,9 @@ }, "node_modules/read-pkg-up/node_modules/p-limit": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, - "license": "MIT", "dependencies": { "p-try": "^1.0.0" }, @@ -16729,8 +18061,9 @@ }, "node_modules/read-pkg-up/node_modules/p-locate": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", "dev": true, - "license": "MIT", "dependencies": { "p-limit": "^1.1.0" }, @@ -16740,29 +18073,33 @@ }, "node_modules/read-pkg-up/node_modules/p-try": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/read-pkg-up/node_modules/path-exists": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/read-pkg/node_modules/hosted-git-info": { "version": "2.8.9", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true }, "node_modules/read-pkg/node_modules/load-json-file": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.1.2", "parse-json": "^4.0.0", @@ -16775,8 +18112,9 @@ }, "node_modules/read-pkg/node_modules/normalize-package-data": { "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", @@ -16786,8 +18124,9 @@ }, "node_modules/read-pkg/node_modules/parse-json": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", "dev": true, - "license": "MIT", "dependencies": { "error-ex": "^1.3.1", "json-parse-better-errors": "^1.0.1" @@ -16798,8 +18137,9 @@ }, "node_modules/read-pkg/node_modules/path-type": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, - "license": "MIT", "dependencies": { "pify": "^3.0.0" }, @@ -16809,31 +18149,35 @@ }, "node_modules/read-pkg/node_modules/pify": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/read-pkg/node_modules/semver": { "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver" } }, "node_modules/read-pkg/node_modules/strip-bom": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/readable-stream": { "version": "3.6.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -16845,8 +18189,10 @@ }, "node_modules/readdir-scoped-modules": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", + "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", + "deprecated": "This functionality has been moved to @npmcli/fs", "dev": true, - "license": "ISC", "dependencies": { "debuglog": "^1.0.1", "dezalgo": "^1.0.0", @@ -16856,7 +18202,8 @@ }, "node_modules/rechoir": { "version": "0.7.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz", + "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==", "dependencies": { "resolve": "^1.9.0" }, @@ -16866,8 +18213,9 @@ }, "node_modules/redent": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", "dev": true, - "license": "MIT", "dependencies": { "indent-string": "^4.0.0", "strip-indent": "^3.0.0" @@ -16878,18 +18226,21 @@ }, "node_modules/redis-commands": { "version": "1.7.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz", + "integrity": "sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ==" }, "node_modules/redis-errors": { "version": "1.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", + "integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==", "engines": { "node": ">=4" } }, "node_modules/redis-parser": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", + "integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==", "dependencies": { "redis-errors": "^1.0.0" }, @@ -16898,14 +18249,16 @@ } }, "node_modules/regenerator-runtime": { - "version": "0.14.0", - "license": "MIT", + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", "peer": true }, "node_modules/regexpp": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" }, @@ -16915,7 +18268,8 @@ }, "node_modules/registry-auth-token": { "version": "4.2.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz", + "integrity": "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==", "dependencies": { "rc": "1.2.8" }, @@ -16925,7 +18279,8 @@ }, "node_modules/registry-url": { "version": "5.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", "dependencies": { "rc": "^1.2.8" }, @@ -16941,22 +18296,96 @@ "node": ">=0.10" } }, + "node_modules/request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/request/node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/request/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" + }, + "node_modules/request/node_modules/tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dependencies": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/request/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, "node_modules/require-directory": { "version": "2.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "engines": { "node": ">=0.10.0" } }, "node_modules/require-from-string": { "version": "2.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "engines": { "node": ">=0.10.0" } }, "node_modules/requireg": { "version": "0.2.2", + "resolved": "https://registry.npmjs.org/requireg/-/requireg-0.2.2.tgz", + "integrity": "sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg==", "dependencies": { "nested-error-stacks": "~2.0.1", "rc": "~1.2.7", @@ -16968,18 +18397,21 @@ }, "node_modules/requireg/node_modules/resolve": { "version": "1.7.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", + "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", "dependencies": { "path-parse": "^1.0.5" } }, "node_modules/requires-port": { "version": "1.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" }, "node_modules/resolve": { "version": "1.22.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -16994,12 +18426,14 @@ }, "node_modules/resolve-alpn": { "version": "1.2.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" }, "node_modules/resolve-cwd": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, - "license": "MIT", "dependencies": { "resolve-from": "^5.0.0" }, @@ -17009,31 +18443,35 @@ }, "node_modules/resolve-cwd/node_modules/resolve-from": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/resolve-from": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/resolve.exports": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", + "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/responselike": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", "dependencies": { "lowercase-keys": "^2.0.0" }, @@ -17043,8 +18481,9 @@ }, "node_modules/restore-cursor": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, - "license": "MIT", "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" @@ -17055,6 +18494,8 @@ }, "node_modules/rethinkdb": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/rethinkdb/-/rethinkdb-2.4.2.tgz", + "integrity": "sha512-6DzwqEpFc8cqesAdo07a845oBRxLiHvWzopTKBo/uY2ypGWIsJQFJk3wjRDtSEhczxJqLS0jnf37rwgzYAw8NQ==", "dependencies": { "bluebird": ">= 2.3.2 < 3" }, @@ -17064,19 +18505,22 @@ }, "node_modules/rethinkdb/node_modules/bluebird": { "version": "2.11.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz", + "integrity": "sha512-UfFSr22dmHPQqPP9XWHRhq+gWnHCYguQGkXQlbyPtW5qTnhFWA8/iXg765tH0cAjy7l/zPJ1aBTO0g5XgA7kvQ==" }, "node_modules/retry": { "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "dev": true, - "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/retry-request": { "version": "4.2.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-4.2.2.tgz", + "integrity": "sha512-xA93uxUD/rogV7BV59agW/JHPGXeREMWiZc9jhcwY4YdZ7QOtC7qbomYg0n4wyk2lJhggjvKvhNX8wln/Aldhg==", "dependencies": { "debug": "^4.1.1", "extend": "^3.0.2" @@ -17087,8 +18531,9 @@ }, "node_modules/reusify": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, - "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -17096,7 +18541,9 @@ }, "node_modules/rimraf": { "version": "3.0.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dependencies": { "glob": "^7.1.3" }, @@ -17109,7 +18556,8 @@ }, "node_modules/ripemd160": { "version": "2.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", "dependencies": { "hash-base": "^3.0.0", "inherits": "^2.0.1" @@ -17117,18 +18565,22 @@ }, "node_modules/rootpath": { "version": "0.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/rootpath/-/rootpath-0.1.2.tgz", + "integrity": "sha512-R3wLbuAYejpxQjL/SjXo1Cjv4wcJECnMRT/FlcCfTwCBhaji9rWaRCoVEQ1SPiTJ4kKK+yh+bZLAV7SCafoDDw==" }, "node_modules/run-async": { "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.12.0" } }, "node_modules/run-parallel": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, "funding": [ { @@ -17144,37 +18596,36 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } }, "node_modules/run-queue": { "version": "1.0.3", - "license": "ISC", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==", "dependencies": { "aproba": "^1.1.1" } }, "node_modules/run-queue/node_modules/aproba": { "version": "1.2.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" }, "node_modules/rxjs": { "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "dev": true, - "license": "Apache-2.0", "dependencies": { "tslib": "^2.1.0" } }, - "node_modules/rxjs/node_modules/tslib": { - "version": "2.6.2", - "dev": true, - "license": "0BSD" - }, "node_modules/safe-buffer": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "funding": [ { "type": "github", @@ -17188,28 +18639,31 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/safe-stable-stringify": { "version": "2.4.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", "engines": { "node": ">=10" } }, "node_modules/safer-buffer": { "version": "2.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/sax": { "version": "1.2.1", - "license": "ISC" + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", + "integrity": "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==" }, "node_modules/saxes": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", "dev": true, - "license": "ISC", "dependencies": { "xmlchars": "^2.2.0" }, @@ -17219,24 +18673,26 @@ }, "node_modules/scmp": { "version": "2.1.0", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/scmp/-/scmp-2.1.0.tgz", + "integrity": "sha512-o/mRQGk9Rcer/jEEw/yw4mwo3EU/NvYvp577/Btqrym9Qy5/MdWGBqipbALgd2lrdWTJ5/gqDusxfnQBxOxT2Q==" }, "node_modules/secure-json-parse": { "version": "2.7.0", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", + "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==" }, "node_modules/semaphore": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semaphore/-/semaphore-1.1.0.tgz", + "integrity": "sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA==", "engines": { "node": ">=0.8.0" } }, "node_modules/semver": { - "version": "7.5.4", - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "bin": { "semver": "bin/semver.js" }, @@ -17246,7 +18702,8 @@ }, "node_modules/semver-diff": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", + "integrity": "sha512-gL8F8L4ORwsS0+iQ34yCYv///jsOq0ZL7WP55d1HnJ32o7tyFYEFQZQA22mrLIacZdU6xecaBBZ+uEiffGNyXw==", "dependencies": { "semver": "^5.0.3" }, @@ -17256,45 +18713,39 @@ }, "node_modules/semver-diff/node_modules/semver": { "version": "5.7.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "bin": { "semver": "bin/semver" } }, "node_modules/semver-utils": { "version": "1.1.4", - "license": "APACHEv2" - }, - "node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver/node_modules/yallist": { - "version": "4.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/semver-utils/-/semver-utils-1.1.4.tgz", + "integrity": "sha512-EjnoLE5OGmDAVV/8YDoN5KiajNadjzIp9BAHOhYeQHt7j0UWxjmgsx4YD48wp4Ue1Qogq38F1GNUJNqF1kKKxA==" }, "node_modules/seq-queue": { - "version": "0.0.5" + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz", + "integrity": "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==" }, "node_modules/set-blocking": { "version": "2.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true }, "node_modules/set-function-length": { - "version": "1.1.1", - "license": "MIT", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dependencies": { - "define-data-property": "^1.1.1", - "get-intrinsic": "^1.2.1", + "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.0" + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -17302,7 +18753,8 @@ }, "node_modules/sha.js": { "version": "2.4.11", - "license": "(MIT AND BSD-3-Clause)", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -17313,8 +18765,9 @@ }, "node_modules/shallow-clone": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, - "license": "MIT", "dependencies": { "kind-of": "^6.0.2" }, @@ -17324,8 +18777,8 @@ }, "node_modules/shebang-command": { "version": "2.0.0", - "dev": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -17335,19 +18788,24 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", - "dev": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "engines": { "node": ">=8" } }, "node_modules/side-channel": { - "version": "1.0.4", - "license": "MIT", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -17355,10 +18813,13 @@ }, "node_modules/signal-exit": { "version": "3.0.7", - "license": "ISC" + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, "node_modules/simple-concat": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", "funding": [ { "type": "github", @@ -17373,11 +18834,12 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "optional": true }, "node_modules/simple-get": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", "funding": [ { "type": "github", @@ -17392,7 +18854,6 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "optional": true, "dependencies": { "decompress-response": "^6.0.0", @@ -17401,35 +18862,42 @@ } }, "node_modules/simple-lru-cache": { - "version": "0.0.2" + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/simple-lru-cache/-/simple-lru-cache-0.0.2.tgz", + "integrity": "sha512-uEv/AFO0ADI7d99OHDmh1QfYzQk/izT1vCmu/riQfh7qjBVUUgRT87E5s5h7CxWCA/+YoZerykpEthzVrW3LIw==" }, "node_modules/simple-swizzle": { "version": "0.2.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", "dependencies": { "is-arrayish": "^0.3.1" } }, "node_modules/simple-swizzle/node_modules/is-arrayish": { "version": "0.3.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" }, "node_modules/sisteransi": { "version": "1.0.5", - "license": "MIT" + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" }, "node_modules/slash": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/slice-ansi": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -17444,37 +18912,37 @@ }, "node_modules/smart-buffer": { "version": "4.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" } }, "node_modules/snowflake-sdk": { - "version": "1.9.1", - "license": "Apache-2.0", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/snowflake-sdk/-/snowflake-sdk-1.11.0.tgz", + "integrity": "sha512-CwjjFfdQDZ1dtYJ0k5ON/fPA7U18GXCk6zap7qfSiTsaY7TfUXOX85ZPTzhEc1zx1M7NittuUH8+mePv2PsQRg==", "dependencies": { "@aws-sdk/client-s3": "^3.388.0", + "@aws-sdk/node-http-handler": "^3.374.0", "@azure/storage-blob": "^12.11.0", - "@google-cloud/storage": "^6.9.3", + "@google-cloud/storage": "^7.7.0", "@techteamer/ocsp": "1.0.1", - "agent-base": "^6.0.2", "asn1.js-rfc2560": "^5.0.0", "asn1.js-rfc5280": "^3.0.0", - "axios": "^1.6.0", + "axios": "^1.6.8", "big-integer": "^1.6.43", "bignumber.js": "^9.1.2", "binascii": "0.0.2", "bn.js": "^5.2.1", "browser-request": "^0.3.3", - "debug": "^3.2.6", "expand-tilde": "^2.0.2", - "extend": "^3.0.2", "fast-xml-parser": "^4.2.5", "fastest-levenshtein": "^1.0.16", "generic-pool": "^3.8.2", - "glob": "^7.1.6", - "https-proxy-agent": "^5.0.1", + "glob": "^10.0.0", + "https-proxy-agent": "^7.0.2", "jsonwebtoken": "^9.0.0", "mime-types": "^2.1.29", "mkdirp": "^1.0.3", @@ -17483,7 +18951,6 @@ "open": "^7.3.1", "python-struct": "^1.1.3", "simple-lru-cache": "^0.0.2", - "tmp": "^0.2.1", "uuid": "^8.3.2", "winston": "^3.1.0" }, @@ -17491,151 +18958,213 @@ "asn1.js": "^5.4.1" } }, - "node_modules/snowflake-sdk/node_modules/@google-cloud/projectify": { - "version": "3.0.0", - "license": "Apache-2.0", + "node_modules/snowflake-sdk/node_modules/@google-cloud/paginator": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-5.0.2.tgz", + "integrity": "sha512-DJS3s0OVH4zFDB1PzjxAsHqJT6sKVbRwwML0ZBP9PbU7Yebtu/7SWMRzvO2J3nUi9pRNITCfu4LJeooM2w4pjg==", + "dependencies": { + "arrify": "^2.0.0", + "extend": "^3.0.2" + }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" + } + }, + "node_modules/snowflake-sdk/node_modules/@google-cloud/projectify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-4.0.0.tgz", + "integrity": "sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==", + "engines": { + "node": ">=14.0.0" } }, "node_modules/snowflake-sdk/node_modules/@google-cloud/promisify": { - "version": "3.0.1", - "license": "Apache-2.0", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-4.0.0.tgz", + "integrity": "sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==", "engines": { - "node": ">=12" + "node": ">=14" } }, "node_modules/snowflake-sdk/node_modules/@google-cloud/storage": { - "version": "6.12.0", - "license": "Apache-2.0", + "version": "7.11.2", + "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-7.11.2.tgz", + "integrity": "sha512-jJOrKyOdujfrSF8EJODW9yY6hqO4jSTk6eVITEj2gsD43BSXuDlnMlLOaBUQhXL29VGnSkxDgYl5tlFhA6LKSA==", "dependencies": { - "@google-cloud/paginator": "^3.0.7", - "@google-cloud/projectify": "^3.0.0", - "@google-cloud/promisify": "^3.0.0", + "@google-cloud/paginator": "^5.0.0", + "@google-cloud/projectify": "^4.0.0", + "@google-cloud/promisify": "^4.0.0", "abort-controller": "^3.0.0", "async-retry": "^1.3.3", - "compressible": "^2.0.12", - "duplexify": "^4.0.0", - "ent": "^2.2.0", - "extend": "^3.0.2", - "fast-xml-parser": "^4.2.2", - "gaxios": "^5.0.0", - "google-auth-library": "^8.0.1", + "duplexify": "^4.1.3", + "fast-xml-parser": "^4.3.0", + "gaxios": "^6.0.2", + "google-auth-library": "^9.6.3", + "html-entities": "^2.5.2", "mime": "^3.0.0", - "mime-types": "^2.0.8", "p-limit": "^3.0.1", - "retry-request": "^5.0.0", - "teeny-request": "^8.0.0", + "retry-request": "^7.0.0", + "teeny-request": "^9.0.0", "uuid": "^8.0.0" }, "engines": { - "node": ">=12" + "node": ">=14" } }, "node_modules/snowflake-sdk/node_modules/@tootallnate/once": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "engines": { "node": ">= 10" } }, + "node_modules/snowflake-sdk/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/snowflake-sdk/node_modules/arrify": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", "engines": { "node": ">=8" } }, - "node_modules/snowflake-sdk/node_modules/axios": { - "version": "1.6.2", - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, "node_modules/snowflake-sdk/node_modules/bn.js": { "version": "5.2.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" }, - "node_modules/snowflake-sdk/node_modules/debug": { - "version": "3.2.7", - "license": "MIT", + "node_modules/snowflake-sdk/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dependencies": { - "ms": "^2.1.1" + "balanced-match": "^1.0.0" + } + }, + "node_modules/snowflake-sdk/node_modules/fast-xml-parser": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.0.tgz", + "integrity": "sha512-kLY3jFlwIYwBNDojclKsNAC12sfD6NwW74QB2CoNGPvtVxjliYehVunB3HYyNi+n4Tt1dAcgwYvmKF/Z18flqg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + }, + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + } + ], + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" } }, "node_modules/snowflake-sdk/node_modules/gaxios": { - "version": "5.1.3", - "license": "Apache-2.0", + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.6.0.tgz", + "integrity": "sha512-bpOZVQV5gthH/jVCSuYuokRo2bTKOcuBiVWpjmTn6C5Agl5zclGfTljuGsQZxwwDBkli+YhZhP4TdlqTnhOezQ==", "dependencies": { "extend": "^3.0.2", - "https-proxy-agent": "^5.0.0", + "https-proxy-agent": "^7.0.1", "is-stream": "^2.0.0", - "node-fetch": "^2.6.9" + "node-fetch": "^2.6.9", + "uuid": "^9.0.1" }, "engines": { - "node": ">=12" + "node": ">=14" + } + }, + "node_modules/snowflake-sdk/node_modules/gaxios/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" } }, "node_modules/snowflake-sdk/node_modules/gcp-metadata": { - "version": "5.3.0", - "license": "Apache-2.0", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", + "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", "dependencies": { - "gaxios": "^5.0.0", + "gaxios": "^6.0.0", "json-bigint": "^1.0.0" }, "engines": { - "node": ">=12" + "node": ">=14" + } + }, + "node_modules/snowflake-sdk/node_modules/glob": { + "version": "10.4.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.2.tgz", + "integrity": "sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/snowflake-sdk/node_modules/google-auth-library": { - "version": "8.9.0", - "license": "Apache-2.0", + "version": "9.11.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.11.0.tgz", + "integrity": "sha512-epX3ww/mNnhl6tL45EQ/oixsY8JLEgUFoT4A5E/5iAR4esld9Kqv6IJGk7EmGuOgDvaarwF95hU2+v7Irql9lw==", "dependencies": { - "arrify": "^2.0.0", "base64-js": "^1.3.0", "ecdsa-sig-formatter": "^1.0.11", - "fast-text-encoding": "^1.0.0", - "gaxios": "^5.0.0", - "gcp-metadata": "^5.3.0", - "gtoken": "^6.1.0", - "jws": "^4.0.0", - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/snowflake-sdk/node_modules/google-p12-pem": { - "version": "4.0.1", - "license": "MIT", - "dependencies": { - "node-forge": "^1.3.1" - }, - "bin": { - "gp12-pem": "build/src/bin/gp12-pem.js" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/snowflake-sdk/node_modules/gtoken": { - "version": "6.1.2", - "license": "MIT", - "dependencies": { - "gaxios": "^5.0.1", - "google-p12-pem": "^4.0.0", + "gaxios": "^6.1.1", + "gcp-metadata": "^6.1.0", + "gtoken": "^7.0.0", "jws": "^4.0.0" }, "engines": { - "node": ">=12.0.0" + "node": ">=14" + } + }, + "node_modules/snowflake-sdk/node_modules/gtoken": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", + "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", + "dependencies": { + "gaxios": "^6.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14.0.0" } }, "node_modules/snowflake-sdk/node_modules/http-proxy-agent": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "dependencies": { "@tootallnate/once": "2", "agent-base": "6", @@ -17645,34 +19174,70 @@ "node": ">= 6" } }, - "node_modules/snowflake-sdk/node_modules/http-proxy-agent/node_modules/debug": { - "version": "4.3.4", - "license": "MIT", + "node_modules/snowflake-sdk/node_modules/http-proxy-agent/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dependencies": { - "ms": "2.1.2" + "debug": "4" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">= 6.0.0" } }, - "node_modules/snowflake-sdk/node_modules/lru-cache": { - "version": "6.0.0", - "license": "ISC", + "node_modules/snowflake-sdk/node_modules/https-proxy-agent": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", "dependencies": { - "yallist": "^4.0.0" + "agent-base": "^7.0.2", + "debug": "4" }, "engines": { - "node": ">=10" + "node": ">= 14" + } + }, + "node_modules/snowflake-sdk/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/snowflake-sdk/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/snowflake-sdk/node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/snowflake-sdk/node_modules/p-limit": { "version": "3.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -17684,83 +19249,86 @@ } }, "node_modules/snowflake-sdk/node_modules/retry-request": { - "version": "5.0.2", - "license": "MIT", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-7.0.2.tgz", + "integrity": "sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w==", "dependencies": { - "debug": "^4.1.1", - "extend": "^3.0.2" + "@types/request": "^2.48.8", + "extend": "^3.0.2", + "teeny-request": "^9.0.0" }, "engines": { - "node": ">=12" - } - }, - "node_modules/snowflake-sdk/node_modules/retry-request/node_modules/debug": { - "version": "4.3.4", - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=14" } }, "node_modules/snowflake-sdk/node_modules/teeny-request": { - "version": "8.0.3", - "license": "Apache-2.0", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-9.0.0.tgz", + "integrity": "sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==", "dependencies": { "http-proxy-agent": "^5.0.0", "https-proxy-agent": "^5.0.0", - "node-fetch": "^2.6.1", + "node-fetch": "^2.6.9", "stream-events": "^1.0.5", "uuid": "^9.0.0" }, "engines": { - "node": ">=12" + "node": ">=14" + } + }, + "node_modules/snowflake-sdk/node_modules/teeny-request/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/snowflake-sdk/node_modules/teeny-request/node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" } }, "node_modules/snowflake-sdk/node_modules/teeny-request/node_modules/uuid": { "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], - "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } }, - "node_modules/snowflake-sdk/node_modules/uuid": { - "version": "8.3.2", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/snowflake-sdk/node_modules/yallist": { - "version": "4.0.0", - "license": "ISC" - }, "node_modules/socks": { - "version": "2.7.1", - "license": "MIT", + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", "dependencies": { - "ip": "^2.0.0", + "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" }, "engines": { - "node": ">= 10.13.0", + "node": ">= 10.0.0", "npm": ">= 3.0.0" } }, "node_modules/socks-proxy-agent": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", "dev": true, - "license": "MIT", "dependencies": { "agent-base": "^6.0.2", "debug": "^4.3.3", @@ -17772,8 +19340,9 @@ }, "node_modules/sort-keys": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-4.2.0.tgz", + "integrity": "sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg==", "dev": true, - "license": "MIT", "dependencies": { "is-plain-obj": "^2.0.0" }, @@ -17786,24 +19355,27 @@ }, "node_modules/sort-keys/node_modules/is-plain-obj": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "devOptional": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/source-map-support": { "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, - "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -17811,7 +19383,8 @@ }, "node_modules/sparse-bitfield": { "version": "3.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", "optional": true, "dependencies": { "memory-pager": "^1.0.2" @@ -17819,39 +19392,45 @@ }, "node_modules/spawn-please": { "version": "0.3.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/spawn-please/-/spawn-please-0.3.0.tgz", + "integrity": "sha512-gf9GJwAWhW0gnQp0dGui+nhIVICx1lGM1Ox95HzfaDBOQTauqlvHFLpo4vtAB3E377SA0YMIyRCh1w0S6R5m2w==", "engines": { "node": ">=0.10.0" } }, "node_modules/spdx-correct": { "version": "3.2.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" } }, "node_modules/spdx-exceptions": { - "version": "2.3.0", - "license": "CC-BY-3.0" + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==" }, "node_modules/spdx-expression-parse": { "version": "3.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" } }, "node_modules/spdx-license-ids": { - "version": "3.0.16", - "license": "CC0-1.0" + "version": "3.0.18", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz", + "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==" }, "node_modules/split": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "dev": true, - "license": "MIT", "dependencies": { "through": "2" }, @@ -17861,33 +19440,38 @@ }, "node_modules/split-on-first": { "version": "1.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", "engines": { "node": ">=6" } }, "node_modules/split2": { "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", "dev": true, - "license": "ISC", "dependencies": { "readable-stream": "^3.0.0" } }, "node_modules/sprintf-js": { "version": "1.0.3", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" }, "node_modules/sqlstring": { "version": "2.3.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz", + "integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==", "engines": { "node": ">= 0.6" } }, "node_modules/sshpk": { "version": "1.18.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", "dependencies": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -17908,10 +19492,16 @@ "node": ">=0.10.0" } }, + "node_modules/sshpk/node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" + }, "node_modules/ssri": { "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.1.1" }, @@ -17921,15 +19511,17 @@ }, "node_modules/stack-trace": { "version": "0.0.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", "engines": { "node": "*" } }, "node_modules/stack-utils": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, - "license": "MIT", "dependencies": { "escape-string-regexp": "^2.0.0" }, @@ -17939,19 +19531,22 @@ }, "node_modules/stack-utils/node_modules/escape-string-regexp": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/standard-as-callback": { "version": "2.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz", + "integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==" }, "node_modules/stoppable": { "version": "1.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz", + "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==", "engines": { "node": ">=4", "npm": ">=6" @@ -17959,7 +19554,8 @@ }, "node_modules/stream-each": { "version": "1.2.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", "dependencies": { "end-of-stream": "^1.1.0", "stream-shift": "^1.0.0" @@ -17967,7 +19563,8 @@ }, "node_modules/stream-events": { "version": "1.0.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", + "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", "dependencies": { "stubs": "^3.0.0" } @@ -17981,31 +19578,36 @@ } }, "node_modules/stream-shift": { - "version": "1.0.1", - "license": "MIT" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==" }, "node_modules/stream2asynciter": { "version": "1.0.3", - "license": "ISC" + "resolved": "https://registry.npmjs.org/stream2asynciter/-/stream2asynciter-1.0.3.tgz", + "integrity": "sha512-9/dEZW+LQjuW6ub5hmWi4n9Pn8W8qA8k7NAE1isecesA164e73xTdy1CJ3S9o9YS+O21HuiK7T+4uS7FgKDy4w==" }, "node_modules/strict-uri-encode": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==", "engines": { "node": ">=4" } }, "node_modules/string_decoder": { "version": "1.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dependencies": { "safe-buffer": "~5.2.0" } }, "node_modules/string-length": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", "dev": true, - "license": "MIT", "dependencies": { "char-regex": "^1.0.2", "strip-ansi": "^6.0.0" @@ -18016,7 +19618,22 @@ }, "node_modules/string-width": { "version": "4.2.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -18028,7 +19645,20 @@ }, "node_modules/strip-ansi": { "version": "6.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -18038,31 +19668,35 @@ }, "node_modules/strip-bom": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/strip-eof": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", "engines": { "node": ">=0.10.0" } }, "node_modules/strip-final-newline": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/strip-indent": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", "dev": true, - "license": "MIT", "dependencies": { "min-indent": "^1.0.0" }, @@ -18072,8 +19706,9 @@ }, "node_modules/strip-json-comments": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" }, @@ -18083,12 +19718,14 @@ }, "node_modules/strnum": { "version": "1.0.5", - "license": "MIT" + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" }, "node_modules/strong-log-transformer": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz", + "integrity": "sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==", "dev": true, - "license": "Apache-2.0", "dependencies": { "duplexer": "^0.1.1", "minimist": "^1.2.0", @@ -18103,11 +19740,13 @@ }, "node_modules/stubs": { "version": "3.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", + "integrity": "sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==" }, "node_modules/supports-color": { "version": "7.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dependencies": { "has-flag": "^4.0.0" }, @@ -18117,8 +19756,9 @@ }, "node_modules/supports-hyperlinks": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0", "supports-color": "^7.0.0" @@ -18129,7 +19769,8 @@ }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "engines": { "node": ">= 0.4" }, @@ -18139,13 +19780,15 @@ }, "node_modules/symbol-tree": { "version": "3.2.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true }, "node_modules/table": { - "version": "6.8.1", + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz", + "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "ajv": "^8.0.1", "lodash.truncate": "^4.4.2", @@ -18194,14 +19837,15 @@ } }, "node_modules/table/node_modules/ajv": { - "version": "8.12.0", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", + "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", "dev": true, - "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "uri-js": "^4.4.1" }, "funding": { "type": "github", @@ -18210,13 +19854,15 @@ }, "node_modules/table/node_modules/json-schema-traverse": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true }, "node_modules/tar": { - "version": "6.2.0", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", "dev": true, - "license": "ISC", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -18231,7 +19877,8 @@ }, "node_modules/tar-fs": { "version": "2.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", "optional": true, "dependencies": { "chownr": "^1.1.1", @@ -18242,13 +19889,15 @@ }, "node_modules/tar-fs/node_modules/chownr": { "version": "1.1.4", - "license": "ISC", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", "optional": true }, "node_modules/tar-stream": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", "devOptional": true, - "license": "MIT", "dependencies": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", @@ -18260,62 +19909,33 @@ "node": ">=6" } }, - "node_modules/tar-stream/node_modules/bl": { - "version": "4.1.0", - "devOptional": true, - "license": "MIT", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/tar-stream/node_modules/buffer": { - "version": "5.7.1", - "devOptional": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, "node_modules/tar/node_modules/minipass": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true, - "license": "ISC", "engines": { "node": ">=8" } }, "node_modules/tar/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/tarn": { "version": "3.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/tarn/-/tarn-3.0.2.tgz", + "integrity": "sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ==", "engines": { "node": ">=8.0.0" } }, "node_modules/tedious": { "version": "11.8.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/tedious/-/tedious-11.8.0.tgz", + "integrity": "sha512-GtFrO694x/7CRiUBt0AI4jrMtrkXV+ywifiOrDy4K0ufJLeKB4rgmPjy5Ws366fCaBaKlqQ9RnJ+sCJ1Jbd1lw==", "dependencies": { "@azure/identity": "^1.3.0", "@azure/keyvault-keys": "^4.1.0", @@ -18335,9 +19955,43 @@ "node": ">= 10" } }, + "node_modules/tedious/node_modules/bl": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz", + "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==", + "dependencies": { + "buffer": "^6.0.3", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/tedious/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, "node_modules/tedious/node_modules/iconv-lite": { "version": "0.6.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -18347,15 +20001,18 @@ }, "node_modules/tedious/node_modules/node-abort-controller": { "version": "2.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-2.0.0.tgz", + "integrity": "sha512-L8RfEgjBTHAISTuagw51PprVAqNZoG6KSB6LQ6H1bskMVkFs5E71IyjauLBv3XbuomJlguWF/VnRHdJ1gqiAqA==" }, "node_modules/tedious/node_modules/sprintf-js": { "version": "1.1.3", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" }, "node_modules/teeny-request": { "version": "7.2.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-7.2.0.tgz", + "integrity": "sha512-SyY0pek1zWsi0LRVAALem+avzMLc33MKW/JLLakdP4s9+D7+jHcy5x6P+h94g2QNZsAqQNfX5lsbd3WSeJXrrw==", "dependencies": { "http-proxy-agent": "^5.0.0", "https-proxy-agent": "^5.0.0", @@ -18369,14 +20026,16 @@ }, "node_modules/teeny-request/node_modules/@tootallnate/once": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "engines": { "node": ">= 10" } }, "node_modules/teeny-request/node_modules/http-proxy-agent": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "dependencies": { "@tootallnate/once": "2", "agent-base": "6", @@ -18386,24 +20045,19 @@ "node": ">= 6" } }, - "node_modules/teeny-request/node_modules/uuid": { - "version": "8.3.2", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/temp-dir": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/term-size": { "version": "1.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", + "integrity": "sha512-7dPUZQGy/+m3/wjVz3ZW5dobSoD/02NxJpoXUX0WIyjfVS3l0c+b/+9phIDFA7FHzkYtwtMFgeGZ/Y8jVTeqQQ==", "dependencies": { "execa": "^0.7.0" }, @@ -18413,7 +20067,8 @@ }, "node_modules/term-size/node_modules/cross-spawn": { "version": "5.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", "dependencies": { "lru-cache": "^4.0.1", "shebang-command": "^1.2.0", @@ -18422,7 +20077,8 @@ }, "node_modules/term-size/node_modules/execa": { "version": "0.7.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==", "dependencies": { "cross-spawn": "^5.0.1", "get-stream": "^3.0.0", @@ -18438,21 +20094,24 @@ }, "node_modules/term-size/node_modules/get-stream": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", "engines": { "node": ">=4" } }, "node_modules/term-size/node_modules/is-stream": { "version": "1.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", "engines": { "node": ">=0.10.0" } }, "node_modules/term-size/node_modules/lru-cache": { "version": "4.1.5", - "license": "ISC", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", "dependencies": { "pseudomap": "^1.0.2", "yallist": "^2.1.2" @@ -18460,7 +20119,8 @@ }, "node_modules/term-size/node_modules/npm-run-path": { "version": "2.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", "dependencies": { "path-key": "^2.0.0" }, @@ -18470,14 +20130,16 @@ }, "node_modules/term-size/node_modules/path-key": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", "engines": { "node": ">=4" } }, "node_modules/term-size/node_modules/shebang-command": { "version": "1.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", "dependencies": { "shebang-regex": "^1.0.0" }, @@ -18487,14 +20149,16 @@ }, "node_modules/term-size/node_modules/shebang-regex": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", "engines": { "node": ">=0.10.0" } }, "node_modules/term-size/node_modules/which": { "version": "1.3.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dependencies": { "isexe": "^2.0.0" }, @@ -18504,12 +20168,14 @@ }, "node_modules/term-size/node_modules/yallist": { "version": "2.1.2", - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" }, "node_modules/terminal-link": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-escapes": "^4.2.1", "supports-hyperlinks": "^2.0.0" @@ -18523,8 +20189,9 @@ }, "node_modules/test-exclude": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, - "license": "ISC", "dependencies": { "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", @@ -18536,20 +20203,23 @@ }, "node_modules/text-extensions": { "version": "1.9.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", + "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10" } }, "node_modules/text-hex": { "version": "1.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" }, "node_modules/text-table": { "version": "0.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true }, "node_modules/thrift": { "version": "0.16.0", @@ -18572,70 +20242,77 @@ "integrity": "sha512-0F2z/VSnLbmEeBcUrSuDH5l0HxTXdQQzLjkmBR4cYfvg1zJrKSlmIZFqyFR8oX0NrwPhy3c3HQ6i3OxMbew4Tg==" }, "node_modules/thrift/node_modules/ws": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.3.tgz", - "integrity": "sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.4.tgz", + "integrity": "sha512-fFCejsuC8f9kOSu9FYaOw8CdO68O3h5v0lg4p74o8JqWpwTf9tniOD+nOB78aWoVSS6WptVUmDrp/KPsMVBWFQ==", "dependencies": { "async-limiter": "~1.0.0" } }, "node_modules/throat": { "version": "6.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz", + "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==", + "dev": true }, "node_modules/through": { "version": "2.3.8", - "license": "MIT" + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" }, "node_modules/through2": { "version": "4.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", "dependencies": { "readable-stream": "3" } }, "node_modules/tildify": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/tildify/-/tildify-2.0.0.tgz", + "integrity": "sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==", "engines": { "node": ">=8" } }, "node_modules/tmp": { - "version": "0.2.1", - "license": "MIT", - "dependencies": { - "rimraf": "^3.0.0" - }, + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "dev": true, "engines": { - "node": ">=8.17.0" + "node": ">=14.14" } }, "node_modules/tmpl": { "version": "1.0.5", - "dev": true, - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true }, "node_modules/to-fast-properties": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/to-readable-stream": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", "engines": { "node": ">=6" } }, "node_modules/to-regex-range": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, - "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -18644,8 +20321,9 @@ } }, "node_modules/tough-cookie": { - "version": "4.1.3", - "license": "BSD-3-Clause", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", "dependencies": { "psl": "^1.1.33", "punycode": "^2.1.1", @@ -18658,15 +20336,17 @@ }, "node_modules/tough-cookie/node_modules/universalify": { "version": "0.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", "engines": { "node": ">= 4.0.0" } }, "node_modules/tr46": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", "dev": true, - "license": "MIT", "dependencies": { "punycode": "^2.1.1" }, @@ -18676,31 +20356,35 @@ }, "node_modules/treeverse": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/treeverse/-/treeverse-2.0.0.tgz", + "integrity": "sha512-N5gJCkLu1aXccpOTtqV6ddSEi6ZmGkh3hjmbu1IjcavJK4qyOVQmi0myQKM7z5jVGmD68SJoliaVrMmVObhj6A==", "dev": true, - "license": "ISC", "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/trim-newlines": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/triple-beam": { "version": "1.4.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", + "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==", "engines": { "node": ">= 14.0.0" } }, "node_modules/ts-jest": { "version": "27.1.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.5.tgz", + "integrity": "sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==", "dev": true, - "license": "MIT", "dependencies": { "bs-logger": "0.x", "fast-json-stable-stringify": "2.x", @@ -18741,8 +20425,9 @@ }, "node_modules/tsconfig-paths": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", "dev": true, - "license": "MIT", "dependencies": { "json5": "^2.2.2", "minimist": "^1.2.6", @@ -18754,20 +20439,23 @@ }, "node_modules/tsconfig-paths/node_modules/strip-bom": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/tslib": { - "version": "1.14.1", - "license": "0BSD" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/tsutils": { "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, - "license": "MIT", "dependencies": { "tslib": "^1.8.1" }, @@ -18778,20 +20466,29 @@ "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" } }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, "node_modules/tsv": { "version": "0.2.0", - "license": "MIT (ricardo.mit-license.org)" + "resolved": "https://registry.npmjs.org/tsv/-/tsv-0.2.0.tgz", + "integrity": "sha512-GG6xbOP85giXXom0dS6z9uyDsxktznjpa1AuDlPrIXDqDnbhjr9Vk6Us8iz6U1nENL4CPS2jZDvIjEdaZsmc4Q==" }, "node_modules/tunnel": { "version": "0.0.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", "engines": { "node": ">=0.6.11 <=0.7.0 || >=0.7.3" } }, "node_modules/tunnel-agent": { "version": "0.6.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "dependencies": { "safe-buffer": "^5.0.1" }, @@ -18801,11 +20498,13 @@ }, "node_modules/tweetnacl": { "version": "0.14.5", - "license": "Unlicense" + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" }, "node_modules/twilio": { "version": "3.84.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/twilio/-/twilio-3.84.1.tgz", + "integrity": "sha512-Q/xaPoayTj+bgJdnUgpE+EiB/VoNOG+byDFdlDej0FgxiHLgXKliZfVv6boqHPWvC1k7Dt0AK96OBFZ0P55QQg==", "dependencies": { "axios": "^0.26.1", "dayjs": "^1.8.29", @@ -18823,9 +20522,18 @@ "node": ">=6.0" } }, + "node_modules/twilio/node_modules/axios": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", + "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", + "dependencies": { + "follow-redirects": "^1.14.8" + } + }, "node_modules/twilio/node_modules/jsonwebtoken": { "version": "8.5.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", "dependencies": { "jws": "^3.2.2", "lodash.includes": "^4.3.0", @@ -18845,7 +20553,8 @@ }, "node_modules/twilio/node_modules/jwa": { "version": "1.4.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", "dependencies": { "buffer-equal-constant-time": "1.0.1", "ecdsa-sig-formatter": "1.0.11", @@ -18854,7 +20563,8 @@ }, "node_modules/twilio/node_modules/jws": { "version": "3.2.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", "dependencies": { "jwa": "^1.4.1", "safe-buffer": "^5.0.1" @@ -18862,24 +20572,42 @@ }, "node_modules/twilio/node_modules/q": { "version": "2.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/q/-/q-2.0.3.tgz", + "integrity": "sha512-gv6vLGcmAOg96/fgo3d9tvA4dJNZL3fMyBqVRrGxQ+Q/o4k9QzbJ3NQF9cOO/71wRodoXhaPgphvMFU68qVAJQ==", + "deprecated": "You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.\n\n(For a CapTP with native promises, see @endo/eventual-send and @endo/captp)", "dependencies": { "asap": "^2.0.0", "pop-iterate": "^1.0.1", "weak-map": "^1.0.5" } }, + "node_modules/twilio/node_modules/qs": { + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.1.tgz", + "integrity": "sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/twilio/node_modules/semver": { "version": "5.7.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "bin": { "semver": "bin/semver" } }, "node_modules/type-check": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, - "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" }, @@ -18889,16 +20617,18 @@ }, "node_modules/type-detect": { "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/type-fest": { "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -18908,18 +20638,21 @@ }, "node_modules/typedarray": { "version": "0.0.6", - "license": "MIT" + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "dependencies": { "is-typedarray": "^1.0.0" } }, "node_modules/typescript": { "version": "4.9.5", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -18929,17 +20662,18 @@ } }, "node_modules/typesense": { - "version": "1.7.2", - "license": "Apache-2.0", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/typesense/-/typesense-1.8.2.tgz", + "integrity": "sha512-aBpePjA99Qvo+OP2pJwMpvga4Jrm1Y2oV5NsrWXBxlqUDNEUCPZBIksPv2Hq0jxQxHhLLyJVbjXjByXsvpCDVA==", "dependencies": { - "axios": "^0.26.0", - "loglevel": "^1.8.0" + "axios": "^1.6.0", + "loglevel": "^1.8.1" }, "engines": { - "node": ">=14" + "node": ">=18" }, "peerDependencies": { - "@babel/runtime": "^7.17.2" + "@babel/runtime": "^7.23.2" } }, "node_modules/typical": { @@ -18951,9 +20685,10 @@ } }, "node_modules/uglify-js": { - "version": "3.17.4", + "version": "3.18.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.18.0.tgz", + "integrity": "sha512-SyVVbcNBCk0dzr9XL/R/ySrmYf0s372K6/hFklzgcp2lBFyXtw4I7BOdDjlLhE1aVqaI/SHWXWmYdlZxuyF38A==", "dev": true, - "license": "BSD-2-Clause", "optional": true, "bin": { "uglifyjs": "bin/uglifyjs" @@ -18964,29 +20699,42 @@ }, "node_modules/underscore": { "version": "1.13.6", - "license": "MIT" + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", + "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==" }, "node_modules/undici-types": { "version": "5.26.5", - "license": "MIT" + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" }, "node_modules/unique-filename": { - "version": "1.1.1", - "license": "ISC", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", + "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", + "dev": true, "dependencies": { - "unique-slug": "^2.0.0" + "unique-slug": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/unique-slug": { - "version": "2.0.2", - "license": "ISC", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", + "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", + "dev": true, "dependencies": { "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/unique-string": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", "dependencies": { "crypto-random-string": "^2.0.0" }, @@ -18996,26 +20744,31 @@ }, "node_modules/universal-user-agent": { "version": "6.0.1", - "license": "ISC" + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", + "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==" }, "node_modules/universalify": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "engines": { "node": ">= 10.0.0" } }, "node_modules/upath": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz", + "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==", "dev": true, - "license": "MIT", "engines": { "node": ">=4", "yarn": "*" } }, "node_modules/update-browserslist-db": { - "version": "1.0.13", + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", + "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", "dev": true, "funding": [ { @@ -19031,10 +20784,9 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.1.2", + "picocolors": "^1.0.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -19045,7 +20797,8 @@ }, "node_modules/update-notifier": { "version": "3.0.1", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-3.0.1.tgz", + "integrity": "sha512-grrmrB6Zb8DUiyDIaeRTBCkgISYUgETNe7NglEbVsrLWXeESnlCSP50WfRSj/GmzMPl6Uchj24S/p80nP/ZQrQ==", "dependencies": { "boxen": "^3.0.0", "chalk": "^2.0.1", @@ -19066,7 +20819,8 @@ }, "node_modules/update-notifier/node_modules/ansi-styles": { "version": "3.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dependencies": { "color-convert": "^1.9.0" }, @@ -19076,7 +20830,8 @@ }, "node_modules/update-notifier/node_modules/chalk": { "version": "2.4.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -19088,18 +20843,21 @@ }, "node_modules/update-notifier/node_modules/color-convert": { "version": "1.9.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dependencies": { "color-name": "1.1.3" } }, "node_modules/update-notifier/node_modules/color-name": { "version": "1.1.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "node_modules/update-notifier/node_modules/configstore": { "version": "4.0.0", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-4.0.0.tgz", + "integrity": "sha512-CmquAXFBocrzaSM8mtGPMM/HiWmyIpr4CcJl/rgY2uCObZ/S7cKU0silxslqJejl+t/T9HS8E0PUNQD81JGUEQ==", "dependencies": { "dot-prop": "^4.1.0", "graceful-fs": "^4.1.2", @@ -19114,14 +20872,16 @@ }, "node_modules/update-notifier/node_modules/crypto-random-string": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==", "engines": { "node": ">=4" } }, "node_modules/update-notifier/node_modules/dot-prop": { "version": "4.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz", + "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==", "dependencies": { "is-obj": "^1.0.0" }, @@ -19131,28 +20891,32 @@ }, "node_modules/update-notifier/node_modules/escape-string-regexp": { "version": "1.0.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "engines": { "node": ">=0.8.0" } }, "node_modules/update-notifier/node_modules/has-flag": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "engines": { "node": ">=4" } }, "node_modules/update-notifier/node_modules/is-obj": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", "engines": { "node": ">=0.10.0" } }, "node_modules/update-notifier/node_modules/make-dir": { "version": "1.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", "dependencies": { "pify": "^3.0.0" }, @@ -19162,14 +20926,16 @@ }, "node_modules/update-notifier/node_modules/pify": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "engines": { "node": ">=4" } }, "node_modules/update-notifier/node_modules/supports-color": { "version": "5.5.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dependencies": { "has-flag": "^3.0.0" }, @@ -19179,7 +20945,8 @@ }, "node_modules/update-notifier/node_modules/unique-string": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==", "dependencies": { "crypto-random-string": "^1.0.0" }, @@ -19189,7 +20956,8 @@ }, "node_modules/update-notifier/node_modules/write-file-atomic": { "version": "2.4.3", - "license": "ISC", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", "dependencies": { "graceful-fs": "^4.1.11", "imurmurhash": "^0.1.4", @@ -19198,21 +20966,24 @@ }, "node_modules/update-notifier/node_modules/xdg-basedir": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", + "integrity": "sha512-1Dly4xqlulvPD3fZUQJLY+FUIeqN3N2MM3uqe4rCJftAvOjFa3jFGfctOgluGx4ahPbUCsZkmJILiP0Vi4T6lQ==", "engines": { "node": ">=4" } }, "node_modules/uri-js": { "version": "4.4.1", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dependencies": { "punycode": "^2.1.0" } }, "node_modules/url": { "version": "0.11.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.3.tgz", + "integrity": "sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==", "dependencies": { "punycode": "^1.4.1", "qs": "^6.11.2" @@ -19220,7 +20991,8 @@ }, "node_modules/url-parse": { "version": "1.5.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", "dependencies": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" @@ -19228,7 +21000,8 @@ }, "node_modules/url-parse-lax": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", "dependencies": { "prepend-http": "^2.0.0" }, @@ -19238,11 +21011,27 @@ }, "node_modules/url/node_modules/punycode": { "version": "1.4.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" + }, + "node_modules/url/node_modules/qs": { + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.1.tgz", + "integrity": "sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/util": { "version": "0.12.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", "dependencies": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", @@ -19253,24 +21042,28 @@ }, "node_modules/util-deprecate": { "version": "1.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/uuid": { - "version": "3.4.0", - "license": "MIT", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "bin": { - "uuid": "bin/uuid" + "uuid": "dist/bin/uuid" } }, "node_modules/v8-compile-cache": { "version": "2.4.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", + "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==", + "dev": true }, "node_modules/v8-to-istanbul": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", + "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", "dev": true, - "license": "ISC", "dependencies": { "@types/istanbul-lib-coverage": "^2.0.1", "convert-source-map": "^1.6.0", @@ -19282,51 +21075,67 @@ }, "node_modules/v8-to-istanbul/node_modules/source-map": { "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">= 8" } }, "node_modules/validate-npm-package-license": { "version": "3.0.4", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" } }, "node_modules/validate-npm-package-name": { - "version": "3.0.0", - "license": "ISC", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", + "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", + "dev": true, "dependencies": { - "builtins": "^1.0.3" + "builtins": "^5.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/verror": { "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", "engines": [ "node >=0.6.0" ], - "license": "MIT", "dependencies": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", "extsprintf": "^1.2.0" } }, + "node_modules/verror/node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + }, "node_modules/w3c-hr-time": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", "dev": true, - "license": "MIT", "dependencies": { "browser-process-hrtime": "^1.0.0" } }, "node_modules/w3c-xmlserializer": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", "dev": true, - "license": "MIT", "dependencies": { "xml-name-validator": "^3.0.0" }, @@ -19336,32 +21145,37 @@ }, "node_modules/walk-up-path": { "version": "1.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-1.0.0.tgz", + "integrity": "sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg==", + "dev": true }, "node_modules/walker": { "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { "makeerror": "1.0.12" } }, "node_modules/wcwidth": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "dev": true, - "license": "MIT", "dependencies": { "defaults": "^1.0.3" } }, "node_modules/weak-map": { "version": "1.0.8", - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/weak-map/-/weak-map-1.0.8.tgz", + "integrity": "sha512-lNR9aAefbGPpHO7AEnY0hCFjz1eTkWCXYvkTRrTHs9qv8zJp+SkVYpzfLIFXQQiG3tVvbNFQgVg2bQS8YGgxyw==" }, "node_modules/web-encoding": { "version": "1.1.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/web-encoding/-/web-encoding-1.1.5.tgz", + "integrity": "sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==", "dependencies": { "util": "^0.12.3" }, @@ -19371,29 +21185,33 @@ }, "node_modules/webidl-conversions": { "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=10.4" } }, "node_modules/whatwg-encoding": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", "dev": true, - "license": "MIT", "dependencies": { "iconv-lite": "0.4.24" } }, "node_modules/whatwg-mimetype": { "version": "2.3.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true }, "node_modules/whatwg-url": { "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", "dev": true, - "license": "MIT", "dependencies": { "lodash": "^4.7.0", "tr46": "^2.1.0", @@ -19405,8 +21223,8 @@ }, "node_modules/which": { "version": "2.0.2", - "dev": true, - "license": "ISC", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dependencies": { "isexe": "^2.0.0" }, @@ -19418,14 +21236,15 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.13", - "license": "MIT", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -19436,15 +21255,17 @@ }, "node_modules/wide-align": { "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", "dev": true, - "license": "ISC", "dependencies": { "string-width": "^1.0.2 || 2 || 3 || 4" } }, "node_modules/widest-line": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", + "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", "dependencies": { "string-width": "^2.1.1" }, @@ -19454,21 +21275,24 @@ }, "node_modules/widest-line/node_modules/ansi-regex": { "version": "3.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", "engines": { "node": ">=4" } }, "node_modules/widest-line/node_modules/is-fullwidth-code-point": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", "engines": { "node": ">=4" } }, "node_modules/widest-line/node_modules/string-width": { "version": "2.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dependencies": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" @@ -19479,7 +21303,8 @@ }, "node_modules/widest-line/node_modules/strip-ansi": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", "dependencies": { "ansi-regex": "^3.0.0" }, @@ -19488,8 +21313,9 @@ } }, "node_modules/winston": { - "version": "3.11.0", - "license": "MIT", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.13.0.tgz", + "integrity": "sha512-rwidmA1w3SE4j0E5MuIufFhyJPBDG7Nu71RkZor1p2+qHvJSZ9GYDA81AyleQcZbh/+V6HjeBdfnTZJm9rSeQQ==", "dependencies": { "@colors/colors": "^1.6.0", "@dabh/diagnostics": "^2.0.2", @@ -19501,15 +21327,16 @@ "safe-stable-stringify": "^2.3.1", "stack-trace": "0.0.x", "triple-beam": "^1.3.0", - "winston-transport": "^4.5.0" + "winston-transport": "^4.7.0" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/winston-transport": { - "version": "4.6.0", - "license": "MIT", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.7.0.tgz", + "integrity": "sha512-ajBj65K5I7denzer2IYW6+2bNIVqLGDHqDw3Ow8Ohh+vdW+rv4MZ6eiDvHoKhfJFZ2auyN8byXieDDJ96ViONg==", "dependencies": { "logform": "^2.3.2", "readable-stream": "^3.6.0", @@ -19521,7 +21348,8 @@ }, "node_modules/woocommerce-api": { "version": "1.5.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/woocommerce-api/-/woocommerce-api-1.5.0.tgz", + "integrity": "sha512-5zETdC58wR9h6QVR2uRBsAoJL4MR3YoMdBUliiJ8O/ADpuL3JqlIkKqZgu8irTm9vEDNZLNFEh4BnD1jLSmFtw==", "dependencies": { "bluebird": "3.5.5", "create-hmac": "1.1.7", @@ -19532,75 +21360,23 @@ }, "node_modules/woocommerce-api/node_modules/bluebird": { "version": "3.5.5", - "license": "MIT" + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", + "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==" }, - "node_modules/woocommerce-api/node_modules/form-data": { - "version": "2.3.3", - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, "engines": { - "node": ">= 0.12" - } - }, - "node_modules/woocommerce-api/node_modules/punycode": { - "version": "1.4.1", - "license": "MIT" - }, - "node_modules/woocommerce-api/node_modules/qs": { - "version": "6.5.3", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/woocommerce-api/node_modules/request": { - "version": "2.88.0", - "license": "Apache-2.0", - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.0", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/woocommerce-api/node_modules/tough-cookie": { - "version": "2.4.3", - "license": "BSD-3-Clause", - "dependencies": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - }, - "engines": { - "node": ">=0.8" + "node": ">=0.10.0" } }, "node_modules/wordwrap": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true }, "node_modules/wordwrapjs": { "version": "5.1.0", @@ -19611,8 +21387,24 @@ } }, "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", "version": "7.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -19627,11 +21419,13 @@ }, "node_modules/wrappy": { "version": "1.0.2", - "license": "ISC" + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/write-file-atomic": { "version": "3.0.3", - "license": "ISC", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dependencies": { "imurmurhash": "^0.1.4", "is-typedarray": "^1.0.0", @@ -19641,8 +21435,9 @@ }, "node_modules/write-json-file": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-4.3.0.tgz", + "integrity": "sha512-PxiShnxf0IlnQuMYOPPhPkhExoCQuTUNPOa/2JWCYTmBquU9njyyDuwRKN26IZBlp4yn1nt+Agh2HOOBl+55HQ==", "dev": true, - "license": "MIT", "dependencies": { "detect-indent": "^6.0.0", "graceful-fs": "^4.1.15", @@ -19660,16 +21455,18 @@ }, "node_modules/write-json-file/node_modules/is-plain-obj": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/write-json-file/node_modules/make-dir": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, - "license": "MIT", "dependencies": { "semver": "^6.0.0" }, @@ -19682,16 +21479,18 @@ }, "node_modules/write-json-file/node_modules/semver": { "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/write-pkg": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-4.0.0.tgz", + "integrity": "sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA==", "dev": true, - "license": "MIT", "dependencies": { "sort-keys": "^2.0.0", "type-fest": "^0.4.1", @@ -19703,16 +21502,18 @@ }, "node_modules/write-pkg/node_modules/detect-indent": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", + "integrity": "sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/write-pkg/node_modules/make-dir": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, - "license": "MIT", "dependencies": { "pify": "^4.0.1", "semver": "^5.6.0" @@ -19723,24 +21524,27 @@ }, "node_modules/write-pkg/node_modules/pify": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/write-pkg/node_modules/semver": { "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver" } }, "node_modules/write-pkg/node_modules/sort-keys": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==", "dev": true, - "license": "MIT", "dependencies": { "is-plain-obj": "^1.0.0" }, @@ -19750,16 +21554,18 @@ }, "node_modules/write-pkg/node_modules/type-fest": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.4.1.tgz", + "integrity": "sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=6" } }, "node_modules/write-pkg/node_modules/write-file-atomic": { "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", "dev": true, - "license": "ISC", "dependencies": { "graceful-fs": "^4.1.11", "imurmurhash": "^0.1.4", @@ -19768,8 +21574,9 @@ }, "node_modules/write-pkg/node_modules/write-json-file": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-3.2.0.tgz", + "integrity": "sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ==", "dev": true, - "license": "MIT", "dependencies": { "detect-indent": "^5.0.0", "graceful-fs": "^4.1.15", @@ -19783,8 +21590,9 @@ } }, "node_modules/ws": { - "version": "7.5.9", - "license": "MIT", + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "engines": { "node": ">=8.3.0" }, @@ -19803,23 +21611,27 @@ }, "node_modules/xdg-basedir": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", "engines": { "node": ">=8" } }, "node_modules/xml": { "version": "1.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", + "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==" }, "node_modules/xml-name-validator": { "version": "3.0.0", - "dev": true, - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true }, "node_modules/xml2js": { - "version": "0.5.0", - "license": "MIT", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", + "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", "dependencies": { "sax": ">=0.6.0", "xmlbuilder": "~11.0.0" @@ -19830,33 +21642,38 @@ }, "node_modules/xml2js/node_modules/xmlbuilder": { "version": "11.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", "engines": { "node": ">=4.0" } }, "node_modules/xmlbuilder": { "version": "13.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-13.0.2.tgz", + "integrity": "sha512-Eux0i2QdDYKbdbA6AM6xE4m6ZTZr4G4xF9kahI2ukSEMCzwce2eX9WlTI5J3s+NU7hpasFsr8hWIONae7LluAQ==", "engines": { "node": ">=6.0" } }, "node_modules/xmlchars": { "version": "2.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true }, "node_modules/xpath.js": { "version": "1.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/xpath.js/-/xpath.js-1.1.0.tgz", + "integrity": "sha512-jg+qkfS4K8E7965sqaUl8mRngXiKb3WZGfONgE18pr03FUQiuSV6G+Ej4tS55B+rIQSFEIw3phdVAQ4pPqNWfQ==", "engines": { "node": ">=0.4.0" } }, "node_modules/xtend": { "version": "4.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "engines": { "node": ">=0.4" } @@ -19865,33 +21682,38 @@ "version": "0.2.2", "resolved": "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.2.tgz", "integrity": "sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==", + "optional": true, "dependencies": { "cuint": "^0.2.2" } }, "node_modules/y18n": { "version": "5.0.8", - "license": "ISC", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "engines": { "node": ">=10" } }, "node_modules/yallist": { "version": "3.1.1", - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, "node_modules/yaml": { "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true, - "license": "ISC", "engines": { "node": ">= 6" } }, "node_modules/yargs": { "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, - "license": "MIT", "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -19907,15 +21729,17 @@ }, "node_modules/yargs-parser": { "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", "dev": true, - "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/yocto-queue": { "version": "0.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "engines": { "node": ">=10" }, @@ -19924,7 +21748,6 @@ } }, "packages/airtable": { - "name": "@tooljet-plugins/airtable", "version": "1.0.0", "dependencies": { "@tooljet-plugins/common": "file:../common", @@ -19935,7 +21758,6 @@ } }, "packages/amazonses": { - "name": "@tooljet-plugins/amazonses", "version": "1.0.0", "dependencies": { "@aws-sdk/client-sesv2": "^3.264.0", @@ -19946,7 +21768,6 @@ } }, "packages/appwrite": { - "name": "@tooljet-plugins/appwrite", "version": "1.0.0", "dependencies": { "@tooljet-plugins/common": "file:../common", @@ -19955,7 +21776,6 @@ } }, "packages/athena": { - "name": "@tooljet-plugins/athena", "version": "1.0.0", "dependencies": { "@aws-sdk/credential-providers": "^3.267.0", @@ -19966,7 +21786,6 @@ } }, "packages/azureblobstorage": { - "name": "@tooljet-plugins/azureblobstorage", "version": "1.0.0", "dependencies": { "@azure/storage-blob": "^12.12.0", @@ -19975,7 +21794,6 @@ } }, "packages/baserow": { - "name": "@tooljet-plugins/baserow", "version": "1.0.0", "dependencies": { "@tooljet-plugins/common": "file:../common", @@ -19986,7 +21804,8 @@ }, "packages/baserow/node_modules/@sindresorhus/is": { "version": "5.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", + "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==", "engines": { "node": ">=14.16" }, @@ -19996,7 +21815,8 @@ }, "packages/baserow/node_modules/@szmarczak/http-timer": { "version": "5.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", "dependencies": { "defer-to-connect": "^2.0.1" }, @@ -20006,14 +21826,16 @@ }, "packages/baserow/node_modules/cacheable-lookup": { "version": "7.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", + "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", "engines": { "node": ">=14.16" } }, "packages/baserow/node_modules/cacheable-request": { "version": "10.2.14", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz", + "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==", "dependencies": { "@types/http-cache-semantics": "^4.0.2", "get-stream": "^6.0.1", @@ -20029,7 +21851,8 @@ }, "packages/baserow/node_modules/got": { "version": "12.6.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", + "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", "dependencies": { "@sindresorhus/is": "^5.2.0", "@szmarczak/http-timer": "^5.0.1", @@ -20052,7 +21875,8 @@ }, "packages/baserow/node_modules/http2-wrapper": { "version": "2.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", + "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", "dependencies": { "quick-lru": "^5.1.1", "resolve-alpn": "^1.2.0" @@ -20063,7 +21887,8 @@ }, "packages/baserow/node_modules/lowercase-keys": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -20073,7 +21898,8 @@ }, "packages/baserow/node_modules/mimic-response": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", + "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -20082,8 +21908,9 @@ } }, "packages/baserow/node_modules/normalize-url": { - "version": "8.0.0", - "license": "MIT", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", + "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==", "engines": { "node": ">=14.16" }, @@ -20093,14 +21920,16 @@ }, "packages/baserow/node_modules/p-cancelable": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", "engines": { "node": ">=12.20" } }, "packages/baserow/node_modules/quick-lru": { "version": "5.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", "engines": { "node": ">=10" }, @@ -20110,7 +21939,8 @@ }, "packages/baserow/node_modules/responselike": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", "dependencies": { "lowercase-keys": "^3.0.0" }, @@ -20122,7 +21952,6 @@ } }, "packages/bigquery": { - "name": "@tooljet-plugins/bigquery", "version": "1.0.0", "dependencies": { "@google-cloud/bigquery": "^5.12.0", @@ -20132,7 +21961,6 @@ } }, "packages/clickhouse": { - "name": "@tooljet-plugins/clickhouse", "version": "1.0.0", "dependencies": { "@tooljet-plugins/common": "file:../common", @@ -20141,7 +21969,6 @@ } }, "packages/common": { - "name": "@tooljet-plugins/common", "version": "1.0.0", "dependencies": { "react": "^17.0.2", @@ -20153,7 +21980,6 @@ } }, "packages/cosmosdb": { - "name": "@tooljet-plugins/cosmosdb", "version": "1.0.0", "dependencies": { "@azure/cosmos": "^3.17.2", @@ -20162,7 +21988,6 @@ } }, "packages/couchdb": { - "name": "@tooljet-plugins/couchdb", "version": "1.0.0", "dependencies": { "@tooljet-plugins/common": "file:../common", @@ -20170,7 +21995,6 @@ } }, "packages/databricks": { - "name": "@tooljet-plugins/databricks", "version": "1.0.0", "dependencies": { "@databricks/sql": "^1.8.2", @@ -20183,7 +22007,6 @@ } }, "packages/dynamodb": { - "name": "@tooljet-plugins/dynamodb", "version": "1.0.0", "dependencies": { "@tooljet-plugins/common": "file:../common", @@ -20193,7 +22016,6 @@ } }, "packages/elasticsearch": { - "name": "@tooljet-plugins/elasticsearch", "version": "1.0.0", "dependencies": { "@opensearch-project/opensearch": "^1.1.0", @@ -20203,7 +22025,6 @@ } }, "packages/firestore": { - "name": "@tooljet-plugins/firestore", "version": "1.0.0", "dependencies": { "@google-cloud/firestore": "^7.1.0", @@ -20213,7 +22034,6 @@ } }, "packages/gcs": { - "name": "@tooljet-plugins/gcs", "version": "1.0.0", "dependencies": { "@google-cloud/storage": "^5.20.5", @@ -20223,7 +22043,6 @@ } }, "packages/googlesheets": { - "name": "@tooljet-plugins/googlesheets", "version": "1.0.0", "dependencies": { "@tooljet-plugins/common": "file:../common", @@ -20233,7 +22052,6 @@ } }, "packages/graphql": { - "name": "@tooljet-plugins/graphql", "version": "1.0.0", "dependencies": { "@tooljet-plugins/common": "file:../common", @@ -20243,7 +22061,6 @@ } }, "packages/grpc": { - "name": "@tooljet-plugins/grpc", "version": "1.0.0", "dependencies": { "@grpc/grpc-js": "^1.8.14", @@ -20253,7 +22070,6 @@ } }, "packages/influxdb": { - "name": "@tooljet-plugins/influxdb", "version": "1.0.0", "dependencies": { "@tooljet-plugins/common": "file:../common", @@ -20261,7 +22077,6 @@ } }, "packages/mailgun": { - "name": "@tooljet-plugins/mailgun", "version": "1.0.0", "dependencies": { "@tooljet-plugins/common": "file:../common", @@ -20269,7 +22084,6 @@ } }, "packages/mariadb": { - "name": "@tooljet-plugins/mariadb", "version": "1.0.0", "dependencies": { "@tooljet-plugins/common": "file:../common", @@ -20278,7 +22092,6 @@ } }, "packages/minio": { - "name": "@tooljet-plugins/minio", "version": "1.0.0", "dependencies": { "@tooljet-plugins/common": "file:../common", @@ -20287,7 +22100,6 @@ } }, "packages/mongodb": { - "name": "@tooljet-plugins/mongodb", "version": "1.0.0", "dependencies": { "@tooljet-plugins/common": "file:../common", @@ -20298,7 +22110,6 @@ } }, "packages/mssql": { - "name": "@tooljet-plugins/mssql", "version": "1.0.0", "dependencies": { "@tooljet-plugins/common": "file:../common", @@ -20309,7 +22120,6 @@ } }, "packages/mysql": { - "name": "@tooljet-plugins/mysql", "version": "1.0.0", "dependencies": { "@tooljet-plugins/common": "file:../common", @@ -20320,7 +22130,6 @@ } }, "packages/n8n": { - "name": "@tooljet-plugins/n8n", "version": "1.0.0", "dependencies": { "@tooljet-plugins/common": "file:../common", @@ -20328,7 +22137,6 @@ } }, "packages/notion": { - "name": "@tooljet-plugins/notion", "version": "1.0.0", "dependencies": { "@notionhq/client": "^1.0.4", @@ -20337,7 +22145,6 @@ } }, "packages/openapi": { - "name": "@tooljet-plugins/openapi", "version": "1.0.0", "dependencies": { "@tooljet-plugins/common": "file:../common", @@ -20347,7 +22154,6 @@ } }, "packages/oracledb": { - "name": "@tooljet-plugins/oracledb", "version": "1.0.0", "dependencies": { "@tooljet-plugins/common": "file:../common", @@ -20360,7 +22166,6 @@ } }, "packages/postgresql": { - "name": "@tooljet-plugins/postgresql", "version": "1.0.0", "dependencies": { "@tooljet-plugins/common": "file:../common", @@ -20370,7 +22175,6 @@ } }, "packages/redis": { - "name": "@tooljet-plugins/redis", "version": "1.0.0", "dependencies": { "@tooljet-plugins/common": "file:../common", @@ -20380,7 +22184,6 @@ } }, "packages/restapi": { - "name": "@tooljet-plugins/restapi", "version": "1.0.0", "dependencies": { "@tooljet-plugins/common": "file:../common", @@ -20392,7 +22195,6 @@ } }, "packages/rethinkdb": { - "name": "@tooljet-plugins/rethinkdb", "version": "1.0.0", "dependencies": { "@tooljet-plugins/common": "file:../common", @@ -20401,7 +22203,6 @@ } }, "packages/s3": { - "name": "@tooljet-plugins/s3", "version": "1.0.0", "dependencies": { "@aws-sdk/client-s3": "^3.264.0", @@ -20413,7 +22214,6 @@ } }, "packages/saphana": { - "name": "@tooljet-plugins/saphana", "version": "1.0.0", "dependencies": { "@sap/hana-client": "^2.12.22", @@ -20422,7 +22222,6 @@ } }, "packages/sendgrid": { - "name": "@tooljet-plugins/sendgrid", "version": "1.0.0", "dependencies": { "@sendgrid/mail": "^7.7.0", @@ -20432,7 +22231,6 @@ } }, "packages/slack": { - "name": "@tooljet-plugins/slack", "version": "1.0.0", "dependencies": { "@tooljet-plugins/common": "file:../common", @@ -20442,7 +22240,6 @@ } }, "packages/smtp": { - "name": "@tooljet-plugins/smtp", "version": "1.0.0", "dependencies": { "@tooljet-plugins/common": "file:../common", @@ -20454,7 +22251,6 @@ } }, "packages/snowflake": { - "name": "@tooljet-plugins/snowflake", "version": "1.0.0", "dependencies": { "@tooljet-plugins/common": "file:../common", @@ -20464,7 +22260,6 @@ } }, "packages/stripe": { - "name": "@tooljet-plugins/stripe", "version": "1.0.0", "dependencies": { "@tooljet-plugins/common": "file:../common", @@ -20474,7 +22269,6 @@ } }, "packages/twilio": { - "name": "@tooljet-plugins/twilio", "version": "1.0.0", "dependencies": { "@tooljet-plugins/common": "file:../common", @@ -20484,7 +22278,6 @@ } }, "packages/typesense": { - "name": "@tooljet-plugins/typesense", "version": "1.0.0", "dependencies": { "@tooljet-plugins/common": "file:../common", @@ -20494,7 +22287,6 @@ } }, "packages/woocommerce": { - "name": "@tooljet-plugins/woocommerce", "version": "1.0.0", "dependencies": { "@tooljet-plugins/common": "file:../common", @@ -20504,7 +22296,6 @@ } }, "packages/zendesk": { - "name": "@tooljet-plugins/zendesk", "version": "1.0.0", "dependencies": { "@tooljet-plugins/common": "file:../common", diff --git a/server/package-lock.json b/server/package-lock.json index d5c1c6571b..909b197962 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -20,7 +20,7 @@ "@nestjs/platform-ws": "^8.0.10", "@nestjs/schedule": "^2.2.0", "@nestjs/serve-static": "^2.2.2", - "@nestjs/typeorm": "8.0.0", + "@nestjs/typeorm": "9.0.0", "@nestjs/websockets": "^8.0.10", "@sentry/node": "6.17.6", "@sentry/tracing": "6.17.6", @@ -59,7 +59,7 @@ "semver": "^7.5.4", "ts-node": "^10.0.0", "tsconfig-paths": "^3.10.1", - "typeorm": "^0.2.38", + "typeorm": "^0.3.0", "ws": "^7.5.5", "y-websocket": "^1.4.0" }, @@ -107,7 +107,6 @@ } }, "../plugins": { - "name": "@tooljet/plugins", "version": "0.0.1", "dependencies": { "@tooljet-plugins/airtable": "file:packages/airtable", @@ -178,23 +177,14 @@ "typescript": "^4.9.5" } }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" @@ -301,30 +291,30 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", - "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz", + "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.5.tgz", - "integrity": "sha512-Cwc2XjUrG4ilcfOw4wBAK+enbdgwAcAJCfGUItPBKR7Mjw4aEfAFYrLxeRp4jWgtNIKn3n2AlBOfwwafl+42/g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz", + "integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.5", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.5", - "@babel/parser": "^7.23.5", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.5", - "@babel/types": "^7.23.5", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helpers": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/template": "^7.24.7", + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -340,77 +330,18 @@ } }, "node_modules/@babel/core/node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/core/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/core/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/core/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/core/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@babel/core/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/core/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/core/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -420,27 +351,15 @@ "semver": "bin/semver.js" } }, - "node_modules/@babel/core/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/generator": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.5.tgz", - "integrity": "sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", + "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", "dev": true, "dependencies": { - "@babel/types": "^7.23.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", + "@babel/types": "^7.24.7", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" }, "engines": { @@ -448,14 +367,14 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", - "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz", + "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", + "@babel/compat-data": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "browserslist": "^4.22.2", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -488,62 +407,66 @@ "dev": true }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", "dev": true, + "dependencies": { + "@babel/types": "^7.24.7" + }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", + "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", "dev": true, "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", + "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", "dev": true, "dependencies": { - "@babel/types": "^7.22.15" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz", + "integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -553,85 +476,86 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz", + "integrity": "sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", + "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", - "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz", + "integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.5.tgz", - "integrity": "sha512-oO7us8FzTEsG3U6ag9MfdF1iA/7Z6dz+MtFhifZk8C8o453rGJFFWUP1t+ULM9TUIAzC9uxXEiXjOiVMyd7QPg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.7.tgz", + "integrity": "sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==", "dev": true, "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.5", - "@babel/types": "^7.23.5" + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-validator-identifier": "^7.24.7", "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" @@ -702,9 +626,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.5.tgz", - "integrity": "sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", + "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", "bin": { "parser": "bin/babel-parser.js" }, @@ -773,12 +697,12 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", - "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", + "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -875,12 +799,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", - "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz", + "integrity": "sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -890,9 +814,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.1.tgz", - "integrity": "sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz", + "integrity": "sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -901,118 +825,47 @@ } }, "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", + "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/template/node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/template/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/template/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/template/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/template/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@babel/template/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/template/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/template/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/traverse": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.5.tgz", - "integrity": "sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", + "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.5", - "@babel/types": "^7.23.5", - "debug": "^4.1.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7", + "debug": "^4.3.1", "globals": "^11.1.0" }, "engines": { @@ -1020,68 +873,18 @@ } }, "node_modules/@babel/traverse/node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/traverse/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/traverse/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/traverse/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/traverse/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@babel/traverse/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/@babel/traverse/node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -1091,34 +894,13 @@ "node": ">=4" } }, - "node_modules/@babel/traverse/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/traverse/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/types": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.5.tgz", - "integrity": "sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", + "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", "to-fast-properties": "^2.0.0" }, "engines": { @@ -1355,22 +1137,10 @@ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.1.tgz", + "integrity": "sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" @@ -1412,6 +1182,16 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/@eslint/eslintrc/node_modules/ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", @@ -1427,6 +1207,18 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/@fast-csv/format": { "version": "4.3.5", "resolved": "https://registry.npmjs.org/@fast-csv/format/-/format-4.3.5.tgz", @@ -1492,6 +1284,7 @@ "version": "0.5.0", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "deprecated": "Use @eslint/config-array instead", "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.0", @@ -1502,10 +1295,33 @@ "node": ">=10.10.0" } }, + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/@humanwhocodes/object-schema": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "deprecated": "Use @eslint/object-schema instead", "dev": true }, "node_modules/@isaacs/cliui": { @@ -1722,9 +1538,9 @@ } }, "node_modules/@jest/core/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true }, "node_modules/@jest/environment": { @@ -1842,6 +1658,49 @@ } } }, + "node_modules/@jest/reporters/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@jest/reporters/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "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" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@jest/reporters/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/@jest/schemas": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", @@ -1942,42 +1801,42 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dependencies": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", - "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", "peer": true, "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, "node_modules/@jridgewell/sourcemap-codec": { @@ -1986,9 +1845,9 @@ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -2041,47 +1900,37 @@ "pug": ">=3.0.1" } }, - "node_modules/@nestjs-modules/mailer/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/@nestjs-modules/mailer/node_modules/preview-email": { + "version": "3.0.19", + "resolved": "https://registry.npmjs.org/preview-email/-/preview-email-3.0.19.tgz", + "integrity": "sha512-DBS3Nir18YtKc8loYCCOGitmiaQ0vTdahPoiXxwNweJDpmVZo+w3tppufOhoK0m8skpRxT56llYLs3VrORnmNQ==", "dependencies": { - "balanced-match": "^1.0.0" + "ci-info": "^3.8.0", + "display-notification": "2.0.0", + "fixpack": "^4.0.0", + "get-port": "5.1.1", + "mailparser": "^3.6.4", + "nodemailer": "^6.9.2", + "open": "7", + "p-event": "4.2.0", + "p-wait-for": "3.2.0", + "pug": "^3.0.2", + "uuid": "^9.0.0" + }, + "engines": { + "node": ">=14" } }, - "node_modules/@nestjs-modules/mailer/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, + "node_modules/@nestjs-modules/mailer/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@nestjs-modules/mailer/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "uuid": "dist/bin/uuid" } }, "node_modules/@nestjs/cli": { @@ -2136,9 +1985,9 @@ } }, "node_modules/@nestjs/cli/node_modules/acorn": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", + "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", "peer": true, "bin": { "acorn": "bin/acorn" @@ -2156,15 +2005,6 @@ "acorn": "^8" } }, - "node_modules/@nestjs/cli/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "peer": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/@nestjs/cli/node_modules/glob": { "version": "9.3.5", "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", @@ -2674,18 +2514,18 @@ } }, "node_modules/@nestjs/typeorm": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@nestjs/typeorm/-/typeorm-8.0.0.tgz", - "integrity": "sha512-KbiGzkoNM+wdrJfqUZ+eJFeyNMR/HeMpE+uleHAnggt+bNqRzPWuiwY0B/ris3TpU9iUYmD4RJYvky13XD4s8w==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@nestjs/typeorm/-/typeorm-9.0.0.tgz", + "integrity": "sha512-pTH9ZlngObaPlt7//CY2lSb+3ouFczUQJln1ctXIpGwZdY3QBrwsxF3hnJXsCYNa+IPfz27qJUeoAQmp65kGZw==", "dependencies": { "uuid": "8.3.2" }, "peerDependencies": { - "@nestjs/common": "^8.0.0", - "@nestjs/core": "^8.0.0", + "@nestjs/common": "^8.0.0 || ^9.0.0", + "@nestjs/core": "^8.0.0 || ^9.0.0", "reflect-metadata": "^0.1.13", "rxjs": "^7.2.0", - "typeorm": "^0.2.34" + "typeorm": "^0.3.0" } }, "node_modules/@nestjs/websockets": { @@ -2968,9 +2808,9 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@sideway/address": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", - "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", + "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", "dependencies": { "@hapi/hoek": "^9.0.0" } @@ -3003,9 +2843,9 @@ } }, "node_modules/@sinonjs/commons": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", - "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", "dev": true, "dependencies": { "type-detect": "4.0.8" @@ -3041,9 +2881,9 @@ "link": true }, "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==" + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==" }, "node_modules/@tsconfig/node12": { "version": "1.0.11", @@ -3074,9 +2914,9 @@ } }, "node_modules/@types/babel__generator": { - "version": "7.6.7", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.7.tgz", - "integrity": "sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==", + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", "dev": true, "dependencies": { "@babel/types": "^7.0.0" @@ -3093,9 +2933,9 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.20.4", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.4.tgz", - "integrity": "sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==", + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", "dev": true, "dependencies": { "@babel/types": "^7.20.7" @@ -3141,9 +2981,9 @@ } }, "node_modules/@types/cookie-parser": { - "version": "1.4.6", - "resolved": "https://registry.npmjs.org/@types/cookie-parser/-/cookie-parser-1.4.6.tgz", - "integrity": "sha512-KoooCrD56qlLskXPLGUiJxOMnv5l/8m7cQD2OxJ73NPMhuSz9PmvwRD6EpjDyKBVrdJDdQ4bQK7JFNHnNmax0w==", + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/@types/cookie-parser/-/cookie-parser-1.4.7.tgz", + "integrity": "sha512-Fvuyi354Z+uayxzIGCwYTayFKocfV7TuDYZClCdIP9ckhvAu/ixDtCB6qx2TT0FKjPLf1f3P/J1rgf6lPs64mw==", "dev": true, "dependencies": { "@types/express": "*" @@ -3162,9 +3002,9 @@ "optional": true }, "node_modules/@types/eslint": { - "version": "8.44.8", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.8.tgz", - "integrity": "sha512-4K8GavROwhrYl2QXDXm0Rv9epkA8GBFu0EI+XrrnnuCl7u8CWBRusX7fXJfanhZTDWSAL24gDI/UqXyUM0Injw==", + "version": "8.56.10", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", + "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", "peer": true, "dependencies": { "@types/estree": "*", @@ -3209,9 +3049,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.41", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.41.tgz", - "integrity": "sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==", + "version": "4.19.5", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz", + "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==", "dev": true, "dependencies": { "@types/node": "*", @@ -3317,6 +3157,12 @@ "@types/node": "*" } }, + "node_modules/@types/methods": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@types/methods/-/methods-1.1.4.tgz", + "integrity": "sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==", + "dev": true + }, "node_modules/@types/mime": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", @@ -3333,14 +3179,14 @@ } }, "node_modules/@types/node": { - "version": "16.18.68", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.68.tgz", - "integrity": "sha512-sG3hPIQwJLoewrN7cr0dwEy+yF5nD4D/4FxtQpFciRD/xwUzgD+G05uxZHv5mhfXo4F9Jkp13jjn0CC2q325sg==" + "version": "16.18.101", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.101.tgz", + "integrity": "sha512-AAsx9Rgz2IzG8KJ6tXd6ndNkVcu+GYB6U/SnFAaokSPNx2N7dcIIfnighYUNumvj6YS2q39Dejz5tT0NCV7CWA==" }, "node_modules/@types/nodemailer": { - "version": "6.4.14", - "resolved": "https://registry.npmjs.org/@types/nodemailer/-/nodemailer-6.4.14.tgz", - "integrity": "sha512-fUWthHO9k9DSdPCSPRqcu6TWhYyxTBg382vlNIttSe9M7XfsT06y0f24KHXtbnijPGGRIcVvdKHTNikOI6qiHA==", + "version": "6.4.15", + "resolved": "https://registry.npmjs.org/@types/nodemailer/-/nodemailer-6.4.15.tgz", + "integrity": "sha512-0EBJxawVNjPkng1zm2vopRctuWVCxk34JcIlRuXSf54habUWdz1FB7wHDqOqvDa8Mtpt0Q3LTXQkAs2LNyK5jQ==", "dev": true, "dependencies": { "@types/node": "*" @@ -3426,9 +3272,9 @@ "optional": true }, "node_modules/@types/qs": { - "version": "6.9.10", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.10.tgz", - "integrity": "sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw==", + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", "dev": true }, "node_modules/@types/range-parser": { @@ -3455,18 +3301,18 @@ } }, "node_modules/@types/sanitize-html": { - "version": "2.9.5", - "resolved": "https://registry.npmjs.org/@types/sanitize-html/-/sanitize-html-2.9.5.tgz", - "integrity": "sha512-2Sr1vd8Dw+ypsg/oDDfZ57OMSG2Befs+l2CMyCC5bVSK3CpE7lTB2aNlbbWzazgVA+Qqfuholwom6x/mWd1qmw==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@types/sanitize-html/-/sanitize-html-2.11.0.tgz", + "integrity": "sha512-7oxPGNQHXLHE48r/r/qjn7q0hlrs3kL7oZnGj0Wf/h9tj/6ibFyRkNbsDxaBBZ4XUZ0Dx5LGCyDJ04ytSofacQ==", "dev": true, "dependencies": { "htmlparser2": "^8.0.0" } }, "node_modules/@types/semver": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", - "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", "dev": true }, "node_modules/@types/send": { @@ -3480,14 +3326,14 @@ } }, "node_modules/@types/serve-static": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", - "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", "dev": true, "dependencies": { "@types/http-errors": "*", - "@types/mime": "*", - "@types/node": "*" + "@types/node": "*", + "@types/send": "*" } }, "node_modules/@types/stack-utils": { @@ -3497,12 +3343,13 @@ "dev": true }, "node_modules/@types/superagent": { - "version": "4.1.24", - "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.24.tgz", - "integrity": "sha512-mEafCgyKiMFin24SDzWN7yAADt4gt6YawFiNMp0QS5ZPboORfyxFt0s3VzJKhTaKg9py/4FUmrHLTNfJKt9Rbw==", + "version": "8.1.7", + "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-8.1.7.tgz", + "integrity": "sha512-NmIsd0Yj4DDhftfWvvAku482PZum4DBW7U51OvS8gvOkDDY0WT1jsVyDV3hK+vplrsYw8oDwi9QxOM7U68iwww==", "dev": true, "dependencies": { - "@types/cookiejar": "*", + "@types/cookiejar": "^2.1.5", + "@types/methods": "^1.1.4", "@types/node": "*" } }, @@ -3522,9 +3369,9 @@ "dev": true }, "node_modules/@types/validator": { - "version": "13.11.7", - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.11.7.tgz", - "integrity": "sha512-q0JomTsJ2I5Mv7dhHhQLGjMvX0JJm5dyZ1DXQySIUzU1UlwzB8bt+R6+LODUbz0UDIOvEzGc28tk27gBJw2N8Q==" + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.12.0.tgz", + "integrity": "sha512-nH45Lk7oPIJ1RVOF6JgFI6Dy0QpHEzq4QecZhvguxYPDwT8c93prCMqAtiIttm39voZ+DDR+qkNnMpJmMBRqag==" }, "node_modules/@types/ws": { "version": "8.5.10", @@ -3550,22 +3397,17 @@ "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", "dev": true }, - "node_modules/@types/zen-observable": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.8.3.tgz", - "integrity": "sha512-fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw==" - }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.13.2.tgz", - "integrity": "sha512-3+9OGAWHhk4O1LlcwLBONbdXsAhLjyCFogJY/cWy2lxdVJ2JrcTF2pTGMaLl2AE7U1l31n8Py4a8bx5DLf/0dQ==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", + "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.13.2", - "@typescript-eslint/type-utils": "6.13.2", - "@typescript-eslint/utils": "6.13.2", - "@typescript-eslint/visitor-keys": "6.13.2", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/type-utils": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -3590,65 +3432,6 @@ } } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.13.2.tgz", - "integrity": "sha512-CXQA0xo7z6x13FeDYCgBkjWzNqzBn8RXaE3QVQVIUm74fWJLkJkaHmHdKStrxQllGh6Q4eUGyNpMe0b1hMkXFA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.13.2", - "@typescript-eslint/visitor-keys": "6.13.2" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.13.2.tgz", - "integrity": "sha512-7sxbQ+EMRubQc3wTfTsycgYpSujyVbI1xw+3UMRUcrhSy+pN09y/lWzeKDbvhoqcRbHdc+APLs/PWYi/cisLPg==", - "dev": true, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.13.2.tgz", - "integrity": "sha512-OGznFs0eAQXJsp+xSd6k/O1UbFi/K/L7WjqeRoFE7vadjAF9y0uppXhYNQNEqygjou782maGClOoZwPqF0Drlw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.13.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, "node_modules/@typescript-eslint/experimental-utils": { "version": "4.33.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", @@ -3673,121 +3456,7 @@ "eslint": "*" } }, - "node_modules/@typescript-eslint/parser": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.13.2.tgz", - "integrity": "sha512-MUkcC+7Wt/QOGeVlM8aGGJZy1XV5YKjTpq9jK6r6/iLsGXhBVaGP5N0UYvFsu9BFlSpwY9kMretzdBH01rkRXg==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "6.13.2", - "@typescript-eslint/types": "6.13.2", - "@typescript-eslint/typescript-estree": "6.13.2", - "@typescript-eslint/visitor-keys": "6.13.2", - "debug": "^4.3.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.13.2.tgz", - "integrity": "sha512-CXQA0xo7z6x13FeDYCgBkjWzNqzBn8RXaE3QVQVIUm74fWJLkJkaHmHdKStrxQllGh6Q4eUGyNpMe0b1hMkXFA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.13.2", - "@typescript-eslint/visitor-keys": "6.13.2" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.13.2.tgz", - "integrity": "sha512-7sxbQ+EMRubQc3wTfTsycgYpSujyVbI1xw+3UMRUcrhSy+pN09y/lWzeKDbvhoqcRbHdc+APLs/PWYi/cisLPg==", - "dev": true, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.13.2.tgz", - "integrity": "sha512-SuD8YLQv6WHnOEtKv8D6HZUzOub855cfPnPMKvdM/Bh1plv1f7Q/0iFUDLKKlxHcEstQnaUU4QZskgQq74t+3w==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.13.2", - "@typescript-eslint/visitor-keys": "6.13.2", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.13.2.tgz", - "integrity": "sha512-OGznFs0eAQXJsp+xSd6k/O1UbFi/K/L7WjqeRoFE7vadjAF9y0uppXhYNQNEqygjou782maGClOoZwPqF0Drlw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.13.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@typescript-eslint/scope-manager": { + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/scope-manager": { "version": "4.33.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", @@ -3804,103 +3473,7 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.13.2.tgz", - "integrity": "sha512-Qr6ssS1GFongzH2qfnWKkAQmMUyZSyOr0W54nZNU1MDfo+U4Mv3XveeLZzadc/yq8iYhQZHYT+eoXJqnACM1tw==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "6.13.2", - "@typescript-eslint/utils": "6.13.2", - "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.13.2.tgz", - "integrity": "sha512-7sxbQ+EMRubQc3wTfTsycgYpSujyVbI1xw+3UMRUcrhSy+pN09y/lWzeKDbvhoqcRbHdc+APLs/PWYi/cisLPg==", - "dev": true, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.13.2.tgz", - "integrity": "sha512-SuD8YLQv6WHnOEtKv8D6HZUzOub855cfPnPMKvdM/Bh1plv1f7Q/0iFUDLKKlxHcEstQnaUU4QZskgQq74t+3w==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.13.2", - "@typescript-eslint/visitor-keys": "6.13.2", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.13.2.tgz", - "integrity": "sha512-OGznFs0eAQXJsp+xSd6k/O1UbFi/K/L7WjqeRoFE7vadjAF9y0uppXhYNQNEqygjou782maGClOoZwPqF0Drlw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.13.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@typescript-eslint/types": { + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/types": { "version": "4.33.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", @@ -3913,7 +3486,7 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/typescript-estree": { + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/typescript-estree": { "version": "4.33.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", @@ -3940,118 +3513,7 @@ } } }, - "node_modules/@typescript-eslint/utils": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.13.2.tgz", - "integrity": "sha512-b9Ptq4eAZUym4idijCRzl61oPCwwREcfDI8xGk751Vhzig5fFZR9CyzDz4Sp/nxSLBYxUPyh4QdIDqWykFhNmQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.13.2", - "@typescript-eslint/types": "6.13.2", - "@typescript-eslint/typescript-estree": "6.13.2", - "semver": "^7.5.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.13.2.tgz", - "integrity": "sha512-CXQA0xo7z6x13FeDYCgBkjWzNqzBn8RXaE3QVQVIUm74fWJLkJkaHmHdKStrxQllGh6Q4eUGyNpMe0b1hMkXFA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.13.2", - "@typescript-eslint/visitor-keys": "6.13.2" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.13.2.tgz", - "integrity": "sha512-7sxbQ+EMRubQc3wTfTsycgYpSujyVbI1xw+3UMRUcrhSy+pN09y/lWzeKDbvhoqcRbHdc+APLs/PWYi/cisLPg==", - "dev": true, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.13.2.tgz", - "integrity": "sha512-SuD8YLQv6WHnOEtKv8D6HZUzOub855cfPnPMKvdM/Bh1plv1f7Q/0iFUDLKKlxHcEstQnaUU4QZskgQq74t+3w==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.13.2", - "@typescript-eslint/visitor-keys": "6.13.2", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.13.2.tgz", - "integrity": "sha512-OGznFs0eAQXJsp+xSd6k/O1UbFi/K/L7WjqeRoFE7vadjAF9y0uppXhYNQNEqygjou782maGClOoZwPqF0Drlw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.13.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/visitor-keys": { "version": "4.33.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", @@ -4068,15 +3530,197 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", + "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", + "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", + "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", + "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", + "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", + "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", + "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/@ucast/core": { "version": "1.10.2", "resolved": "https://registry.npmjs.org/@ucast/core/-/core-1.10.2.tgz", "integrity": "sha512-ons5CwXZ/51wrUPfoduC+cO7AS1/wRb0ybpQJ9RrssossDxVy4t49QxWoWgfBDvVKsz9VXzBk9z0wqTdZ+Cq8g==" }, "node_modules/@ucast/js": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@ucast/js/-/js-3.0.3.tgz", - "integrity": "sha512-jBBqt57T5WagkAjqfCIIE5UYVdaXYgGkOFYv2+kjq2AVpZ2RIbwCo/TujJpDlwTVluUI+WpnRpoGU2tSGlEvFQ==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@ucast/js/-/js-3.0.4.tgz", + "integrity": "sha512-TgG1aIaCMdcaEyckOZKQozn1hazE0w90SVdlpIJ/er8xVumE11gYAtSbw/LBeUnA4fFnFWTcw3t6reqseeH/4Q==", "dependencies": { "@ucast/core": "^1.0.0" } @@ -4100,9 +3744,9 @@ } }, "node_modules/@webassemblyjs/ast": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", - "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", "peer": true, "dependencies": { "@webassemblyjs/helper-numbers": "1.11.6", @@ -4122,9 +3766,9 @@ "peer": true }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", - "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", "peer": true }, "node_modules/@webassemblyjs/helper-numbers": { @@ -4145,15 +3789,15 @@ "peer": true }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", - "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6" + "@webassemblyjs/wasm-gen": "1.12.1" } }, "node_modules/@webassemblyjs/ieee754": { @@ -4181,28 +3825,28 @@ "peer": true }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", - "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-opt": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6", - "@webassemblyjs/wast-printer": "1.11.6" + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", - "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", "@webassemblyjs/ieee754": "1.11.6", "@webassemblyjs/leb128": "1.11.6", @@ -4210,24 +3854,24 @@ } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", - "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", - "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-api-error": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", "@webassemblyjs/ieee754": "1.11.6", @@ -4236,12 +3880,12 @@ } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", - "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/ast": "1.12.1", "@xtuc/long": "4.2.2" } }, @@ -4328,9 +3972,23 @@ } }, "node_modules/acorn-walk": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.1.tgz", - "integrity": "sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==", + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", + "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk/node_modules/acorn": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", + "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", + "bin": { + "acorn": "bin/acorn" + }, "engines": { "node": ">=0.4.0" } @@ -4503,6 +4161,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "deprecated": "This package is no longer supported.", "dependencies": { "delegates": "^1.0.0", "readable-stream": "^3.6.0" @@ -4904,11 +4563,14 @@ } }, "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/bl": { @@ -4981,29 +4643,28 @@ "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==" }, "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "balanced-match": "^1.0.0" } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" } }, "node_modules/browserslist": { - "version": "4.22.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", - "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", + "version": "4.23.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz", + "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", "funding": [ { "type": "opencollective", @@ -5019,10 +4680,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001565", - "electron-to-chromium": "^1.4.601", + "caniuse-lite": "^1.0.30001629", + "electron-to-chromium": "^1.4.796", "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" + "update-browserslist-db": "^1.0.16" }, "bin": { "browserslist": "cli.js" @@ -5085,14 +4746,6 @@ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, - "node_modules/buffer-writer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", - "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==", - "engines": { - "node": ">=4" - } - }, "node_modules/busboy": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", @@ -5138,13 +4791,18 @@ } }, "node_modules/call-bind": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", - "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.1", - "set-function-length": "^1.1.1" + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5177,9 +4835,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001566", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001566.tgz", - "integrity": "sha512-ggIhCsTxmITBAMmK8yZjEhCO5/47jKXPu6Dha/wuCS4JePVL+3uiDEBuhu2aIoT+bqTOR8L76Ip1ARL9xYsEJA==", + "version": "1.0.30001636", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001636.tgz", + "integrity": "sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg==", "funding": [ { "type": "opencollective", @@ -5269,29 +4927,6 @@ "url": "https://github.com/sponsors/fb55" } }, - "node_modules/cheerio/node_modules/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", - "dependencies": { - "entities": "^4.4.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/cheerio/node_modules/parse5-htmlparser2-tree-adapter": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", - "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", - "dependencies": { - "domhandler": "^5.0.2", - "parse5": "^7.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, "node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -5327,9 +4962,9 @@ } }, "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", "peer": true, "engines": { "node": ">=6.0" @@ -5350,9 +4985,9 @@ } }, "node_modules/cjs-module-lexer": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", - "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz", + "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==", "dev": true }, "node_modules/class-transformer": { @@ -5361,13 +4996,13 @@ "integrity": "sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==" }, "node_modules/class-validator": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.14.0.tgz", - "integrity": "sha512-ct3ltplN8I9fOwUd8GrP8UQixwff129BkEtuWDKL5W45cQuLd19xqmTLu5ge78YDm/fdje6FMt0hGOhl0lii3A==", + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.14.1.tgz", + "integrity": "sha512-2VEG9JICxIqTpoK1eMzZqaV+u/EiwEJkMGzTrZf6sU/fwsnOITVgYJ8yojSy6CaXtO9V0Cc6ZQZ8h8m4UBuLwQ==", "dependencies": { - "@types/validator": "^13.7.10", - "libphonenumber-js": "^1.10.14", - "validator": "^13.7.0" + "@types/validator": "^13.11.8", + "libphonenumber-js": "^1.10.53", + "validator": "^13.9.0" } }, "node_modules/clean-css": { @@ -5430,6 +5065,24 @@ "wrap-ansi": "^7.0.0" } }, + "node_modules/cli-highlight/node_modules/parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==" + }, + "node_modules/cli-highlight/node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/cli-highlight/node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, "node_modules/cli-highlight/node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -5910,10 +5563,15 @@ "node": "*" } }, + "node_modules/dayjs": { + "version": "1.11.11", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz", + "integrity": "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==" + }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "dependencies": { "ms": "2.1.2" }, @@ -5952,9 +5610,9 @@ } }, "node_modules/dedent": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", - "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", "dev": true, "peerDependencies": { "babel-plugin-macros": "^3.1.0" @@ -6020,16 +5678,19 @@ } }, "node_modules/define-data-property": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/define-properties": { @@ -6087,9 +5748,9 @@ } }, "node_modules/detect-libc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", - "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", "engines": { "node": ">=8" } @@ -6269,14 +5930,6 @@ "node": ">=14" } }, - "node_modules/editorconfig/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/editorconfig/node_modules/commander": { "version": "10.0.1", "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", @@ -6305,9 +5958,9 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/ejs": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", - "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", "optional": true, "dependencies": { "jake": "^10.8.5" @@ -6320,9 +5973,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.608", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.608.tgz", - "integrity": "sha512-J2f/3iIIm3Mo0npneITZ2UPe4B1bg8fTNrFjD8715F/k1BvbviRuqYGkET1PgprrczXYTHFvotbBOmUp6KE0uA==" + "version": "1.4.810", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.810.tgz", + "integrity": "sha512-Kaxhu4T7SJGpRQx99tq216gCq2nMxJo+uuT6uzz9l8TVN2stL7M06MIIXAtr9jsrLs2Glflgf2vMQRepxawOdQ==" }, "node_modules/emitter-listener": { "version": "1.1.2", @@ -6373,9 +6026,9 @@ } }, "node_modules/encoding-japanese": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encoding-japanese/-/encoding-japanese-2.0.0.tgz", - "integrity": "sha512-++P0RhebUC8MJAwJOsT93dT+5oc5oPImp1HubZpAuCZ5kTLnhuuBhKHj2jJeO/Gj93idPBWmIuQ9QWMe5rX3pQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/encoding-japanese/-/encoding-japanese-2.1.0.tgz", + "integrity": "sha512-58XySVxUgVlBikBTbQ8WdDxBDHIdXucB16LO5PBHR8t75D54wQrNo4cg+58+R1CtJfKnsVsvt9XlteRaR8xw1w==", "engines": { "node": ">=8.10.0" } @@ -6389,9 +6042,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", - "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", + "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -6444,10 +6097,29 @@ "is-arrayish": "^0.2.1" } }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-module-lexer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", - "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", + "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", "peer": true }, "node_modules/es6-error": { @@ -6797,9 +6469,9 @@ } }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "engines": { "node": ">=6" } @@ -6909,9 +6581,9 @@ } }, "node_modules/eslint-plugin-cypress": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-2.15.1.tgz", - "integrity": "sha512-eLHLWP5Q+I4j2AWepYq0PgFEei9/s5LvjuSqWrxurkg1YZ8ltxdvMNmdSf0drnsNo57CTgYY/NIHHLRSWejR7w==", + "version": "2.15.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-2.15.2.tgz", + "integrity": "sha512-CtcFEQTDKyftpI22FVGpx8bkpKyYXBlNge6zSo0pl5/qJvBAnzaD76Vu2AsP16d6mTj478Ldn2mhgrWV+Xr0vQ==", "dev": true, "dependencies": { "globals": "^13.20.0" @@ -6975,30 +6647,39 @@ } }, "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, "dependencies": { - "eslint-visitor-keys": "^2.0.0" + "eslint-visitor-keys": "^1.1.0" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" } }, "node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint/node_modules/ajv": { @@ -7017,28 +6698,23 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/eslint/node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/eslint/node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, "engines": { - "node": ">=4" + "node": ">=10" } }, "node_modules/eslint/node_modules/ignore": { @@ -7056,6 +6732,18 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/espree": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", @@ -7209,6 +6897,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/execa/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, "node_modules/exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", @@ -7300,9 +6994,9 @@ } }, "node_modules/expect/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true }, "node_modules/express": { @@ -7498,9 +7192,9 @@ "dev": true }, "node_modules/fast-redact": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.3.0.tgz", - "integrity": "sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz", + "integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==", "engines": { "node": ">=6" } @@ -7524,9 +7218,9 @@ } }, "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -7586,15 +7280,6 @@ "minimatch": "^5.0.1" } }, - "node_modules/filelist/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "optional": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/filelist/node_modules/minimatch": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", @@ -7608,9 +7293,9 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -7709,15 +7394,15 @@ "integrity": "sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw==" }, "node_modules/flatted": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", "dev": true }, "node_modules/follow-redirects": { - "version": "1.15.3", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", - "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "funding": [ { "type": "individual", @@ -7734,9 +7419,9 @@ } }, "node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", + "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^4.0.1" @@ -7748,17 +7433,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/fork-ts-checker-webpack-plugin": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-8.0.0.tgz", @@ -7788,87 +7462,38 @@ } }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "peer": true, "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/@babel/code-frame/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "peer": true, "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=4" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "peer": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "peer": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "peer": true - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "peer": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "peer": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" + "node": "*" } }, "node_modules/form-data": { @@ -7901,12 +7526,12 @@ } }, "node_modules/formidable/node_modules/qs": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", - "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.1.tgz", + "integrity": "sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==", "dev": true, "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -7967,9 +7592,9 @@ } }, "node_modules/fs-monkey": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", - "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", + "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==", "peer": true }, "node_modules/fs.realpath": { @@ -8016,6 +7641,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "deprecated": "This package is no longer supported.", "dependencies": { "aproba": "^1.0.3 || ^2.0.0", "color-support": "^1.1.2", @@ -8031,6 +7657,11 @@ "node": ">=10" } }, + "node_modules/gauge/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, "node_modules/gaxios": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.3.3.tgz", @@ -8076,15 +7707,19 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", - "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dependencies": { + "es-errors": "^1.3.0", "function-bind": "^1.1.2", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", "hasown": "^2.0.0" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -8124,19 +7759,21 @@ } }, "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", "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" + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" }, "engines": { - "node": "*" + "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -8176,9 +7813,9 @@ } }, "node_modules/globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -8191,11 +7828,12 @@ } }, "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dependencies": { - "define-properties": "^1.1.3" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -8353,20 +7991,20 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", - "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dependencies": { - "get-intrinsic": "^1.2.2" + "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "engines": { "node": ">= 0.4" }, @@ -8386,11 +8024,11 @@ } }, "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dependencies": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -8405,9 +8043,9 @@ "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" }, "node_modules/hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dependencies": { "function-bind": "^1.1.2" }, @@ -8601,9 +8239,9 @@ ] }, "node_modules/ignore": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", - "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true, "engines": { "node": ">= 4" @@ -8661,6 +8299,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -8736,11 +8375,14 @@ } }, "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz", + "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==", "dependencies": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8911,14 +8553,14 @@ } }, "node_modules/istanbul-lib-instrument": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz", - "integrity": "sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz", + "integrity": "sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==", "dev": true, "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", "istanbul-lib-coverage": "^3.2.0", "semver": "^7.5.4" }, @@ -8979,9 +8621,9 @@ } }, "node_modules/istanbul-reports": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", - "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", "dev": true, "dependencies": { "html-escaper": "^2.0.0", @@ -9017,9 +8659,9 @@ } }, "node_modules/jake": { - "version": "10.8.7", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", - "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.1.tgz", + "integrity": "sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w==", "optional": true, "dependencies": { "async": "^3.2.3", @@ -9034,6 +8676,28 @@ "node": ">=10" } }, + "node_modules/jake/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "optional": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/jake/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "optional": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", @@ -9171,9 +8835,9 @@ } }, "node_modules/jest-circus/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true }, "node_modules/jest-cli": { @@ -9266,6 +8930,49 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/jest-config/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/jest-config/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "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" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-config/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/jest-config/node_modules/pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", @@ -9281,9 +8988,9 @@ } }, "node_modules/jest-config/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true }, "node_modules/jest-diff": { @@ -9365,9 +9072,9 @@ } }, "node_modules/jest-each/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true }, "node_modules/jest-environment-node": { @@ -9461,9 +9168,9 @@ } }, "node_modules/jest-leak-detector/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true }, "node_modules/jest-matcher-utils": { @@ -9478,7 +9185,7 @@ "pretty-format": "^27.5.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-matcher-utils/node_modules/jest-get-type": { @@ -9487,7 +9194,7 @@ "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", "dev": true, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-message-util": { @@ -9511,44 +9218,18 @@ } }, "node_modules/jest-message-util/node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/jest-message-util/node_modules/@babel/code-frame/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-message-util/node_modules/@babel/code-frame/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/jest-message-util/node_modules/ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", @@ -9561,39 +9242,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-message-util/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/jest-message-util/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/jest-message-util/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/jest-message-util/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/jest-message-util/node_modules/pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", @@ -9609,23 +9257,11 @@ } }, "node_modules/jest-message-util/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true }, - "node_modules/jest-message-util/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/jest-mock": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", @@ -9783,6 +9419,49 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-runtime/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/jest-runtime/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "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" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-runtime/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/jest-snapshot": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", @@ -9880,9 +9559,9 @@ } }, "node_modules/jest-snapshot/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true }, "node_modules/jest-util": { @@ -9958,9 +9637,9 @@ } }, "node_modules/jest-validate/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true }, "node_modules/jest-watcher": { @@ -10021,13 +9700,13 @@ } }, "node_modules/joi": { - "version": "17.11.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.11.0.tgz", - "integrity": "sha512-NgB+lZLNoqISVy1rZocE9PZI36bL/77ie924Ri43yEvi9GUUMPeyVIr8KdFTMUlby1p0PBYMk9spIxEUQYqrJQ==", + "version": "17.13.3", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", + "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==", "dependencies": { - "@hapi/hoek": "^9.0.0", - "@hapi/topo": "^5.0.0", - "@sideway/address": "^4.1.3", + "@hapi/hoek": "^9.3.0", + "@hapi/topo": "^5.1.0", + "@sideway/address": "^4.1.5", "@sideway/formula": "^3.0.1", "@sideway/pinpoint": "^2.0.0" } @@ -10041,9 +9720,9 @@ } }, "node_modules/js-base64": { - "version": "3.7.5", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.5.tgz", - "integrity": "sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA==" + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.7.tgz", + "integrity": "sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==" }, "node_modules/js-beautify": { "version": "1.15.1", @@ -10073,61 +9752,10 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/js-beautify/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/js-beautify/node_modules/glob": { - "version": "10.3.12", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", - "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.6", - "minimatch": "^9.0.1", - "minipass": "^7.0.4", - "path-scurry": "^1.10.2" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/js-beautify/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/js-beautify/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/js-beautify/node_modules/nopt": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.0.tgz", - "integrity": "sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==", + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", + "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", "dependencies": { "abbrev": "^2.0.0" }, @@ -10551,13 +10179,14 @@ } }, "node_modules/lib0": { - "version": "0.2.88", - "resolved": "https://registry.npmjs.org/lib0/-/lib0-0.2.88.tgz", - "integrity": "sha512-KyroiEvCeZcZEMx5Ys+b4u4eEBbA1ch7XUaBhYpwa/nPMrzTjUhI4RfcytmQfYoTBPcdyx+FX6WFNIoNuJzJfQ==", + "version": "0.2.94", + "resolved": "https://registry.npmjs.org/lib0/-/lib0-0.2.94.tgz", + "integrity": "sha512-hZ3p54jL4Wpu7IOg26uC7dnEWiMyNlUrb9KoG7+xYs45WkQwpVvKFndVq2+pqLYKe1u8Fp3+zAfZHVvTK34PvQ==", "dependencies": { "isomorphic.js": "^0.2.4" }, "bin": { + "0ecdsa-generate-keypair": "bin/0ecdsa-generate-keypair.js", "0gentesthtml": "bin/gentesthtml.js", "0serve": "bin/0serve.js" }, @@ -10570,19 +10199,19 @@ } }, "node_modules/libbase64": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/libbase64/-/libbase64-1.2.1.tgz", - "integrity": "sha512-l+nePcPbIG1fNlqMzrh68MLkX/gTxk/+vdvAb388Ssi7UuUN31MI44w4Yf33mM3Cm4xDfw48mdf3rkdHszLNew==" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/libbase64/-/libbase64-1.3.0.tgz", + "integrity": "sha512-GgOXd0Eo6phYgh0DJtjQ2tO8dc0IVINtZJeARPeiIJqge+HdsWSuaDTe8ztQ7j/cONByDZ3zeB325AHiv5O0dg==" }, "node_modules/libmime": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/libmime/-/libmime-5.2.1.tgz", - "integrity": "sha512-A0z9O4+5q+ZTj7QwNe/Juy1KARNb4WaviO4mYeFC4b8dBT2EEqK2pkM+GC8MVnkOjqhl5nYQxRgnPYRRTNmuSQ==", + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/libmime/-/libmime-5.3.5.tgz", + "integrity": "sha512-nSlR1yRZ43L3cZCiWEw7ali3jY29Hz9CQQ96Oy+sSspYnIP5N54ucOPHqooBsXzwrX1pwn13VUE05q4WmzfaLg==", "dependencies": { - "encoding-japanese": "2.0.0", + "encoding-japanese": "2.1.0", "iconv-lite": "0.6.3", - "libbase64": "1.2.1", - "libqp": "2.0.1" + "libbase64": "1.3.0", + "libqp": "2.1.0" } }, "node_modules/libmime/node_modules/iconv-lite": { @@ -10597,14 +10226,14 @@ } }, "node_modules/libphonenumber-js": { - "version": "1.10.51", - "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.51.tgz", - "integrity": "sha512-vY2I+rQwrDQzoPds0JeTEpeWzbUJgqoV0O4v31PauHBb/e+1KCXKylHcDnBMgJZ9fH9mErsEbROJY3Z3JtqEmg==" + "version": "1.11.4", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.11.4.tgz", + "integrity": "sha512-F/R50HQuWWYcmU/esP5jrH5LiWYaN7DpN0a/99U8+mnGGtnx8kmRE+649dQh3v+CowXXZc8vpkf5AmYkO0AQ7Q==" }, "node_modules/libqp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/libqp/-/libqp-2.0.1.tgz", - "integrity": "sha512-Ka0eC5LkF3IPNQHJmYBWljJsw0UvM6j+QdKRbWyCdTmYwvIDE6a7bCm0UkTAL/K+3KXK5qXT/ClcInU01OpdLg==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/libqp/-/libqp-2.1.0.tgz", + "integrity": "sha512-O6O6/fsG5jiUVbvdgT7YX3xY3uIadR6wEZ7+vy9u7PKHAlSEB6blvC1o5pHBjgsi95Uo0aiBBdkyFecj6jtb7A==" }, "node_modules/lie": { "version": "3.3.0", @@ -10620,11 +10249,11 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, "node_modules/linkify-it": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz", - "integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", "dependencies": { - "uc.micro": "^1.0.1" + "uc.micro": "^2.0.0" } }, "node_modules/loader-runner": { @@ -10834,19 +10463,20 @@ } }, "node_modules/mailparser": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/mailparser/-/mailparser-3.6.5.tgz", - "integrity": "sha512-nteTpF0Khm5JLOnt4sigmzNdUH/6mO7PZ4KEnvxf4mckyXYFFhrtAWZzbq/V5aQMH+049gA7ZjfLdh+QiX2Uqg==", + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/mailparser/-/mailparser-3.7.1.tgz", + "integrity": "sha512-RCnBhy5q8XtB3mXzxcAfT1huNqN93HTYYyL6XawlIKycfxM/rXPg9tXoZ7D46+SgCS1zxKzw+BayDQSvncSTTw==", "dependencies": { - "encoding-japanese": "2.0.0", + "encoding-japanese": "2.1.0", "he": "1.2.0", "html-to-text": "9.0.5", "iconv-lite": "0.6.3", - "libmime": "5.2.1", - "linkify-it": "4.0.1", + "libmime": "5.3.5", + "linkify-it": "5.0.0", "mailsplit": "5.4.0", - "nodemailer": "6.9.3", - "tlds": "1.240.0" + "nodemailer": "6.9.13", + "punycode.js": "2.3.1", + "tlds": "1.252.0" } }, "node_modules/mailparser/node_modules/iconv-lite": { @@ -10861,9 +10491,9 @@ } }, "node_modules/mailparser/node_modules/nodemailer": { - "version": "6.9.3", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.3.tgz", - "integrity": "sha512-fy9v3NgTzBngrMFkDsKEj0r02U7jm6XfC3b52eoNV+GCrGj+s8pt5OqhiJdWKuw51zCTdiNR/IUD1z33LIIGpg==", + "version": "6.9.13", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.13.tgz", + "integrity": "sha512-7o38Yogx6krdoBf3jCAqnIN4oSQFx+fMa0I7dK1D+me9kBxx12D+/33wSb+fhOCtIxvYJ+4x4IMEhmhCKfAiOA==", "engines": { "node": ">=6.0.0" } @@ -10878,6 +10508,14 @@ "libqp": "2.0.1" } }, + "node_modules/mailsplit/node_modules/encoding-japanese": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encoding-japanese/-/encoding-japanese-2.0.0.tgz", + "integrity": "sha512-++P0RhebUC8MJAwJOsT93dT+5oc5oPImp1HubZpAuCZ5kTLnhuuBhKHj2jJeO/Gj93idPBWmIuQ9QWMe5rX3pQ==", + "engines": { + "node": ">=8.10.0" + } + }, "node_modules/mailsplit/node_modules/iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", @@ -10889,6 +10527,11 @@ "node": ">=0.10.0" } }, + "node_modules/mailsplit/node_modules/libbase64": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/libbase64/-/libbase64-1.2.1.tgz", + "integrity": "sha512-l+nePcPbIG1fNlqMzrh68MLkX/gTxk/+vdvAb388Ssi7UuUN31MI44w4Yf33mM3Cm4xDfw48mdf3rkdHszLNew==" + }, "node_modules/mailsplit/node_modules/libmime": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/libmime/-/libmime-5.2.0.tgz", @@ -10900,6 +10543,11 @@ "libqp": "2.0.1" } }, + "node_modules/mailsplit/node_modules/libqp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/libqp/-/libqp-2.0.1.tgz", + "integrity": "sha512-Ka0eC5LkF3IPNQHJmYBWljJsw0UvM6j+QdKRbWyCdTmYwvIDE6a7bCm0UkTAL/K+3KXK5qXT/ClcInU01OpdLg==" + }, "node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -11000,12 +10648,12 @@ } }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", "dev": true, "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -11059,14 +10707,17 @@ } }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "*" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/minimist": { @@ -11078,11 +10729,11 @@ } }, "node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" } }, "node_modules/minizlib": { @@ -11186,57 +10837,6 @@ "mjml-cli": "bin/mjml" } }, - "node_modules/mjml-cli/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/mjml-cli/node_modules/glob": { - "version": "10.3.12", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", - "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.6", - "minimatch": "^9.0.1", - "minipass": "^7.0.4", - "path-scurry": "^1.10.2" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/mjml-cli/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/mjml-cli/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/mjml-column": { "version": "4.15.3", "resolved": "https://registry.npmjs.org/mjml-column/-/mjml-column-4.15.3.tgz", @@ -11758,9 +11358,9 @@ "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" }, "node_modules/nodemailer": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.7.tgz", - "integrity": "sha512-rUtR77ksqex/eZRLmQ21LKVH5nAAsVicAtAYudK7JgwenEDZ0UIQ1adUGqErz7sMkWYxWTTU1aeP2Jga6WQyJw==", + "version": "6.9.14", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.14.tgz", + "integrity": "sha512-Dobp/ebDKBvz91sbtRKhcznLThrKxKt97GI2FAlAyy+fk19j73Uz3sBXolVtmcXjaorivqsbbbjDY+Jkt4/bQA==", "engines": { "node": ">=6.0.0" } @@ -11813,6 +11413,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "deprecated": "This package is no longer supported.", "dependencies": { "are-we-there-yet": "^2.0.0", "console-control-strings": "^1.1.0", @@ -11848,9 +11449,12 @@ } }, "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -11920,17 +11524,17 @@ } }, "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" }, "engines": { "node": ">= 0.8.0" @@ -12089,11 +11693,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/packet-reader": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", - "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==" - }, "node_modules/pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", @@ -12141,22 +11740,27 @@ "integrity": "sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==" }, "node_modules/parse5": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==" - }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", "dependencies": { - "parse5": "^6.0.1" + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", + "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "dependencies": { + "domhandler": "^5.0.2", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } }, "node_modules/parseley": { "version": "0.12.1", @@ -12278,24 +11882,24 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "node_modules/path-scurry": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz", - "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", - "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", "engines": { "node": "14 || >=16.14" } @@ -12327,15 +11931,13 @@ } }, "node_modules/pg": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.11.3.tgz", - "integrity": "sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.12.0.tgz", + "integrity": "sha512-A+LHUSnwnxrnL/tZ+OLfqR1SxLN3c/pgDztZ47Rpbsd4jUytsTtwQo/TLPRzPJMp/1pbhYVhH9cuSZLAajNfjQ==", "dependencies": { - "buffer-writer": "2.0.0", - "packet-reader": "1.0.0", - "pg-connection-string": "^2.6.2", - "pg-pool": "^3.6.1", - "pg-protocol": "^1.6.0", + "pg-connection-string": "^2.6.4", + "pg-pool": "^3.6.2", + "pg-protocol": "^1.6.1", "pg-types": "^2.1.0", "pgpass": "1.x" }, @@ -12361,9 +11963,9 @@ "optional": true }, "node_modules/pg-connection-string": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.2.tgz", - "integrity": "sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==" + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.4.tgz", + "integrity": "sha512-v+Z7W/0EO707aNMaAEfiGnGL9sxxumwLl2fJvCQtMn9Fxsg+lPpPkdcyBSv/KFgpGdYkMfn+EI1Or2EHjpgLCA==" }, "node_modules/pg-int8": { "version": "1.0.1", @@ -12374,17 +11976,17 @@ } }, "node_modules/pg-pool": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.1.tgz", - "integrity": "sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.2.tgz", + "integrity": "sha512-Htjbg8BlwXqSBQ9V8Vjtc+vzf/6fVUuak/3/XXKA9oxZprwW3IMDQTGHP+KDmVL7rtd+R1QjbnCFPuTHm3G4hg==", "peerDependencies": { "pg": ">=8.0" } }, "node_modules/pg-protocol": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz", - "integrity": "sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==" + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.1.tgz", + "integrity": "sha512-jPIlvgoD63hrEuihvIg+tJhoGjUsLPn6poJY9N5CnlPd91c2T18T/9zBtLxZSb1EhYxBRoZJtzScCaWlYLtktg==" }, "node_modules/pg-types": { "version": "2.2.0", @@ -12410,9 +12012,9 @@ } }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" }, "node_modules/picomatch": { "version": "2.3.1", @@ -12501,9 +12103,9 @@ } }, "node_modules/pino-std-serializers": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz", - "integrity": "sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==" + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz", + "integrity": "sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==" }, "node_modules/pino/node_modules/pino-std-serializers": { "version": "3.2.0", @@ -12549,9 +12151,9 @@ } }, "node_modules/postcss": { - "version": "8.4.32", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", - "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", "funding": [ { "type": "opencollective", @@ -12569,7 +12171,7 @@ "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "source-map-js": "^1.2.0" }, "engines": { "node": "^10 || ^12 || >=14" @@ -12673,21 +12275,22 @@ } }, "node_modules/preview-email": { - "version": "3.0.19", - "resolved": "https://registry.npmjs.org/preview-email/-/preview-email-3.0.19.tgz", - "integrity": "sha512-DBS3Nir18YtKc8loYCCOGitmiaQ0vTdahPoiXxwNweJDpmVZo+w3tppufOhoK0m8skpRxT56llYLs3VrORnmNQ==", + "version": "3.0.20", + "resolved": "https://registry.npmjs.org/preview-email/-/preview-email-3.0.20.tgz", + "integrity": "sha512-QbAokW2F3p0thQfp2WTZ0rBy+IZuCnf9gIUCLffr+8hq85esq6pzCA7S0eUdD6oTmtKROqoNeH2rXZWrRow7EA==", + "dev": true, "dependencies": { "ci-info": "^3.8.0", "display-notification": "2.0.0", "fixpack": "^4.0.0", "get-port": "5.1.1", - "mailparser": "^3.6.4", - "nodemailer": "^6.9.2", + "mailparser": "^3.7.1", + "nodemailer": "^6.9.13", "open": "7", "p-event": "4.2.0", "p-wait-for": "3.2.0", - "pug": "^3.0.2", - "uuid": "^9.0.0" + "pug": "^3.0.3", + "uuid": "^9.0.1" }, "engines": { "node": ">=14" @@ -12697,6 +12300,7 @@ "version": "9.0.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "dev": true, "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" @@ -12751,9 +12355,9 @@ "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==" }, "node_modules/protobufjs": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.5.tgz", - "integrity": "sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.2.tgz", + "integrity": "sha512-RXyHaACeqXeqAKGLDl68rQKbmObRsTIn4TYVUUug1KfS47YWCo5MacGITEryugIgZqORCvJWEk4l449POg5Txg==", "hasInstallScript": true, "dependencies": { "@protobufjs/aspromise": "^1.1.2", @@ -12792,11 +12396,11 @@ "optional": true }, "node_modules/pug": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.2.tgz", - "integrity": "sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.3.tgz", + "integrity": "sha512-uBi6kmc9f3SZ3PXxqcHiUZLmIXgfgWooKWXcwSGwQd2Zi5Rb0bT14+8CJjJgI8AB+nndLaNgHGrcc6bPIB665g==", "dependencies": { - "pug-code-gen": "^3.0.2", + "pug-code-gen": "^3.0.3", "pug-filters": "^4.0.0", "pug-lexer": "^5.0.1", "pug-linker": "^4.0.0", @@ -12817,24 +12421,24 @@ } }, "node_modules/pug-code-gen": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.2.tgz", - "integrity": "sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.3.tgz", + "integrity": "sha512-cYQg0JW0w32Ux+XTeZnBEeuWrAY7/HNE6TWnhiHGnnRYlCgyAUPoyh9KzCMa9WhcJlJ1AtQqpEYHc+vbCzA+Aw==", "dependencies": { "constantinople": "^4.0.1", "doctypes": "^1.1.0", "js-stringify": "^1.0.2", "pug-attrs": "^3.0.0", - "pug-error": "^2.0.0", - "pug-runtime": "^3.0.0", + "pug-error": "^2.1.0", + "pug-runtime": "^3.0.1", "void-elements": "^3.1.0", "with": "^7.0.0" } }, "node_modules/pug-error": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.0.0.tgz", - "integrity": "sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.1.0.tgz", + "integrity": "sha512-lv7sU9e5Jk8IeUheHata6/UThZ7RK2jnaaNztxfPYUY+VxZyk/ePVaNZ/vwmH8WqGvDz3LrNYt/+gA55NDg6Pg==" }, "node_modules/pug-filters": { "version": "4.0.0", @@ -12917,10 +12521,18 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "engines": { + "node": ">=6" + } + }, "node_modules/pure-rand": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz", - "integrity": "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", "dev": true, "funding": [ { @@ -13212,6 +12824,11 @@ "node": ">=8" } }, + "node_modules/restore-cursor/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -13223,14 +12840,15 @@ } }, "node_modules/rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==" + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==" }, "node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dependencies": { "glob": "^7.1.3" }, @@ -13241,6 +12859,46 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rimraf/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "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" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/roarr": { "version": "2.15.4", "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", @@ -13367,6 +13025,11 @@ "node": ">=0.10.0" } }, + "node_modules/run-applescript/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, "node_modules/run-applescript/node_modules/which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -13429,9 +13092,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/sanitize-html": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.11.0.tgz", - "integrity": "sha512-BG68EDHRaGKqlsNjJ2xUB7gpInPA8gVx/mvjO743hZaeMCZ2DwzW7xvsqZ+KNU4QKwj86HJ3uu2liISf2qBBUA==", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.13.0.tgz", + "integrity": "sha512-Xff91Z+4Mz5QiNSLdLWwjgBDm5b1RU6xBT0+12rapjiaR7SwfRdjw8f+6Rir2MXKLrDicRFHdb51hGOAxmsUIA==", "dependencies": { "deepmerge": "^4.2.2", "escape-string-regexp": "^4.0.0", @@ -13441,11 +13104,6 @@ "postcss": "^8.3.11" } }, - "node_modules/sax": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", - "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" - }, "node_modules/schema-utils": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", @@ -13507,12 +13165,9 @@ } }, "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "bin": { "semver": "bin/semver.js" }, @@ -13592,9 +13247,9 @@ } }, "node_modules/serialize-javascript": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", - "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "peer": true, "dependencies": { "randombytes": "^2.1.0" @@ -13620,14 +13275,16 @@ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, "node_modules/set-function-length": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", - "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dependencies": { - "define-data-property": "^1.1.1", - "get-intrinsic": "^1.2.1", + "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.0" + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -13691,28 +13348,81 @@ "node": ">=4" } }, + "node_modules/shelljs/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/shelljs/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "peer": true, + "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" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/shelljs/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/shimmer": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, "node_modules/sisteransi": { "version": "1.0.5", @@ -13771,9 +13481,9 @@ } }, "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", "engines": { "node": ">=0.10.0" } @@ -13971,6 +13681,7 @@ "version": "8.1.2", "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.1.2.tgz", "integrity": "sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==", + "deprecated": "Please upgrade to v9.0.0+ as we have fixed a public vulnerability with formidable dependency. Note that v9.0.0+ requires Node.js v14.18.0+. See https://github.com/ladjs/superagent/pull/1800 for insight. This project is supported and maintained by the team at Forward Email @ https://forwardemail.net", "dev": true, "dependencies": { "component-emitter": "^1.3.0", @@ -14015,12 +13726,12 @@ } }, "node_modules/superagent/node_modules/qs": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", - "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.1.tgz", + "integrity": "sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==", "dev": true, "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -14030,13 +13741,13 @@ } }, "node_modules/supertest": { - "version": "6.3.3", - "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.3.3.tgz", - "integrity": "sha512-EMCG6G8gDu5qEqRQ3JjjPs6+FYT1a7Hv5ApHvtSghmOFJYtsU5S+pSb6Y2EUeCEY3CmEL3mmQ8YWlPOzQomabA==", + "version": "6.3.4", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.3.4.tgz", + "integrity": "sha512-erY3HFDG0dPnhw4U+udPfrzXa4xhSG+n4rxfRuZWCUvjFWwKl+OxWf/7zk50s84/fAAs7vf5QAb9uRa0cCykxw==", "dev": true, "dependencies": { "methods": "^1.1.2", - "superagent": "^8.0.5" + "superagent": "^8.1.2" }, "engines": { "node": ">=6.4.0" @@ -14074,9 +13785,9 @@ } }, "node_modules/table": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", - "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz", + "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==", "dev": true, "dependencies": { "ajv": "^8.0.1", @@ -14098,9 +13809,9 @@ } }, "node_modules/tar": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", - "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -14113,6 +13824,14 @@ "node": ">=10" } }, + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "engines": { + "node": ">=8" + } + }, "node_modules/tar/node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -14125,9 +13844,9 @@ } }, "node_modules/terser": { - "version": "5.26.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.26.0.tgz", - "integrity": "sha512-dytTGoE2oHgbNV9nTzgBEPaqAWvcJNl66VZ0BkJqlvp71IjO8CxdBx/ykCNb47cLnCmCvRZ6ZR0tLkqvZCdVBQ==", + "version": "5.31.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.1.tgz", + "integrity": "sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg==", "peer": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -14143,16 +13862,16 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.9", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", - "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", "peer": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.17", + "@jridgewell/trace-mapping": "^0.3.20", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.1", - "terser": "^5.16.8" + "terser": "^5.26.0" }, "engines": { "node": ">= 10.13.0" @@ -14206,9 +13925,9 @@ } }, "node_modules/terser/node_modules/acorn": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", + "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", "peer": true, "bin": { "acorn": "bin/acorn" @@ -14237,6 +13956,49 @@ "node": ">=8" } }, + "node_modules/test-exclude/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/test-exclude/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "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" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/test-exclude/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -14269,9 +14031,9 @@ "peer": true }, "node_modules/tlds": { - "version": "1.240.0", - "resolved": "https://registry.npmjs.org/tlds/-/tlds-1.240.0.tgz", - "integrity": "sha512-1OYJQenswGZSOdRw7Bql5Qu7uf75b+F3HFBXbqnG/ifHa0fev1XcG+3pJf3pA/KC6RtHQzfKgIf1vkMlMG7mtQ==", + "version": "1.252.0", + "resolved": "https://registry.npmjs.org/tlds/-/tlds-1.252.0.tgz", + "integrity": "sha512-GA16+8HXvqtfEnw/DTcwB0UU354QE1n3+wh08oFjr6Znl7ZLAeUgYzCcK+/CCrOyE0vnHR8/pu3XXG3vDijXpQ==", "bin": { "tlds": "bin.js" } @@ -14341,21 +14103,21 @@ } }, "node_modules/ts-api-utils": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", - "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", "dev": true, "engines": { - "node": ">=16.13.0" + "node": ">=16" }, "peerDependencies": { "typescript": ">=4.2.0" } }, "node_modules/ts-jest": { - "version": "29.1.1", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz", - "integrity": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==", + "version": "29.1.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.5.tgz", + "integrity": "sha512-UuClSYxM7byvvYfyWdFI+/2UxMmwNyJb0NPkZPQE2hew3RurV7l7zURgOHAd/1I1ZdPpe3GUsXNXAcN8TFKSIg==", "dev": true, "dependencies": { "bs-logger": "0.x", @@ -14371,10 +14133,11 @@ "ts-jest": "cli.js" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" }, "peerDependencies": { "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/transform": "^29.0.0", "@jest/types": "^29.0.0", "babel-jest": "^29.0.0", "jest": "^29.0.0", @@ -14384,6 +14147,9 @@ "@babel/core": { "optional": true }, + "@jest/transform": { + "optional": true + }, "@jest/types": { "optional": true }, @@ -14416,9 +14182,9 @@ } }, "node_modules/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -14458,9 +14224,9 @@ } }, "node_modules/ts-node/node_modules/acorn": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", + "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", "bin": { "acorn": "bin/acorn" }, @@ -14469,9 +14235,9 @@ } }, "node_modules/tsconfig-paths": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", - "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.2", @@ -14612,52 +14378,60 @@ "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" }, "node_modules/typeorm": { - "version": "0.2.45", - "resolved": "https://registry.npmjs.org/typeorm/-/typeorm-0.2.45.tgz", - "integrity": "sha512-c0rCO8VMJ3ER7JQ73xfk0zDnVv0WDjpsP6Q1m6CVKul7DB9iVdWLRjPzc8v2eaeBuomsbZ2+gTaYr8k1gm3bYA==", + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/typeorm/-/typeorm-0.3.20.tgz", + "integrity": "sha512-sJ0T08dV5eoZroaq9uPKBoNcGslHBR4E4y+EBHs//SiGbblGe7IeduP/IH4ddCcj0qp3PHwDwGnuvqEAnKlq/Q==", "dependencies": { - "@sqltools/formatter": "^1.2.2", - "app-root-path": "^3.0.0", + "@sqltools/formatter": "^1.2.5", + "app-root-path": "^3.1.0", "buffer": "^6.0.3", - "chalk": "^4.1.0", + "chalk": "^4.1.2", "cli-highlight": "^2.1.11", - "debug": "^4.3.1", - "dotenv": "^8.2.0", - "glob": "^7.1.6", - "js-yaml": "^4.0.0", - "mkdirp": "^1.0.4", - "reflect-metadata": "^0.1.13", + "dayjs": "^1.11.9", + "debug": "^4.3.4", + "dotenv": "^16.0.3", + "glob": "^10.3.10", + "mkdirp": "^2.1.3", + "reflect-metadata": "^0.2.1", "sha.js": "^2.4.11", - "tslib": "^2.1.0", - "uuid": "^8.3.2", - "xml2js": "^0.4.23", - "yargs": "^17.0.1", - "zen-observable-ts": "^1.0.0" + "tslib": "^2.5.0", + "uuid": "^9.0.0", + "yargs": "^17.6.2" }, "bin": { - "typeorm": "cli.js" + "typeorm": "cli.js", + "typeorm-ts-node-commonjs": "cli-ts-node-commonjs.js", + "typeorm-ts-node-esm": "cli-ts-node-esm.js" + }, + "engines": { + "node": ">=16.13.0" }, "funding": { "url": "https://opencollective.com/typeorm" }, "peerDependencies": { - "@sap/hana-client": "^2.11.14", - "better-sqlite3": "^7.1.2", + "@google-cloud/spanner": "^5.18.0", + "@sap/hana-client": "^2.12.25", + "better-sqlite3": "^7.1.2 || ^8.0.0 || ^9.0.0", "hdb-pool": "^0.1.6", - "ioredis": "^4.28.3", - "mongodb": "^3.6.0", - "mssql": "^6.3.1", - "mysql2": "^2.2.5", - "oracledb": "^5.1.0", + "ioredis": "^5.0.4", + "mongodb": "^5.8.0", + "mssql": "^9.1.1 || ^10.0.1", + "mysql2": "^2.2.5 || ^3.0.1", + "oracledb": "^6.3.0", "pg": "^8.5.1", "pg-native": "^3.0.0", "pg-query-stream": "^4.0.0", - "redis": "^3.1.1", + "redis": "^3.1.1 || ^4.0.0", "sql.js": "^1.4.0", - "sqlite3": "^5.0.2", + "sqlite3": "^5.0.3", + "ts-node": "^10.7.0", "typeorm-aurora-data-api-driver": "^2.0.0" }, "peerDependenciesMeta": { + "@google-cloud/spanner": { + "optional": true + }, "@sap/hana-client": { "optional": true }, @@ -14700,16 +14474,14 @@ "sqlite3": { "optional": true }, + "ts-node": { + "optional": true + }, "typeorm-aurora-data-api-driver": { "optional": true } } }, - "node_modules/typeorm/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, "node_modules/typeorm/node_modules/buffer": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", @@ -14734,33 +14506,50 @@ } }, "node_modules/typeorm/node_modules/dotenv": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", - "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", "engines": { - "node": ">=10" - } - }, - "node_modules/typeorm/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dependencies": { - "argparse": "^2.0.1" + "node": ">=12" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "funding": { + "url": "https://dotenvx.com" } }, "node_modules/typeorm/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.6.tgz", + "integrity": "sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==", "bin": { - "mkdirp": "bin/cmd.js" + "mkdirp": "dist/cjs/src/bin.js" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/typeorm/node_modules/reflect-metadata": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==" + }, + "node_modules/typeorm/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/typeorm/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" } }, "node_modules/typescript": { @@ -14776,14 +14565,14 @@ } }, "node_modules/uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==" }, "node_modules/uglify-js": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "version": "3.18.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.18.0.tgz", + "integrity": "sha512-SyVVbcNBCk0dzr9XL/R/ySrmYf0s372K6/hFklzgcp2lBFyXtw4I7BOdDjlLhE1aVqaI/SHWXWmYdlZxuyF38A==", "bin": { "uglifyjs": "bin/uglifyjs" }, @@ -14808,9 +14597,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", + "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", "funding": [ { "type": "opencollective", @@ -14826,8 +14615,8 @@ } ], "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.1.2", + "picocolors": "^1.0.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -14890,9 +14679,9 @@ "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" }, "node_modules/v8-to-istanbul": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", - "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", @@ -14912,9 +14701,9 @@ } }, "node_modules/validator": { - "version": "13.11.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.11.0.tgz", - "integrity": "sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==", + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.12.0.tgz", + "integrity": "sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==", "engines": { "node": ">= 0.10" } @@ -14945,9 +14734,9 @@ } }, "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", + "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", "peer": true, "dependencies": { "glob-to-regexp": "^0.4.1", @@ -15088,34 +14877,34 @@ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "node_modules/webpack": { - "version": "5.89.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz", - "integrity": "sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==", + "version": "5.92.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.92.1.tgz", + "integrity": "sha512-JECQ7IwJb+7fgUFBlrJzbyu3GEuNBcdqr1LD7IbSzwkSmIevTm8PF+wej3Oxuz/JFBUZ6O1o43zsPkwm1C4TmA==", "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.3", - "@types/estree": "^1.0.0", - "@webassemblyjs/ast": "^1.11.5", - "@webassemblyjs/wasm-edit": "^1.11.5", - "@webassemblyjs/wasm-parser": "^1.11.5", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", "acorn": "^8.7.1", - "acorn-import-assertions": "^1.9.0", - "browserslist": "^4.14.5", + "acorn-import-attributes": "^1.9.5", + "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.15.0", + "enhanced-resolve": "^5.17.0", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", + "graceful-fs": "^4.2.11", "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", "schema-utils": "^3.2.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.7", - "watchpack": "^2.4.0", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", "webpack-sources": "^3.2.3" }, "bin": { @@ -15153,9 +14942,9 @@ } }, "node_modules/webpack/node_modules/acorn": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", + "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", "peer": true, "bin": { "acorn": "bin/acorn" @@ -15164,10 +14953,10 @@ "node": ">=0.4.0" } }, - "node_modules/webpack/node_modules/acorn-import-assertions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", - "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "node_modules/webpack/node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", "peer": true, "peerDependencies": { "acorn": "^8" @@ -15251,6 +15040,12 @@ "node": ">=8.12.0" } }, + "node_modules/windows-release/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "peer": true + }, "node_modules/with": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/with/-/with-7.0.2.tgz", @@ -15265,6 +15060,15 @@ "node": ">= 10.0.0" } }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", @@ -15321,10 +15125,16 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/write-file-atomic/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, "node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "engines": { "node": ">=8.3.0" }, @@ -15341,26 +15151,6 @@ } } }, - "node_modules/xml2js": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", - "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", - "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "engines": { - "node": ">=4.0" - } - }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -15406,9 +15196,9 @@ } }, "node_modules/y-websocket": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/y-websocket/-/y-websocket-1.5.0.tgz", - "integrity": "sha512-A8AO6XtnQlYwWFytWdkDCeXg4l8ghRTIw5h2YUgUYDmEC9ugWGIwYNW80yadhSFAF7CvuWTEkQNEpevnH6EiZw==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/y-websocket/-/y-websocket-1.5.4.tgz", + "integrity": "sha512-Y3021uy0anOIHqAPyAZbNDoR05JuMEGjRNI8c+K9MHzVS8dWoImdJUjccljAznc8H2L7WkIXhRHZ1igWNRSgPw==", "dependencies": { "lib0": "^0.2.52", "lodash.debounce": "^4.0.8", @@ -15418,6 +15208,10 @@ "y-websocket": "bin/server.js", "y-websocket-server": "bin/server.js" }, + "engines": { + "node": ">=16.0.0", + "npm": ">=8.0.0" + }, "funding": { "type": "GitHub Sponsors ❤", "url": "https://github.com/sponsors/dmonad" @@ -15431,9 +15225,9 @@ } }, "node_modules/y-websocket/node_modules/ws": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", - "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", + "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", "optional": true, "dependencies": { "async-limiter": "~1.0.0" @@ -15487,9 +15281,9 @@ } }, "node_modules/yjs": { - "version": "13.6.10", - "resolved": "https://registry.npmjs.org/yjs/-/yjs-13.6.10.tgz", - "integrity": "sha512-1JcyQek1vaMyrDm7Fqfa+pvHg/DURSbVo4VmeN7wjnTKB/lZrfIPhdCj7d8sboK6zLfRBJXegTjc9JlaDd8/Zw==", + "version": "13.6.18", + "resolved": "https://registry.npmjs.org/yjs/-/yjs-13.6.18.tgz", + "integrity": "sha512-GBTjO4QCmv2HFKFkYIJl7U77hIB1o22vSCSQD1Ge8ZxWbIbn8AltI4gyXbtL+g5/GJep67HCMq3Y5AmNwDSyEg==", "peer": true, "dependencies": { "lib0": "^0.2.86" @@ -15522,20 +15316,6 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } - }, - "node_modules/zen-observable": { - "version": "0.8.15", - "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", - "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==" - }, - "node_modules/zen-observable-ts": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-1.1.0.tgz", - "integrity": "sha512-1h4zlLSqI2cRLPJUHJFL8bCWHhkpuXkF+dbGkRaWjgDIG26DmzyshUMrdV/rL3UnR+mhaX4fRq8LPouq0MYYIA==", - "dependencies": { - "@types/zen-observable": "0.8.3", - "zen-observable": "0.8.15" - } } } } diff --git a/server/package.json b/server/package.json index fa53710307..63c2d1653c 100644 --- a/server/package.json +++ b/server/package.json @@ -45,7 +45,7 @@ "@nestjs/platform-ws": "^8.0.10", "@nestjs/schedule": "^2.2.0", "@nestjs/serve-static": "^2.2.2", - "@nestjs/typeorm": "8.0.0", + "@nestjs/typeorm": "9.0.0", "@nestjs/websockets": "^8.0.10", "@sentry/node": "6.17.6", "@sentry/tracing": "6.17.6", @@ -84,7 +84,7 @@ "semver": "^7.5.4", "ts-node": "^10.0.0", "tsconfig-paths": "^3.10.1", - "typeorm": "^0.2.38", + "typeorm": "^0.3.0", "ws": "^7.5.5", "y-websocket": "^1.4.0" }, From 3bba26bc850001e6475162977bcf40a8197b1743 Mon Sep 17 00:00:00 2001 From: Muhsin Shah Date: Tue, 25 Jun 2024 16:55:44 +0530 Subject: [PATCH 022/190] reverted the typeorm version back to old --- server/package-lock.json | 231 ++++++++++++++++++++++++--------------- server/package.json | 4 +- 2 files changed, 146 insertions(+), 89 deletions(-) diff --git a/server/package-lock.json b/server/package-lock.json index 909b197962..b09d77ce15 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -20,7 +20,7 @@ "@nestjs/platform-ws": "^8.0.10", "@nestjs/schedule": "^2.2.0", "@nestjs/serve-static": "^2.2.2", - "@nestjs/typeorm": "9.0.0", + "@nestjs/typeorm": "8.0.0", "@nestjs/websockets": "^8.0.10", "@sentry/node": "6.17.6", "@sentry/tracing": "6.17.6", @@ -59,7 +59,7 @@ "semver": "^7.5.4", "ts-node": "^10.0.0", "tsconfig-paths": "^3.10.1", - "typeorm": "^0.3.0", + "typeorm": "^0.2.38", "ws": "^7.5.5", "y-websocket": "^1.4.0" }, @@ -107,6 +107,7 @@ } }, "../plugins": { + "name": "@tooljet/plugins", "version": "0.0.1", "dependencies": { "@tooljet-plugins/airtable": "file:packages/airtable", @@ -2514,18 +2515,18 @@ } }, "node_modules/@nestjs/typeorm": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@nestjs/typeorm/-/typeorm-9.0.0.tgz", - "integrity": "sha512-pTH9ZlngObaPlt7//CY2lSb+3ouFczUQJln1ctXIpGwZdY3QBrwsxF3hnJXsCYNa+IPfz27qJUeoAQmp65kGZw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@nestjs/typeorm/-/typeorm-8.0.0.tgz", + "integrity": "sha512-KbiGzkoNM+wdrJfqUZ+eJFeyNMR/HeMpE+uleHAnggt+bNqRzPWuiwY0B/ris3TpU9iUYmD4RJYvky13XD4s8w==", "dependencies": { "uuid": "8.3.2" }, "peerDependencies": { - "@nestjs/common": "^8.0.0 || ^9.0.0", - "@nestjs/core": "^8.0.0 || ^9.0.0", + "@nestjs/common": "^8.0.0", + "@nestjs/core": "^8.0.0", "reflect-metadata": "^0.1.13", "rxjs": "^7.2.0", - "typeorm": "^0.3.0" + "typeorm": "^0.2.34" } }, "node_modules/@nestjs/websockets": { @@ -3397,6 +3398,11 @@ "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", "dev": true }, + "node_modules/@types/zen-observable": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.8.3.tgz", + "integrity": "sha512-fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw==" + }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "6.21.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", @@ -5563,11 +5569,6 @@ "node": "*" } }, - "node_modules/dayjs": { - "version": "1.11.11", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz", - "integrity": "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==" - }, "node_modules/debug": { "version": "4.3.5", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", @@ -13104,6 +13105,11 @@ "postcss": "^8.3.11" } }, + "node_modules/sax": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==" + }, "node_modules/schema-utils": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", @@ -14378,60 +14384,52 @@ "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" }, "node_modules/typeorm": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/typeorm/-/typeorm-0.3.20.tgz", - "integrity": "sha512-sJ0T08dV5eoZroaq9uPKBoNcGslHBR4E4y+EBHs//SiGbblGe7IeduP/IH4ddCcj0qp3PHwDwGnuvqEAnKlq/Q==", + "version": "0.2.45", + "resolved": "https://registry.npmjs.org/typeorm/-/typeorm-0.2.45.tgz", + "integrity": "sha512-c0rCO8VMJ3ER7JQ73xfk0zDnVv0WDjpsP6Q1m6CVKul7DB9iVdWLRjPzc8v2eaeBuomsbZ2+gTaYr8k1gm3bYA==", "dependencies": { - "@sqltools/formatter": "^1.2.5", - "app-root-path": "^3.1.0", + "@sqltools/formatter": "^1.2.2", + "app-root-path": "^3.0.0", "buffer": "^6.0.3", - "chalk": "^4.1.2", + "chalk": "^4.1.0", "cli-highlight": "^2.1.11", - "dayjs": "^1.11.9", - "debug": "^4.3.4", - "dotenv": "^16.0.3", - "glob": "^10.3.10", - "mkdirp": "^2.1.3", - "reflect-metadata": "^0.2.1", + "debug": "^4.3.1", + "dotenv": "^8.2.0", + "glob": "^7.1.6", + "js-yaml": "^4.0.0", + "mkdirp": "^1.0.4", + "reflect-metadata": "^0.1.13", "sha.js": "^2.4.11", - "tslib": "^2.5.0", - "uuid": "^9.0.0", - "yargs": "^17.6.2" + "tslib": "^2.1.0", + "uuid": "^8.3.2", + "xml2js": "^0.4.23", + "yargs": "^17.0.1", + "zen-observable-ts": "^1.0.0" }, "bin": { - "typeorm": "cli.js", - "typeorm-ts-node-commonjs": "cli-ts-node-commonjs.js", - "typeorm-ts-node-esm": "cli-ts-node-esm.js" - }, - "engines": { - "node": ">=16.13.0" + "typeorm": "cli.js" }, "funding": { "url": "https://opencollective.com/typeorm" }, "peerDependencies": { - "@google-cloud/spanner": "^5.18.0", - "@sap/hana-client": "^2.12.25", - "better-sqlite3": "^7.1.2 || ^8.0.0 || ^9.0.0", + "@sap/hana-client": "^2.11.14", + "better-sqlite3": "^7.1.2", "hdb-pool": "^0.1.6", - "ioredis": "^5.0.4", - "mongodb": "^5.8.0", - "mssql": "^9.1.1 || ^10.0.1", - "mysql2": "^2.2.5 || ^3.0.1", - "oracledb": "^6.3.0", + "ioredis": "^4.28.3", + "mongodb": "^3.6.0", + "mssql": "^6.3.1", + "mysql2": "^2.2.5", + "oracledb": "^5.1.0", "pg": "^8.5.1", "pg-native": "^3.0.0", "pg-query-stream": "^4.0.0", - "redis": "^3.1.1 || ^4.0.0", + "redis": "^3.1.1", "sql.js": "^1.4.0", - "sqlite3": "^5.0.3", - "ts-node": "^10.7.0", + "sqlite3": "^5.0.2", "typeorm-aurora-data-api-driver": "^2.0.0" }, "peerDependenciesMeta": { - "@google-cloud/spanner": { - "optional": true - }, "@sap/hana-client": { "optional": true }, @@ -14474,14 +14472,25 @@ "sqlite3": { "optional": true }, - "ts-node": { - "optional": true - }, "typeorm-aurora-data-api-driver": { "optional": true } } }, + "node_modules/typeorm/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/typeorm/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/typeorm/node_modules/buffer": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", @@ -14506,50 +14515,64 @@ } }, "node_modules/typeorm/node_modules/dotenv": { - "version": "16.4.5", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", - "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/typeorm/node_modules/mkdirp": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.6.tgz", - "integrity": "sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==", - "bin": { - "mkdirp": "dist/cjs/src/bin.js" - }, + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", "engines": { "node": ">=10" + } + }, + "node_modules/typeorm/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "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" + }, + "engines": { + "node": "*" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/typeorm/node_modules/reflect-metadata": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", - "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==" - }, - "node_modules/typeorm/node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" - }, - "node_modules/typeorm/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], + "node_modules/typeorm/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, "bin": { - "uuid": "dist/bin/uuid" + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/typeorm/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/typeorm/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/typescript": { @@ -15151,6 +15174,26 @@ } } }, + "node_modules/xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "engines": { + "node": ">=4.0" + } + }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -15316,6 +15359,20 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/zen-observable": { + "version": "0.8.15", + "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", + "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==" + }, + "node_modules/zen-observable-ts": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-1.1.0.tgz", + "integrity": "sha512-1h4zlLSqI2cRLPJUHJFL8bCWHhkpuXkF+dbGkRaWjgDIG26DmzyshUMrdV/rL3UnR+mhaX4fRq8LPouq0MYYIA==", + "dependencies": { + "@types/zen-observable": "0.8.3", + "zen-observable": "0.8.15" + } } } } diff --git a/server/package.json b/server/package.json index 63c2d1653c..fa53710307 100644 --- a/server/package.json +++ b/server/package.json @@ -45,7 +45,7 @@ "@nestjs/platform-ws": "^8.0.10", "@nestjs/schedule": "^2.2.0", "@nestjs/serve-static": "^2.2.2", - "@nestjs/typeorm": "9.0.0", + "@nestjs/typeorm": "8.0.0", "@nestjs/websockets": "^8.0.10", "@sentry/node": "6.17.6", "@sentry/tracing": "6.17.6", @@ -84,7 +84,7 @@ "semver": "^7.5.4", "ts-node": "^10.0.0", "tsconfig-paths": "^3.10.1", - "typeorm": "^0.3.0", + "typeorm": "^0.2.38", "ws": "^7.5.5", "y-websocket": "^1.4.0" }, From ad29c98e4835e01c0dd36c2ff1adfbec2ac43db8 Mon Sep 17 00:00:00 2001 From: kriks7iitk Date: Wed, 26 Jun 2024 10:36:58 +0530 Subject: [PATCH 023/190] Design fix for user group --- .vscode/settings.json | 3 +- frontend/assets/translations/en.json | 1 + .../ee/components/UsersPage/UsersTable.jsx | 21 +- .../AddResourcePermissionsMenu.jsx | 61 +++++ .../AppResourcePermission.jsx | 106 +++++++++ frontend/src/ManageGranularAccess/index.jsx | 214 ++++-------------- .../index.jsx | 35 +-- .../ManageGroupPermissionsV2.jsx | 26 ++- .../groupPermissions.theme.scss | 77 +++++-- .../src/ManageOrgUsers/InviteUsersForm.jsx | 54 ++++- .../ManageOrgUsers/ManageOrgUsersDrawer.jsx | 4 +- frontend/src/_components/MultiSelectUser.jsx | 2 +- frontend/src/_helpers/utils.js | 4 +- frontend/src/_styles/groups-permissions.scss | 93 ++++++-- frontend/src/_styles/theme.scss | 20 +- server/src/app.module.ts | 3 - .../app_environments.controller.ts | 2 - .../src/controllers/app_users.controller.ts | 1 - .../group-permissions.utility.service.ts | 7 +- server/src/services/organizations.service.ts | 3 +- 20 files changed, 463 insertions(+), 274 deletions(-) create mode 100644 frontend/src/ManageGranularAccess/AddResourcePermissionsMenu.jsx create mode 100644 frontend/src/ManageGranularAccess/AppResourcePermission.jsx diff --git a/.vscode/settings.json b/.vscode/settings.json index 24a4397851..35cab5fefc 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -23,5 +23,6 @@ ], "url": "https://raw.githubusercontent.com/ToolJet/ToolJet/develop/plugins/schemas/manifest.schema.json" } - ] + ], + "CodeGPT.apiKey": "CodeGPT Plus Beta" } \ No newline at end of file diff --git a/frontend/assets/translations/en.json b/frontend/assets/translations/en.json index 016d9f5eed..b08b835ee2 100644 --- a/frontend/assets/translations/en.json +++ b/frontend/assets/translations/en.json @@ -9,6 +9,7 @@ "search": "Search", "update": "Update", "delete": "Delete", + "remove":"Remove", "add": "Add", "view": "View", "create": "Create", diff --git a/frontend/ee/components/UsersPage/UsersTable.jsx b/frontend/ee/components/UsersPage/UsersTable.jsx index 5418da350f..331642d16f 100644 --- a/frontend/ee/components/UsersPage/UsersTable.jsx +++ b/frontend/ee/components/UsersPage/UsersTable.jsx @@ -34,11 +34,8 @@ const UsersTable = ({ {translator('header.organization.menus.manageUsers.name', 'Name')} - - {translator('header.organization.menus.manageUsers.email', 'Email')} - User role - Groups + Custom groups {users && users[0]?.status ? ( {translator('header.organization.menus.manageUsers.status', 'Status')} @@ -91,20 +88,15 @@ const UsersTable = ({ user.last_name ? user.last_name[0] : '' }`} /> +
{decodeEntities(user.name)} - - - - {user.email} - + {user.email} +
group.name)} /> group.name)} /> @@ -238,7 +230,10 @@ const GroupChipTD = ({ groups = [] }) => { >
{orderedArray.length === 0 - ? renderGroupChip('-', null) + ? +
+ - +
: orderedArray.slice(0, 2).map((group, index) => { if (orderedArray.length <= 2) { return renderGroupChip(group, index); diff --git a/frontend/src/ManageGranularAccess/AddResourcePermissionsMenu.jsx b/frontend/src/ManageGranularAccess/AddResourcePermissionsMenu.jsx new file mode 100644 index 0000000000..5a0a98d3de --- /dev/null +++ b/frontend/src/ManageGranularAccess/AddResourcePermissionsMenu.jsx @@ -0,0 +1,61 @@ +import React from 'react'; +import '../ManageGroupPermissionsV2/groupPermissions.theme.scss'; +import { ButtonSolid } from '@/_ui/AppButton/AppButton'; +import { OverlayTrigger } from 'react-bootstrap'; + +function AddResourcePermissionsMenu({ openAddPermissionModal, resourcesOptions, currentGroupPermission }) { + return resourcesOptions.length > 1 ? ( + + { + openAddPermissionModal(); + }} + > + Apps + +
+ } + > +
+ + Add permission + +
+ + ) : ( +
+ { + openAddPermissionModal(); + }} + > + App + +
+ ); +} + +export default AddResourcePermissionsMenu; diff --git a/frontend/src/ManageGranularAccess/AppResourcePermission.jsx b/frontend/src/ManageGranularAccess/AppResourcePermission.jsx new file mode 100644 index 0000000000..faa71b90ad --- /dev/null +++ b/frontend/src/ManageGranularAccess/AppResourcePermission.jsx @@ -0,0 +1,106 @@ +import React, { useEffect } from 'react'; +import GroupChipTD from '@/ManageGroupPermissionsV2/ResourceChip'; +import '../ManageGroupPermissionsV2/groupPermissions.theme.scss'; +import SolidIcon from '@/_ui/Icon/SolidIcons'; +import { ButtonSolid } from '@/_ui/AppButton/AppButton'; + +function AppResourcePermissions({ + updateOnlyGranularPermissions, + permissions, + currentGroupPermission, + openEditPermissionModal, +}) { + console.log('Logging permissions'); + console.log(permissions); + const isRoleGroup = currentGroupPermission.name == 'admin'; + const disableEditUpdate = currentGroupPermission.name == 'end-user'; + const appsPermissions = permissions.appsGroupPermissions; + let apps = appsPermissions?.groupApps?.map((app) => { + return app?.app?.name; + }); + if (apps.length == 0 || permissions.isAll) apps = ['All apps']; + + return ( +
+
+ +
{permissions.name}
+
+
+
+ + + +
+
+
+ +
+
+ { + openEditPermissionModal(permissions); + }} + disabled={isRoleGroup} + /> +
+
+ ); +} + +export default AppResourcePermissions; diff --git a/frontend/src/ManageGranularAccess/index.jsx b/frontend/src/ManageGranularAccess/index.jsx index e26775fee6..15b89ea650 100644 --- a/frontend/src/ManageGranularAccess/index.jsx +++ b/frontend/src/ManageGranularAccess/index.jsx @@ -10,8 +10,9 @@ import { groupPermissionV2Service } from '@/_services'; import { toast } from 'react-hot-toast'; import GroupChipTD from '@/ManageGroupPermissionsV2/ResourceChip'; import '../ManageGroupPermissionsV2/groupPermissions.theme.scss'; -import { Action } from 'rxjs/internal/scheduler/Action'; import ChangeRoleModal from '@/ManageGroupPermissionResourcesV2/ChangeRoleModal'; +import AppResourcePermissions from '@/ManageGranularAccess/AppResourcePermission'; +import AddResourcePermissionsMenu from '@/ManageGranularAccess/AddResourcePermissionsMenu'; class ManageGranularAccessComponent extends React.Component { constructor(props) { @@ -82,8 +83,6 @@ class ManageGranularAccessComponent extends React.Component { isLoading: true, }); groupPermissionV2Service.fetchGranularPermissions(groupPermissionId).then((data) => { - console.log('loggin permissions'); - console.log(data); this.setState({ granularPermissions: data, isLoading: false, @@ -276,7 +275,7 @@ class ManageGranularAccessComponent extends React.Component { ? 'Admin has edit access to all apps. These are not editable' : 'End-user can only have permission to view apps'; return ( -
+

this.setState({ showAddPermissionModal: true }); + openAddPermissionModal = () => { + const currentGroupPermission = this.props?.groupPermission; + const isEndUser = currentGroupPermission?.name === 'end-user'; + this.setState((prevState) => ({ + showAddPermissionModal: true, + ...(isEndUser && { initialPermissionState: { ...prevState.initialPermissionState, canView: true } }), + })); + }; closeAddPermissionModal = () => { this.setState({ @@ -370,7 +376,9 @@ class ManageGranularAccessComponent extends React.Component { updateType, } = this.state; + const resourcesOptions = ['Apps']; const currentGroupPermission = this.props?.groupPermission; + const isEndUserGroup = currentGroupPermission?.name == 'end-user'; const isRoleGroup = currentGroupPermission.name == 'admin'; const showPermissionInfo = currentGroupPermission.name == 'admin' || currentGroupPermission.name == 'end-user'; const disableEditUpdate = currentGroupPermission.name == 'end-user'; @@ -482,6 +490,7 @@ class ManageGranularAccessComponent extends React.Component { { this.setState((prevState) => ({ @@ -574,48 +583,16 @@ class ManageGranularAccessComponent extends React.Component {

Add assets to configure granular, asset-level permissions for this user group

- - { - this.openAddPermissionModal(); - }} - > - Apps - -
- } - > -
- { - // this.openChangeRoleModal(user); - }} - > - Add permission - -
- +
) : ( -
+ <> {showPermissionInfo && this.showPermissionText(currentGroupPermission)} -
+

{'Name'}

@@ -626,7 +603,7 @@ class ManageGranularAccessComponent extends React.Component { {'Resources'}

-
+
{isLoading ? ( @@ -643,139 +620,26 @@ class ManageGranularAccessComponent extends React.Component { ) : ( <> - {granularPermissions.map((permissions, index) => { - const appsPermissions = permissions.appsGroupPermissions; - let apps = appsPermissions?.groupApps?.map((app) => { - return app?.app?.name; - }); - if (apps.length == 0 || permissions.isAll) apps = ['All apps']; - return ( -
- -
{permissions.name}
-
-
- - - -
-
- {/* for tiles */} -
- -
-
- { - this.openEditPermissionModal(permissions); - }} - disabled={isRoleGroup} - /> -
-
- ); - })} + {granularPermissions.map((permissions, index) => ( + + ))} )}
-
- )} - {granularPermissions.length > 0 && ( -
- - { - this.openAddPermissionModal(); - }} - > - Apps - -
- } - > -
- { - // this.openChangeRoleModal(user); - }} - > - Add permission - -
- -
+
+ +
+ )}
); diff --git a/frontend/src/ManageGroupPermissionResourcesV2/index.jsx b/frontend/src/ManageGroupPermissionResourcesV2/index.jsx index c048d5a2ec..68ace7c273 100644 --- a/frontend/src/ManageGroupPermissionResourcesV2/index.jsx +++ b/frontend/src/ManageGroupPermissionResourcesV2/index.jsx @@ -19,6 +19,7 @@ import { EDIT_ROLE_MESSAGE } from './constant'; import { SearchBox } from '@/_components/SearchBox'; import EditRoleErrorModal from '@/ManageGroupPermissionsV2/ErrorModal/ErrorModal'; import ChangeRoleModal from '@/ManageGroupPermissionResourcesV2/ChangeRoleModal'; +import { ToolTip } from '@/_components/ToolTip'; class ManageGroupPermissionResourcesComponent extends React.Component { constructor(props) { super(props); @@ -365,8 +366,10 @@ class ManageGroupPermissionResourcesComponent extends React.Component { data-cy="helper-text-admin-app-access" > {text} - Read Documentation to - know more + + read documentation + {' '} + to know more

); @@ -637,12 +640,14 @@ class ManageGroupPermissionResourcesComponent extends React.Component { {this.props.selectedGroup}

{groupPermission.type === 'default' && ( -
- -

- Default group -

-
+ +
+ +

+ Default group +

+
+
)} {groupPermission.type === 'custom' && (
@@ -704,7 +709,7 @@ class ManageGroupPermissionResourcesComponent extends React.Component { name="granularaccess" width="16" > - Granular Access + Granular access @@ -746,7 +751,7 @@ class ManageGroupPermissionResourcesComponent extends React.Component { onClick={() => this.addSelectedUsersToGroup(groupPermission?.id, selectedUsers)} disabled={selectedUsers.length === 0} leftIcon="plus" - fill={selectedUsers.length !== 0 ? '#3E63DD' : this.props.darkMode ? '#131620' : '#C1C8CD'} + fill={selectedUsers.length !== 0 ? '#ffffff' : this.props.darkMode ? '#131620' : '#C1C8CD'} iconWidth="16" className="add-users-button" isLoading={isAddingUsers} @@ -757,7 +762,7 @@ class ManageGroupPermissionResourcesComponent extends React.Component { Add users
- {selectedUsers.length && ( + {selectedUsers.length > 0 && (
Selected Users:
@@ -791,6 +796,7 @@ class ManageGroupPermissionResourcesComponent extends React.Component { size="xsm" rightIcon="search" iconWidth="15" + fill="#889096" className="search-user-group-btn" />

@@ -835,7 +841,7 @@ class ManageGroupPermissionResourcesComponent extends React.Component {

{`${user?.firstName ?? ''} ${user?.lastName ?? ''}`}

-

+

{user.email}

@@ -847,8 +853,11 @@ class ManageGroupPermissionResourcesComponent extends React.Component { onClick={() => { this.removeUserFromGroup(groupUserId); }} + leftIcon="remove" + fill="#F3B0A2" + iconWidth="18" > - {this.props.t('globals.delete', 'Delete')} + {this.props.t('globals.remove', 'Remove')} )} diff --git a/frontend/src/ManageGroupPermissionsV2/ManageGroupPermissionsV2.jsx b/frontend/src/ManageGroupPermissionsV2/ManageGroupPermissionsV2.jsx index 7461038a82..ef043d462e 100644 --- a/frontend/src/ManageGroupPermissionsV2/ManageGroupPermissionsV2.jsx +++ b/frontend/src/ManageGroupPermissionsV2/ManageGroupPermissionsV2.jsx @@ -42,6 +42,7 @@ class ManageGroupPermissionsComponent extends React.Component { groupToDuplicate: '', showGroupSearchBar: false, filteredGroup: [], + groupNameMessage: 'Group name must be unique and max 50 characters', }; } @@ -229,10 +230,16 @@ class ManageGroupPermissionsComponent extends React.Component { }; changeNewGroupName = (value) => { - if (value.length > 50) return; + if (value.length > 50) { + this.setState({ + groupNameMessage: 'Max length has been reached', + }); + return; + } this.setState({ newGroupName: value, isSaveBtnDisabled: false, + groupNameMessage: 'Group name must be unique and max 50 characters', }); if ((this.state.groupToBeUpdated && this.state.groupToBeUpdated.name === value) || !value) { this.setState({ @@ -244,11 +251,11 @@ class ManageGroupPermissionsComponent extends React.Component { humanizeifDefaultGroupName = (groupName) => { switch (groupName) { case 'end-user': - return 'End users'; + return 'End user'; case 'admin': return 'Admin'; case 'builder': - return 'Builders'; + return 'Builder'; default: return groupName; } @@ -368,6 +375,7 @@ class ManageGroupPermissionsComponent extends React.Component { showGroupSearchBar, } = this.state; + const grounNameErrorStyle = this.state.newGroupName?.length >= 50 ? { color: '#ff0000' } : {}; const { addPermission, addApps, addUsers } = groupDuplicateOption; const allFalse = [addPermission, addApps, addUsers].every((value) => !value); @@ -538,7 +546,9 @@ class ManageGroupPermissionsComponent extends React.Component { data-cy="group-name-input" autoFocus /> - Group name must be unique and max 50 characters + + {this.state.groupNameMessage} +
@@ -618,7 +628,7 @@ class ManageGroupPermissionsComponent extends React.Component {
{!showGroupSearchBar ? (
- + CUSTOM GROUPS
- - No custom groups added + + No custom groups added
)}
diff --git a/frontend/src/ManageGroupPermissionsV2/groupPermissions.theme.scss b/frontend/src/ManageGroupPermissionsV2/groupPermissions.theme.scss index 114da44473..61801cfe47 100644 --- a/frontend/src/ManageGroupPermissionsV2/groupPermissions.theme.scss +++ b/frontend/src/ManageGroupPermissionsV2/groupPermissions.theme.scss @@ -11,12 +11,16 @@ width: 100%; height: 32px; - padding: 6px 15px; + padding: 3px 12px; display: flex; flex-direction: row; + .info-icon{ + margin-top: 3px; + } + .info-label{ - margin-left: 8px; + margin-left: 4px; color: var(--slate9); } } @@ -215,12 +219,11 @@ .resource-name-cell { transition: 0.3s all; border-radius: 6px; - max-width: 180px; + max-width: 170px; position: relative !important; overflow: visible !important; .groups-name-container { - padding-left: 10px; display: flex; flex-direction: column; row-gap: 8px; @@ -228,7 +231,14 @@ overflow: hidden; white-space: nowrap; max-height: 200px; + max-width: 170px; + + .empty-text{ + display: flex; + justify-content: center; + margin-left: 20px; + } .groups-name-row { display: flex; @@ -236,7 +246,7 @@ text-overflow: ellipsis; overflow: hidden; white-space: nowrap; - max-width: 200px; + max-width: 170px; } } @@ -245,7 +255,7 @@ margin: 0; border-radius: 6px; background-color: var(--slate3); - color: var(--slate11); + color: black; min-height: 24px; text-overflow: ellipsis; overflow: hidden; @@ -313,13 +323,50 @@ .edit-permission-custom { - width: 20px; - margin-left: 2px; - margin-right: 2px; - height: 20px; - padding: 0 0; - background: none !important; - background-color: none !important; - box-shadow: none; + width: 20px; + margin-left: 2px; + margin-right: 2px; + height: 20px; + padding: 0 0; + background: none !important; + background-color: none !important; + box-shadow: none; +} - } \ No newline at end of file +.manage-resource-permission{ + border-bottom: 1px solid var(--slate5); + display: flex; + align-items:baseline; + padding: 12px; + gap: 10px; + + div { + width: 206px; + + + .resource-name { + display: flex; + flex-direction: column !important; + gap: 10px; + + + .resource-icon { + margin-right: 200px; + } + .resource-text { + margin-left: 10px; + } + } + } + + + +} + +.manage-resource-body { + padding: 24px; + font-size: 12px; + overflow-y: auto; + height: calc(100vh - 300px); + +} diff --git a/frontend/src/ManageOrgUsers/InviteUsersForm.jsx b/frontend/src/ManageOrgUsers/InviteUsersForm.jsx index 9f037675fd..68afdaa73c 100644 --- a/frontend/src/ManageOrgUsers/InviteUsersForm.jsx +++ b/frontend/src/ManageOrgUsers/InviteUsersForm.jsx @@ -8,6 +8,8 @@ import { toast } from 'react-hot-toast'; import { FileDropzone } from './FileDropzone'; import { USER_DRAWER_MODES } from '@/_helpers/utils'; import { UserGroupsSelect } from './UserGroupsSelect'; +import { EDIT_ROLE_MESSAGE } from '@/ManageGroupPermissionResourcesV2/constant'; +import ModalBase from '@/_ui/Modal'; function InviteUsersForm({ onClose, @@ -29,8 +31,10 @@ function InviteUsersForm({ const [activeTab, setActiveTab] = useState(1); const [selectedGroups, setSelectedGroups] = useState([]); const [existingGroups, setExistingGroups] = useState([]); + const [newRole, setNewRole] = useState(null); const customGroups = groups.filter((group) => group.groupType === 'custom'); const roleGroups = groups.filter((group) => group.groupType === 'default'); + const [isChangeRoleModalOpen, setIsChangeRoleModalOpen] = useState(false); const groupedOptions = [ { label: 'default', @@ -86,6 +90,13 @@ function InviteUsersForm({ if (roleGroups.length == 2) { finalGroup = items.filter((group) => group.value !== currentRole.value); } + if (currentEditingUser) { + const role = finalGroup.find( + (group) => + group.groupType === 'default' && !currentEditingUser.role_group.map((role) => role.name).includes(group.value) + ); + setNewRole(role); + } setSelectedGroups(finalGroup); }; @@ -97,31 +108,34 @@ function InviteUsersForm({ }; const handleEditUser = (e) => { + console.log(currentEditingUser); + console.log(newRole); e.preventDefault(); + if (newRole) setIsChangeRoleModalOpen(true); + else { + editUser(); + } + }; + + const editUser = () => { const { newGroupsToAdd, groupsToRemove, selectedGroupsIds, role } = getEditedGroups(); manageUser(currentEditingUser.id, selectedGroupsIds, role, newGroupsToAdd, groupsToRemove); }; const getEditedGroups = () => { - let role = null; - if (currentEditingUser) - role = selectedGroups.find( - (group) => - group.groupType === 'default' && !currentEditingUser.role_group.map((role) => role.name).includes(group.value) - )?.value; const selectedGroupsIds = selectedGroups.filter((group) => group.groupType !== 'default').map((group) => group.id); const newGroupsToAdd = selectedGroupsIds.filter((selectedGroupId) => !existingGroups.includes(selectedGroupId)); const groupsToRemove = existingGroups.filter((existingGroup) => !selectedGroupsIds.includes(existingGroup)); - return { newGroupsToAdd, groupsToRemove, selectedGroupsIds, role }; + return { newGroupsToAdd, groupsToRemove, selectedGroupsIds }; }; const isEdited = () => { - const { newGroupsToAdd, groupsToRemove, role } = getEditedGroups(); + const { newGroupsToAdd, groupsToRemove } = getEditedGroups(); const { first_name, last_name } = currentEditingUser || {}; return isEditing ? fields['fullName'] !== `${first_name}${last_name && ` ${last_name}`}` || groupsToRemove.length || - role !== undefined || + newRole || newGroupsToAdd.length : true; }; @@ -132,6 +146,28 @@ function InviteUsersForm({ return (
+ {isChangeRoleModalOpen && ( + + Edit user role +
+ {currentEditingUser?.email} +
+
+ } + handleConfirm={editUser} + show={isChangeRoleModalOpen} + handleClose={() => { + setIsChangeRoleModalOpen(false); + onCancel(); + onClose(); + }} + confirmBtnProps={{ title: 'Continue' }} + > +
{EDIT_ROLE_MESSAGE?.[currentEditingUser?.role_group?.[0]?.name]?.[newRole?.value]()}
+ + )}
diff --git a/frontend/src/ManageOrgUsers/ManageOrgUsersDrawer.jsx b/frontend/src/ManageOrgUsers/ManageOrgUsersDrawer.jsx index e34a2f1a03..cf1c4cfb4d 100644 --- a/frontend/src/ManageOrgUsers/ManageOrgUsersDrawer.jsx +++ b/frontend/src/ManageOrgUsers/ManageOrgUsersDrawer.jsx @@ -28,12 +28,12 @@ const ManageOrgUsersDrawer = ({ const humanizeifDefaultGroupName = (groupName) => { switch (groupName) { case 'end-user': - return 'End users'; + return 'End user'; case 'admin': return 'Admin'; case 'builder': - return 'Builders'; + return 'Builder'; default: return groupName; diff --git a/frontend/src/_components/MultiSelectUser.jsx b/frontend/src/_components/MultiSelectUser.jsx index 352e433ee7..c2cabf5a89 100644 --- a/frontend/src/_components/MultiSelectUser.jsx +++ b/frontend/src/_components/MultiSelectUser.jsx @@ -73,7 +73,7 @@ function MultiSelectUser({ ); return (
- {/* */} + { this.setState((prevState) => ({ @@ -538,7 +529,7 @@ class ManageGranularAccessComponent extends React.Component { type="radio" checked={isAll} onClick={() => { - this.setState((prevState) => ({ isAll: !prevState.isAll, isCustom: false })); + this.setState((prevState) => ({ isAll: !prevState.isAll, isCustom: prevState.isAll })); }} />
@@ -552,9 +543,10 @@ class ManageGranularAccessComponent extends React.Component { { - this.setState((prevState) => ({ isCustom: !prevState.isCustom, isAll: false })); + this.setState((prevState) => ({ isCustom: !prevState.isCustom, isAll: prevState.isCustom })); }} />
diff --git a/frontend/src/ManageGroupPermissionResourcesV2/ChangeRoleModal.jsx b/frontend/src/ManageGroupPermissionResourcesV2/ChangeRoleModal.jsx index c0e09c0910..90998eb63c 100644 --- a/frontend/src/ManageGroupPermissionResourcesV2/ChangeRoleModal.jsx +++ b/frontend/src/ManageGroupPermissionResourcesV2/ChangeRoleModal.jsx @@ -31,19 +31,31 @@ function ChangeRoleModal({ return message; }; + const renderUserChangeTitle = (type) => { + const addUserTitle = ( +
+ Change in user role +
+ ); + const updatePermissionTitile = ( +
+ Add user(s) +
+ ); + const message = type === 'USER_ROLE_CHANGE_ADD_USERS' ? addUserTitle : updatePermissionTitile; + return message; + }; + return ( - Change in user role -
- } + title={renderUserChangeTitle(autoRoleChangeMessageType)} handleConfirm={handleConfirmation} confirmBtnProps={{ title: 'Continue' }} show={showAutoRoleChangeModal} handleClose={handleAutoRoleChangeModalClose} darkMode={darkMode} isLoading={isLoading} + className="edit-role-confirm" > <> {renderUserChangeMessage(autoRoleChangeMessageType)} diff --git a/frontend/src/ManageGroupPermissionResourcesV2/constant.js b/frontend/src/ManageGroupPermissionResourcesV2/constant.js index a440f15e01..67f43536bf 100644 --- a/frontend/src/ManageGroupPermissionResourcesV2/constant.js +++ b/frontend/src/ManageGroupPermissionResourcesV2/constant.js @@ -12,12 +12,12 @@ export const EDIT_ROLE_MESSAGE = {
); }, - 'end-user': () => { + 'end-user': (isPaidPlan) => { return (

- Changing your user group from admin to end-user will revoke your access to settings. This will also affect - the count of users covered by your plan. + Changing your user group from admin to end-user will revoke your access to settings. + {isPaidPlan && 'This will also affect the count of users covered by your plan.'}

Are you sure you want to continue?

@@ -25,12 +25,14 @@ export const EDIT_ROLE_MESSAGE = { }, }, builder: { - 'end-user': () => { + 'end-user': (isPaidPlan) => { return (
-

- Changing user default group from builder to end-user will affect the count of users covered by your plan. -

+ {isPaidPlan && ( +

+ Changing user default group from builder to end-user will affect the count of users covered by your plan. +

+ )}

This will also remove the user from any custom groups with builder-like permissions.

@@ -40,22 +42,26 @@ export const EDIT_ROLE_MESSAGE = { }, }, 'end-user': { - builder: () => { + builder: (isPaidPlan) => { return (
-

- CChanging user default group from end-user to builder will affect the count of users covered by your plan. -

+ {isPaidPlan && ( +

+ Changing user default group from end-user to builder will affect the count of users covered by your plan. +

+ )}

Are you sure you want to continue?

); }, - admin: () => { + admin: (isPaidPlan) => { return (
-

- CChanging user default group from end-user to admin will affect the count of users covered by your plan. -

+ {isPaidPlan && ( +

+ Changing user default group from end-user to admin will affect the count of users covered by your plan. +

+ )}

Are you sure you want to continue?

); diff --git a/frontend/src/ManageGroupPermissionResourcesV2/grpPermissionResc.theme.scss b/frontend/src/ManageGroupPermissionResourcesV2/grpPermissionResc.theme.scss index 9690f4f697..a7fe9a3e87 100644 --- a/frontend/src/ManageGroupPermissionResourcesV2/grpPermissionResc.theme.scss +++ b/frontend/src/ManageGroupPermissionResourcesV2/grpPermissionResc.theme.scss @@ -17,7 +17,8 @@ .info-btn { - padding: 0px; + padding: 6px 0px 0px 0px; + margin-right: 5px; flex: 0 0 24px; } @@ -122,4 +123,13 @@ } } +} + + +.edit-role-confirm { + width: 350px; + + .modal-footer { + border-top: 1px solid var(--slate6);; + } } \ No newline at end of file diff --git a/frontend/src/ManageGroupPermissionResourcesV2/index.jsx b/frontend/src/ManageGroupPermissionResourcesV2/index.jsx index 68ace7c273..0bccc0f8f3 100644 --- a/frontend/src/ManageGroupPermissionResourcesV2/index.jsx +++ b/frontend/src/ManageGroupPermissionResourcesV2/index.jsx @@ -1,6 +1,6 @@ import React from 'react'; import cx from 'classnames'; -import { groupPermissionService, groupPermissionV2Service } from '@/_services'; +import { groupPermissionV2Service, authenticationService } from '@/_services'; import { toast } from 'react-hot-toast'; import { Link } from 'react-router-dom'; import { withTranslation } from 'react-i18next'; @@ -8,8 +8,8 @@ import ErrorBoundary from '@/Editor/ErrorBoundary'; import { Loader } from '../ManageSSO/Loader'; import SolidIcon from '@/_ui/Icon/solidIcons/index'; import BulkIcon from '@/_ui/Icon/bulkIcons/index'; -import Multiselect from '@/_ui/Multiselect/Multiselect'; import { FilterPreview, MultiSelectUser } from '@/_components'; + import { ButtonSolid } from '@/_ui/AppButton/AppButton'; import ModalBase from '@/_ui/Modal'; import Select from '@/_ui/Select'; @@ -88,8 +88,6 @@ class ManageGroupPermissionResourcesComponent extends React.Component { this.setState({ isLoadingGroup: true }); this.fetchGroupPermission(groupPermissionId); this.fetchUsersInGroup(groupPermissionId); - // this.fetchAppsNotInGroup(groupPermissionId); - // this.fetchAppsInGroup(groupPermissionId); }; userFullName = (user) => { @@ -129,23 +127,6 @@ class ManageGroupPermissionResourcesComponent extends React.Component { }); }; - fetchAppsNotInGroup = (groupPermissionId) => { - groupPermissionService.getAppsNotInGroup(groupPermissionId).then((data) => { - this.setState({ - appsNotInGroup: data.apps, - }); - }); - }; - - fetchAppsInGroup = (groupPermissionId) => { - groupPermissionService.getAppsInGroup(groupPermissionId).then((data) => { - this.setState({ - appsInGroup: data.apps, - isLoadingApps: false, - }); - }); - }; - clearErrorState = () => { this.setState({ errorMessage: '', @@ -160,6 +141,7 @@ class ManageGroupPermissionResourcesComponent extends React.Component { }; updateGroupPermission = (groupPermissionId, params, allowRoleChange) => { + const currentSession = authenticationService.currentSessionValue; groupPermissionV2Service .update(groupPermissionId, { ...params, allowRoleChange }) .then(() => { @@ -187,52 +169,6 @@ class ManageGroupPermissionResourcesComponent extends React.Component { }); }; - updateAppGroupPermission = (app, groupPermissionId, action) => { - const appGroupPermission = app.app_group_permissions.find( - (permission) => permission.group_permission_id === groupPermissionId - ); - - let actionParams = { - read: true, - update: action === 'edit', - }; - - if (action === 'hideFromDashboard') { - actionParams['hideFromDashboard'] = !this.canAppGroupPermission(app, groupPermissionId, 'hideFromDashboard'); - } - - if (action === 'edit') actionParams['hideFromDashboard'] = false; - - groupPermissionService - .updateAppGroupPermission(groupPermissionId, appGroupPermission.id, actionParams) - .then(() => { - toast.success('App permissions updated'); - - this.fetchAppsInGroup(groupPermissionId); - }) - .catch(({ error }) => { - toast.error(error); - }); - }; - - canAppGroupPermission = (app, groupPermissionId, action) => { - let appGroupPermission = this.findAppGroupPermission(app, groupPermissionId); - switch (action) { - case 'edit': - return appGroupPermission?.read && appGroupPermission?.update; - case 'view': - return appGroupPermission?.read && !appGroupPermission?.update; - case 'hideFromDashboard': - return appGroupPermission?.read && appGroupPermission?.read_on_dashboard; - default: - return false; - } - }; - - findAppGroupPermission = (app, groupPermissionId) => { - return app.app_group_permissions.find((permission) => permission.group_permission_id === groupPermissionId); - }; - setSelectedUsers = (value) => { console.log('user value'); console.log(value); @@ -247,53 +183,6 @@ class ManageGroupPermissionResourcesComponent extends React.Component { }); }; - addSelectedAppsToGroup = (groupPermissionId) => { - this.setState({ isAddingApps: true }); - const updateParams = { - add_apps: this.state.selectedAppIds.map((app) => app.value), - }; - groupPermissionService - .update(groupPermissionId, updateParams) - .then(() => { - this.setState({ - selectedAppIds: [], - isLoadingApps: true, - isAddingApps: false, - }); - this.fetchAppsNotInGroup(groupPermissionId); - this.fetchAppsInGroup(groupPermissionId); - }) - .then(() => { - toast.success('Apps added to the group'); - this.setState({ - selectedApps: [], - }); - }) - .catch(({ error }) => { - toast.error(error); - }); - }; - - removeAppFromGroup = (groupPermissionId, appId, appName) => { - if (window.confirm(`Are you sure you want to delete this app - ${appName}?`) === false) return; - const updateParams = { - remove_apps: [appId], - }; - groupPermissionService - .update(groupPermissionId, updateParams) - .then(() => { - this.setState({ removeAppIds: [], isLoadingApps: true }); - this.fetchAppsNotInGroup(groupPermissionId); - this.fetchAppsInGroup(groupPermissionId); - }) - .then(() => { - toast.success('App removed from the group'); - }) - .catch(({ error }) => { - toast.error(error); - }); - }; - addSelectedUsersToGroup = (groupPermissionId, selectedUsers, allowRoleChange) => { console.log('selected users'); console.log(selectedUsers); @@ -387,8 +276,9 @@ class ManageGroupPermissionResourcesComponent extends React.Component { }; updateUserRole = () => { - console.log('logging update user'); const { updatingUserRole, groupPermission, selectedNewRole } = this.state; + const currentSession = authenticationService.currentSessionValue; + const currentUser = currentSession?.current_user; this.setState({ isLoadingUsers: true, }); @@ -402,6 +292,7 @@ class ManageGroupPermissionResourcesComponent extends React.Component { this.fetchUsersInGroup(groupPermission.id); toast.success('Role updated successfully'); if (groupPermission?.name === 'admin') window.location.reload(); + if (currentUser.id === updatingUserRole.id) window.location.reload(true); }) .catch(({ error }) => { this.setState({ @@ -541,15 +432,13 @@ class ManageGroupPermissionResourcesComponent extends React.Component { } = this.state; const isBasicPlan = false; + const isPaidPlan = false; const searchSelectClass = this.props.darkMode ? 'select-search-dark' : 'select-search'; const showPermissionInfo = isRoleGroup && (groupPermission?.name === 'admin' || groupPermission?.name === 'end-user'); const disablePermissionUpdate = isBasicPlan || groupPermission?.name === 'admin' || groupPermission?.name === 'end-user'; - const appSelectOptions = appsNotInGroup.map((app) => { - return { name: app.name, value: app.id }; - }); return ( @@ -579,11 +468,12 @@ class ManageGroupPermissionResourcesComponent extends React.Component { show={isChangeRoleModalOpen} isLoading={isLoadingUsers} handleClose={this.closeChangeRoleModal} - confirmBtnProps={{ title: 'Continue' }} + confirmBtnProps={{ title: 'Continue', disabled: !selectedNewRole }} darkMode={this.props.darkMode} + className="edit-role-confirm" > {selectedNewRole && showRoleEditMessage ? ( -
{EDIT_ROLE_MESSAGE?.[groupPermission?.name]?.[selectedNewRole]()}
+
{EDIT_ROLE_MESSAGE?.[groupPermission?.name]?.[selectedNewRole](isPaidPlan)}
) : (
@@ -601,11 +491,11 @@ class ManageGroupPermissionResourcesComponent extends React.Component { />
- +
-

+

Users must be always be part of one default group. This will define the user count in your plan.

@@ -805,7 +695,7 @@ class ManageGroupPermissionResourcesComponent extends React.Component {

Email id

-
{/* DO NOT REMOVE FOR TABLE ALIGNMENT */} +

{/* DO NOT REMOVE FOR TABLE ALIGNMENT */}
)} @@ -844,40 +734,42 @@ class ManageGroupPermissionResourcesComponent extends React.Component {

{user.email}

-
- {!isRoleGroup && ( - - { - this.removeUserFromGroup(groupUserId); - }} - leftIcon="remove" - fill="#F3B0A2" - iconWidth="18" - > - {this.props.t('globals.remove', 'Remove')} - - - )} -
- {isRoleGroup && ( -
- { - this.openChangeRoleModal(user); - }} - > - Edit role - +

+

+ {!isRoleGroup && ( + + { + this.removeUserFromGroup(groupUserId); + }} + leftIcon="remove" + fill="#F3B0A2" + iconWidth="18" + > + {this.props.t('globals.remove', 'Remove')} + + + )}
- )} + {isRoleGroup && ( +
+ { + this.openChangeRoleModal(user); + }} + > + Edit role + +
+ )} +

); }) diff --git a/frontend/src/ManageGroupPermissionsV2/ManageGroupPermissionsV2.jsx b/frontend/src/ManageGroupPermissionsV2/ManageGroupPermissionsV2.jsx index ef043d462e..ffb1cd7e6a 100644 --- a/frontend/src/ManageGroupPermissionsV2/ManageGroupPermissionsV2.jsx +++ b/frontend/src/ManageGroupPermissionsV2/ManageGroupPermissionsV2.jsx @@ -58,38 +58,39 @@ class ManageGroupPermissionsComponent extends React.Component { return currentUpdatedGroup.id; }; - // duplicateGroup = () => { - // const { groupDuplicateOption, groupToDuplicate } = this.state; - // this.setState({ isDuplicatingGroup: true, creatingGroup: true }); - // groupPermissionService - // .duplicate(groupToDuplicate, groupDuplicateOption) - // .then((data) => { - // this.setState({ - // newGroupName: data?.group, - // }); - // this.fetchGroups('current', () => { - // this.setState({ - // newGroupName: '', - // creatingGroup: false, - // selectedGroupPermissionId: data?.id, - // selectedGroup: data?.group, - // isDuplicatingGroup: false, - // showDuplicateGroupModal: false, - // groupDuplicateOption: { addPermission: true, addApps: true, addUsers: true }, - // }); - // }); + duplicateGroup = () => { + const { groupDuplicateOption, groupToDuplicate } = this.state; + this.setState({ isDuplicatingGroup: true, creatingGroup: true }); + groupPermissionV2Service + .duplicate(groupToDuplicate, groupDuplicateOption) + .then((data) => { + this.setState({ + newGroupName: data?.name, + }); - // toast.success('Group duplicated successfully!'); - // }) - // .catch((err) => { - // this.setState({ - // isDuplicatingGroup: false, - // groupDuplicateOption: { addPermission: true, addApps: true, addUsers: true }, - // }); - // console.error('Error occured in duplicating: ', err); - // toast.error('Could not duplicate group.\nPlease try again!'); - // }); - // }; + this.fetchGroups('current', () => { + this.setState({ + newGroupName: '', + creatingGroup: false, + selectedGroupPermissionId: data?.id, + selectedGroup: data?.name, + isDuplicatingGroup: false, + showDuplicateGroupModal: false, + groupDuplicateOption: { addPermission: true, addApps: true, addUsers: true }, + }); + }); + + toast.success('Group duplicated successfully!'); + }) + .catch((err) => { + this.setState({ + isDuplicatingGroup: false, + groupDuplicateOption: { addPermission: true, addApps: true, addUsers: true }, + }); + console.error('Error occured in duplicating: ', err); + toast.error('Could not duplicate group.\nPlease try again!'); + }); + }; toggleShowDuplicateModal = () => { this.setState((prevState) => ({ @@ -375,7 +376,8 @@ class ManageGroupPermissionsComponent extends React.Component { showGroupSearchBar, } = this.state; - const grounNameErrorStyle = this.state.newGroupName?.length >= 50 ? { color: '#ff0000' } : {}; + const grounNameErrorStyle = + this.state.newGroupName?.length >= 50 ? { color: '#ff0000', borderColor: '#ff0000' } : {}; const { addPermission, addApps, addUsers } = groupDuplicateOption; const allFalse = [addPermission, addApps, addUsers].every((value) => !value); @@ -534,7 +536,7 @@ class ManageGroupPermissionsComponent extends React.Component { = 50 ? 'custom-input-error' : ''}`} placeholder={this.props.t( 'header.organization.menus.manageGroups.permissions.enterName', 'Enter group name' diff --git a/frontend/src/ManageGroupPermissionsV2/groupPermissions.theme.scss b/frontend/src/ManageGroupPermissionsV2/groupPermissions.theme.scss index 61801cfe47..e5e2dcf70b 100644 --- a/frontend/src/ManageGroupPermissionsV2/groupPermissions.theme.scss +++ b/frontend/src/ManageGroupPermissionsV2/groupPermissions.theme.scss @@ -299,10 +299,13 @@ } .groups-name-cell[data-active="true"] { + display: flex; background: var(--gray5) !important; + justify-content: center; .groups-name-container { padding-left: 6px; + justify-content: center; } .group-chip { @@ -370,3 +373,7 @@ height: calc(100vh - 300px); } + +.custom-input-error:focus { + border-color: red !important; /* Change border color when input is focused */ +} \ No newline at end of file diff --git a/frontend/src/ManageOrgConstants/ManageOrgConstants.jsx b/frontend/src/ManageOrgConstants/ManageOrgConstants.jsx index 1217d146f9..bc897ba952 100644 --- a/frontend/src/ManageOrgConstants/ManageOrgConstants.jsx +++ b/frontend/src/ManageOrgConstants/ManageOrgConstants.jsx @@ -126,15 +126,15 @@ const ManageOrgConstantsComponent = ({ darkMode }) => { }; const canCreateVariable = () => { - return authenticationService.currentSessionValue.org_constant_c_r_u_d; + return authenticationService.currentSessionValue.user_permissions.org_constant_c_r_u_d; }; const canUpdateVariable = () => { - return authenticationService.currentSessionValue.org_constant_c_r_u_d; + return authenticationService.currentSessionValue.user_permissions.org_constant_c_r_u_d; }; const canDeleteVariable = () => { - return authenticationService.currentSessionValue.org_constant_c_r_u_d; + return authenticationService.currentSessionValue.user_permissions.org_constant_c_r_u_d; }; const fetchEnvironments = () => { diff --git a/frontend/src/ManageOrgUsers/InviteUsersForm.jsx b/frontend/src/ManageOrgUsers/InviteUsersForm.jsx index 68afdaa73c..765ea04b48 100644 --- a/frontend/src/ManageOrgUsers/InviteUsersForm.jsx +++ b/frontend/src/ManageOrgUsers/InviteUsersForm.jsx @@ -29,11 +29,19 @@ function InviteUsersForm({ }) { const { t } = useTranslation(); const [activeTab, setActiveTab] = useState(1); - const [selectedGroups, setSelectedGroups] = useState([]); const [existingGroups, setExistingGroups] = useState([]); const [newRole, setNewRole] = useState(null); + const customGroups = groups.filter((group) => group.groupType === 'custom'); - const roleGroups = groups.filter((group) => group.groupType === 'default'); + const roleGroups = groups + .filter((group) => group.groupType === 'default') + .sort((a, b) => { + const sortOrder = ['admin', 'builder', 'end-user']; + const indexA = sortOrder.indexOf(a.value); + const indexB = sortOrder.indexOf(b.value); + + return indexA - indexB; + }); const [isChangeRoleModalOpen, setIsChangeRoleModalOpen] = useState(false); const groupedOptions = [ { @@ -45,6 +53,7 @@ function InviteUsersForm({ options: customGroups, }, ]; + const [selectedGroups, setSelectedGroups] = useState([]); const hiddenFileInput = useRef(null); @@ -66,6 +75,8 @@ function InviteUsersForm({ groups.filter((group) => addedToCustomGroups.map((gp) => gp.name).includes(group.value)).map((g) => g.id) ); onChangeHandler(preSelectedGroups); + } else { + onChangeHandler(roleGroups.filter((group) => group.value === 'end-user')); } }, [currentEditingUser, groups]); @@ -90,6 +101,7 @@ function InviteUsersForm({ if (roleGroups.length == 2) { finalGroup = items.filter((group) => group.value !== currentRole.value); } + if (roleGroups.length === 0) return; if (currentEditingUser) { const role = finalGroup.find( (group) => diff --git a/frontend/src/ManageOrgUsers/UserGroupsSelect.jsx b/frontend/src/ManageOrgUsers/UserGroupsSelect.jsx index 690b19bec1..fb432c8928 100644 --- a/frontend/src/ManageOrgUsers/UserGroupsSelect.jsx +++ b/frontend/src/ManageOrgUsers/UserGroupsSelect.jsx @@ -47,8 +47,6 @@ export function UserGroupsSelect(props) { const onMouseDown = () => setIsActive(true); const onMouseUp = () => setIsActive(false); const onMouseLeave = () => setIsActive(false); - console.log(data); - console.log('logginf value'); const style = { alignItems: 'center', backgroundColor: 'transparent', @@ -74,7 +72,11 @@ export function UserGroupsSelect(props) { className={isDisabled && 'disabled'} > ); }; + const MultiValueRemove = (props) => { + // Conditionally render the close icon + if (props.data.groupType === 'default') { + return null; // Do not render the close icon + } + return ; + }; const MultiValue = (props) => ( @@ -92,6 +101,11 @@ export function UserGroupsSelect(props) { ); const selectStyles = { + placeholder: (base) => ({ + ...base, + fontSize: '12px', + color: '#A0A0A0', + }), indicatorSeparator: (base) => ({ ...base, display: 'none', @@ -105,6 +119,7 @@ export function UserGroupsSelect(props) { multiValue: (base) => ({ ...base, borderRadius: '6px', + height: '16px', backgroundColor: 'var(--slate3)', color: 'var(--slate11)', '.selected-value': { @@ -121,6 +136,12 @@ export function UserGroupsSelect(props) { paddingLeft: '0px', ...(state.data.isFixed && { display: 'none' }), }), + valueContainer: (base) => ({ + ...base, + minHeight: '32px !important', + maxHeight: '32px !important', + padding: '0px 5px 0px 5px !important', + }), input: (base) => ({ ...base, input: { @@ -130,10 +151,13 @@ export function UserGroupsSelect(props) { }), control: (base) => ({ ...base, + height: '32px !important', + minHeight: '32px !important', outline: 'none', border: '1px solid var(--slate7)', boxShadow: 'none', borderRadius: '6px', + background: 'unset', '&:hover': { border: '1px solid var(--slate8)', @@ -168,10 +192,10 @@ export function UserGroupsSelect(props) { hideSelectedOptions={false} className={darkMode && 'theme-dark dark-theme'} formatGroupLabel={formatGroupLabel} - components={{ Option: InputOption, MultiValue, IndicatorSeparator: null }} + components={{ Option: InputOption, MultiValue, MultiValueRemove, IndicatorSeparator: null }} {...props} styles={selectStyles} - placeholder="Select groups to add for this user" + placeholder="Select user groups and role .." noOptionsMessage={() => 'No groups found'} /> ); diff --git a/frontend/src/WorkspaceConstants/index.jsx b/frontend/src/WorkspaceConstants/index.jsx index 2a4cea671c..851badf43c 100644 --- a/frontend/src/WorkspaceConstants/index.jsx +++ b/frontend/src/WorkspaceConstants/index.jsx @@ -17,7 +17,7 @@ export default function WorkspaceConstants({ darkMode, switchDarkMode }) { }; const canCreateVariableOrConstant = () => { - return authenticationService.currentSessionValue.org_constant_c_r_u_d; + return authenticationService.currentSessionValue.user_permissions.org_constant_c_r_u_d; }; useEffect(() => { diff --git a/frontend/src/_services/groupPermission.v2.service.js b/frontend/src/_services/groupPermission.v2.service.js index f7db238227..8ac8da2338 100644 --- a/frontend/src/_services/groupPermission.v2.service.js +++ b/frontend/src/_services/groupPermission.v2.service.js @@ -8,8 +8,6 @@ export const groupPermissionV2Service = { getGroup, getGroups, fetchAddableApps, - // getAppsInGroup, - // getAppsNotInGroup, getUsersInGroup, getUsersNotInGroup, updateUserRole, @@ -19,8 +17,7 @@ export const groupPermissionV2Service = { fetchGranularPermissions, deleteGranularPermission, updateGranularPermission, - // updateAppGroupPermission, - // duplicate, + duplicate, }; function create(name) { @@ -146,15 +143,6 @@ function fetchGranularPermissions(groupPermissionId) { ); } -function getAppsInGroup(groupPermissionId) { - const requestOptions = { - method: 'GET', - headers: authHeader(), - credentials: 'include', - }; - return fetch(`${config.apiUrl}/group_permissions/${groupPermissionId}/apps`, requestOptions).then(handleResponse); -} - function updateUserRole(body) { const requestOptions = { method: 'PUT', @@ -165,17 +153,6 @@ function updateUserRole(body) { return fetch(`${config.apiUrl}/v2/group_permissions/user-role/edit`, requestOptions).then(handleResponse); } -function getAppsNotInGroup(groupPermissionId) { - const requestOptions = { - method: 'GET', - headers: authHeader(), - credentials: 'include', - }; - return fetch(`${config.apiUrl}/group_permissions/${groupPermissionId}/addable_apps`, requestOptions).then( - handleResponse - ); -} - function getUsersInGroup(groupPermissionId, searchInput = '') { const requestOptions = { method: 'GET', @@ -200,23 +177,6 @@ function getUsersNotInGroup(searchInput, groupPermissionId) { ).then(handleResponse); } -function updateAppGroupPermission(groupPermissionId, appGroupPermissionId, actions) { - const body = { - actions, - }; - - const requestOptions = { - method: 'PUT', - headers: authHeader(), - credentials: 'include', - body: JSON.stringify(body), - }; - return fetch( - `${config.apiUrl}/group_permissions/${groupPermissionId}/app_group_permissions/${appGroupPermissionId}`, - requestOptions - ).then(handleResponse); -} - function duplicate(groupPermissionId, body) { const requestOptions = { method: 'POST', @@ -224,7 +184,7 @@ function duplicate(groupPermissionId, body) { credentials: 'include', body: JSON.stringify(body), }; - return fetch(`${config.apiUrl}/group_permissions/${groupPermissionId}/duplicate`, requestOptions).then( + return fetch(`${config.apiUrl}/v2/group_permissions/${groupPermissionId}/duplicate`, requestOptions).then( handleResponse ); } diff --git a/frontend/src/_ui/Modal/AppsSelect.jsx b/frontend/src/_ui/Modal/AppsSelect.jsx index 002f216999..cf954200a0 100644 --- a/frontend/src/_ui/Modal/AppsSelect.jsx +++ b/frontend/src/_ui/Modal/AppsSelect.jsx @@ -3,6 +3,8 @@ import { ButtonSolid } from '@/_ui/AppButton/AppButton'; import React, { useState } from 'react'; import { useNavigate } from 'react-router-dom'; import Select, { components } from 'react-select'; +import { FilterPreview } from '@/_components'; +import './appSelect.theme.scss'; export function AppsSelect(props) { const navigate = useNavigate(); @@ -76,11 +78,16 @@ export function AppsSelect(props) { ); }; - const MultiValue = (props) => ( - -
{props.data.name}
-
- ); + const MultiValue = (props) => { + // Check if props.data exists and is not "all" + if (!props.data?.isAllField) { + return ( + +
{props.data.name}
+
+ ); + } + }; const selectStyles = { indicatorSeparator: (base) => ({ @@ -166,21 +173,30 @@ export function AppsSelect(props) { components={{ Option: InputOption, MultiValue, IndicatorSeparator: null }} {...props} onChange={(selected) => { + const isCurrentSelectAll = props.value.find((app) => app?.isAllField)?.isAllField; + const isSelectAllPresentInSelection = selected.find((app) => app?.isAllField)?.isAllField; if ( props.allowSelectAll && selected !== null && selected.length > 0 && - selected[selected.length - 1].value === props.allOption.value + isSelectAllPresentInSelection && + !isCurrentSelectAll ) { - return props.onChange(props.options); + console.log('value'); + console.log(props.value); + if (props.value.find((app) => app?.isAllField)?.isAllField) + props.onChange(selected.filter((app) => !app?.isAllField)); + return props.onChange([...props.options, props.allOption]); } - return props.onChange(selected); + if (isCurrentSelectAll && !isSelectAllPresentInSelection) return props.onChange([]); + return props.onChange(selected.filter((app) => !app?.isAllField)); }} options={[props.allowSelectAll ? props.allOption : null, ...props.options]} styles={selectStyles} placeholder="Select apps.." noOptionsMessage={() => 'No apps found'} /> + //
); } @@ -188,5 +204,6 @@ AppsSelect.defaultProps = { allOption: { label: 'Select all', value: '*', + isAllField: true, }, }; diff --git a/frontend/src/_ui/Modal/appSelect.theme.scss b/frontend/src/_ui/Modal/appSelect.theme.scss new file mode 100644 index 0000000000..ed44556f63 --- /dev/null +++ b/frontend/src/_ui/Modal/appSelect.theme.scss @@ -0,0 +1,228 @@ +@import "../../_styles/colors.scss"; + +.tj-ms-app { + position: relative; + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + padding: 6px 10px; + gap: 17px; + width: 440px; + height: 32px; + background: var(--base) !important; + border: 1px solid var(--slate7); + border-radius: 6px !important; + display: flex; + align-items: center; + + + .select-search__select { + top: 34px; + } + + .select-search__select, + .select-search-dark { + background-color: var(--base) !important; + box-shadow: 0px 32px 64px -12px rgba(16, 24, 40, 0.14); + + &:focus-visible { + background: #F8FAFF; + border: 1px solid var(--indigo9); + } + } + + .select-search__value { + background: var(--base); + } + + .select-search__row { + border-top: none !important; + } + + .select-search__option, + .select-search__not-found { + background-color: var(--base) !important; + color: var(--slate12); + border: 1px solid var(--slate5); + box-shadow: 0px 32px 64px -12px rgba(16, 24, 40, 0.14); + border-radius: 6px; + margin: 0 auto; + } + + .select-search__input { + padding: 0 !important; + color: var(--slate9) !important; + background: var(--base) !important; + } + + .select-search__select, + .select-search-dark__select { + display: none; + } + + .has-focus>.select-search__select, + .has-focus>.select-search-dark__select { + display: block; + } + + + .select-search-dark.is-loading .select-search-dark__value::after { + background-size: 10px; + } + + .select-search-dark__value::after { + right: 13px; + width: 10px; + height: 10px; + } + + .select-search-dark:not(.is-loading) .select-search-dark__value::after { + right: 13px; + width: 6px; + height: 6px; + } + + .select-search.is-loading .select-search__value::after { + background-size: 10px; + } + + .select-search__value::after { + top: calc(50% - 4px); + right: 8px; + width: 10px; + height: 10px; + } + + .select-search:not(.is-loading) .select-search__value::after { + right: 13px; + width: 6px; + height: 6px; + } + + &:hover { + border-color: rgba(66, 153, 225, 0.1) + } + + .tj-ms-preview { + padding: 3px 3px; + + .count-main { + padding: 1px 3px 1px 7px; + border: 1px solid var(--slate5); + border-radius: 5px; + background-color: var(--slate8); + color: var(--slate12); + + .selected-count { + padding-right: 5px; + font-size: .8rem; + line-height: 20px; + white-space: nowrap; + } + + .select-close-btn { + color: #9a9191; + cursor: pointer; + } + } + + .count-main:hover { + border: 1px solid #d1cccc; + } + + svg { + width: 1rem; + } + } + + .select-search, + .select-search-dark { + position: unset; + + input { + border: none; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + } + } + + .select-search-dark__input { + background-color: var(--base); + border: none; + } + + .select-search-dark__select { + background-color: var(--base); + padding: 14px; + border: 1px solid var(--slate5); + box-shadow: 0px 32px 64px -12px rgba(16, 24, 40, 0.14); + border-radius: 6px; + top: 34px !important; + + ul { + width: 100%; + + + li { + .item-renderer { + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + height: 60px; + + + div { + display: flex; + } + } + + } + } + } +} + +.tj-ms-count-app { + border-radius: 2px; + display: flex; + + .tj-ms-preview { + display: flex; + align-items: center; + } +} + +.tj-ms-count-app { + &:hover { + border: 1px solid var(--indigo9) !important; + } + + &:focus-visible { + border: 1px solid var(--indigo9); + } +} + +.selected-section { + overflow: auto; + + .tj-ms-app { + border: none; + background-color: unset; + float: left; + } + + .selected-heading { + padding: 1px 7px 1px 7px; + margin: 6px 2px 6px 5px; + border-radius: 6px; + font-weight: 500; + float: left; + } + + .selected-text { + line-height: 24px; + font-weight: 300; + margin: 6px 0px; + white-space: nowrap; + float: left; + } +} \ No newline at end of file diff --git a/frontend/src/_ui/Modal/index.jsx b/frontend/src/_ui/Modal/index.jsx index 37561475ab..a67deaee7f 100644 --- a/frontend/src/_ui/Modal/index.jsx +++ b/frontend/src/_ui/Modal/index.jsx @@ -2,6 +2,7 @@ import React from 'react'; import Modal from 'react-bootstrap/Modal'; import { ButtonSolid } from '@/_ui/AppButton/AppButton'; import SolidIcon from '@/_ui/Icon/SolidIcons'; +import { ToolTip } from '@/_components/ToolTip'; export default function ModalBase({ show, @@ -46,16 +47,23 @@ export default function ModalBase({ Cancel - - {confirmBtnProps?.title || 'Continue'} - +
+ + {confirmBtnProps?.title || 'Continue'} + +
+ ); diff --git a/server/src/controllers/group_permissions.controller.v2.ts b/server/src/controllers/group_permissions.controller.v2.ts index 92f06a0999..60b9117901 100644 --- a/server/src/controllers/group_permissions.controller.v2.ts +++ b/server/src/controllers/group_permissions.controller.v2.ts @@ -26,6 +26,7 @@ import { UserRoleService } from '@services/user-role.service'; import { ORGANIZATION_RESOURCE_ACTIONS } from 'src/constants/global.constant'; import { User } from 'src/decorators/user.decorator'; import { GranularPermissions } from 'src/entities/granular_permissions.entity'; +import { DuplucateGroupDto } from '@dto/group-permission.dto'; @Controller({ path: 'group_permissions', @@ -89,6 +90,13 @@ export class GroupPermissionsControllerV2 { return await this.groupPermissionsService.deleteGroup(id); } + @UseGuards(JwtAuthGuard, PoliciesGuard) + @CheckPolicies((ability: AppAbility) => ability.can(ORGANIZATION_RESOURCE_ACTIONS.ACCESS_PERMISSIONS, UserEntity)) + @Post(':id/duplicate') + async duplicateGroup(@User() user, @Param('id') groupId: string, @Body() duplicateGroupDto: DuplucateGroupDto) { + return await this.groupPermissionsService.duplicateGroup(groupId, duplicateGroupDto); + } + @UseGuards(JwtAuthGuard, PoliciesGuard) @CheckPolicies((ability: AppAbility) => ability.can(ORGANIZATION_RESOURCE_ACTIONS.ACCESS_PERMISSIONS, UserEntity)) @Post('group-user') diff --git a/server/src/dto/group_permissions.dto.ts b/server/src/dto/group_permissions.dto.ts index 58202b45cd..c9f16c5857 100644 --- a/server/src/dto/group_permissions.dto.ts +++ b/server/src/dto/group_permissions.dto.ts @@ -68,3 +68,14 @@ export class AddGroupUserDto { @IsOptional() allowRoleChange: boolean; } + +export class DuplicateGroupDto { + @IsBoolean() + addPermission: boolean; + + @IsBoolean() + addApps: boolean; + + @IsBoolean() + addUsers: boolean; +} diff --git a/server/src/modules/organizations/constant/constants.ts b/server/src/modules/organizations/constant/constants.ts new file mode 100644 index 0000000000..7e18203722 --- /dev/null +++ b/server/src/modules/organizations/constant/constants.ts @@ -0,0 +1,7 @@ +export const ERROR_HANDLER = { + DUPLICATE_EMAIL_PRESENT: 'Duplicate email found. Please provide a unique email address.', +}; + +export const ERROR_HANDLER_TITLE = { + DUPLICATE_EMAIL_PRESENT: 'Duplicate email', +}; diff --git a/server/src/modules/user_resource_permissions/constants/granular-permissions.constant.ts b/server/src/modules/user_resource_permissions/constants/granular-permissions.constant.ts index f191193141..71131f64a3 100644 --- a/server/src/modules/user_resource_permissions/constants/granular-permissions.constant.ts +++ b/server/src/modules/user_resource_permissions/constants/granular-permissions.constant.ts @@ -15,21 +15,21 @@ export const DEFAULT_RESOURCE_PERMISSIONS = { [USER_ROLE.ADMIN]: { [ResourceType.APP]: { canEdit: true, - canView: true, + canView: false, hideFromDashboard: false, }, }, [USER_ROLE.END_USER]: { [ResourceType.APP]: { canEdit: false, - canView: false, + canView: true, hideFromDashboard: false, }, }, [USER_ROLE.BUILDER]: { [ResourceType.APP]: { canEdit: true, - canView: true, + canView: false, hideFromDashboard: false, }, }, diff --git a/server/src/modules/user_resource_permissions/services/group-permissions.utility.service.ts b/server/src/modules/user_resource_permissions/services/group-permissions.utility.service.ts index 34351adbda..ca9a8076ae 100644 --- a/server/src/modules/user_resource_permissions/services/group-permissions.utility.service.ts +++ b/server/src/modules/user_resource_permissions/services/group-permissions.utility.service.ts @@ -11,11 +11,15 @@ import { getUserRoleQuery, } from '@module/user_resource_permissions/utility/group-permissions.utility'; import { EntityManager } from 'typeorm'; -import { dbTransactionWrap } from '@helpers/utils.helper'; +import { dbTransactionWrap, getMaxCopyNumber } from '@helpers/utils.helper'; import { App } from 'src/entities/app.entity'; import { getAllGranularPermissionQuery } from '../utility/granular-permissios.utility'; import { ResourceType } from '../constants/granular-permissions.constant'; import { ValidateEditUserGroupAdditionObject } from '../interface/group-permissions.interface'; +import { instanceToPlain } from 'class-transformer'; +import { GranularPermissions } from 'src/entities/granular_permissions.entity'; +import { AppsGroupPermissions } from 'src/entities/apps_group_permissions.entity'; +import { GroupApps } from 'src/entities/group_apps.entity'; @Injectable() export class GroupPermissionsUtilityService { @@ -122,4 +126,103 @@ export class GroupPermissionsUtilityService { } }, manager); } + + async getDuplicateGroupName(groupToDuplicate: GroupPermissions, manager: EntityManager): Promise { + const existNameList = await manager + .createQueryBuilder() + .select(['groupPermissions.name', 'groupPermissions.id']) + .from(GroupPermissions, 'groupPermissions') + .where('groupPermissions.name ~* :pattern', { pattern: `^${groupToDuplicate.name}_copy_[0-9]+$` }) + .orWhere('groupPermissions.name = :groupToDuplicateGroup', { + groupToDuplicateGroup: `${groupToDuplicate.name}_copy`, + }) + .andWhere('groupPermissions.id != :groupPermissionId', { groupPermissionId: groupToDuplicate.id }) + .andWhere('groupPermissions.organizationId = :organizationId', { + organizationId: groupToDuplicate.organizationId, + }) + .getMany(); + + let newName = `${groupToDuplicate.name}_copy`; + const number = getMaxCopyNumber(existNameList.map((group) => group.name)); + if (number) newName = `${groupToDuplicate.name}_copy_${number}`; + return newName; + } + + async duplicateGroup( + group: GroupPermissions, + addPermission: boolean, + manager?: EntityManager + ): Promise { + return await dbTransactionWrap(async (manager: EntityManager) => { + const newName = await this.getDuplicateGroupName(group, manager); + const keysToDelete = ['id', 'createdAt', 'updatedAt', 'name', 'type']; + if (addPermission) + keysToDelete.forEach((key) => { + delete group[key]; + }); + return await manager.save( + manager.create(GroupPermissions, { + name: newName, + type: GROUP_PERMISSIONS_TYPE.CUSTOM_GROUP, + ...(addPermission ? instanceToPlain(group) : {}), + }) + ); + }, manager); + } + + async duplicateGranularPermissions( + granularPermissions: GranularPermissions, + groupId: string, + manager?: EntityManager + ): Promise { + return await dbTransactionWrap(async (manager: EntityManager) => { + const keysToDelete = ['id', 'createdAt', 'updatedAt', 'groupId', 'appsGroupPermissions']; + keysToDelete.forEach((key) => { + delete granularPermissions[key]; + }); + return await manager.save( + manager.create(GranularPermissions, { groupId, ...instanceToPlain(granularPermissions) }) + ); + }, manager); + } + + async duplicateResourcePermissions( + granularPermissionsToDuplicate: GranularPermissions, + newGranularPermissionsId: string, + manager?: EntityManager + ): Promise { + return await dbTransactionWrap(async (manager: EntityManager) => { + switch (granularPermissionsToDuplicate.type) { + case ResourceType.APP: + await this.duplicationAppsPermissions( + granularPermissionsToDuplicate.appsGroupPermissions, + newGranularPermissionsId, + manager + ); + break; + default: + break; + } + }, manager); + } + + async duplicationAppsPermissions( + appsPermissions: AppsGroupPermissions, + granularPermissionId: string, + manager: EntityManager + ) { + const groupApps = appsPermissions.groupApps; + const keysToDelete = ['id', 'createdAt', 'updatedAt', 'granularPermissionId', 'groupApps']; + keysToDelete.forEach((key) => { + delete appsPermissions[key]; + }); + const newAppsPermissions = await manager.save( + manager.create(AppsGroupPermissions, { granularPermissionId, ...instanceToPlain(appsPermissions) }) + ); + groupApps.map(async (groupApp) => { + await manager.save( + manager.create(GroupApps, { appsGroupPermissionsId: newAppsPermissions.id, appId: groupApp.appId }) + ); + }); + } } diff --git a/server/src/services/group_permissions.service.v2.ts b/server/src/services/group_permissions.service.v2.ts index 07a5565344..384f4e10c0 100644 --- a/server/src/services/group_permissions.service.v2.ts +++ b/server/src/services/group_permissions.service.v2.ts @@ -1,6 +1,11 @@ import { Injectable, BadRequestException, MethodNotAllowedException } from '@nestjs/common'; import { GroupPermissions } from 'src/entities/group_permissions.entity'; -import { UpdateGroupPermissionDto, CreateGroupPermissionDto, AddGroupUserDto } from '@dto/group_permissions.dto'; +import { + UpdateGroupPermissionDto, + CreateGroupPermissionDto, + AddGroupUserDto, + DuplicateGroupDto, +} from '@dto/group_permissions.dto'; import { User } from 'src/entities/user.entity'; import { USER_ROLE, @@ -24,6 +29,8 @@ import { validateUpdateGroupOperation, } from '@module/user_resource_permissions/utility/group-permissions.utility'; import { GroupPermissionsUtilityService } from '@module/user_resource_permissions/services/group-permissions.utility.service'; +import { getAllGranularPermissionQuery } from '@module/user_resource_permissions/utility/granular-permissios.utility'; +const _ = require('lodash'); @Injectable() export class GroupPermissionsServiceV2 { @@ -223,4 +230,49 @@ export class GroupPermissionsServiceV2 { ); }, manager); } + + async duplicateGroup( + groupId: string, + duplicateGroupDto: DuplicateGroupDto, + manager?: EntityManager + ): Promise { + const { addApps, addPermission, addUsers } = duplicateGroupDto; + return await dbTransactionWrap(async (manager: EntityManager) => { + const { group } = await this.getGroup(groupId, manager); + if (!group) throw new BadRequestException(ERROR_HANDLER.GROUP_NOT_EXIST); + const newGroup = await this.groupPermissionsUtilityService.duplicateGroup(group, addPermission, manager); + if (addUsers) { + const groupUsers = await this.getAllGroupUsers( + { groupId, organizationId: group.organizationId }, + null, + manager + ); + await Promise.all( + groupUsers.map(async (groupUser) => { + await this.createGroupUser(groupUser.user, newGroup, manager); + }) + ); + } + if (addApps) { + const allGranularPermissions = await getAllGranularPermissionQuery({ groupId }, manager).getMany(); + await Promise.all( + allGranularPermissions.map(async (permissions) => { + //Deep cloning here cause the object will be updated in the function + const permissionsToDuplicate = _.cloneDeep(permissions); + const granularPermission = await this.groupPermissionsUtilityService.duplicateGranularPermissions( + permissionsToDuplicate, + newGroup.id, + manager + ); + await this.groupPermissionsUtilityService.duplicateResourcePermissions( + permissions, + granularPermission.id, + manager + ); + }) + ); + } + return newGroup; + }, manager); + } } diff --git a/server/src/services/organizations.service.ts b/server/src/services/organizations.service.ts index f7dd3f1715..0816db8282 100644 --- a/server/src/services/organizations.service.ts +++ b/server/src/services/organizations.service.ts @@ -43,6 +43,7 @@ import { DataSourceScopes, DataSourceTypes } from 'src/helpers/data_source.const import { DataSource } from 'src/entities/data_source.entity'; import { AppEnvironment } from 'src/entities/app_environments.entity'; import { DataSourceOptions } from 'src/entities/data_source_options.entity'; +import { ERROR_HANDLER, ERROR_HANDLER_TITLE } from '@module/organizations/constant/constants'; const MAX_ROW_COUNT = 500; @@ -581,7 +582,12 @@ export class OrganizationsService { shouldSendWelcomeMail = false; if (user?.organizationUsers?.some((ou) => ou.organizationId === currentUser.organizationId)) { - throw new BadRequestException('Duplicate email found. Please provide a unique email address.'); + throw new BadRequestException({ + message: { + error: ERROR_HANDLER.DUPLICATE_EMAIL_PRESENT, + title: ERROR_HANDLER_TITLE.DUPLICATE_EMAIL_PRESENT, + }, + }); } if (user?.invitationToken) { diff --git a/server/src/services/user-role.service.ts b/server/src/services/user-role.service.ts index 8f5c7b243a..a2de5c8b5e 100644 --- a/server/src/services/user-role.service.ts +++ b/server/src/services/user-role.service.ts @@ -106,6 +106,7 @@ export class UserRoleService { const userCreatedApps = await manager.find(App, { where: { userId: userId, + organizationId: organizationId, }, }); if (userCreatedApps.length > 0) { From 9c57ccda8a1b7a5f5c18a82c517e0d5d09be0810 Mon Sep 17 00:00:00 2001 From: kriks7iitk Date: Fri, 28 Jun 2024 13:49:03 +0530 Subject: [PATCH 030/190] Added design fix phase 2 --- .../AddResourcePermissionsMenu.jsx | 2 +- .../AppResourcePermission.jsx | 41 ++++++---- frontend/src/ManageGranularAccess/index.jsx | 61 +++++++++++--- .../index.jsx | 14 ++-- .../ManageGroupPermissionsV2.jsx | 6 +- .../groupPermissions.theme.scss | 82 +++++++++++++++++-- .../src/ManageOrgUsers/UserGroupsSelect.jsx | 9 -- frontend/src/_styles/groups-permissions.scss | 9 +- server/src/helpers/queries.ts | 5 +- .../services/permissions-ability.service.ts | 18 +++- 10 files changed, 189 insertions(+), 58 deletions(-) diff --git a/frontend/src/ManageGranularAccess/AddResourcePermissionsMenu.jsx b/frontend/src/ManageGranularAccess/AddResourcePermissionsMenu.jsx index 5a0a98d3de..26c750c67c 100644 --- a/frontend/src/ManageGranularAccess/AddResourcePermissionsMenu.jsx +++ b/frontend/src/ManageGranularAccess/AddResourcePermissionsMenu.jsx @@ -52,7 +52,7 @@ function AddResourcePermissionsMenu({ openAddPermissionModal, resourcesOptions, openAddPermissionModal(); }} > - App + Add apps
); diff --git a/frontend/src/ManageGranularAccess/AppResourcePermission.jsx b/frontend/src/ManageGranularAccess/AppResourcePermission.jsx index 850e3d7966..6619ee54d1 100644 --- a/frontend/src/ManageGranularAccess/AppResourcePermission.jsx +++ b/frontend/src/ManageGranularAccess/AppResourcePermission.jsx @@ -1,4 +1,4 @@ -import React, { useEffect } from 'react'; +import React, { useState } from 'react'; import GroupChipTD from '@/ManageGroupPermissionsV2/ResourceChip'; import '../ManageGroupPermissionsV2/groupPermissions.theme.scss'; import SolidIcon from '@/_ui/Icon/SolidIcons'; @@ -10,8 +10,7 @@ function AppResourcePermissions({ currentGroupPermission, openEditPermissionModal, }) { - console.log('Logging permissions'); - console.log(permissions); + const [onHover, setHover] = useState(false); const isRoleGroup = currentGroupPermission.name == 'admin'; const disableEditUpdate = currentGroupPermission.name == 'end-user'; const appsPermissions = permissions.appsGroupPermissions; @@ -21,7 +20,18 @@ function AppResourcePermissions({ if (apps.length == 0 || permissions.isAll) apps = ['All apps']; return ( -
+
{ + setHover(true); + }} + onMouseOut={() => { + setHover(false); + }} + onClick={() => { + !isRoleGroup && openEditPermissionModal(permissions); + }} + >
{permissions.name}
@@ -36,6 +46,7 @@ function AppResourcePermissions({ updateOnlyGranularPermissions(permissions, { canEdit: !appsPermissions.canEdit, canView: appsPermissions.canEdit, + ...(!appsPermissions.canEdit && { hideFromDashboard: false }), }); }} checked={appsPermissions.canEdit} @@ -77,7 +88,7 @@ function AppResourcePermissions({ }); }} checked={appsPermissions.hideFromDashboard} - disabled={isRoleGroup} + disabled={isRoleGroup || !appsPermissions.canView} data-cy="app-delete-checkbox" /> @@ -91,15 +102,17 @@ function AppResourcePermissions({
- { - openEditPermissionModal(permissions); - }} - disabled={isRoleGroup} - /> + {onHover && ( + { + openEditPermissionModal(permissions); + }} + disabled={isRoleGroup} + /> + )}
); diff --git a/frontend/src/ManageGranularAccess/index.jsx b/frontend/src/ManageGranularAccess/index.jsx index f94e893318..35b8fd06f7 100644 --- a/frontend/src/ManageGranularAccess/index.jsx +++ b/frontend/src/ManageGranularAccess/index.jsx @@ -13,6 +13,8 @@ import '../ManageGroupPermissionsV2/groupPermissions.theme.scss'; import ChangeRoleModal from '@/ManageGroupPermissionResourcesV2/ChangeRoleModal'; import AppResourcePermissions from '@/ManageGranularAccess/AppResourcePermission'; import AddResourcePermissionsMenu from '@/ManageGranularAccess/AddResourcePermissionsMenu'; +import { ConfirmDialog } from '@/_components'; +import { ToolTip } from '@/_components/ToolTip'; class ManageGranularAccessComponent extends React.Component { constructor(props) { @@ -46,6 +48,8 @@ class ManageGranularAccessComponent extends React.Component { updateParam: {}, updatingPermission: {}, updateType: '', + deleteConfirmationModal: false, + deletingPermissions: false, }; } @@ -92,6 +96,9 @@ class ManageGranularAccessComponent extends React.Component { deleteGranularPermissions = () => { const { currentEditingPermissions } = this.state; + this.setState({ + deleteGranularPermissions: true, + }); groupPermissionV2Service .deleteGranularPermission(currentEditingPermissions.id) .then(() => { @@ -101,6 +108,12 @@ class ManageGranularAccessComponent extends React.Component { }) .catch((err) => { toast.error(err.error); + }) + .finally(() => { + this.setState({ + deleteConfirmationModal: false, + deleteGranularPermissions: false, + }); }); }; @@ -128,13 +141,16 @@ class ManageGranularAccessComponent extends React.Component { }) .catch(({ error }) => { this.closeAddPermissionModal(); - this.props.updateParentState({ - showEditRoleErrorModal: true, - errorTitle: error?.title ? error?.title : 'Cannot remove last admin', - errorMessage: error.error, - errorIconName: 'usergear', - errorListItems: error.data, - }); + if (error?.error) { + this.props.updateParentState({ + showEditRoleErrorModal: true, + errorTitle: error?.title ? error?.title : 'Cannot add granular permissions', + errorMessage: error.error, + errorIconName: 'usergear', + errorListItems: error.data, + }); + } + toast.error(error); }); // .then(()) }; @@ -237,8 +253,6 @@ class ManageGranularAccessComponent extends React.Component { allowRoleChange, }; - console.log(body); - groupPermissionV2Service .updateGranularPermission(currentEditingPermissions.id, body) .then(() => { @@ -360,11 +374,14 @@ class ManageGranularAccessComponent extends React.Component { updateParam, updatingPermission, updateType, + deleteConfirmationModal, + deletingPermissions, } = this.state; const resourcesOptions = ['Apps']; const currentGroupPermission = this.props?.groupPermission; const isRoleGroup = currentGroupPermission.name == 'admin'; + const defaultGroup = currentGroupPermission.type === 'default'; const showPermissionInfo = currentGroupPermission.name == 'admin' || currentGroupPermission.name == 'end-user'; const disableEditUpdate = currentGroupPermission.name == 'end-user'; const addPermissionTooltipMessage = !newPermissionName @@ -374,6 +391,16 @@ class ManageGranularAccessComponent extends React.Component { : ''; return (
+ this.deleteGranularPermissions()} + onCancel={() => { + this.setState({ deleteConfirmationModal: false, deletingPermissions: false }); + }} + darkMode={this.props.darkMode} + /> { + this.setState({ + deleteConfirmationModal: true, + showAddPermissionModal: false, + }); + }} />
)} @@ -464,7 +496,8 @@ class ManageGranularAccessComponent extends React.Component { initialPermissionState: { ...prevState.initialPermissionState, canEdit: !prevState.initialPermissionState.canEdit, - ...(!prevState.initialPermissionState.canEdit && { canView: false }), + canView: prevState.initialPermissionState.canEdit, + ...(prevState.initialPermissionState.canEdit && { hideFromDashboard: false }), }, })); }} @@ -488,7 +521,8 @@ class ManageGranularAccessComponent extends React.Component { initialPermissionState: { ...prevState.initialPermissionState, canView: !prevState.initialPermissionState.canView, - ...(!prevState.initialPermissionState.canView && { canEdit: false }), + canEdit: prevState.initialPermissionState.canView, + ...(prevState.initialPermissionState.canEdit && { hideFromDashboard: false }), }, })); }} @@ -502,6 +536,7 @@ class ManageGranularAccessComponent extends React.Component { { this.setState((prevState) => ({ @@ -617,8 +652,8 @@ class ManageGranularAccessComponent extends React.Component { updateOnlyGranularPermissions={this.updateOnlyGranularPermissions} permissions={permissions} currentGroupPermission={currentGroupPermission} - key={index} openEditPermissionModal={this.openEditPermissionModal} + key={index} /> ))} diff --git a/frontend/src/ManageGroupPermissionResourcesV2/index.jsx b/frontend/src/ManageGroupPermissionResourcesV2/index.jsx index 0bccc0f8f3..4b6219cf2b 100644 --- a/frontend/src/ManageGroupPermissionResourcesV2/index.jsx +++ b/frontend/src/ManageGroupPermissionResourcesV2/index.jsx @@ -67,6 +67,9 @@ class ManageGroupPermissionResourcesComponent extends React.Component { componentDidUpdate(prevProps) { if (this.props.groupPermissionId && this.props.groupPermissionId !== prevProps.groupPermissionId) { this.fetchGroupAndResources(this.props.groupPermissionId); + this.setState({ + showUserSearchBox: false, + }); } } @@ -363,6 +366,7 @@ class ManageGroupPermissionResourcesComponent extends React.Component { updateParam: {}, isLoadingGroup: false, isLoadingUsers: false, + isAddingUsers: false, }); }; @@ -518,7 +522,7 @@ class ManageGroupPermissionResourcesComponent extends React.Component { isLoading={isLoadingGroup || isLoadingUsers} />
- {isLoadingGroup ? ( + {isLoadingGroup || isLoadingUsers ? ( ) : (
@@ -527,7 +531,7 @@ class ManageGroupPermissionResourcesComponent extends React.Component { className="font-weight-500 tj-text-md" // data-cy={`${this.props.selectedGroup.toLowerCase().replace(/\s+/g, '-')}-title`} > - {this.props.selectedGroup} + {`${this.props.selectedGroup} (${usersInGroup.length})`}

{groupPermission.type === 'default' && ( @@ -557,7 +561,7 @@ class ManageGroupPermissionResourcesComponent extends React.Component {
diff --git a/frontend/src/ManageGranularAccess/index.jsx b/frontend/src/ManageGranularAccess/index.jsx index 35b8fd06f7..c17e04ee8e 100644 --- a/frontend/src/ManageGranularAccess/index.jsx +++ b/frontend/src/ManageGranularAccess/index.jsx @@ -4,7 +4,7 @@ import ModalBase from '@/_ui/Modal'; import { AppsSelect } from '@/_ui/Modal/AppsSelect'; import Multiselect from '@/_ui/Multiselect/Multiselect'; import React from 'react'; -import { OverlayTrigger } from 'react-bootstrap'; +import { OverlayTrigger, Tooltip } from 'react-bootstrap'; import { withTranslation } from 'react-i18next'; import { groupPermissionV2Service } from '@/_services'; import { toast } from 'react-hot-toast'; @@ -15,7 +15,6 @@ import AppResourcePermissions from '@/ManageGranularAccess/AppResourcePermission import AddResourcePermissionsMenu from '@/ManageGranularAccess/AddResourcePermissionsMenu'; import { ConfirmDialog } from '@/_components'; import { ToolTip } from '@/_components/ToolTip'; - class ManageGranularAccessComponent extends React.Component { constructor(props) { super(props); @@ -485,29 +484,40 @@ class ManageGranularAccessComponent extends React.Component {
- +
@@ -568,29 +578,38 @@ class ManageGranularAccessComponent extends React.Component { }} />
- All apps - + All apps + This will select all apps in the workspace including any new apps created
- + Use custom groups to select custom resources + ) : ( + + ) + } + placement="left" + > + + {EDIT_ROLE_MESSAGE?.[groupPermission?.name]?.[selectedNewRole](isPaidPlan)}
) : (
- + { + if (e.target.value?.length < 51) + updateParentState(() => ({ + newPermissionName: e.target.value, + })); + }} + /> + {errors['permissionName']} +
+
+
Permission name must be unique and max 50 characters
+
+
+ {/* Till here */} +
+ + { + updateParentState((prevState) => ({ + initialPermissionState: { + ...prevState.initialPermissionState, + canEdit: !prevState.initialPermissionState.canEdit, + canView: prevState.initialPermissionState.canEdit, + ...(prevState.initialPermissionState.canEdit && { hideFromDashboard: false }), + }, + })); + }} + handleClickView={() => { + updateParentState((prevState) => ({ + initialPermissionState: { + ...prevState.initialPermissionState, + canView: !prevState.initialPermissionState.canView, + canEdit: prevState.initialPermissionState.canView, + ...(prevState.initialPermissionState.canEdit && { hideFromDashboard: false }), + }, + })); + }} + handleHideFromDashboard={() => { + updateParentState((prevState) => ({ + initialPermissionState: { + ...initialPermissionState, + hideFromDashboard: !prevState.initialPermissionState.hideFromDashboard, + }, + })); + }} + disableBuilderLevelUpdate={disableBuilderLevelUpdate} + initialPermissionState={initialPermissionState} + /> + + {/*
+
+ +
+
+ + +
+
*/} + {/* // */} +
+ +
+ +
+ + + +
+
+ + ); +} + +export default AddEditResourcePermissionsModal; diff --git a/frontend/src/ManageGranularAccess/AddEditResourceModal/AppPermissionActionContainer.jsx b/frontend/src/ManageGranularAccess/AddEditResourceModal/AppPermissionActionContainer.jsx new file mode 100644 index 0000000000..cc0ad15c1a --- /dev/null +++ b/frontend/src/ManageGranularAccess/AddEditResourceModal/AppPermissionActionContainer.jsx @@ -0,0 +1,67 @@ +import React from 'react'; +import '../../ManageGroupPermissionsV2/groupPermissions.theme.scss'; + +function AppPermissionsActions({ + handleClickEdit, + handleClickView, + handleHideFromDashboard, + disableBuilderLevelUpdate, + initialPermissionState, +}) { + return ( +
+
+ +
+
+ + +
+
+ ); +} + +export default AppPermissionsActions; diff --git a/frontend/src/ManageGranularAccess/AppResourcePermission.jsx b/frontend/src/ManageGranularAccess/AppResourcePermission.jsx index 6619ee54d1..4e8028c7ad 100644 --- a/frontend/src/ManageGranularAccess/AppResourcePermission.jsx +++ b/frontend/src/ManageGranularAccess/AppResourcePermission.jsx @@ -11,6 +11,7 @@ function AppResourcePermissions({ openEditPermissionModal, }) { const [onHover, setHover] = useState(false); + const [notClickable, setNotClickable] = useState(false); const isRoleGroup = currentGroupPermission.name == 'admin'; const disableEditUpdate = currentGroupPermission.name == 'end-user'; const appsPermissions = permissions.appsGroupPermissions; @@ -29,7 +30,8 @@ function AppResourcePermissions({ setHover(false); }} onClick={() => { - !isRoleGroup && openEditPermissionModal(permissions); + if (notClickable) console.log('this is runing'); + !isRoleGroup && !notClickable && openEditPermissionModal(permissions); }} >
@@ -40,14 +42,21 @@ function AppResourcePermissions({
Read Documentation to - know more + {text} + + read documentation + {' '} + to know more

); @@ -346,6 +343,10 @@ class ManageGranularAccessComponent extends React.Component { this.handleAutoRoleChangeModalClose(); }; + updateState = (stateUpdater) => { + this.setState((prevState) => stateUpdater(prevState)); + }; + handleConfirmAutoRoleChangeOnlyGroupUpdate = () => { const { updateParam, updatingPermission } = this.state; this.updateOnlyGranularPermissions(updatingPermission, updateParam, true); @@ -414,9 +415,7 @@ class ManageGranularAccessComponent extends React.Component { darkMode={this.props.darkMode} isLoading={isLoading} /> - @@ -458,149 +460,12 @@ class ManageGranularAccessComponent extends React.Component { disabled: (modalType === 'add' && !newPermissionName) || (isCustom && selectedApps.length === 0), tooltipMessage: addPermissionTooltipMessage, }} + disableBuilderLevelUpdate={disableEditUpdate} + selectedApps={selectedApps} + setSelectedApps={this.setSelectedApps} + addableApps={addableApps} darkMode={this.props.darkMode} - > -
- -
- { - this.setState({ - newPermissionName: e.target.value, - }); - }} - /> - {errors['permissionName']} -
-
-
Permission name must be unique and max 50 characters
-
-
-
- -
-
- -
-
- - -
-
-
-
- -
- - - -
-
-
+ /> {!granularPermissions.length ? (
diff --git a/frontend/src/ManageGroupPermissionResourcesV2/index.jsx b/frontend/src/ManageGroupPermissionResourcesV2/index.jsx index 4b6219cf2b..28a7986d7d 100644 --- a/frontend/src/ManageGroupPermissionResourcesV2/index.jsx +++ b/frontend/src/ManageGroupPermissionResourcesV2/index.jsx @@ -257,7 +257,7 @@ class ManageGroupPermissionResourcesComponent extends React.Component { style={{ display: 'flex', alignItems: 'center', gap: '4px' }} data-cy="helper-text-admin-app-access" > - {text} + {text} read documentation {' '} diff --git a/frontend/src/ManageGroupPermissionsV2/groupPermissions.theme.scss b/frontend/src/ManageGroupPermissionsV2/groupPermissions.theme.scss index 532de91f31..e300657040 100644 --- a/frontend/src/ManageGroupPermissionsV2/groupPermissions.theme.scss +++ b/frontend/src/ManageGroupPermissionsV2/groupPermissions.theme.scss @@ -442,6 +442,10 @@ } -.custom-input-error:focus { - border-color: red !important; /* Change border color when input is focused */ +.error-text{ + color: red; } +.form-control, +.error-input { + border-color: red !important; +} \ No newline at end of file diff --git a/frontend/src/_styles/theme.scss b/frontend/src/_styles/theme.scss index 0f792fac65..1483b7b1d6 100644 --- a/frontend/src/_styles/theme.scss +++ b/frontend/src/_styles/theme.scss @@ -8856,25 +8856,38 @@ tbody { padding: 16px; tbody { - - tr>td>span, - tr>td>a { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - max-width: 140px; + tr{ + td { + border-bottom-width: 0px !important; + display: flex; + align-items: center; + flex: 9%; + padding-left: 0px !important; + padding-right: 0px !important; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + &[data-name="role-header"] { + max-width: 98px !important; + } + span,a { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: 140px; + } + } } } thead { tr { - padding: 0px 6px; + padding: 6px 0px 0px 6px; gap: 8px; width: 848px; height: 40px; display: flex; align-items: center; - margin-top: 6px; } tr>th { @@ -8882,6 +8895,10 @@ tbody { border-bottom: none !important; padding: 0 !important; width: 282px; + + &[data-name="role-header"] { + width:120px !important; + } } } @@ -8895,17 +8912,21 @@ tbody { gap: 8px; } - tr>td { - border-bottom-width: 0px !important; - display: flex; - align-items: center; - flex: 9%; - padding-left: 0px !important; - padding-right: 0px !important; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - } + // tr>td { + // border-bottom-width: 0px !important; + // display: flex; + // align-items: center; + // flex: 9%; + // padding-left: 0px !important; + // padding-right: 0px !important; + // white-space: nowrap; + // overflow: hidden; + // text-overflow: ellipsis; + + // &[data-name="role-header"] { + // width:120px !important; + // } + // } } .user-actions-button { diff --git a/server/migrations/1714015564318-AddGranularPermissionsTable.ts b/server/migrations/1714015564318-AddGranularPermissionsTable.ts index 0add209f83..cda5b8476d 100644 --- a/server/migrations/1714015564318-AddGranularPermissionsTable.ts +++ b/server/migrations/1714015564318-AddGranularPermissionsTable.ts @@ -14,7 +14,7 @@ export class AddGranularPermissionsTable1714015564318 implements MigrationInterf CREATE TABLE granular_permissions ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), group_id UUID, - name VARCHAR NOT NULL, + name VARCHAR(50) NOT NULL, type resource_type NOT NULL, is_all BOOLEAN DEFAULT true, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, diff --git a/server/src/helpers/queries.ts b/server/src/helpers/queries.ts index 0ad6e110f8..9736812df0 100644 --- a/server/src/helpers/queries.ts +++ b/server/src/helpers/queries.ts @@ -76,17 +76,19 @@ export function viewableAppsQueryUsingPermissions( searchKey?: string, select?: Array ): SelectQueryBuilder { - const viewableApps = [ - null, - ...Array.from( - new Set( - [...userAppPermissions.editableAppsId, ...userAppPermissions.viewableAppsId].filter( - (id) => !userAppPermissions.hiddenAppsId.includes(id) - ) - ) - ), - ]; - + let viewableApps = userAppPermissions.hideAll + ? [null] + : [ + null, + ...Array.from( + new Set( + [...userAppPermissions.editableAppsId, ...userAppPermissions.viewableAppsId].filter( + (id) => !userAppPermissions.hiddenAppsId.includes(id) + ) + ) + ), + ]; + viewableApps = viewableApps.filter((id) => !userAppPermissions.hiddenAppsId.includes(id)); const viewableAppsQb = manager .createQueryBuilder(AppBase, 'viewable_apps') .innerJoin('viewable_apps.user', 'user') @@ -96,8 +98,7 @@ export function viewableAppsQueryUsingPermissions( if (select) { viewableAppsQb.select(select.map((col) => `viewable_apps.${col}`)); } - - if (!userAppPermissions.hideAll && !(userAppPermissions.isAllEditable || userAppPermissions.isAllViewable)) { + if (userAppPermissions.hideAll || !(userAppPermissions.isAllEditable || userAppPermissions.isAllViewable)) { viewableAppsQb.where('viewable_apps.id IN (:...viewableApps)', { viewableApps, }); diff --git a/server/src/services/granular_permissions.service.ts b/server/src/services/granular_permissions.service.ts index 38eaf5d00f..2bd9fac4d5 100644 --- a/server/src/services/granular_permissions.service.ts +++ b/server/src/services/granular_permissions.service.ts @@ -77,7 +77,7 @@ export class GranularPermissionsService { const { organizationId, updateGranularPermissionDto, group } = updateGranularPermissionsObj; const { isAll, name, resourcesToAdd, resourcesToDelete, actions, allowRoleChange } = updateGranularPermissionDto; const updateGranularPermission = { - isAll: isAll == true ? true : false, + isAll: isAll !== null || isAll !== undefined ? isAll : granularPermissions.isAll, ...(name && { name }), }; const updateResource: UpdateResourceGroupPermissionsObject = { @@ -89,7 +89,8 @@ export class GranularPermissionsService { allowRoleChange, }; await catchDbException(async () => { - await manager.update(GranularPermissions, id, updateGranularPermission); + if (Object.keys(updateGranularPermission).length > 0) + await manager.update(GranularPermissions, id, updateGranularPermission); }, [DATA_BASE_CONSTRAINTS.GRANULAR_PERMISSIONS_NAME_UNIQUE]); await this.updateResourcePermissions(updateResource, organizationId, manager); }, manager); diff --git a/server/src/services/permissions-ability.service.ts b/server/src/services/permissions-ability.service.ts index 441061fefb..25ea2ecb59 100644 --- a/server/src/services/permissions-ability.service.ts +++ b/server/src/services/permissions-ability.service.ts @@ -37,8 +37,11 @@ export class AbilityService { resourcePermissionsObject: ResourcePermissionQueryObject ): Promise { const permissions = await this.getResourcePermission(user, resourcePermissionsObject); + console.log('loggin permissions'); + const adminGroup = permissions.find((group) => group.name === USER_ROLE.ADMIN); const appsGranularPermissions = permissions.flatMap((item) => item.groupGranularPermissions); + console.log(appsGranularPermissions); const userPermissions: UserPermissions = permissions.reduce((acc, group) => { return { isAdmin: !!adminGroup, From e8b755023ec20d1344475b60a60edead13762093 Mon Sep 17 00:00:00 2001 From: Muhsin Shah Date: Sun, 7 Jul 2024 03:33:12 +0530 Subject: [PATCH 037/190] Added SSOConfigs as Type --- server/src/services/organizations.service.ts | 48 ++++++++++---------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/server/src/services/organizations.service.ts b/server/src/services/organizations.service.ts index 02615602bc..6357d80321 100644 --- a/server/src/services/organizations.service.ts +++ b/server/src/services/organizations.service.ts @@ -5,13 +5,7 @@ import { GroupPermission } from 'src/entities/group_permission.entity'; import { Organization } from 'src/entities/organization.entity'; import { SSOConfigs } from 'src/entities/sso_config.entity'; import { User } from 'src/entities/user.entity'; -import { - catchDbException, - cleanObject, - isPlural, - fullName, - generateNextNameAndSlug, -} from 'src/helpers/utils.helper'; +import { catchDbException, cleanObject, isPlural, fullName, generateNextNameAndSlug } from 'src/helpers/utils.helper'; import { Brackets, DeepPartial, EntityManager, Repository, DataSource as TypeORMDatasource } from 'typeorm'; import { OrganizationUser } from '../entities/organization_user.entity'; import { EmailService } from './email.service'; @@ -265,7 +259,8 @@ export class OrganizationsService { }); }); }; - const query = this._dataSource.createQueryBuilder(OrganizationUser, 'organization_user') + const query = this._dataSource + .createQueryBuilder(OrganizationUser, 'organization_user') .innerJoinAndSelect('organization_user.user', 'user') .innerJoinAndSelect( 'user.groupPermissions', @@ -317,7 +312,8 @@ export class OrganizationsService { } async fetchOrganizations(user: any): Promise { - return await this._dataSource.createQueryBuilder(Organization, 'organization') + return await this._dataSource + .createQueryBuilder(Organization, 'organization') .innerJoin( 'organization.organizationUsers', 'organization_users', @@ -340,7 +336,8 @@ export class OrganizationsService { ): Promise { const statusList = status ? (typeof status === 'object' ? status : [status]) : [WORKSPACE_USER_STATUS.ACTIVE]; - const query = this._dataSource.createQueryBuilder(Organization, 'organization') + const query = this._dataSource + .createQueryBuilder(Organization, 'organization') .innerJoin('organization.ssoConfigs', 'organization_sso', 'organization_sso.sso = :form', { form: 'form', }) @@ -374,7 +371,8 @@ export class OrganizationsService { } async getSSOConfigs(organizationId: string, sso: string): Promise { - return await this._dataSource.createQueryBuilder(Organization, 'organization') + return await this._dataSource + .createQueryBuilder(Organization, 'organization') .leftJoinAndSelect('organization.ssoConfigs', 'organisation_sso', 'organisation_sso.sso = :sso', { sso, }) @@ -385,14 +383,16 @@ export class OrganizationsService { } constructOrgFindQuery(slug: string, id: string, statusList?: Array) { - const query = this._dataSource.createQueryBuilder(Organization, 'organization').leftJoinAndSelect( - 'organization.ssoConfigs', - 'organisation_sso', - 'organisation_sso.enabled IN (:...statusList)', - { - statusList: statusList || [true, false], // Return enabled and disabled sso if status list not passed - } - ); + const query = this._dataSource + .createQueryBuilder(Organization, 'organization') + .leftJoinAndSelect( + 'organization.ssoConfigs', + 'organisation_sso', + 'organisation_sso.enabled IN (:...statusList)', + { + statusList: statusList || [true, false], // Return enabled and disabled sso if status list not passed + } + ); if (slug) { query.andWhere(`organization.slug = :slug`, { slug }); } else { @@ -430,7 +430,7 @@ export class OrganizationsService { configs: { clientId: this.configService.get('SSO_GOOGLE_OAUTH2_CLIENT_ID'), }, - } as any); + } as SSOConfigs); //TODO: Need a result type for this } if ( this.configService.get('SSO_GIT_OAUTH2_CLIENT_ID') && @@ -451,7 +451,7 @@ export class OrganizationsService { ), hostName: this.configService.get('SSO_GIT_OAUTH2_HOST'), }, - } as any); + } as SSOConfigs); } } @@ -846,9 +846,9 @@ export class OrganizationsService { } const result = await this.organizationsRepository.findOne({ where: { - ...(name && { name }), - ...(slug && { slug }), - } + ...(name && { name }), + ...(slug && { slug }), + }, }); if (result) throw new ConflictException(`${name ? 'Name' : 'Slug'} must be unique`); return; From 8426e2248ea3b5b52472d933088b80878c9dbb09 Mon Sep 17 00:00:00 2001 From: kriks7iitk Date: Sun, 7 Jul 2024 13:59:29 +0530 Subject: [PATCH 038/190] Modify bulk upload, inspector and design fix --- frontend/src/Editor/Editor.jsx | 7 +- frontend/src/Editor/Viewer.jsx | 14 ++-- .../AppResourcePermission.jsx | 1 - frontend/src/ManageGranularAccess/index.jsx | 9 --- .../ManageGroupPermissionResources.jsx | 2 - .../index.jsx | 13 +--- .../ManageGroupPermissionsV2.jsx | 3 - .../src/ManageOrgUsers/InviteUsersForm.jsx | 8 ++- .../src/ManageOrgUsers/ManageOrgUsers.jsx | 1 - frontend/src/_components/LogoNavDropdown.jsx | 21 +++--- .../src/_services/authentication.service.js | 1 + .../_services/organization_user.service.js | 2 - frontend/src/_styles/theme.scss | 10 +++ frontend/src/_ui/Modal/AppsSelect.jsx | 5 -- .../casl/abilities/apps-ability.factory.ts | 28 ++++---- .../utility/group-permissions.utility.ts | 3 - server/src/services/auth.service.ts | 11 ++- server/src/services/organizations.service.ts | 72 +++++++++++-------- .../services/permissions-ability.service.ts | 2 - 19 files changed, 106 insertions(+), 107 deletions(-) diff --git a/frontend/src/Editor/Editor.jsx b/frontend/src/Editor/Editor.jsx index 743cfc9043..314c259b69 100644 --- a/frontend/src/Editor/Editor.jsx +++ b/frontend/src/Editor/Editor.jsx @@ -223,12 +223,15 @@ const EditorComponent = (props) => { // Subscribe to changes in the current session using RxJS observable pattern const subscription = authenticationService.currentSession.subscribe((currentSession) => { - if (currentUser && currentSession?.group_permissions) { + if (currentUser && (currentSession?.group_permissions || currentSession?.role)) { const userVars = { email: currentUser.email, firstName: currentUser.first_name, lastName: currentUser.last_name, - groups: currentSession.group_permissions?.map((group) => group.name), + groups: currentSession?.group_permissions + ? ['all_users', ...currentSession.group_permissions.map((group) => group.name)] + : ['all_users'], + role: currentSession?.role?.name, }; const appUserDetails = { diff --git a/frontend/src/Editor/Viewer.jsx b/frontend/src/Editor/Viewer.jsx index a1b608669b..bb2a81b19f 100644 --- a/frontend/src/Editor/Viewer.jsx +++ b/frontend/src/Editor/Viewer.jsx @@ -280,13 +280,16 @@ class ViewerComponent extends React.Component { const currentUser = this.state.currentUser; let userVars = {}; - + const currentSessionValue = authenticationService.currentSessionValue; if (currentUser) { userVars = { email: currentUser.email, firstName: currentUser.first_name, lastName: currentUser.last_name, - groups: authenticationService.currentSessionValue?.group_permissions.map((group) => group.name), + groups: currentSessionValue?.group_permissions + ? ['All Users', ...currentSessionValue.group_permissions.map((group) => group.name)] + : ['All Users'], + role: currentSessionValue?.role?.name, }; } @@ -550,15 +553,18 @@ class ViewerComponent extends React.Component { const versionId = this.props.versionId; if (currentSession?.load_app && slug) { - if (currentSession?.group_permissions) { + if (currentSession?.group_permissions || currentSession?.role) { useAppDataStore.getState().actions.setAppId(appId); const currentUser = currentSession.current_user; + const currentSessionValue = authenticationService.currentSessionValue; const userVars = { email: currentUser.email, firstName: currentUser.first_name, lastName: currentUser.last_name, - groups: currentSession?.group_permissions?.map((group) => group.name), + groups: currentSessionValue?.group_permissions + ? ['All Users', ...currentSessionValue.group_permissions.map((group) => group.name)] + : ['All Users'], }; this.props.setCurrentState({ globals: { diff --git a/frontend/src/ManageGranularAccess/AppResourcePermission.jsx b/frontend/src/ManageGranularAccess/AppResourcePermission.jsx index 4e8028c7ad..82c193e861 100644 --- a/frontend/src/ManageGranularAccess/AppResourcePermission.jsx +++ b/frontend/src/ManageGranularAccess/AppResourcePermission.jsx @@ -30,7 +30,6 @@ function AppResourcePermissions({ setHover(false); }} onClick={() => { - if (notClickable) console.log('this is runing'); !isRoleGroup && !notClickable && openEditPermissionModal(permissions); }} > diff --git a/frontend/src/ManageGranularAccess/index.jsx b/frontend/src/ManageGranularAccess/index.jsx index 72f1f29df9..40f42dd527 100644 --- a/frontend/src/ManageGranularAccess/index.jsx +++ b/frontend/src/ManageGranularAccess/index.jsx @@ -49,7 +49,6 @@ class ManageGranularAccessComponent extends React.Component { } componentDidMount() { - console.log('addable apps are'); this.fetchAppsCanBeAdded(); this.fetchGranularPermissions(this.props.groupPermissionId); } @@ -58,8 +57,6 @@ class ManageGranularAccessComponent extends React.Component { groupPermissionV2Service .fetchAddableApps() .then((data) => { - console.log('fetching app'); - console.log(data); const addableApps = data.map((app) => { return { name: app.name, @@ -67,7 +64,6 @@ class ManageGranularAccessComponent extends React.Component { label: app.name, }; }); - console.log(addableApps); this.setState({ addableApps, }); @@ -232,8 +228,6 @@ class ManageGranularAccessComponent extends React.Component { const groupAppsToDelete = currentEditingPermissions?.appsGroupPermissions?.groupApps?.filter((groupApp) => appsToDelete?.includes(groupApp.appId) ); - console.log('logging groups apps to delete'); - console.log(groupAppsToDelete); const resourcesToDelete = groupAppsToDelete?.map(({ id }) => { return { id: id, @@ -320,8 +314,6 @@ class ManageGranularAccessComponent extends React.Component { }; setSelectedApps = (values) => { - console.log('Logging selected values'); - console.log(values); this.setState({ selectedApps: values }); }; @@ -338,7 +330,6 @@ class ManageGranularAccessComponent extends React.Component { }); }; handleConfirmAutoRoleChangeGroupUpdate = () => { - console.log('this is running'); this.updateGranularPermissions(true); this.handleAutoRoleChangeModalClose(); }; diff --git a/frontend/src/ManageGroupPermissionResources/ManageGroupPermissionResources.jsx b/frontend/src/ManageGroupPermissionResources/ManageGroupPermissionResources.jsx index f120db86a0..906517fe1f 100644 --- a/frontend/src/ManageGroupPermissionResources/ManageGroupPermissionResources.jsx +++ b/frontend/src/ManageGroupPermissionResources/ManageGroupPermissionResources.jsx @@ -73,8 +73,6 @@ class ManageGroupPermissionResourcesComponent extends React.Component { groupPermissionService .getUsersNotInGroup(query, groupPermissionId) .then(({ users }) => { - console.log('logging users'); - console.log(users); resolve( users.map((user) => { return { diff --git a/frontend/src/ManageGroupPermissionResourcesV2/index.jsx b/frontend/src/ManageGroupPermissionResourcesV2/index.jsx index 28a7986d7d..6547303f4a 100644 --- a/frontend/src/ManageGroupPermissionResourcesV2/index.jsx +++ b/frontend/src/ManageGroupPermissionResourcesV2/index.jsx @@ -102,8 +102,6 @@ class ManageGroupPermissionResourcesComponent extends React.Component { groupPermissionV2Service .getUsersNotInGroup(query, groupPermissionId) .then((users) => { - console.log('loggimgusers'); - console.log(users); resolve( users.map((user) => { return { @@ -152,7 +150,6 @@ class ManageGroupPermissionResourcesComponent extends React.Component { this.fetchGroupPermission(groupPermissionId); }) .catch(({ error }) => { - console.log(error); if (error?.type) { this.setState({ showAutoRoleChangeModal: true, @@ -173,8 +170,6 @@ class ManageGroupPermissionResourcesComponent extends React.Component { }; setSelectedUsers = (value) => { - console.log('user value'); - console.log(value); this.setState({ selectedUsers: value, }); @@ -187,8 +182,6 @@ class ManageGroupPermissionResourcesComponent extends React.Component { }; addSelectedUsersToGroup = (groupPermissionId, selectedUsers, allowRoleChange) => { - console.log('selected users'); - console.log(selectedUsers); this.setState({ isAddingUsers: true }); const body = { userIds: selectedUsers.map((user) => user.value), @@ -198,7 +191,6 @@ class ManageGroupPermissionResourcesComponent extends React.Component { groupPermissionV2Service .addUsersInGroups(body) .then(() => { - console.log('this is running'); this.setState({ selectedUsers: [], isLoadingUsers: true, @@ -320,7 +312,6 @@ class ManageGroupPermissionResourcesComponent extends React.Component { }); changeThisComponentState = (state = {}) => { - console.log('this is changing'); this.setState(state); }; @@ -390,7 +381,6 @@ class ManageGroupPermissionResourcesComponent extends React.Component { toggleAddUsersToRoleModal = () => this.setState({ isAddUsersToRoleModalOpen: !this.state.isAddUsersToRoleModalOpen }); handleConfirmAutoRoleChangeGroupUpdate = () => { - console.log('this is running'); const { updateParam, groupPermission } = this.state; this.updateGroupPermission(groupPermission.id, updateParam, true); this.setState({ @@ -703,7 +693,7 @@ class ManageGroupPermissionResourcesComponent extends React.Component {
)} -
+
{isLoadingGroup || isLoadingUsers ? ( @@ -722,7 +712,6 @@ class ManageGroupPermissionResourcesComponent extends React.Component { usersInGroup.map((item) => { const user = item.user; const groupUserId = item.id; - console.log(user); return (
{ const groupPermissions = data.groupPermissions; const defaultGroups = this.sortDefaultGroup(groupPermissions.filter((group) => group.type === 'default')); - console.log('logging group'); - const currentGroupId = type == 'admin' ? defaultGroups[0].id : type == 'current' ? this.findCurrentGroupDetails(groupPermissions) : groupPermissions.at(-1).id; - console.log(groupPermissions.find((group) => group.id === currentGroupId)); this.setState( { groups: groupPermissions.filter((group) => group.type === 'custom'), diff --git a/frontend/src/ManageOrgUsers/InviteUsersForm.jsx b/frontend/src/ManageOrgUsers/InviteUsersForm.jsx index 15c474931d..ccbb0cec99 100644 --- a/frontend/src/ManageOrgUsers/InviteUsersForm.jsx +++ b/frontend/src/ManageOrgUsers/InviteUsersForm.jsx @@ -120,8 +120,6 @@ function InviteUsersForm({ }; const handleEditUser = (e) => { - console.log(currentEditingUser); - console.log(newRole); e.preventDefault(); if (newRole) setIsChangeRoleModalOpen(true); else { @@ -354,7 +352,11 @@ function InviteUsersForm({ type="submit" variant="primary" disabled={ - uploadingUsers || creatingUser || !isEdited() || (!isEditing && !containRoleGroup) || !validUserDetail + uploadingUsers || + creatingUser || + !isEdited() || + (!isEditing && !containRoleGroup && uploadingUsers) || + (!isEditing && !validUserDetail && uploadingUsers) } data-cy={activeTab == 1 ? 'button-invite-users' : 'button-upload-users'} leftIcon={activeTab == 1 ? 'sent' : 'fileupload'} diff --git a/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx b/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx index 6f69ce0233..882f7a6624 100644 --- a/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx +++ b/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx @@ -79,7 +79,6 @@ class ManageOrgUsersComponent extends React.Component { if (!this.state.file) { errors['file'] = 'This field is required'; } - this.setState({ errors: errors }); return Object.keys(errors).length === 0; } diff --git a/frontend/src/_components/LogoNavDropdown.jsx b/frontend/src/_components/LogoNavDropdown.jsx index c5c2e6adcd..f512e41750 100644 --- a/frontend/src/_components/LogoNavDropdown.jsx +++ b/frontend/src/_components/LogoNavDropdown.jsx @@ -38,16 +38,17 @@ export default function LogoNavDropdown({ darkMode }) { Database )} - - - Data sources - - + {admin && ( + + + Data sources + + )} { return ( @@ -182,8 +179,6 @@ export function AppsSelect(props) { isSelectAllPresentInSelection && !isCurrentSelectAll ) { - console.log('value'); - console.log(props.value); if (props.value.find((app) => app?.isAllField)?.isAllField) props.onChange(selected.filter((app) => !app?.isAllField)); return props.onChange([...props.options, props.allOption]); diff --git a/server/src/modules/casl/abilities/apps-ability.factory.ts b/server/src/modules/casl/abilities/apps-ability.factory.ts index 45f68826a4..e58ff4f739 100644 --- a/server/src/modules/casl/abilities/apps-ability.factory.ts +++ b/server/src/modules/casl/abilities/apps-ability.factory.ts @@ -8,19 +8,19 @@ import { APP_RESOURCE_ACTIONS, TOOLJET_RESOURCE } from 'src/constants/global.con type Actions = | 'authorizeOauthForSource' //Deprecated - | APP_RESOURCE_ACTIONS.CLONE // - | APP_RESOURCE_ACTIONS.IMPORT // - | APP_RESOURCE_ACTIONS.CREATE // - | 'createDataSource' // - | 'createQuery' // - | 'createUsers' // - | APP_RESOURCE_ACTIONS.VERSIONS_CREATE // - | APP_RESOURCE_ACTIONS.VERSION_DELETE // - | 'deleteApp' // - | 'deleteDataSource' // - | 'deleteQuery' // - | 'fetchUsers' // - | APP_RESOURCE_ACTIONS.VERSION_READ // + | APP_RESOURCE_ACTIONS.CLONE + | APP_RESOURCE_ACTIONS.IMPORT + | APP_RESOURCE_ACTIONS.CREATE + | 'createDataSource' + | 'createQuery' + | 'createUsers' + | APP_RESOURCE_ACTIONS.VERSIONS_CREATE + | APP_RESOURCE_ACTIONS.VERSION_DELETE + | 'deleteApp' + | 'deleteDataSource' + | 'deleteQuery' + | 'fetchUsers' + | APP_RESOURCE_ACTIONS.VERSION_READ | 'getDataSources' | 'getQueries' | 'previewQuery' @@ -71,8 +71,8 @@ export class AppsAbilityFactory { if (userPermission.appCreate) { can(APP_RESOURCE_ACTIONS.CREATE, App); can(APP_RESOURCE_ACTIONS.IMPORT, App); + can(APP_RESOURCE_ACTIONS.EXPORT, App); if (appUpdateAllowed) { - can(APP_RESOURCE_ACTIONS.EXPORT, App); can(APP_RESOURCE_ACTIONS.CLONE, App); } } diff --git a/server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts b/server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts index ad89a6f590..4976fe9072 100644 --- a/server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts +++ b/server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts @@ -121,9 +121,6 @@ export function getAllUserGroupsQuery( }) .where('groupUsers.userId = :userId', { userId, - }) - .andWhere('groups.type = :type', { - type: GROUP_PERMISSIONS_TYPE.CUSTOM_GROUP, }); return query; } diff --git a/server/src/services/auth.service.ts b/server/src/services/auth.service.ts index deac059392..a50892830f 100644 --- a/server/src/services/auth.service.ts +++ b/server/src/services/auth.service.ts @@ -46,7 +46,10 @@ import { CookieOptions, Response } from 'express'; import { SessionService } from './session.service'; import { RequestContext } from 'src/models/request-context.model'; import * as requestIp from 'request-ip'; -import { USER_ROLE } from '@module/user_resource_permissions/constants/group-permissions.constant'; +import { + GROUP_PERMISSIONS_TYPE, + USER_ROLE, +} from '@module/user_resource_permissions/constants/group-permissions.constant'; import { ActivateAccountWithTokenDto } from '@dto/activate-account-with-token.dto'; import { AppAuthenticationDto, AppSignupDto } from '@dto/app-authentication.dto'; import { SIGNUP_ERRORS } from 'src/helpers/errors.constants'; @@ -244,11 +247,13 @@ export class AuthService { return decamelizeKeys({ currentOrganizationId: user.organizationId, currentOrganizationSlug: organization.slug, - //Check this for permissions......... currentOrganizationName: organization.name, admin: await this.usersService.hasGroup(user, USER_ROLE.ADMIN, null, manager), userPermissions: userPermissions, - groupPermissions: permissions, + groupPermissions: permissions.filter( + (group) => group.type === GROUP_PERMISSIONS_TYPE.CUSTOM_GROUP || group.name === USER_ROLE.ADMIN + ), + role: permissions.find((group) => group.type === GROUP_PERMISSIONS_TYPE.DEFAULT), appGroupPermissions: appGroupPermissions, currentUser: { id: user.id, diff --git a/server/src/services/organizations.service.ts b/server/src/services/organizations.service.ts index 0816db8282..ca3b37f8a3 100644 --- a/server/src/services/organizations.service.ts +++ b/server/src/services/organizations.service.ts @@ -16,7 +16,6 @@ import { Brackets, createQueryBuilder, DeepPartial, EntityManager, getManager, R import { OrganizationUser } from '../entities/organization_user.entity'; import { EmailService } from './email.service'; import { EncryptionService } from './encryption.service'; -import { GroupPermissionsService } from './group_permissions.service'; import { OrganizationUsersService } from './organization_users.service'; import { DataSourcesService } from './data_sources.service'; import { UsersService } from './users.service'; @@ -29,7 +28,6 @@ import { USER_STATUS, WORKSPACE_USER_STATUS, } from 'src/helpers/user_lifecycle'; -import { decamelize } from 'humps'; import { Response } from 'express'; import { AppEnvironmentService } from './app_environments.service'; import { DataBaseConstraints } from 'src/helpers/db_constraints.constants'; @@ -44,6 +42,7 @@ import { DataSource } from 'src/entities/data_source.entity'; import { AppEnvironment } from 'src/entities/app_environments.entity'; import { DataSourceOptions } from 'src/entities/data_source_options.entity'; import { ERROR_HANDLER, ERROR_HANDLER_TITLE } from '@module/organizations/constant/constants'; +import { GroupPermissionsServiceV2 } from './group_permissions.service.v2'; const MAX_ROW_COUNT = 500; @@ -64,6 +63,7 @@ interface UserCsvRow { first_name: string; last_name: string; email: string; + role: string; groups?: any; } @@ -88,7 +88,7 @@ export class OrganizationsService { private usersService: UsersService, private dataSourceService: DataSourcesService, private organizationUserService: OrganizationUsersService, - private groupPermissionService: GroupPermissionsService, + private groupPermissionService: GroupPermissionsServiceV2, private appEnvironmentService: AppEnvironmentService, private encryptionService: EncryptionService, private emailService: EmailService, @@ -671,14 +671,8 @@ export class OrganizationsService { }, manager); } - decamelizeDefaultGroupNames(groups: string) { - return groups?.length - ? groups - .split('|') - .map((group: string) => - group === 'All Users' || group === 'Admin' ? decamelize(group.replace(' ', '')) : group - ) - : []; + createGroupsList(groups: string) { + return groups?.length ? groups.split('|') : []; } async inviteUserswrapper(users, currentUser: User): Promise { @@ -689,6 +683,19 @@ export class OrganizationsService { }); } + convertUserRolesCasing(role: string) { + switch (role) { + case 'End User': + return 'end-user'; + case 'Builder': + return 'builder'; + case 'Admin': + return 'admin'; + default: + break; + } + } + async bulkUploadUsers(currentUser: User, fileStream, res: Response) { const users = []; const existingUsers = []; @@ -696,14 +703,12 @@ export class OrganizationsService { const invalidRows = []; const invalidFields = new Set(); const invalidGroups = []; - let isUserInOtherGroupsAndAdmin = false; const emailPattern = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i; const manager = getManager(); - - //New group permissions change - const groupPermissions = await this.groupPermissionService.findAll(currentUser); - const existingGroups = groupPermissions.map((groupPermission) => groupPermission.group); - + const invalidRoles = []; + const groupPermissions = (await this.groupPermissionService.getAllGroup(currentUser.organizationId)) + .groupPermissions; + const existingGroups = groupPermissions.map((groupPermission) => groupPermission.name); csv .parseString(fileStream.toString(), { headers: ['first_name', 'last_name', 'email', 'groups', 'role'], @@ -713,13 +718,18 @@ export class OrganizationsService { .transform((row: UserCsvRow, next) => { return next(null, { ...row, - groups: this.decamelizeDefaultGroupNames(row?.groups), + groups: this.createGroupsList(row?.groups), + role: this.convertUserRolesCasing(row?.role), }); }) .validate(async (data: UserCsvRow, next) => { await dbTransactionWrap(async (manager: EntityManager) => { //Check for existing users + + let isInvalidRole = false; const user = await this.usersService.findByEmail(data?.email, undefined, undefined, manager); + console.log(data); + console.log('loggin row'); if (user?.status === USER_STATUS.ARCHIVED) { archivedUsers.push(data?.email); @@ -734,27 +744,29 @@ export class OrganizationsService { if (Array.isArray(receivedGroups)) { for (const group of receivedGroups) { - if (group === 'admin' && receivedGroups.includes('all_users') && receivedGroups.length > 2) { - isUserInOtherGroupsAndAdmin = true; - break; - } - if (existingGroups.indexOf(group) === -1) { invalidGroups.push(group); } } } + if (!Object.values(USER_ROLE).includes(data?.role as USER_ROLE)) { + invalidRoles.push(data?.role); + isInvalidRole = true; + } + data.first_name = data.first_name?.trim(); data.last_name = data.last_name?.trim(); const isValidName = data.first_name !== '' || data.last_name !== ''; - - return next(null, isValidName && emailPattern.test(data.email) && receivedGroups?.length > 0); + return next(null, isValidName && emailPattern.test(data.email) && !isInvalidRole); }, manager); }) .on('data', function () {}) .on('data-invalid', (row, rowNumber) => { + console.log('invalid row'); + console.log(row); + const invalidField = Object.keys(row).filter((key) => { if (Array.isArray(row[key])) { return row[key].length === 0; @@ -778,18 +790,16 @@ export class OrganizationsService { throw new BadRequestException(errorMsg); } - if (isUserInOtherGroupsAndAdmin) { - throw new BadRequestException( - 'Conflicting Group Memberships: User cannot be in both the Admin group and other groups simultaneously.' - ); - } - if (invalidGroups.length) { throw new BadRequestException( `${invalidGroups.length} group${isPlural(invalidGroups)} doesn't exist. No users were uploaded` ); } + if (invalidRoles.length > 0) { + throw new BadRequestException('Invalid role present for the users'); + } + if (archivedUsers.length) { throw new BadRequestException( `User${isPlural(archivedUsers)} with email ${archivedUsers.join( diff --git a/server/src/services/permissions-ability.service.ts b/server/src/services/permissions-ability.service.ts index 25ea2ecb59..6e92e7988d 100644 --- a/server/src/services/permissions-ability.service.ts +++ b/server/src/services/permissions-ability.service.ts @@ -37,11 +37,9 @@ export class AbilityService { resourcePermissionsObject: ResourcePermissionQueryObject ): Promise { const permissions = await this.getResourcePermission(user, resourcePermissionsObject); - console.log('loggin permissions'); const adminGroup = permissions.find((group) => group.name === USER_ROLE.ADMIN); const appsGranularPermissions = permissions.flatMap((item) => item.groupGranularPermissions); - console.log(appsGranularPermissions); const userPermissions: UserPermissions = permissions.reduce((acc, group) => { return { isAdmin: !!adminGroup, From 125be1a9a370d11b246ddf870063910a9d8c976d Mon Sep 17 00:00:00 2001 From: kriks7iitk Date: Tue, 9 Jul 2024 10:06:09 +0530 Subject: [PATCH 039/190] Added migration --- .../1714015513342-AddGroupPermissionsTable.ts | 1 - ...0-CreateDefaultGroupInExistingWorkspace.ts | 134 +++++++++++ ...sersToRespectiveRolesBuilderAndEndUsers.ts | 109 +++++++++ ...737529-MigrateCustomGroupToNewUserGroup.ts | 208 ++++++++++++++++++ server/src/dto/granular-permissions.dto.ts | 4 - .../src/entities/group_permissions.entity.ts | 3 - .../granular-permissions.constant.ts | 2 +- .../constants/group-permissions.constant.ts | 6 - .../interface/group-permissions.interface.ts | 2 - server/src/services/organizations.service.ts | 5 - .../services/permissions-ability.service.ts | 2 +- server/src/services/user-role.service.ts | 1 - 12 files changed, 453 insertions(+), 24 deletions(-) create mode 100644 server/migrations/1720352990850-CreateDefaultGroupInExistingWorkspace.ts create mode 100644 server/migrations/1720365772516-AddingUsersToRespectiveRolesBuilderAndEndUsers.ts create mode 100644 server/migrations/1720434737529-MigrateCustomGroupToNewUserGroup.ts diff --git a/server/migrations/1714015513342-AddGroupPermissionsTable.ts b/server/migrations/1714015513342-AddGroupPermissionsTable.ts index 1584209964..82cde7266a 100644 --- a/server/migrations/1714015513342-AddGroupPermissionsTable.ts +++ b/server/migrations/1714015513342-AddGroupPermissionsTable.ts @@ -20,7 +20,6 @@ export class AddGroupPermissionsTable1714015513342 implements MigrationInterface app_delete BOOLEAN DEFAULT false, folder_crud BOOLEAN DEFAULT false, org_constant_crud BOOLEAN DEFAULT false, - org_variable_crud BOOLEAN DEFAULT false, data_source_create BOOLEAN DEFAULT false, data_source_delete BOOLEAN DEFAULT false, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, diff --git a/server/migrations/1720352990850-CreateDefaultGroupInExistingWorkspace.ts b/server/migrations/1720352990850-CreateDefaultGroupInExistingWorkspace.ts new file mode 100644 index 0000000000..b204b46aeb --- /dev/null +++ b/server/migrations/1720352990850-CreateDefaultGroupInExistingWorkspace.ts @@ -0,0 +1,134 @@ +import { CreateGranularPermissionDto } from '@dto/granular-permissions.dto'; +import { + DEFAULT_GRANULAR_PERMISSIONS_NAME, + DEFAULT_RESOURCE_PERMISSIONS, + ResourceType, +} from '@module/user_resource_permissions/constants/granular-permissions.constant'; +import { + USER_ROLE, + DEFAULT_GROUP_PERMISSIONS, +} from '@module/user_resource_permissions/constants/group-permissions.constant'; +import { + CreateResourcePermissionObject, + ResourcePermissionMetaData, +} from '@module/user_resource_permissions/interface/granular-permissions.interface'; +import { AppsGroupPermissions } from 'src/entities/apps_group_permissions.entity'; +import { GranularPermissions } from 'src/entities/granular_permissions.entity'; +import { GroupPermissions } from 'src/entities/group_permissions.entity'; +import { Organization } from 'src/entities/organization.entity'; +import { UserGroupPermission } from 'src/entities/user_group_permission.entity'; +import { EntityManager, MigrationInterface, QueryRunner } from 'typeorm'; + +export class CreateDefaultGroupInExistingWorkspace1720352990850 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + const manager = queryRunner.manager; + const organizationIds = await manager.find(Organization, { + select: ['id'], + }); + for (const organizationId in organizationIds) { + for (const defaultGroup of Object.keys(USER_ROLE)) { + const groupPermissions = DEFAULT_GROUP_PERMISSIONS[defaultGroup]; + const query = ` + INSERT INTO permission_groups ( + organization_id, + name, + type, + app_create, + app_delete, + folder_crud, + org_constant_crud, + data_source_create, + data_source_delete, + + ) VALUES ( + ${organizationId} , ${groupPermissions.name} , ${groupPermissions.type},${groupPermissions.appCreate}, ${groupPermissions.appDelete} + , ${groupPermissions.folderCRUD}, ${groupPermissions.orgConstantCRUD}, ${groupPermissions.dataSourceCreate}, ${groupPermissions.dataSourceDelete} + ) RETURNING *;`; + const group: GroupPermissions = await manager.query(query); + const groupGranularPermissions: Record = + DEFAULT_RESOURCE_PERMISSIONS[group.name]; + for (const resource of Object.keys(groupGranularPermissions)) { + const createResourcePermissionObj: CreateResourcePermissionObject = groupGranularPermissions[resource]; + const dtoObject = { + name: DEFAULT_GRANULAR_PERMISSIONS_NAME[resource], + groupId: group.id, + type: resource as ResourceType, + isAll: true, + }; + const granularPermissions = await this.createGranularPermission(manager, dtoObject); + await this.createAppsResourcePermission( + manager, + { granularPermissions, organizationId }, + createResourcePermissionObj + ); + } + //Migrating Admins to new Admins + if (group.name === USER_ROLE.ADMIN) { + const adminsUsers = await manager + .createQueryBuilder(UserGroupPermission, 'usersGroup') + .innerJoin( + 'userGroup.groupPermission', + 'groupPermission', + 'groupPermission.organizationId := organizationId', + { + organizationId, + } + ) + .where('groupPermission.group := admin', { + admin: 'admin', + }) + .getMany(); + const userIds = adminsUsers.map((userGroup) => userGroup.userId); + await this.migrateUserGroup(manager, userIds, group.id); + } + } + } + } + + async createGranularPermission( + manager: EntityManager, + createObject: CreateGranularPermissionDto + ): Promise { + const query = ` + INSERT INTO granular_permissions ( + group_id, + name, + type, + is_all, + + ) VALUES ( + ${createObject.groupId} , ${createObject.name} , ${createObject.type},${createObject.isAll} + ) RETURNING *;`; + return await manager.query(query); + } + + async createAppsResourcePermission( + manager: EntityManager, + createMeta: ResourcePermissionMetaData, + createObject: CreateResourcePermissionObject + ): Promise { + const { granularPermissions } = createMeta; + const query = ` + INSERT INTO apps_group_permissions ( + granular_permission_id, + can_edit, + can_view, + hide_from_dashboard, + + ) VALUES ( + ${granularPermissions.id} , ${createObject.canEdit} , ${createObject.canView},${createObject.hideFromDashboard} + ) RETURNING *;`; + return await manager.query(query); + } + + async migrateUserGroup(manager: EntityManager, userIds: string[], groupId: string) { + const valuesString = `( ${userIds.map((id) => `(${id}, ${groupId} )`).join(',')} )`; + const query = `INSERT INTO group_users ( + user_id, + group_id + ) VALUES ${valuesString}`; + return await manager.query(query); + } + + public async down(queryRunner: QueryRunner): Promise {} +} diff --git a/server/migrations/1720365772516-AddingUsersToRespectiveRolesBuilderAndEndUsers.ts b/server/migrations/1720365772516-AddingUsersToRespectiveRolesBuilderAndEndUsers.ts new file mode 100644 index 0000000000..874cc3cd72 --- /dev/null +++ b/server/migrations/1720365772516-AddingUsersToRespectiveRolesBuilderAndEndUsers.ts @@ -0,0 +1,109 @@ +import { + GROUP_PERMISSIONS_TYPE, + USER_ROLE, +} from '@module/user_resource_permissions/constants/group-permissions.constant'; +import { GroupPermissions } from 'src/entities/group_permissions.entity'; +import { Organization } from 'src/entities/organization.entity'; +import { OrganizationUser } from 'src/entities/organization_user.entity'; +import { User } from 'src/entities/user.entity'; +import { UserGroupPermission } from 'src/entities/user_group_permission.entity'; +import { Brackets, EntityManager, MigrationInterface, QueryRunner } from 'typeorm'; + +export class AddingUsersToRespectiveRolesBuilderAndEndUsers1720365772516 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + const manager = queryRunner.manager; + const organizationIds = ( + await manager.find(Organization, { + select: ['id'], + }) + ).map((organization) => organization.id); + await this.getAndConvertEditorBuilderUsers(manager, organizationIds); + } + + async getAndConvertEditorBuilderUsers(manager: EntityManager, organizationIds: string[]) { + for (const organizationId of organizationIds) { + const userIdsWithEditPermissions = ( + await manager + .createQueryBuilder(User, 'users') + .innerJoin('users.organizationUsers', 'organization_users', 'organization_users.organizationId := ', { + organizationId, + }) + .innerJoin( + 'users.groupPermissions', + 'group_permissions', + 'organization_users.organizationId = group_permissions.organizationId' + ) + .leftJoin('group_permissions.appGroupPermission', 'app_group_permissions') + .andWhere( + new Brackets((qb) => { + qb.where('app_group_permissions.read = true AND app_group_permissions.update = true').orWhere( + 'group_permissions.appCreate = true' + ); + }) + ) + .select('users.id') + .distinct() + .getMany() + ).map((record) => record.id); + + const userIdsOfAppOwners = ( + await manager + .createQueryBuilder(User, 'users') + .innerJoin('users.organizationUsers', 'organization_users', 'organization_users.organizationId := ', { + organizationId, + }) + .innerJoin('users.apps', 'apps') + .select('users.id') + .distinct() + .getMany() + ).map((record) => record.id); + + const adminsUsers = ( + await manager + .createQueryBuilder(UserGroupPermission, 'usersGroup') + .innerJoin( + 'userGroup.groupPermission', + 'groupPermission', + 'groupPermission.organizationId := organizationId', + { + organizationId, + } + ) + .where('groupPermission.name := admin', { + admin: 'admin', + }) + .getMany() + ).map((record) => record.userId); + const builderUsersWithAdmin = [...new Set([...userIdsWithEditPermissions, ...userIdsOfAppOwners])]; + const builderUsersWoAdmin = builderUsersWithAdmin.filter((id) => !adminsUsers.includes(id)); + const builderGroup = await manager.findOne(GroupPermissions, { + where: { name: USER_ROLE.BUILDER, type: GROUP_PERMISSIONS_TYPE.DEFAULT, organizationId: organizationId }, + }); + const endUserGroup = await manager.findOne(GroupPermissions, { + where: { name: USER_ROLE.END_USER, type: GROUP_PERMISSIONS_TYPE.DEFAULT, organizationId: organizationId }, + }); + await this.migrateUserGroup(manager, builderUsersWoAdmin, builderGroup.id); + const organizationUser = ( + await manager.find(OrganizationUser, { + where: { + organizationId, + }, + }) + ).map((record) => record.userId); + const builderAdminUsers = [...new Set([...builderUsersWoAdmin, ...adminsUsers])]; + const endUsers = organizationUser.filter((userId) => !builderAdminUsers.includes(userId)); + await this.migrateUserGroup(manager, endUsers, endUserGroup.id); + } + } + + async migrateUserGroup(manager: EntityManager, userIds: string[], groupId: string) { + const valuesString = `( ${userIds.map((id) => `(${id}, ${groupId} )`).join(',')} )`; + const query = `INSERT INTO group_users ( + user_id, + group_id + ) VALUES ${valuesString}`; + return await manager.query(query); + } + + public async down(queryRunner: QueryRunner): Promise {} +} diff --git a/server/migrations/1720434737529-MigrateCustomGroupToNewUserGroup.ts b/server/migrations/1720434737529-MigrateCustomGroupToNewUserGroup.ts new file mode 100644 index 0000000000..21fa7cc45c --- /dev/null +++ b/server/migrations/1720434737529-MigrateCustomGroupToNewUserGroup.ts @@ -0,0 +1,208 @@ +import { CreateGranularPermissionDto } from '@dto/granular-permissions.dto'; +import { + DEFAULT_GRANULAR_PERMISSIONS_NAME, + ResourceType, +} from '@module/user_resource_permissions/constants/granular-permissions.constant'; +import { + GROUP_PERMISSIONS_TYPE, + USER_ROLE, +} from '@module/user_resource_permissions/constants/group-permissions.constant'; +import { + CreateResourcePermissionObject, + ResourcePermissionMetaData, +} from '@module/user_resource_permissions/interface/granular-permissions.interface'; +import { AppGroupPermission } from 'src/entities/app_group_permission.entity'; +import { AppsGroupPermissions } from 'src/entities/apps_group_permissions.entity'; +import { GranularPermissions } from 'src/entities/granular_permissions.entity'; +import { GroupPermission } from 'src/entities/group_permission.entity'; +import { GroupPermissions } from 'src/entities/group_permissions.entity'; +import { Organization } from 'src/entities/organization.entity'; +import { EntityManager, MigrationInterface, QueryRunner } from 'typeorm'; + +export class MigrateCustomGroupToNewUserGroup1720434737529 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + const manager = queryRunner.manager; + const organizationIds = ( + await manager.find(Organization, { + select: ['id'], + }) + ).map((organization) => organization.id); + for (const organizationId of organizationIds) { + const groups = await manager + .createQueryBuilder(GroupPermission, 'groupPermission') + .where('groupPermission.organizationId := organizationId', { + organizationId, + }) + .innerJoinAndSelect('groupPermission.appGroupPermission', 'appGroupPermission') + .innerJoinAndSelect('groupPermission.userGroupPermission', 'userGroupPermission') + .andWhere('groupPermission.group != admin', { + admin: 'admin', + }) + .getMany(); + for (const groupPermissions of groups) { + const query = ` + INSERT INTO permission_groups ( + organization_id, + name, + type, + app_create, + app_delete, + folder_crud, + org_constant_crud, + data_source_create, + data_source_delete, + + ) VALUES ( + ${organizationId} , ${groupPermissions.group} , ${GROUP_PERMISSIONS_TYPE.CUSTOM_GROUP},${groupPermissions.appCreate}, ${groupPermissions.appDelete} + , ${groupPermissions.folderCreate}, ${groupPermissions.orgEnvironmentConstantCreate}, false , false + ) RETURNING *;`; + const group: GroupPermissions = await manager.query(query); + const existingGroupUsers = groupPermissions.userGroupPermission; + await this.migrateUserGroup( + manager, + existingGroupUsers.map((record) => record.userId), + groupPermissions.id + ); + const resources = [ResourceType.APP]; + for (const resource of resources) { + if (resource === ResourceType.APP) { + const viewLevelAppsPermissions = groupPermissions.appGroupPermission.filter( + (appPermissions) => appPermissions.read + ); + const updateLevelAppsPermissions = groupPermissions.appGroupPermission.filter( + (appPermissions) => appPermissions.update + ); + const createResourcePermissionObjView: CreateResourcePermissionObject = { + canView: true, + canEdit: false, + hideFromDashboard: false, + }; + await this.createAppLevelPermissions( + manager, + viewLevelAppsPermissions, + organizationId, + resource, + group, + createResourcePermissionObjView + ); + const createResourcePermissionObjEdit: CreateResourcePermissionObject = { + canView: false, + canEdit: true, + hideFromDashboard: false, + }; + await this.createAppLevelPermissions( + manager, + updateLevelAppsPermissions, + organizationId, + resource, + group, + createResourcePermissionObjEdit + ); + } + } + } + } + } + + getGroupName(name: string) { + switch (name) { + case USER_ROLE.BUILDER: + return `custom-${USER_ROLE.BUILDER}`; + case USER_ROLE.END_USER: + return `custom-${USER_ROLE.END_USER}`; + case 'all-users': + return `Custom All users`; + default: + name; + break; + } + } + + async createGranularPermission( + manager: EntityManager, + createObject: CreateGranularPermissionDto + ): Promise { + const query = ` + INSERT INTO granular_permissions ( + group_id, + name, + type, + is_all, + + ) VALUES ( + ${createObject.groupId} , ${createObject.name} , ${createObject.type},${createObject.isAll} + ) RETURNING *;`; + return await manager.query(query); + } + + //Add check custom_builder , custom_end-user, --> + // All users permissions.. + + async createAppsResourcePermission( + manager: EntityManager, + createMeta: ResourcePermissionMetaData, + createObject: CreateResourcePermissionObject + ): Promise { + const { granularPermissions } = createMeta; + const query = ` + INSERT INTO apps_group_permissions ( + granular_permission_id, + can_edit, + can_view, + hide_from_dashboard, + + ) VALUES ( + ${granularPermissions.id} , ${createObject.canEdit} , ${createObject.canView},${createObject.hideFromDashboard} + ) RETURNING *;`; + return await manager.query(query); + } + + async migrateUserGroup(manager: EntityManager, userIds: string[], groupId: string) { + const valuesString = `( ${userIds.map((id) => `(${id}, ${groupId} )`).join(',')} )`; + const query = `INSERT INTO group_users ( + user_id, + group_id + ) VALUES ${valuesString}`; + return await manager.query(query); + } + + async addAppsGroupToPermissions(manager: EntityManager, appIds: string[], appPermissionsId: string) { + const valuesString = `( ${appIds.map((id) => `(${id}, ${appPermissionsId} )`).join(',')} )`; + const query = `INSERT INTO group_apps ( + app_id, + apps_group_permissions_id + ) VALUES ${valuesString}`; + return await manager.query(query); + } + + async createAppLevelPermissions( + manager: EntityManager, + appsPermissions: AppGroupPermission[], + organizationId: string, + resource: ResourceType, + group: GroupPermissions, + createResourcePermissionObj: CreateResourcePermissionObject + ) { + const nameInit = createResourcePermissionObj.canView ? 'Viewable' : 'Updatable'; + if (appsPermissions.length === 0) return; + const dtoObject = { + name: `${nameInit} ${DEFAULT_GRANULAR_PERMISSIONS_NAME[resource]}`, + groupId: group.id, + type: resource as ResourceType, + isAll: false, + }; + const granularPermissions = await this.createGranularPermission(manager, dtoObject); + const appsGroupPermissions = await this.createAppsResourcePermission( + manager, + { granularPermissions, organizationId }, + createResourcePermissionObj + ); + await this.addAppsGroupToPermissions( + manager, + appsPermissions.map((record) => record.appId), + appsGroupPermissions.id + ); + } + + public async down(queryRunner: QueryRunner): Promise {} +} diff --git a/server/src/dto/granular-permissions.dto.ts b/server/src/dto/granular-permissions.dto.ts index 33e94ca1b2..f26f87c990 100644 --- a/server/src/dto/granular-permissions.dto.ts +++ b/server/src/dto/granular-permissions.dto.ts @@ -5,7 +5,6 @@ import { ResourceGroupActions, GranularPermissionAddResourceItems, GranularPermissionDeleteResourceItems, - CreateAppsPermissionsObject, } from '@module/user_resource_permissions/interface/granular-permissions.interface'; export class CreateGranularPermissionDto { @@ -26,9 +25,6 @@ export class CreateGranularPermissionDto { @IsNotEmpty() type: ResourceType; - @IsOptional() - createAppsPermissionsObject: CreateAppsPermissionsObject; - // @IsBoolean() // @IsOptional() // allowRoleChange: boolean; diff --git a/server/src/entities/group_permissions.entity.ts b/server/src/entities/group_permissions.entity.ts index acda50c18b..da48c62278 100644 --- a/server/src/entities/group_permissions.entity.ts +++ b/server/src/entities/group_permissions.entity.ts @@ -40,9 +40,6 @@ export class GroupPermissions extends BaseEntity { @Column({ name: 'org_constant_crud', default: false }) orgConstantCRUD: boolean; - @Column({ name: 'org_variable_crud', default: false }) - orgVariableCRUD: boolean; - //This should not be part of CE @Column({ name: 'data_source_create', default: false }) dataSourceCreate: boolean; diff --git a/server/src/modules/user_resource_permissions/constants/granular-permissions.constant.ts b/server/src/modules/user_resource_permissions/constants/granular-permissions.constant.ts index 71131f64a3..4e4ceedc67 100644 --- a/server/src/modules/user_resource_permissions/constants/granular-permissions.constant.ts +++ b/server/src/modules/user_resource_permissions/constants/granular-permissions.constant.ts @@ -22,7 +22,7 @@ export const DEFAULT_RESOURCE_PERMISSIONS = { [USER_ROLE.END_USER]: { [ResourceType.APP]: { canEdit: false, - canView: true, + canView: false, hideFromDashboard: false, }, }, diff --git a/server/src/modules/user_resource_permissions/constants/group-permissions.constant.ts b/server/src/modules/user_resource_permissions/constants/group-permissions.constant.ts index 0ab1e39477..2da158b39c 100644 --- a/server/src/modules/user_resource_permissions/constants/group-permissions.constant.ts +++ b/server/src/modules/user_resource_permissions/constants/group-permissions.constant.ts @@ -32,8 +32,6 @@ export const DEFAULT_GROUP_PERMISSIONS = { ADMIN: { name: USER_ROLE.ADMIN, type: GROUP_PERMISSIONS_TYPE.DEFAULT, - editable: false, - onlyBuilders: true, appCreate: true, appDelete: true, folderCRUD: true, @@ -45,8 +43,6 @@ export const DEFAULT_GROUP_PERMISSIONS = { BUILDER: { name: USER_ROLE.BUILDER, type: GROUP_PERMISSIONS_TYPE.DEFAULT, - editable: false, - onlyBuilders: true, appCreate: true, appDelete: true, folderCRUD: true, @@ -58,8 +54,6 @@ export const DEFAULT_GROUP_PERMISSIONS = { END_USER: { name: USER_ROLE.END_USER, type: GROUP_PERMISSIONS_TYPE.DEFAULT, - editable: true, - onlyBuilders: false, appCreate: false, appDelete: false, folderCRUD: false, diff --git a/server/src/modules/user_resource_permissions/interface/group-permissions.interface.ts b/server/src/modules/user_resource_permissions/interface/group-permissions.interface.ts index eaf769ddf8..827fd8d838 100644 --- a/server/src/modules/user_resource_permissions/interface/group-permissions.interface.ts +++ b/server/src/modules/user_resource_permissions/interface/group-permissions.interface.ts @@ -5,8 +5,6 @@ import { SearchParamItem } from '@helpers/db-utility/db-utility.interface'; export interface CreateDefaultGroupObject { type: GROUP_PERMISSIONS_TYPE; name: string; - editable: boolean; - onlyBuilders: boolean; appCreate: boolean; appDelete: boolean; folderCRUD: boolean; diff --git a/server/src/services/organizations.service.ts b/server/src/services/organizations.service.ts index ca3b37f8a3..5892bf3131 100644 --- a/server/src/services/organizations.service.ts +++ b/server/src/services/organizations.service.ts @@ -728,8 +728,6 @@ export class OrganizationsService { let isInvalidRole = false; const user = await this.usersService.findByEmail(data?.email, undefined, undefined, manager); - console.log(data); - console.log('loggin row'); if (user?.status === USER_STATUS.ARCHIVED) { archivedUsers.push(data?.email); @@ -764,9 +762,6 @@ export class OrganizationsService { }) .on('data', function () {}) .on('data-invalid', (row, rowNumber) => { - console.log('invalid row'); - console.log(row); - const invalidField = Object.keys(row).filter((key) => { if (Array.isArray(row[key])) { return row[key].length === 0; diff --git a/server/src/services/permissions-ability.service.ts b/server/src/services/permissions-ability.service.ts index 6e92e7988d..311a9ae33a 100644 --- a/server/src/services/permissions-ability.service.ts +++ b/server/src/services/permissions-ability.service.ts @@ -47,7 +47,7 @@ export class AbilityService { appDelete: acc.appDelete || group.appDelete, folderCRUD: acc.folderCRUD || group.folderCRUD, orgConstantCRUD: acc.folderCRUD || group.folderCRUD, - orgVariableCRUD: acc.orgVariableCRUD || group.orgVariableCRUD, + orgVariableCRUD: acc.orgVariableCRUD, }; }, DEFAULT_USER_PERMISSIONS); const { resources } = resourcePermissionsObject; diff --git a/server/src/services/user-role.service.ts b/server/src/services/user-role.service.ts index a2de5c8b5e..7260cc888a 100644 --- a/server/src/services/user-role.service.ts +++ b/server/src/services/user-role.service.ts @@ -54,7 +54,6 @@ export class UserRoleService { groupId: group.id, type: resource as ResourceType, isAll: true, - createAppsPermissionsObject: {}, }; await this.granularPermissionsService.create( { From 36b5f09c5523f74ab4ff099b302b58e8f862e92f Mon Sep 17 00:00:00 2001 From: kriks7iitk Date: Tue, 9 Jul 2024 11:34:19 +0530 Subject: [PATCH 040/190] Fixed mihrations --- ...0-CreateDefaultGroupInExistingWorkspace.ts | 109 ++++++++++-------- ...sersToRespectiveRolesBuilderAndEndUsers.ts | 43 ++++--- ...737529-MigrateCustomGroupToNewUserGroup.ts | 45 ++++---- server/src/dto/granular-permissions.dto.ts | 4 + server/src/services/user-role.service.ts | 1 + 5 files changed, 118 insertions(+), 84 deletions(-) diff --git a/server/migrations/1720352990850-CreateDefaultGroupInExistingWorkspace.ts b/server/migrations/1720352990850-CreateDefaultGroupInExistingWorkspace.ts index b204b46aeb..dfb1e57def 100644 --- a/server/migrations/1720352990850-CreateDefaultGroupInExistingWorkspace.ts +++ b/server/migrations/1720352990850-CreateDefaultGroupInExistingWorkspace.ts @@ -22,31 +22,42 @@ import { EntityManager, MigrationInterface, QueryRunner } from 'typeorm'; export class CreateDefaultGroupInExistingWorkspace1720352990850 implements MigrationInterface { public async up(queryRunner: QueryRunner): Promise { const manager = queryRunner.manager; - const organizationIds = await manager.find(Organization, { - select: ['id'], - }); - for (const organizationId in organizationIds) { + const organizationIds = ( + await manager.find(Organization, { + select: ['id'], + }) + ).map((organization) => organization.id); + + for (const organizationId of organizationIds) { for (const defaultGroup of Object.keys(USER_ROLE)) { const groupPermissions = DEFAULT_GROUP_PERMISSIONS[defaultGroup]; const query = ` - INSERT INTO permission_groups ( - organization_id, - name, - type, - app_create, - app_delete, - folder_crud, - org_constant_crud, - data_source_create, - data_source_delete, - - ) VALUES ( - ${organizationId} , ${groupPermissions.name} , ${groupPermissions.type},${groupPermissions.appCreate}, ${groupPermissions.appDelete} - , ${groupPermissions.folderCRUD}, ${groupPermissions.orgConstantCRUD}, ${groupPermissions.dataSourceCreate}, ${groupPermissions.dataSourceDelete} - ) RETURNING *;`; - const group: GroupPermissions = await manager.query(query); + INSERT INTO permission_groups ( + organization_id, + name, + type, + app_create, + app_delete, + folder_crud, + org_constant_crud, + data_source_create, + data_source_delete + ) VALUES ( + '${organizationId}', + '${groupPermissions.name}', + '${groupPermissions.type}', + ${groupPermissions.appCreate}, + ${groupPermissions.appDelete}, + ${groupPermissions.folderCRUD}, + ${groupPermissions.orgConstantCRUD}, + ${groupPermissions.dataSourceCreate}, + ${groupPermissions.dataSourceDelete} + ) RETURNING *; + `; + const group: GroupPermissions = (await manager.query(query))[0]; const groupGranularPermissions: Record = DEFAULT_RESOURCE_PERMISSIONS[group.name]; + for (const resource of Object.keys(groupGranularPermissions)) { const createResourcePermissionObj: CreateResourcePermissionObject = groupGranularPermissions[resource]; const dtoObject = { @@ -54,6 +65,7 @@ export class CreateDefaultGroupInExistingWorkspace1720352990850 implements Migra groupId: group.id, type: resource as ResourceType, isAll: true, + createAppsPermissionsObject: {}, }; const granularPermissions = await this.createGranularPermission(manager, dtoObject); await this.createAppsResourcePermission( @@ -67,14 +79,14 @@ export class CreateDefaultGroupInExistingWorkspace1720352990850 implements Migra const adminsUsers = await manager .createQueryBuilder(UserGroupPermission, 'usersGroup') .innerJoin( - 'userGroup.groupPermission', + 'usersGroup.groupPermission', 'groupPermission', - 'groupPermission.organizationId := organizationId', + 'groupPermission.organizationId = :organizationId', { organizationId, } ) - .where('groupPermission.group := admin', { + .where('groupPermission.group = :admin', { admin: 'admin', }) .getMany(); @@ -90,16 +102,16 @@ export class CreateDefaultGroupInExistingWorkspace1720352990850 implements Migra createObject: CreateGranularPermissionDto ): Promise { const query = ` - INSERT INTO granular_permissions ( - group_id, - name, - type, - is_all, - - ) VALUES ( - ${createObject.groupId} , ${createObject.name} , ${createObject.type},${createObject.isAll} - ) RETURNING *;`; - return await manager.query(query); + INSERT INTO granular_permissions ( + group_id, + name, + type, + is_all + ) VALUES ( + '${createObject.groupId}', '${createObject.name}', '${createObject.type}', ${createObject.isAll} + ) RETURNING *; + `; + return (await manager.query(query))[0]; } async createAppsResourcePermission( @@ -109,24 +121,25 @@ export class CreateDefaultGroupInExistingWorkspace1720352990850 implements Migra ): Promise { const { granularPermissions } = createMeta; const query = ` - INSERT INTO apps_group_permissions ( - granular_permission_id, - can_edit, - can_view, - hide_from_dashboard, - - ) VALUES ( - ${granularPermissions.id} , ${createObject.canEdit} , ${createObject.canView},${createObject.hideFromDashboard} - ) RETURNING *;`; - return await manager.query(query); + INSERT INTO apps_group_permissions ( + granular_permission_id, + can_edit, + can_view, + hide_from_dashboard + ) VALUES ( + '${granularPermissions.id}', ${createObject.canEdit}, ${createObject.canView}, ${createObject.hideFromDashboard} + ) RETURNING *; + `; + return (await manager.query(query))[0]; } async migrateUserGroup(manager: EntityManager, userIds: string[], groupId: string) { - const valuesString = `( ${userIds.map((id) => `(${id}, ${groupId} )`).join(',')} )`; - const query = `INSERT INTO group_users ( - user_id, - group_id - ) VALUES ${valuesString}`; + if (userIds.length == 0) return; + const valuesString = userIds.map((id) => `('${id}', '${groupId}')`).join(','); + const query = ` + INSERT INTO group_users (user_id, group_id) + VALUES ${valuesString}; + `; return await manager.query(query); } diff --git a/server/migrations/1720365772516-AddingUsersToRespectiveRolesBuilderAndEndUsers.ts b/server/migrations/1720365772516-AddingUsersToRespectiveRolesBuilderAndEndUsers.ts index 874cc3cd72..25463d3ca7 100644 --- a/server/migrations/1720365772516-AddingUsersToRespectiveRolesBuilderAndEndUsers.ts +++ b/server/migrations/1720365772516-AddingUsersToRespectiveRolesBuilderAndEndUsers.ts @@ -25,9 +25,14 @@ export class AddingUsersToRespectiveRolesBuilderAndEndUsers1720365772516 impleme const userIdsWithEditPermissions = ( await manager .createQueryBuilder(User, 'users') - .innerJoin('users.organizationUsers', 'organization_users', 'organization_users.organizationId := ', { - organizationId, - }) + .innerJoin( + 'users.organizationUsers', + 'organization_users', + 'organization_users.organizationId = :organizationId ', + { + organizationId, + } + ) .innerJoin( 'users.groupPermissions', 'group_permissions', @@ -49,9 +54,14 @@ export class AddingUsersToRespectiveRolesBuilderAndEndUsers1720365772516 impleme const userIdsOfAppOwners = ( await manager .createQueryBuilder(User, 'users') - .innerJoin('users.organizationUsers', 'organization_users', 'organization_users.organizationId := ', { - organizationId, - }) + .innerJoin( + 'users.organizationUsers', + 'organization_users', + 'organization_users.organizationId = :organizationId', + { + organizationId, + } + ) .innerJoin('users.apps', 'apps') .select('users.id') .distinct() @@ -62,14 +72,14 @@ export class AddingUsersToRespectiveRolesBuilderAndEndUsers1720365772516 impleme await manager .createQueryBuilder(UserGroupPermission, 'usersGroup') .innerJoin( - 'userGroup.groupPermission', + 'usersGroup.groupPermission', 'groupPermission', - 'groupPermission.organizationId := organizationId', + 'groupPermission.organizationId = :organizationId', { organizationId, } ) - .where('groupPermission.name := admin', { + .where('groupPermission.group = :admin', { admin: 'admin', }) .getMany() @@ -82,6 +92,10 @@ export class AddingUsersToRespectiveRolesBuilderAndEndUsers1720365772516 impleme const endUserGroup = await manager.findOne(GroupPermissions, { where: { name: USER_ROLE.END_USER, type: GROUP_PERMISSIONS_TYPE.DEFAULT, organizationId: organizationId }, }); + + console.log('Builders users'); + console.log(builderUsersWoAdmin); + await this.migrateUserGroup(manager, builderUsersWoAdmin, builderGroup.id); const organizationUser = ( await manager.find(OrganizationUser, { @@ -97,11 +111,12 @@ export class AddingUsersToRespectiveRolesBuilderAndEndUsers1720365772516 impleme } async migrateUserGroup(manager: EntityManager, userIds: string[], groupId: string) { - const valuesString = `( ${userIds.map((id) => `(${id}, ${groupId} )`).join(',')} )`; - const query = `INSERT INTO group_users ( - user_id, - group_id - ) VALUES ${valuesString}`; + if (userIds.length === 0) return; + const valuesString = userIds.map((id) => `('${id}', '${groupId}')`).join(','); + const query = ` + INSERT INTO group_users (user_id, group_id) + VALUES ${valuesString}; + `; return await manager.query(query); } diff --git a/server/migrations/1720434737529-MigrateCustomGroupToNewUserGroup.ts b/server/migrations/1720434737529-MigrateCustomGroupToNewUserGroup.ts index 21fa7cc45c..bd76418d12 100644 --- a/server/migrations/1720434737529-MigrateCustomGroupToNewUserGroup.ts +++ b/server/migrations/1720434737529-MigrateCustomGroupToNewUserGroup.ts @@ -30,12 +30,12 @@ export class MigrateCustomGroupToNewUserGroup1720434737529 implements MigrationI for (const organizationId of organizationIds) { const groups = await manager .createQueryBuilder(GroupPermission, 'groupPermission') - .where('groupPermission.organizationId := organizationId', { + .where('groupPermission.organizationId = :organizationId', { organizationId, }) .innerJoinAndSelect('groupPermission.appGroupPermission', 'appGroupPermission') .innerJoinAndSelect('groupPermission.userGroupPermission', 'userGroupPermission') - .andWhere('groupPermission.group != admin', { + .andWhere('groupPermission.group != :admin', { admin: 'admin', }) .getMany(); @@ -56,7 +56,7 @@ export class MigrateCustomGroupToNewUserGroup1720434737529 implements MigrationI ${organizationId} , ${groupPermissions.group} , ${GROUP_PERMISSIONS_TYPE.CUSTOM_GROUP},${groupPermissions.appCreate}, ${groupPermissions.appDelete} , ${groupPermissions.folderCreate}, ${groupPermissions.orgEnvironmentConstantCreate}, false , false ) RETURNING *;`; - const group: GroupPermissions = await manager.query(query); + const group: GroupPermissions = (await manager.query(query))[0]; const existingGroupUsers = groupPermissions.userGroupPermission; await this.migrateUserGroup( manager, @@ -132,12 +132,9 @@ export class MigrateCustomGroupToNewUserGroup1720434737529 implements MigrationI ) VALUES ( ${createObject.groupId} , ${createObject.name} , ${createObject.type},${createObject.isAll} ) RETURNING *;`; - return await manager.query(query); + return (await manager.query(query))[0]; } - //Add check custom_builder , custom_end-user, --> - // All users permissions.. - async createAppsResourcePermission( manager: EntityManager, createMeta: ResourcePermissionMetaData, @@ -145,16 +142,19 @@ export class MigrateCustomGroupToNewUserGroup1720434737529 implements MigrationI ): Promise { const { granularPermissions } = createMeta; const query = ` - INSERT INTO apps_group_permissions ( - granular_permission_id, - can_edit, - can_view, - hide_from_dashboard, - - ) VALUES ( - ${granularPermissions.id} , ${createObject.canEdit} , ${createObject.canView},${createObject.hideFromDashboard} - ) RETURNING *;`; - return await manager.query(query); + INSERT INTO apps_group_permissions ( + granular_permission_id, + can_edit, + can_view, + hide_from_dashboard + ) VALUES ( + ${granularPermissions.id}, + ${createObject.canEdit}, + ${createObject.canView}, + ${createObject.hideFromDashboard} + ) RETURNING *; + `; + return (await manager.query(query))[0]; } async migrateUserGroup(manager: EntityManager, userIds: string[], groupId: string) { @@ -167,11 +167,11 @@ export class MigrateCustomGroupToNewUserGroup1720434737529 implements MigrationI } async addAppsGroupToPermissions(manager: EntityManager, appIds: string[], appPermissionsId: string) { - const valuesString = `( ${appIds.map((id) => `(${id}, ${appPermissionsId} )`).join(',')} )`; - const query = `INSERT INTO group_apps ( - app_id, - apps_group_permissions_id - ) VALUES ${valuesString}`; + const valuesString = appIds.map((id) => `('${id}', '${appPermissionsId}')`).join(','); + const query = ` + INSERT INTO group_apps (app_id, apps_group_permissions_id) + VALUES ${valuesString}; + `; return await manager.query(query); } @@ -190,6 +190,7 @@ export class MigrateCustomGroupToNewUserGroup1720434737529 implements MigrationI groupId: group.id, type: resource as ResourceType, isAll: false, + createAppsPermissionsObject: {}, }; const granularPermissions = await this.createGranularPermission(manager, dtoObject); const appsGroupPermissions = await this.createAppsResourcePermission( diff --git a/server/src/dto/granular-permissions.dto.ts b/server/src/dto/granular-permissions.dto.ts index f26f87c990..33e94ca1b2 100644 --- a/server/src/dto/granular-permissions.dto.ts +++ b/server/src/dto/granular-permissions.dto.ts @@ -5,6 +5,7 @@ import { ResourceGroupActions, GranularPermissionAddResourceItems, GranularPermissionDeleteResourceItems, + CreateAppsPermissionsObject, } from '@module/user_resource_permissions/interface/granular-permissions.interface'; export class CreateGranularPermissionDto { @@ -25,6 +26,9 @@ export class CreateGranularPermissionDto { @IsNotEmpty() type: ResourceType; + @IsOptional() + createAppsPermissionsObject: CreateAppsPermissionsObject; + // @IsBoolean() // @IsOptional() // allowRoleChange: boolean; diff --git a/server/src/services/user-role.service.ts b/server/src/services/user-role.service.ts index 7260cc888a..a2de5c8b5e 100644 --- a/server/src/services/user-role.service.ts +++ b/server/src/services/user-role.service.ts @@ -54,6 +54,7 @@ export class UserRoleService { groupId: group.id, type: resource as ResourceType, isAll: true, + createAppsPermissionsObject: {}, }; await this.granularPermissionsService.create( { From a95253153bfcbedeb4f420e204e9df577d954d78 Mon Sep 17 00:00:00 2001 From: kriks7iitk Date: Tue, 9 Jul 2024 12:24:42 +0530 Subject: [PATCH 041/190] fixed design issue --- frontend/src/ManageGranularAccess/index.jsx | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/src/ManageGranularAccess/index.jsx b/frontend/src/ManageGranularAccess/index.jsx index 40f42dd527..dd0badf373 100644 --- a/frontend/src/ManageGranularAccess/index.jsx +++ b/frontend/src/ManageGranularAccess/index.jsx @@ -252,6 +252,7 @@ class ManageGranularAccessComponent extends React.Component { .catch(({ error }) => { if (error?.type) { this.setState({ + showEditRoleErrorModal: false, showAutoRoleChangeModal: true, autoRoleChangeModalMessage: error?.error, autoRoleChangeModalList: error?.data, From 2bc01dfc55eb71679ed2c246129d3c10db5bb666 Mon Sep 17 00:00:00 2001 From: kriks7iitk Date: Tue, 9 Jul 2024 12:57:45 +0530 Subject: [PATCH 042/190] Migration fix for custom groups --- ...0-CreateDefaultGroupInExistingWorkspace.ts | 18 +++++----- ...737529-MigrateCustomGroupToNewUserGroup.ts | 6 ++-- .../granular-permissions.constant.ts | 2 +- .../constants/group-permissions.constant.ts | 36 +++++++++++++++++++ 4 files changed, 50 insertions(+), 12 deletions(-) diff --git a/server/migrations/1720352990850-CreateDefaultGroupInExistingWorkspace.ts b/server/migrations/1720352990850-CreateDefaultGroupInExistingWorkspace.ts index dfb1e57def..01624e6946 100644 --- a/server/migrations/1720352990850-CreateDefaultGroupInExistingWorkspace.ts +++ b/server/migrations/1720352990850-CreateDefaultGroupInExistingWorkspace.ts @@ -6,7 +6,7 @@ import { } from '@module/user_resource_permissions/constants/granular-permissions.constant'; import { USER_ROLE, - DEFAULT_GROUP_PERMISSIONS, + DEFAULT_GROUP_PERMISSIONS_MIGRATIONS, } from '@module/user_resource_permissions/constants/group-permissions.constant'; import { CreateResourcePermissionObject, @@ -30,7 +30,7 @@ export class CreateDefaultGroupInExistingWorkspace1720352990850 implements Migra for (const organizationId of organizationIds) { for (const defaultGroup of Object.keys(USER_ROLE)) { - const groupPermissions = DEFAULT_GROUP_PERMISSIONS[defaultGroup]; + const groupPermissions = DEFAULT_GROUP_PERMISSIONS_MIGRATIONS[defaultGroup]; const query = ` INSERT INTO permission_groups ( organization_id, @@ -67,12 +67,14 @@ export class CreateDefaultGroupInExistingWorkspace1720352990850 implements Migra isAll: true, createAppsPermissionsObject: {}, }; - const granularPermissions = await this.createGranularPermission(manager, dtoObject); - await this.createAppsResourcePermission( - manager, - { granularPermissions, organizationId }, - createResourcePermissionObj - ); + if (group.name === USER_ROLE.ADMIN) { + const granularPermissions = await this.createGranularPermission(manager, dtoObject); + await this.createAppsResourcePermission( + manager, + { granularPermissions, organizationId }, + createResourcePermissionObj + ); + } } //Migrating Admins to new Admins if (group.name === USER_ROLE.ADMIN) { diff --git a/server/migrations/1720434737529-MigrateCustomGroupToNewUserGroup.ts b/server/migrations/1720434737529-MigrateCustomGroupToNewUserGroup.ts index bd76418d12..ddb94041a6 100644 --- a/server/migrations/1720434737529-MigrateCustomGroupToNewUserGroup.ts +++ b/server/migrations/1720434737529-MigrateCustomGroupToNewUserGroup.ts @@ -33,12 +33,13 @@ export class MigrateCustomGroupToNewUserGroup1720434737529 implements MigrationI .where('groupPermission.organizationId = :organizationId', { organizationId, }) - .innerJoinAndSelect('groupPermission.appGroupPermission', 'appGroupPermission') - .innerJoinAndSelect('groupPermission.userGroupPermission', 'userGroupPermission') + .leftJoinAndSelect('groupPermission.appGroupPermission', 'appGroupPermission') + .leftJoinAndSelect('groupPermission.userGroupPermission', 'userGroupPermission') .andWhere('groupPermission.group != :admin', { admin: 'admin', }) .getMany(); + for (const groupPermissions of groups) { const query = ` INSERT INTO permission_groups ( @@ -51,7 +52,6 @@ export class MigrateCustomGroupToNewUserGroup1720434737529 implements MigrationI org_constant_crud, data_source_create, data_source_delete, - ) VALUES ( ${organizationId} , ${groupPermissions.group} , ${GROUP_PERMISSIONS_TYPE.CUSTOM_GROUP},${groupPermissions.appCreate}, ${groupPermissions.appDelete} , ${groupPermissions.folderCreate}, ${groupPermissions.orgEnvironmentConstantCreate}, false , false diff --git a/server/src/modules/user_resource_permissions/constants/granular-permissions.constant.ts b/server/src/modules/user_resource_permissions/constants/granular-permissions.constant.ts index 4e4ceedc67..71131f64a3 100644 --- a/server/src/modules/user_resource_permissions/constants/granular-permissions.constant.ts +++ b/server/src/modules/user_resource_permissions/constants/granular-permissions.constant.ts @@ -22,7 +22,7 @@ export const DEFAULT_RESOURCE_PERMISSIONS = { [USER_ROLE.END_USER]: { [ResourceType.APP]: { canEdit: false, - canView: false, + canView: true, hideFromDashboard: false, }, }, diff --git a/server/src/modules/user_resource_permissions/constants/group-permissions.constant.ts b/server/src/modules/user_resource_permissions/constants/group-permissions.constant.ts index 2da158b39c..ed49016164 100644 --- a/server/src/modules/user_resource_permissions/constants/group-permissions.constant.ts +++ b/server/src/modules/user_resource_permissions/constants/group-permissions.constant.ts @@ -64,6 +64,42 @@ export const DEFAULT_GROUP_PERMISSIONS = { }, } as Record; +export const DEFAULT_GROUP_PERMISSIONS_MIGRATIONS = { + ADMIN: { + name: USER_ROLE.ADMIN, + type: GROUP_PERMISSIONS_TYPE.DEFAULT, + appCreate: true, + appDelete: true, + folderCRUD: true, + orgConstantCRUD: true, + dataSourceCreate: true, + dataSourceDelete: true, + isBuilderLevel: true, + }, + BUILDER: { + name: USER_ROLE.BUILDER, + type: GROUP_PERMISSIONS_TYPE.DEFAULT, + appCreate: false, + appDelete: false, + folderCRUD: false, + orgConstantCRUD: false, + dataSourceCreate: false, + dataSourceDelete: false, + isBuilderLevel: false, + }, + END_USER: { + name: USER_ROLE.END_USER, + type: GROUP_PERMISSIONS_TYPE.DEFAULT, + appCreate: false, + appDelete: false, + folderCRUD: false, + orgConstantCRUD: false, + dataSourceCreate: false, + dataSourceDelete: false, + isBuilderLevel: false, + }, +} as Record; + export const ERROR_HANDLER = { GROUP_NOT_EXIST: "Group doesn't exist", DEFAULT_GROUP_NAME: 'Name cannot be same as user default group', From fa203bbf2d93b92305fbf886710b636474d9e403 Mon Sep 17 00:00:00 2001 From: kriks7iitk Date: Tue, 9 Jul 2024 13:52:10 +0530 Subject: [PATCH 043/190] Migration developer testing --- ...737529-MigrateCustomGroupToNewUserGroup.ts | 58 ++++++++++--------- ...-DropGroupPermissionsOlderRelatedTables.ts | 9 +++ 2 files changed, 40 insertions(+), 27 deletions(-) create mode 100644 server/migrations/1720513124281-DropGroupPermissionsOlderRelatedTables.ts diff --git a/server/migrations/1720434737529-MigrateCustomGroupToNewUserGroup.ts b/server/migrations/1720434737529-MigrateCustomGroupToNewUserGroup.ts index ddb94041a6..8cc12e70d9 100644 --- a/server/migrations/1720434737529-MigrateCustomGroupToNewUserGroup.ts +++ b/server/migrations/1720434737529-MigrateCustomGroupToNewUserGroup.ts @@ -42,27 +42,31 @@ export class MigrateCustomGroupToNewUserGroup1720434737529 implements MigrationI for (const groupPermissions of groups) { const query = ` - INSERT INTO permission_groups ( - organization_id, - name, - type, - app_create, - app_delete, - folder_crud, - org_constant_crud, - data_source_create, - data_source_delete, - ) VALUES ( - ${organizationId} , ${groupPermissions.group} , ${GROUP_PERMISSIONS_TYPE.CUSTOM_GROUP},${groupPermissions.appCreate}, ${groupPermissions.appDelete} - , ${groupPermissions.folderCreate}, ${groupPermissions.orgEnvironmentConstantCreate}, false , false - ) RETURNING *;`; + INSERT INTO permission_groups ( + organization_id, + name, + type, + app_create, + app_delete, + folder_crud, + org_constant_crud, + data_source_create, + data_source_delete + ) VALUES ( + '${organizationId}', + '${this.getGroupName(groupPermissions.group)}', + '${GROUP_PERMISSIONS_TYPE.CUSTOM_GROUP}', + ${groupPermissions.appCreate}, + ${groupPermissions.appDelete}, + ${groupPermissions.folderCreate}, + ${groupPermissions.orgEnvironmentConstantCreate}, + false, + false + ) RETURNING *; + `; const group: GroupPermissions = (await manager.query(query))[0]; const existingGroupUsers = groupPermissions.userGroupPermission; - await this.migrateUserGroup( - manager, - existingGroupUsers.map((record) => record.userId), - groupPermissions.id - ); + await this.migrateUserGroup(manager, [...new Set(existingGroupUsers.map((record) => record.userId))], group.id); const resources = [ResourceType.APP]; for (const resource of resources) { if (resource === ResourceType.APP) { @@ -110,11 +114,10 @@ export class MigrateCustomGroupToNewUserGroup1720434737529 implements MigrationI return `custom-${USER_ROLE.BUILDER}`; case USER_ROLE.END_USER: return `custom-${USER_ROLE.END_USER}`; - case 'all-users': + case 'all_users': return `Custom All users`; default: - name; - break; + return name; } } @@ -158,11 +161,12 @@ export class MigrateCustomGroupToNewUserGroup1720434737529 implements MigrationI } async migrateUserGroup(manager: EntityManager, userIds: string[], groupId: string) { - const valuesString = `( ${userIds.map((id) => `(${id}, ${groupId} )`).join(',')} )`; - const query = `INSERT INTO group_users ( - user_id, - group_id - ) VALUES ${valuesString}`; + if (userIds.length == 0) return; + const valuesString = userIds.map((id) => `('${id}', '${groupId}')`).join(','); + const query = ` + INSERT INTO group_users (user_id, group_id) + VALUES ${valuesString}; + `; return await manager.query(query); } diff --git a/server/migrations/1720513124281-DropGroupPermissionsOlderRelatedTables.ts b/server/migrations/1720513124281-DropGroupPermissionsOlderRelatedTables.ts new file mode 100644 index 0000000000..8a47a54d64 --- /dev/null +++ b/server/migrations/1720513124281-DropGroupPermissionsOlderRelatedTables.ts @@ -0,0 +1,9 @@ +import { MigrationInterface, QueryRunner } from 'typeorm'; + +export class DropGroupPermissionsOlderRelatedTables1720513124281 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + queryRunner.query('DROP TABLE group_permissions, user_group_permissions, app_group_permissions CASCADE;'); + } + + public async down(queryRunner: QueryRunner): Promise {} +} From d8fbf7ce5e2021fd74267c2932c42ef7ea7a63dc Mon Sep 17 00:00:00 2001 From: kriks7iitk Date: Tue, 9 Jul 2024 14:29:54 +0530 Subject: [PATCH 044/190] Removed depreciated code --- server/src/controllers/apps.controller.ts | 3 +- .../group_permissions.controller.ts | 119 ---- server/src/helpers/queries.ts | 47 +- server/src/modules/apps/apps.module.ts | 7 - server/src/modules/auth/auth.module.ts | 12 - .../data_queries/data_queries.module.ts | 5 - .../data_sources/data_sources.module.ts | 5 - .../group_permissions.module.ts | 37 -- .../org_environment_variables.module.ts | 4 - .../organization_constants.module.ts | 6 - .../organizations/organizations.module.ts | 9 - .../src/services/app_import_export.service.ts | 29 - server/src/services/apps.service.ts | 43 -- .../src/services/group_permissions.service.ts | 516 ------------------ .../services/organization_users.service.ts | 16 - 15 files changed, 3 insertions(+), 855 deletions(-) delete mode 100644 server/src/controllers/group_permissions.controller.ts delete mode 100644 server/src/modules/group_permissions/group_permissions.module.ts delete mode 100644 server/src/services/group_permissions.service.ts diff --git a/server/src/controllers/apps.controller.ts b/server/src/controllers/apps.controller.ts index b2d550a12b..a4a359f7ff 100644 --- a/server/src/controllers/apps.controller.ts +++ b/server/src/controllers/apps.controller.ts @@ -54,11 +54,12 @@ export class AppsController { return await dbTransactionWrap(async (manager: EntityManager) => { const app = await this.appsService.create(name, user, manager); - + console.log('okay till here'); const appUpdateDto = new AppUpdateDto(); appUpdateDto.name = name; appUpdateDto.slug = app.id; appUpdateDto.icon = icon; + await this.appsService.update(app.id, appUpdateDto, manager); return decamelizeKeys(app); diff --git a/server/src/controllers/group_permissions.controller.ts b/server/src/controllers/group_permissions.controller.ts deleted file mode 100644 index fde315b30c..0000000000 --- a/server/src/controllers/group_permissions.controller.ts +++ /dev/null @@ -1,119 +0,0 @@ -import { Controller, Body, Post, Get, Put, Delete, UseGuards, Param, Query } from '@nestjs/common'; -import { decamelizeKeys } from 'humps'; -import { JwtAuthGuard } from '../../src/modules/auth/jwt-auth.guard'; -import { GroupPermissionsService } from '../services/group_permissions.service'; -import { PoliciesGuard } from 'src/modules/casl/policies.guard'; -import { CheckPolicies } from 'src/modules/casl/check_policies.decorator'; -import { AppAbility } from 'src/modules/casl/casl-ability.factory'; -import { User } from 'src/decorators/user.decorator'; -import { User as UserEntity } from 'src/entities/user.entity'; -import { CreateGroupPermissionDto, UpdateGroupPermissionDto, DuplucateGroupDto } from '@dto/group-permission.dto'; -import { ORGANIZATION_RESOURCE_ACTIONS } from 'src/constants/global.constant'; - -@Controller('group_permissions') -export class GroupPermissionsController { - constructor(private groupPermissionsService: GroupPermissionsService) {} - - @UseGuards(JwtAuthGuard, PoliciesGuard) - @CheckPolicies((ability: AppAbility) => ability.can(ORGANIZATION_RESOURCE_ACTIONS.ACCESS_PERMISSIONS, UserEntity)) - @Post() - async create(@User() user, @Body() createGroupPermissionDto: CreateGroupPermissionDto) { - await this.groupPermissionsService.create(user, createGroupPermissionDto.group); - return; - } - - @UseGuards(JwtAuthGuard, PoliciesGuard) - @CheckPolicies((ability: AppAbility) => ability.can(ORGANIZATION_RESOURCE_ACTIONS.ACCESS_PERMISSIONS, UserEntity)) - @Post(':id/duplicate') - async duplicate(@User() user, @Param('id') id: string, @Body() body: DuplucateGroupDto) { - const duplicateGroup = await this.groupPermissionsService.duplicateGroup(user, id, body); - return duplicateGroup; - } - - @UseGuards(JwtAuthGuard, PoliciesGuard) - @CheckPolicies((ability: AppAbility) => ability.can(ORGANIZATION_RESOURCE_ACTIONS.ACCESS_PERMISSIONS, UserEntity)) - @Get(':id') - async show(@User() user, @Param('id') id: string) { - const groupPermission = await this.groupPermissionsService.findOne(user, id); - - return decamelizeKeys(groupPermission); - } - - @UseGuards(JwtAuthGuard, PoliciesGuard) - @CheckPolicies((ability: AppAbility) => ability.can(ORGANIZATION_RESOURCE_ACTIONS.ACCESS_PERMISSIONS, UserEntity)) - @Put(':id/app_group_permissions/:appGroupPermissionId') - async updateAppGroupPermission( - @Body() updateGroupPermissionDto: UpdateGroupPermissionDto, - @User() user, - @Param('id') id: string, - @Param('appGroupPermissionId') appGroupPermissionId: string - ) { - await this.groupPermissionsService.updateAppGroupPermission( - user, - id, - appGroupPermissionId, - updateGroupPermissionDto.actions - ); - return; - } - - @UseGuards(JwtAuthGuard, PoliciesGuard) - @CheckPolicies((ability: AppAbility) => ability.can(ORGANIZATION_RESOURCE_ACTIONS.ACCESS_PERMISSIONS, UserEntity)) - @Put(':id') - async update(@User() user, @Param('id') id, @Body() body) { - await this.groupPermissionsService.update(user, id, body); - } - - @UseGuards(JwtAuthGuard, PoliciesGuard) - @CheckPolicies((ability: AppAbility) => ability.can(ORGANIZATION_RESOURCE_ACTIONS.ACCESS_PERMISSIONS, UserEntity)) - @Get() - async index(@User() user) { - const groupPermissions = await this.groupPermissionsService.findAll(user); - - return decamelizeKeys({ groupPermissions }); - } - - @UseGuards(JwtAuthGuard, PoliciesGuard) - @CheckPolicies((ability: AppAbility) => ability.can(ORGANIZATION_RESOURCE_ACTIONS.ACCESS_PERMISSIONS, UserEntity)) - @Delete(':id') - async destroy(@User() user, @Param('id') id) { - await this.groupPermissionsService.destroy(user, id); - return; - } - - @UseGuards(JwtAuthGuard, PoliciesGuard) - @CheckPolicies((ability: AppAbility) => ability.can(ORGANIZATION_RESOURCE_ACTIONS.ACCESS_PERMISSIONS, UserEntity)) - @Get(':id/apps') - async apps(@User() user, @Param('id') id) { - const apps = await this.groupPermissionsService.findApps(user, id); - - return decamelizeKeys({ apps }); - } - - @UseGuards(JwtAuthGuard, PoliciesGuard) - @CheckPolicies((ability: AppAbility) => ability.can(ORGANIZATION_RESOURCE_ACTIONS.ACCESS_PERMISSIONS, UserEntity)) - @Get(':id/addable_apps') - async addableApps(@User() user, @Param('id') id) { - const apps = await this.groupPermissionsService.findAddableApps(user, id); - - return decamelizeKeys({ apps }); - } - - @UseGuards(JwtAuthGuard, PoliciesGuard) - @CheckPolicies((ability: AppAbility) => ability.can(ORGANIZATION_RESOURCE_ACTIONS.ACCESS_PERMISSIONS, UserEntity)) - @Get(':id/users') - async users(@User() user, @Param('id') id) { - const users = await this.groupPermissionsService.findUsers(user, id); - - return decamelizeKeys({ users }); - } - - @UseGuards(JwtAuthGuard, PoliciesGuard) - @CheckPolicies((ability: AppAbility) => ability.can(ORGANIZATION_RESOURCE_ACTIONS.ACCESS_PERMISSIONS, UserEntity)) - @Get(':id/addable_users') - async addableUsers(@User() user, @Param('id') id, @Query('input') searchInput: string) { - const users = await this.groupPermissionsService.findAddableUsers(user, id, searchInput.trim()); - - return decamelizeKeys({ users }); - } -} diff --git a/server/src/helpers/queries.ts b/server/src/helpers/queries.ts index 9736812df0..fd971c5fa1 100644 --- a/server/src/helpers/queries.ts +++ b/server/src/helpers/queries.ts @@ -2,52 +2,7 @@ import { UserAppsPermissions } from '@module/permissions/interface/permissions-a import { AppBase } from 'src/entities/app_base.entity'; import { Folder } from 'src/entities/folder.entity'; import { User } from 'src/entities/user.entity'; -import { UserGroupPermission } from 'src/entities/user_group_permission.entity'; -import { Brackets, createQueryBuilder, EntityManager, SelectQueryBuilder } from 'typeorm'; - -//Need to change this based on new group permissions -export function viewableAppsQuery(user: User, searchKey?: string, select?: Array): SelectQueryBuilder { - const viewableAppsQb = createQueryBuilder(AppBase, 'viewable_apps'); - - if (select) { - viewableAppsQb.select(select.map((col) => `viewable_apps.${col}`)); - } - viewableAppsQb - .innerJoin('viewable_apps.user', 'user') - .addSelect(['user.firstName', 'user.lastName']) - .innerJoin('viewable_apps.groupPermissions', 'group_permissions') - .innerJoinAndSelect('viewable_apps.appGroupPermissions', 'app_group_permissions') - .innerJoin( - UserGroupPermission, - 'user_group_permissions', - 'app_group_permissions.group_permission_id = user_group_permissions.group_permission_id' - ) - .where( - new Brackets((qb) => { - qb.where('user_group_permissions.user_id = :userId', { - userId: user.id, - }) - .andWhere('app_group_permissions.read = :value', { value: true }) - .andWhere('app_group_permissions.hide_from_dashboard = :hideFromDashboard', { - hideFromDashboard: false, - }) - .orWhere('viewable_apps.is_public = :value OR viewable_apps.user_id = :userId', { - value: true, - organizationId: user.organizationId, - userId: user.id, - }); - }) - ) - .andWhere('viewable_apps.organization_id = :organizationId', { organizationId: user.organizationId }); - - if (searchKey) { - viewableAppsQb.andWhere('LOWER(viewable_apps.name) like :searchKey', { - searchKey: `%${searchKey && searchKey.toLowerCase()}%`, - }); - } - viewableAppsQb.orderBy('viewable_apps.createdAt', 'DESC'); - return viewableAppsQb; -} +import { createQueryBuilder, EntityManager, SelectQueryBuilder } from 'typeorm'; export function getFolderQuery(organizationId: string, searchKey?: string): SelectQueryBuilder { const query = createQueryBuilder(Folder, 'folders'); diff --git a/server/src/modules/apps/apps.module.ts b/server/src/modules/apps/apps.module.ts index 7f1259ee48..8dae25d227 100644 --- a/server/src/modules/apps/apps.module.ts +++ b/server/src/modules/apps/apps.module.ts @@ -20,9 +20,6 @@ import { FoldersService } from '@services/folders.service'; import { Folder } from 'src/entities/folder.entity'; import { FolderApp } from 'src/entities/folder_app.entity'; import { DataSource } from 'src/entities/data_source.entity'; -import { GroupPermission } from 'src/entities/group_permission.entity'; -import { AppGroupPermission } from 'src/entities/app_group_permission.entity'; -import { UserGroupPermission } from 'src/entities/user_group_permission.entity'; import { AppImportExportService } from '@services/app_import_export.service'; import { DataSourcesService } from '@services/data_sources.service'; import { CredentialsService } from '@services/credentials.service'; @@ -59,10 +56,6 @@ import { UserResourcePermissionsModule } from '@module/user_resource_permissions User, Organization, DataSource, - //Depreciated - GroupPermission, - AppGroupPermission, - UserGroupPermission, Credential, File, Plugin, diff --git a/server/src/modules/auth/auth.module.ts b/server/src/modules/auth/auth.module.ts index 3402727184..6fe0cc9ae5 100644 --- a/server/src/modules/auth/auth.module.ts +++ b/server/src/modules/auth/auth.module.ts @@ -15,14 +15,10 @@ import { ConfigService } from '@nestjs/config'; import { EmailService } from '@services/email.service'; import { OauthService, GoogleOAuthService, GitOAuthService } from '@ee/services/oauth'; import { OauthController } from '@ee/controllers/oauth.controller'; -import { GroupPermission } from 'src/entities/group_permission.entity'; import { App } from 'src/entities/app.entity'; import { File } from 'src/entities/file.entity'; import { FilesService } from '@services/files.service'; import { SSOConfigs } from 'src/entities/sso_config.entity'; -import { GroupPermissionsService } from '@services/group_permissions.service'; -import { AppGroupPermission } from 'src/entities/app_group_permission.entity'; -import { UserGroupPermission } from 'src/entities/user_group_permission.entity'; import { EncryptionService } from '@services/encryption.service'; import { DataSourcesService } from '@services/data_sources.service'; import { CredentialsService } from '@services/credentials.service'; @@ -49,14 +45,8 @@ import { UserResourcePermissionsModule } from '@module/user_resource_permissions File, Organization, OrganizationUser, - //Depreciated - GroupPermission, App, SSOConfigs, - //Depreciated - AppGroupPermission, - //Depreciated - UserGroupPermission, DataSource, Credential, Plugin, @@ -84,8 +74,6 @@ import { UserResourcePermissionsModule } from '@module/user_resource_permissions GoogleOAuthService, GitOAuthService, FilesService, - //Need to remove group Permission service since this is not required. - GroupPermissionsService, EncryptionService, DataSourcesService, CredentialsService, diff --git a/server/src/modules/data_queries/data_queries.module.ts b/server/src/modules/data_queries/data_queries.module.ts index 622f6966f1..792ba90305 100644 --- a/server/src/modules/data_queries/data_queries.module.ts +++ b/server/src/modules/data_queries/data_queries.module.ts @@ -15,8 +15,6 @@ import { App } from 'src/entities/app.entity'; import { AppVersion } from 'src/entities/app_version.entity'; import { AppUser } from 'src/entities/app_user.entity'; import { FolderApp } from 'src/entities/folder_app.entity'; -import { GroupPermission } from 'src/entities/group_permission.entity'; -import { AppGroupPermission } from 'src/entities/app_group_permission.entity'; import { UsersService } from '@services/users.service'; import { User } from 'src/entities/user.entity'; import { OrganizationUser } from 'src/entities/organization_user.entity'; @@ -43,9 +41,6 @@ import { UserResourcePermissionsModule } from '@module/user_resource_permissions Credential, DataSource, FolderApp, - //Depreciated - GroupPermission, - AppGroupPermission, User, OrganizationUser, Organization, diff --git a/server/src/modules/data_sources/data_sources.module.ts b/server/src/modules/data_sources/data_sources.module.ts index a70fab4adf..e20c716663 100644 --- a/server/src/modules/data_sources/data_sources.module.ts +++ b/server/src/modules/data_sources/data_sources.module.ts @@ -16,8 +16,6 @@ import { CaslModule } from '../casl/casl.module'; import { DataQueriesService } from '@services/data_queries.service'; import { DataQuery } from 'src/entities/data_query.entity'; import { FolderApp } from 'src/entities/folder_app.entity'; -import { GroupPermission } from 'src/entities/group_permission.entity'; -import { AppGroupPermission } from 'src/entities/app_group_permission.entity'; import { UsersService } from '@services/users.service'; import { User } from 'src/entities/user.entity'; import { OrganizationUser } from 'src/entities/organization_user.entity'; @@ -46,9 +44,6 @@ import { UserResourcePermissionsModule } from '@module/user_resource_permissions AppVersion, AppUser, FolderApp, - //Depreciated - GroupPermission, - AppGroupPermission, User, OrganizationUser, Organization, diff --git a/server/src/modules/group_permissions/group_permissions.module.ts b/server/src/modules/group_permissions/group_permissions.module.ts deleted file mode 100644 index a338e6877e..0000000000 --- a/server/src/modules/group_permissions/group_permissions.module.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { Module } from '@nestjs/common'; -import { TypeOrmModule } from '@nestjs/typeorm'; -import { GroupPermission } from '../../../src/entities/group_permission.entity'; -import { UserGroupPermission } from 'src/entities/user_group_permission.entity'; -import { AppGroupPermission } from 'src/entities/app_group_permission.entity'; -import { GroupPermissionsController } from '../../controllers/group_permissions.controller'; -import { GroupPermissionsService } from '../../services/group_permissions.service'; -import { CaslModule } from '../casl/casl.module'; -import { UsersService } from '@services/users.service'; -import { User } from 'src/entities/user.entity'; -import { OrganizationUser } from 'src/entities/organization_user.entity'; -import { Organization } from 'src/entities/organization.entity'; -import { App } from 'src/entities/app.entity'; -import { File } from 'src/entities/file.entity'; -import { FilesService } from '@services/files.service'; -import { UserResourcePermissionsModule } from '@module/user_resource_permissions/user_resource_permissions.module'; - -@Module({ - //Depreciated - controllers: [GroupPermissionsController], - imports: [ - UserResourcePermissionsModule, - TypeOrmModule.forFeature([ - GroupPermission, - UserGroupPermission, - AppGroupPermission, - User, - OrganizationUser, - Organization, - App, - File, - ]), - CaslModule, - ], - providers: [GroupPermissionsService, FilesService, UsersService], -}) -export class GroupPermissionsModule {} diff --git a/server/src/modules/org_environment_variables/org_environment_variables.module.ts b/server/src/modules/org_environment_variables/org_environment_variables.module.ts index 1e7ba579bd..c11bc79925 100644 --- a/server/src/modules/org_environment_variables/org_environment_variables.module.ts +++ b/server/src/modules/org_environment_variables/org_environment_variables.module.ts @@ -19,8 +19,6 @@ import { AppUser } from 'src/entities/app_user.entity'; import { DataSource } from 'src/entities/data_source.entity'; import { DataQuery } from 'src/entities/data_query.entity'; import { FolderApp } from 'src/entities/folder_app.entity'; -import { GroupPermission } from 'src/entities/group_permission.entity'; -import { AppGroupPermission } from 'src/entities/app_group_permission.entity'; import { AppVersion } from 'src/entities/app_version.entity'; import { AppImportExportService } from '@services/app_import_export.service'; import { DataSourcesService } from '@services/data_sources.service'; @@ -48,8 +46,6 @@ import { UserResourcePermissionsModule } from '@module/user_resource_permissions DataSource, DataQuery, FolderApp, - GroupPermission, - AppGroupPermission, Credential, ]), CaslModule, diff --git a/server/src/modules/organization_constants/organization_constants.module.ts b/server/src/modules/organization_constants/organization_constants.module.ts index 456d490149..7e15a15ea8 100644 --- a/server/src/modules/organization_constants/organization_constants.module.ts +++ b/server/src/modules/organization_constants/organization_constants.module.ts @@ -23,8 +23,6 @@ import { AppUser } from 'src/entities/app_user.entity'; import { DataSource } from 'src/entities/data_source.entity'; import { DataQuery } from 'src/entities/data_query.entity'; import { FolderApp } from 'src/entities/folder_app.entity'; -import { GroupPermission } from 'src/entities/group_permission.entity'; -import { AppGroupPermission } from 'src/entities/app_group_permission.entity'; import { AppVersion } from 'src/entities/app_version.entity'; import { AppImportExportService } from '@services/app_import_export.service'; import { DataSourcesService } from '@services/data_sources.service'; @@ -52,10 +50,6 @@ import { UserResourcePermissionsModule } from '@module/user_resource_permissions DataSource, DataQuery, FolderApp, - //Depreciated - GroupPermission, - //Depreciated - AppGroupPermission, Credential, ]), CaslModule, diff --git a/server/src/modules/organizations/organizations.module.ts b/server/src/modules/organizations/organizations.module.ts index 8d4feb8f2e..9b7d324207 100644 --- a/server/src/modules/organizations/organizations.module.ts +++ b/server/src/modules/organizations/organizations.module.ts @@ -11,16 +11,12 @@ import { UsersService } from 'src/services/users.service'; import { CaslModule } from '../casl/casl.module'; import { EmailService } from '@services/email.service'; import { FilesService } from '@services/files.service'; -import { GroupPermission } from 'src/entities/group_permission.entity'; import { App } from 'src/entities/app.entity'; import { File } from 'src/entities/file.entity'; import { SSOConfigs } from 'src/entities/sso_config.entity'; import { AuthService } from '@services/auth.service'; import { JwtModule } from '@nestjs/jwt'; import { ConfigService } from '@nestjs/config'; -import { GroupPermissionsService } from '@services/group_permissions.service'; -import { AppGroupPermission } from 'src/entities/app_group_permission.entity'; -import { UserGroupPermission } from 'src/entities/user_group_permission.entity'; import { EncryptionService } from '@services/encryption.service'; import { AppConfigService } from '@services/app_config.service'; import { Plugin } from 'src/entities/plugin.entity'; @@ -45,11 +41,8 @@ import { UserResourcePermissionsModule } from '@module/user_resource_permissions OrganizationUser, User, File, - GroupPermission, App, SSOConfigs, - AppGroupPermission, - UserGroupPermission, DataSource, Credential, Plugin, @@ -77,8 +70,6 @@ import { UserResourcePermissionsModule } from '@module/user_resource_permissions EmailService, FilesService, AuthService, - //Need to check if group permission is required in organization module - GroupPermissionsService, EncryptionService, DataSourcesService, CredentialsService, diff --git a/server/src/services/app_import_export.service.ts b/server/src/services/app_import_export.service.ts index 533c61614c..a17c9c1b9a 100644 --- a/server/src/services/app_import_export.service.ts +++ b/server/src/services/app_import_export.service.ts @@ -2,12 +2,10 @@ import { BadRequestException, Injectable } from '@nestjs/common'; import { isEmpty } from 'lodash'; import { App } from 'src/entities/app.entity'; import { AppEnvironment } from 'src/entities/app_environments.entity'; -import { AppGroupPermission } from 'src/entities/app_group_permission.entity'; import { AppVersion } from 'src/entities/app_version.entity'; import { DataQuery } from 'src/entities/data_query.entity'; import { DataSource } from 'src/entities/data_source.entity'; import { DataSourceOptions } from 'src/entities/data_source_options.entity'; -import { GroupPermission } from 'src/entities/group_permission.entity'; import { User } from 'src/entities/user.entity'; import { EntityManager, In } from 'typeorm'; import { DataSourcesService } from './data_sources.service'; @@ -258,7 +256,6 @@ export class AppImportExportService { isNormalizedAppDefinitionSchema, currentTooljetVersion ); - await this.createAdminGroupPermissions(this.entityManager, importedApp); await this.updateEntityReferencesForImportedApp(this.entityManager, resourceMapping); // NOTE: App slug updation callback doesn't work while wrapped in transaction @@ -1350,32 +1347,6 @@ export class AppImportExportService { await manager.update(AppVersion, { id: lastVersionIdToUpdate }, { updatedAt: new Date() }); } - //Need to update this as per new group permissions - async createAdminGroupPermissions(manager: EntityManager, app: App) { - const orgDefaultGroupPermissions = await manager.find(GroupPermission, { - where: { - organizationId: app.organizationId, - group: 'admin', - }, - }); - - const adminPermissions = { - read: true, - update: true, - delete: true, - }; - - for (const groupPermission of orgDefaultGroupPermissions) { - const appGroupPermission = manager.create(AppGroupPermission, { - groupPermissionId: groupPermission.id, - appId: app.id, - ...adminPermissions, - }); - - return await manager.save(AppGroupPermission, appGroupPermission); - } - } - async createDatasourceOption( manager: EntityManager, options: Record, diff --git a/server/src/services/apps.service.ts b/server/src/services/apps.service.ts index 74364dab13..03cbaac657 100644 --- a/server/src/services/apps.service.ts +++ b/server/src/services/apps.service.ts @@ -7,8 +7,6 @@ import { AppUser } from 'src/entities/app_user.entity'; import { AppVersion } from 'src/entities/app_version.entity'; import { DataSource } from 'src/entities/data_source.entity'; import { DataQuery } from 'src/entities/data_query.entity'; -import { GroupPermission } from 'src/entities/group_permission.entity'; -import { AppGroupPermission } from 'src/entities/app_group_permission.entity'; import { AppImportExportService } from './app_import_export.service'; import { DataSourcesService } from './data_sources.service'; import { Credential } from 'src/entities/credential.entity'; @@ -174,52 +172,11 @@ export class AppsService { updatedAt: new Date(), }) ); - - //Depreciated - Need to change this - await this.createAppGroupPermissionsForAdmin(app, manager); return app; }, [{ dbConstraint: DataBaseConstraints.APP_NAME_UNIQUE, message: 'This app name is already taken.' }]); }); } - //Need to change this as per new group permissions - async createAppGroupPermissionsForAdmin(app: App, manager: EntityManager): Promise { - await dbTransactionWrap(async (manager: EntityManager) => { - const orgDefaultGroupPermissions = await manager.find(GroupPermission, { - where: { - organizationId: app.organizationId, - group: 'admin', - }, - }); - - for (const groupPermission of orgDefaultGroupPermissions) { - const appGroupPermission = manager.create(AppGroupPermission, { - groupPermissionId: groupPermission.id, - appId: app.id, - ...this.fetchDefaultAppGroupPermissions(groupPermission.group), - }); - - await manager.save(appGroupPermission); - } - }, manager); - } - - //Change this .. - fetchDefaultAppGroupPermissions(group: string): { - read: boolean; - update: boolean; - delete: boolean; - } { - switch (group) { - case 'all_users': - return { read: true, update: false, delete: false }; - case 'admin': - return { read: true, update: true, delete: true }; - default: - throw `${group} is not a default group`; - } - } - async clone(existingApp: App, user: User, appName: string): Promise { const appWithRelations = await this.appImportExportService.export(user, existingApp.id); const clonedApp = await this.appImportExportService.import(user, appWithRelations, appName); diff --git a/server/src/services/group_permissions.service.ts b/server/src/services/group_permissions.service.ts deleted file mode 100644 index 3f69b10f3b..0000000000 --- a/server/src/services/group_permissions.service.ts +++ /dev/null @@ -1,516 +0,0 @@ -import { BadRequestException, ConflictException, Injectable } from '@nestjs/common'; -import { InjectRepository } from '@nestjs/typeorm'; -import { Repository, createQueryBuilder, In, Not, EntityManager, Brackets } from 'typeorm'; -import { User } from 'src/entities/user.entity'; -import { GroupPermission } from 'src/entities/group_permission.entity'; -import { App } from 'src/entities/app.entity'; -import { AppGroupPermission } from 'src/entities/app_group_permission.entity'; -import { UserGroupPermission } from 'src/entities/user_group_permission.entity'; -import { UsersService } from './users.service'; -import { dbTransactionWrap, getMaxCopyNumber } from 'src/helpers/utils.helper'; -import { DuplucateGroupDto } from '@dto/group-permission.dto'; - -@Injectable() -export class GroupPermissionsService { - constructor( - @InjectRepository(GroupPermission) - private groupPermissionsRepository: Repository, - - @InjectRepository(AppGroupPermission) - private appGroupPermissionsRepository: Repository, - - @InjectRepository(UserGroupPermission) - private userGroupPermissionsRepository: Repository, - - @InjectRepository(User) - private userRepository: Repository, - - @InjectRepository(App) - private appRepository: Repository, - - private usersService: UsersService - ) {} - - async create(user: User, group: string, manager?: EntityManager): Promise { - if (!group || group === '') { - throw new BadRequestException('Cannot create group without name'); - } - - const reservedGroups = ['All Users', 'Admin']; - - if (reservedGroups.includes(group)) { - throw new BadRequestException('Group name already exist'); - } - - const groupToFind = await this.groupPermissionsRepository.findOne({ - where: { - organizationId: user.organizationId, - group, - }, - }); - - if (groupToFind) { - throw new ConflictException('Group name already exist'); - } - - await dbTransactionWrap(async (manager: EntityManager) => { - await manager.save( - manager.create(GroupPermission, { - organizationId: user.organizationId, - group: group, - }) - ); - }, manager); - } - - async destroy(user: User, groupPermissionId: string, manager?: EntityManager): Promise { - const groupPermission = await this.groupPermissionsRepository.findOne({ - where: { - id: groupPermissionId, - }, - }); - - if (groupPermission.group == 'admin' || groupPermission.group == 'all_users') { - throw new BadRequestException('Cannot delete default group'); - } - await dbTransactionWrap(async (manager: EntityManager) => { - const relationalEntitiesToBeDeleted = [AppGroupPermission, UserGroupPermission]; - - for (const entityToDelete of relationalEntitiesToBeDeleted) { - const entities = await manager.find(entityToDelete, { - where: { groupPermissionId }, - }); - - for (const entity of entities) { - await manager.delete(entityToDelete, entity.id); - } - } - - await manager.delete(GroupPermission, { - organizationId: user.organizationId, - id: groupPermissionId, - }); - }, manager); - } - - async updateAppGroupPermission( - user: User, - groupPermissionId: string, - appGroupPermissionId: string, - actions: any, - manager?: EntityManager - ) { - const appGroupPermission = await this.appGroupPermissionsRepository.findOne({ - where: { - id: appGroupPermissionId, - groupPermissionId: groupPermissionId, - }, - }); - const groupPermission = await this.groupPermissionsRepository.findOne({ - where: { - id: appGroupPermission.groupPermissionId, - }, - }); - - if (groupPermission.organizationId !== user.organizationId) { - throw new BadRequestException(); - } - if (groupPermission.group == 'admin') { - throw new BadRequestException('Cannot update admin group'); - } - - await dbTransactionWrap(async (manager: EntityManager) => { - await manager.update(AppGroupPermission, appGroupPermissionId, actions); - }, manager); - } - - async update(user: User, groupPermissionId: string, body: any, manager?: EntityManager) { - const groupPermission = await this.groupPermissionsRepository.findOne({ - where: { - id: groupPermissionId, - organizationId: user.organizationId, - }, - }); - - const { - name, - app_create, - app_delete, - add_apps, - remove_apps, - add_users, - remove_users, - folder_create, - org_environment_variable_create, - org_environment_variable_update, - org_environment_variable_delete, - folder_delete, - folder_update, - org_environment_constant_create, - org_environment_constant_delete, - } = body; - - return await dbTransactionWrap(async (manager: EntityManager) => { - //update user group name - if (name) { - const newName = name.trim(); - if (!newName) { - throw new BadRequestException('Group name should not be empty'); - } - - const reservedGroups = ['admin', 'all_users']; - if (reservedGroups.includes(groupPermission.group)) { - throw new BadRequestException('Cannot update a default group name'); - } - - if (reservedGroups.includes(newName.replace(/ /g, '_').toLowerCase())) { - throw new BadRequestException('Group name already exists'); - } - - const groupToFind = await this.groupPermissionsRepository.findOne({ - where: { - organizationId: user.organizationId, - group: newName, - }, - }); - - if (groupToFind && groupToFind.id !== groupPermission.id) { - throw new ConflictException('Group name already exists'); - } else if (!groupToFind) { - await manager.update(GroupPermission, groupPermissionId, { group: newName }); - } - } - - // update group permissions - const groupPermissionUpdateParams = { - ...(typeof app_create === 'boolean' && { appCreate: app_create }), - ...(typeof app_delete === 'boolean' && { appDelete: app_delete }), - ...(typeof folder_create === 'boolean' && { folderCreate: folder_create }), - ...(typeof org_environment_variable_create === 'boolean' && { - orgEnvironmentVariableCreate: org_environment_variable_create, - }), - ...(typeof org_environment_variable_update === 'boolean' && { - orgEnvironmentVariableUpdate: org_environment_variable_update, - }), - ...(typeof org_environment_variable_delete === 'boolean' && { - orgEnvironmentVariableDelete: org_environment_variable_delete, - }), - ...(typeof folder_delete === 'boolean' && { folderDelete: folder_delete }), - ...(typeof folder_update === 'boolean' && { folderUpdate: folder_update }), - - ...(typeof org_environment_constant_create === 'boolean' && { - orgEnvironmentConstantCreate: org_environment_constant_create, - }), - ...(typeof org_environment_constant_delete === 'boolean' && { - orgEnvironmentConstantDelete: org_environment_constant_delete, - }), - }; - if (Object.keys(groupPermissionUpdateParams).length !== 0) { - await manager.update(GroupPermission, groupPermissionId, groupPermissionUpdateParams); - } - - // update app group permissions - if (remove_apps) { - if (groupPermission.group == 'admin') { - throw new BadRequestException('Cannot update admin group'); - } - for (const appId of remove_apps) { - await manager.delete(AppGroupPermission, { - appId: appId, - groupPermissionId: groupPermissionId, - }); - } - } - - if (add_apps) { - if (groupPermission.group == 'admin') { - throw new BadRequestException('Cannot update admin group'); - } - for (const appId of add_apps) { - await manager.save( - AppGroupPermission, - manager.create(AppGroupPermission, { - appId: appId, - groupPermissionId: groupPermissionId, - read: true, - }) - ); - } - } - - // update user group permissions - if (remove_users) { - for (const userId of body.remove_users) { - const params = { - removeGroups: [groupPermission.group], - }; - await this.usersService.update(userId, params, manager, user.organizationId); - } - } - - if (add_users) { - for (const userId of body.add_users) { - const params = { - addGroups: [groupPermission.group], - }; - await this.usersService.update(userId, params, manager, user.organizationId); - } - } - }, manager); - } - - async findOne(user: User, groupPermissionId: string): Promise { - return this.groupPermissionsRepository.findOne({ - where: { - organizationId: user.organizationId, - id: groupPermissionId, - }, - }); - } - - async duplicateGroup( - user: User, - groupPermissionId: string, - body: DuplucateGroupDto, - manager?: EntityManager - ): Promise { - const groupToDuplicate = await this.findOne(user, groupPermissionId); - let newGroup: GroupPermission; - - const { addPermission, addApps, addUsers } = body; - - if (!groupToDuplicate) throw new BadRequestException('Wrong group id'); - - const existNameList = await createQueryBuilder() - .select(['group_permissions.group', 'group_permissions.id']) - .from(GroupPermission, 'group_permissions') - .where('group_permissions.group ~* :pattern', { pattern: `^${groupToDuplicate.group}_copy_[0-9]+$` }) - .orWhere('group_permissions.group = :groupToDuplicateGroup', { - groupToDuplicateGroup: `${groupToDuplicate.group}_copy`, - }) - .andWhere('group_permissions.id != :groupPermissionId', { groupPermissionId }) - .andWhere('group_permissions.organizationId = :organizationId', { organizationId: user.organizationId }) - .getMany(); - - let newName = `${groupToDuplicate.group}_copy`; - const number = getMaxCopyNumber(existNameList.map((group) => group.group)); - if (number) newName = `${groupToDuplicate.group}_copy_${number}`; - await dbTransactionWrap(async (manager: EntityManager) => { - newGroup = manager.create(GroupPermission, { - organizationId: user.organizationId, - group: newName, - }); - await manager.save(GroupPermission, newGroup); - if (addPermission) { - const { - appCreate, - appDelete, - folderCreate, - orgEnvironmentVariableCreate, - orgEnvironmentVariableUpdate, - orgEnvironmentVariableDelete, - orgEnvironmentConstantCreate, - orgEnvironmentConstantDelete, - folderDelete, - folderUpdate, - } = groupToDuplicate; - - const updateParam = { - appCreate, - appDelete, - folderCreate, - orgEnvironmentVariableCreate, - orgEnvironmentVariableUpdate, - orgEnvironmentVariableDelete, - orgEnvironmentConstantCreate, - orgEnvironmentConstantDelete, - folderDelete, - folderUpdate, - }; - - await manager.update(GroupPermission, { id: newGroup.id }, updateParam); - } - const apps = await groupToDuplicate.apps; - - if (addApps) { - for (const app of apps) { - const appGrpPermission = await this.appGroupPermissionsRepository.findOne({ - where: { - appId: app.id, - groupPermissionId: groupToDuplicate.id, - }, - }); - if (appGrpPermission) - await manager.save( - AppGroupPermission, - manager.create(AppGroupPermission, { - appId: app.id, - groupPermissionId: newGroup.id, - read: appGrpPermission.read, - update: appGrpPermission.update, - delete: appGrpPermission.delete, - hideFromDashboard: appGrpPermission.hideFromDashboard, - }) - ); - } - } - }, manager); - - if (addUsers) { - const usersGroup = await groupToDuplicate.users; - for (const userAdd of usersGroup) { - const params = { - addGroups: [newGroup.group], - }; - await this.usersService.update(userAdd.id, params, manager, user.organizationId); - } - } - - return newGroup; - } - - async findAll(user: User): Promise { - const groupPermissions = await this.groupPermissionsRepository.find({ - where: { organizationId: user.organizationId }, - order: { createdAt: 'ASC' }, - }); - - const customSortGroupPermission = (a, b) => { - if (a.group === 'all_users') { - return -1; // 'all_users' comes first - } else if (b.group === 'all_users') { - return 1; // 'all_users' comes first - } else if (a.group === 'admin') { - return -1; // 'admin' comes second - } else if (b.group === 'admin') { - return 1; // 'admin' comes second - } else { - return 0; // No specific order for other groups - } - }; - - return groupPermissions.sort(customSortGroupPermission); - } - - async findApps(user: User, groupPermissionId: string): Promise { - return createQueryBuilder(App, 'apps') - .innerJoinAndSelect('apps.groupPermissions', 'group_permissions') - .innerJoinAndSelect('apps.appGroupPermissions', 'app_group_permissions') - .where('group_permissions.id = :groupPermissionId', { - groupPermissionId, - }) - .andWhere('group_permissions.organization_id = :organizationId', { - organizationId: user.organizationId, - }) - .andWhere('app_group_permissions.group_permission_id = :groupPermissionId', { groupPermissionId }) - .orderBy('apps.created_at', 'DESC') - .getMany(); - } - - async findAddableApps(user: User, groupPermissionId: string): Promise { - const groupPermission = await this.groupPermissionsRepository.findOne({ - where: { - id: groupPermissionId, - organizationId: user.organizationId, - }, - }); - - const appsInGroup = await groupPermission.apps; - const appsInGroupIds = appsInGroup.map((u) => u.id); - - return await this.appRepository.find({ - where: { - id: Not(In(appsInGroupIds)), - organizationId: user.organizationId, - }, - loadEagerRelations: false, - relations: ['groupPermissions', 'appGroupPermissions'], - }); - } - - async findUsers(user: User, groupPermissionId: string): Promise { - return createQueryBuilder(User, 'users') - .select(['users.id', 'users.firstName', 'users.lastName', 'users.email']) - .innerJoin('users.groupPermissions', 'group_permissions') - .innerJoin('users.userGroupPermissions', 'user_group_permissions') - .where('group_permissions.id = :groupPermissionId', { - groupPermissionId, - }) - .andWhere('group_permissions.organization_id = :organizationId', { - organizationId: user.organizationId, - }) - .andWhere('user_group_permissions.group_permission_id = :groupPermissionId', { groupPermissionId }) - .orderBy('users.created_at', 'DESC') - .getMany(); - } - - async findAddableUsers(user: User, groupPermissionId: string, searchInput: string): Promise { - const groupPermission = await this.groupPermissionsRepository.findOne({ - where: { - id: groupPermissionId, - organizationId: user.organizationId, - }, - }); - - const userInGroup = await groupPermission.users; - const usersInGroupIds = userInGroup.map((u) => u.id); - - const adminUsers = await createQueryBuilder(UserGroupPermission, 'user_group_permissions') - .innerJoin( - GroupPermission, - 'group_permissions', - 'group_permissions.id = user_group_permissions.group_permission_id' - ) - .where('group_permissions.group = :group', { group: 'admin' }) - .andWhere('group_permissions.organization_id = :organizationId', { - organizationId: user.organizationId, - }) - .getMany(); - const adminUserIds = adminUsers.map((u) => u.userId); - - const getOrConditions = () => { - return new Brackets((qb) => { - if (searchInput) { - qb.orWhere('lower(user.email) like :email', { - email: `%${searchInput.toLowerCase()}%`, - }); - qb.orWhere('lower(user.firstName) like :firstName', { - firstName: `%${searchInput.toLowerCase()}%`, - }); - qb.orWhere('lower(user.lastName) like :lastName', { - lastName: `%${searchInput.toLowerCase()}%`, - }); - } - }); - }; - - const builtQuery = createQueryBuilder(User, 'user') - .select(['user.id', 'user.firstName', 'user.lastName', 'user.email']) - .innerJoin( - 'user.organizationUsers', - 'organization_users', - 'organization_users.organizationId = :organizationId', - { organizationId: user.organizationId } - ) - .where('user.id NOT IN (:...userList)', { userList: [...usersInGroupIds, ...adminUserIds] }) - .andWhere(getOrConditions()); - - if (!searchInput) { - builtQuery.take(10); // Limiting to 10 users if there's no search input - } - - builtQuery.orderBy('user.firstName'); - return await builtQuery.getMany(); - } - - async createUserGroupPermission(userId: string, groupPermissionId: string, manager?: EntityManager) { - await dbTransactionWrap(async (manager: EntityManager) => { - await manager.save( - manager.create(UserGroupPermission, { - userId, - groupPermissionId, - }) - ); - }, manager); - } -} diff --git a/server/src/services/organization_users.service.ts b/server/src/services/organization_users.service.ts index d99aa36dd5..568b2a115a 100644 --- a/server/src/services/organization_users.service.ts +++ b/server/src/services/organization_users.service.ts @@ -1,6 +1,5 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; -import { createQueryBuilder } from 'typeorm'; import { User } from '../entities/user.entity'; import { DeepPartial, EntityManager, getRepository, Repository } from 'typeorm'; import { UsersService } from 'src/services/users.service'; @@ -8,7 +7,6 @@ import { OrganizationUser } from 'src/entities/organization_user.entity'; import { BadRequestException } from '@nestjs/common'; import { EmailService } from './email.service'; import { Organization } from 'src/entities/organization.entity'; -import { GroupPermission } from 'src/entities/group_permission.entity'; import { dbTransactionWrap } from 'src/helpers/utils.helper'; import { ConfigService } from '@nestjs/config'; import { WORKSPACE_USER_SOURCE, WORKSPACE_USER_STATUS } from 'src/helpers/user_lifecycle'; @@ -218,20 +216,6 @@ export class OrganizationUsersService { return personalWorkspaceArray; } - async lastActiveAdmin(organizationId: string): Promise { - const adminsCount = await this.activeAdminCount(organizationId); - - return adminsCount <= 1; - } - - async activeAdminCount(organizationId: string) { - return await createQueryBuilder(GroupPermission, 'group_permissions') - .innerJoin('group_permissions.userGroupPermission', 'user_group_permission') - .where('group_permissions.group = :admin', { admin: 'admin' }) - .andWhere('group_permissions.organization = :organizationId', { organizationId }) - .getCount(); - } - async organizationsCount(manager?: EntityManager) { return dbTransactionWrap(async (manager) => { return await manager From 504713ba03a2cae9638fc7e800b6f1de470172c2 Mon Sep 17 00:00:00 2001 From: kriks7iitk Date: Tue, 9 Jul 2024 14:55:13 +0530 Subject: [PATCH 045/190] Disable custom for end user --- .../AddEditResourcePermissionsModal.jsx | 75 +------------------ frontend/src/_styles/theme.scss | 2 +- 2 files changed, 2 insertions(+), 75 deletions(-) diff --git a/frontend/src/ManageGranularAccess/AddEditResourceModal/AddEditResourcePermissionsModal.jsx b/frontend/src/ManageGranularAccess/AddEditResourceModal/AddEditResourcePermissionsModal.jsx index e518697e93..3424779e03 100644 --- a/frontend/src/ManageGranularAccess/AddEditResourceModal/AddEditResourcePermissionsModal.jsx +++ b/frontend/src/ManageGranularAccess/AddEditResourceModal/AddEditResourcePermissionsModal.jsx @@ -93,79 +93,6 @@ function AddEditResourcePermissionsModal({ disableBuilderLevelUpdate={disableBuilderLevelUpdate} initialPermissionState={initialPermissionState} /> - - {/*
-
- -
-
- - -
-
*/} - {/* // */}
@@ -191,7 +118,7 @@ function AddEditResourcePermissionsModal({ { updateParentState((prevState) => ({ isCustom: !prevState.isCustom, isAll: prevState.isCustom })); diff --git a/frontend/src/_styles/theme.scss b/frontend/src/_styles/theme.scss index 4da8ee7751..65940678a6 100644 --- a/frontend/src/_styles/theme.scss +++ b/frontend/src/_styles/theme.scss @@ -12846,7 +12846,7 @@ tbody { text-overflow: ellipsis; overflow: hidden; white-space: nowrap; - max-width: 185px; + max-width: 210px; } .group-chip { From a2d365ad191d89fef0c061a188c013d275f3b836 Mon Sep 17 00:00:00 2001 From: Muhsin Shah Date: Tue, 9 Jul 2024 16:50:46 +0530 Subject: [PATCH 046/190] Added sessionId to the logout api jwt payload --- server/src/modules/auth/jwt.strategy.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/server/src/modules/auth/jwt.strategy.ts b/server/src/modules/auth/jwt.strategy.ts index bd4b6e93b0..72180f282f 100644 --- a/server/src/modules/auth/jwt.strategy.ts +++ b/server/src/modules/auth/jwt.strategy.ts @@ -40,6 +40,7 @@ export class JwtStrategy extends PassportStrategy(Strategy) { if (isGetUserSession) { const user: User = await this.usersService.findByEmail(payload.sub); user.organizationIds = payload.organizationIds; + user.sessionId = payload.sessionId; return user; } From 523d0e3737692985e13863c5f2e42286a2108d51 Mon Sep 17 00:00:00 2001 From: Rudra Date: Wed, 10 Jul 2024 11:04:33 +0530 Subject: [PATCH 047/190] uI changes --- .../ee/components/UsersPage/UsersTable.jsx | 2 +- .../AppResourcePermission.jsx | 63 +++++++++++-------- frontend/src/ManageGranularAccess/index.jsx | 8 +-- .../index.jsx | 12 +++- .../ManageGroupPermissionsV2.jsx | 8 ++- .../groupPermissions.theme.scss | 1 + .../src/ManageOrgUsers/ManageOrgUsers.jsx | 11 ++++ .../src/ManageOrgUsers/UserGroupsSelect.jsx | 2 +- frontend/src/_styles/theme.scss | 2 +- .../src/_styles/widgets/multi-select.scss | 4 ++ .../services/granular_permissions.service.ts | 2 +- .../services/group_permissions.service.v2.ts | 4 +- 12 files changed, 76 insertions(+), 43 deletions(-) diff --git a/frontend/ee/components/UsersPage/UsersTable.jsx b/frontend/ee/components/UsersPage/UsersTable.jsx index 70428e9477..601f53f0b7 100644 --- a/frontend/ee/components/UsersPage/UsersTable.jsx +++ b/frontend/ee/components/UsersPage/UsersTable.jsx @@ -95,7 +95,7 @@ const UsersTable = ({ > {decodeEntities(user.name)} - + {user.email}
diff --git a/frontend/src/ManageGranularAccess/AppResourcePermission.jsx b/frontend/src/ManageGranularAccess/AppResourcePermission.jsx index 80f2c201d8..2f14b4c754 100644 --- a/frontend/src/ManageGranularAccess/AppResourcePermission.jsx +++ b/frontend/src/ManageGranularAccess/AppResourcePermission.jsx @@ -3,7 +3,7 @@ import GroupChipTD from '@/ManageGroupPermissionsV2/ResourceChip'; import '../ManageGroupPermissionsV2/groupPermissions.theme.scss'; import SolidIcon from '@/_ui/Icon/SolidIcons'; import { ButtonSolid } from '@/_ui/AppButton/AppButton'; - +import { OverlayTrigger, Tooltip } from 'react-bootstrap'; function AppResourcePermissions({ updateOnlyGranularPermissions, permissions, @@ -32,27 +32,38 @@ function AppResourcePermissions({ !isRoleGroup && openEditPermissionModal(permissions); }} > -
+
{permissions.name}
- {onHover && ( - { - openEditPermissionModal(permissions); - }} - disabled={isRoleGroup} - /> - )} + { + openEditPermissionModal(permissions); + }} + disabled={isRoleGroup} + />
); diff --git a/frontend/src/ManageGranularAccess/index.jsx b/frontend/src/ManageGranularAccess/index.jsx index c17e04ee8e..7ab671936e 100644 --- a/frontend/src/ManageGranularAccess/index.jsx +++ b/frontend/src/ManageGranularAccess/index.jsx @@ -101,7 +101,7 @@ class ManageGranularAccessComponent extends React.Component { groupPermissionV2Service .deleteGranularPermission(currentEditingPermissions.id) .then(() => { - toast.success('Deleted permissions successfully'); + toast.success('Deleted permission successfully'); this.fetchGranularPermissions(this.props.groupPermissionId); this.closeAddPermissionModal(); }) @@ -392,7 +392,7 @@ class ManageGranularAccessComponent extends React.Component {
this.deleteGranularPermissions()} onCancel={() => { @@ -643,10 +643,10 @@ class ManageGranularAccessComponent extends React.Component { {'Name'}

- {this.props.t('header.organization.menus.manageGroups.permissionResources.permissions', 'Permissions')} + {'Permission'}

- {'Resources'} + {'Resource'}

diff --git a/frontend/src/ManageGroupPermissionResourcesV2/index.jsx b/frontend/src/ManageGroupPermissionResourcesV2/index.jsx index ebbbc81ea2..4fef0da872 100644 --- a/frontend/src/ManageGroupPermissionResourcesV2/index.jsx +++ b/frontend/src/ManageGroupPermissionResourcesV2/index.jsx @@ -258,7 +258,12 @@ class ManageGroupPermissionResourcesComponent extends React.Component { data-cy="helper-text-admin-app-access" > {text} - + read documentation {' '} to know more @@ -327,7 +332,7 @@ class ManageGroupPermissionResourcesComponent extends React.Component { generateSelection = (selected) => { return selected?.map((d) => { return ( -
+
this.removeSelection(selected, d.value)} />
); @@ -338,6 +343,7 @@ class ManageGroupPermissionResourcesComponent extends React.Component { this.setState({ isChangeRoleModalOpen: true, updatingUserRole: updatingUser }); showChangeRoleModalMessage = () => { + console.log('called'); this.setState({ showRoleEditMessage: true }); }; @@ -659,7 +665,7 @@ class ManageGroupPermissionResourcesComponent extends React.Component { {selectedUsers.length > 0 && (
-
Selected Users:
+
Selected Users 123:
{this.generateSelection(selectedUsers)}
diff --git a/frontend/src/ManageGroupPermissionsV2/ManageGroupPermissionsV2.jsx b/frontend/src/ManageGroupPermissionsV2/ManageGroupPermissionsV2.jsx index b7e653a78b..0316cc0362 100644 --- a/frontend/src/ManageGroupPermissionsV2/ManageGroupPermissionsV2.jsx +++ b/frontend/src/ManageGroupPermissionsV2/ManageGroupPermissionsV2.jsx @@ -234,6 +234,8 @@ class ManageGroupPermissionsComponent extends React.Component { if (value.length > 50) { this.setState({ groupNameMessage: 'Max length has been reached', + isSaveBtnDisabled: true, + newGroupName: value?.slice(0, 50), }); return; } @@ -252,7 +254,7 @@ class ManageGroupPermissionsComponent extends React.Component { humanizeifDefaultGroupName = (groupName) => { switch (groupName) { case 'end-user': - return 'End user'; + return 'End-user'; case 'admin': return 'Admin'; case 'builder': @@ -381,7 +383,7 @@ class ManageGroupPermissionsComponent extends React.Component { } = this.state; const grounNameErrorStyle = - this.state.newGroupName?.length >= 50 ? { color: '#ff0000', borderColor: '#ff0000' } : {}; + this.state.newGroupName?.length > 50 ? { color: '#ff0000', borderColor: '#ff0000' } : {}; const { addPermission, addApps, addUsers } = groupDuplicateOption; const allFalse = [addPermission, addApps, addUsers].every((value) => !value); @@ -402,7 +404,7 @@ class ManageGroupPermissionsComponent extends React.Component { handleConfirm={this.duplicateGroup} handleClose={this.toggleShowDuplicateModal} title="Duplicate group" - confirmBtnProps={{ title: 'Duplicate', disabled: allFalse }} + confirmBtnProps={{ title: 'Duplicate', disabled: allFalse, tooltipMessage: false }} isLoading={isDuplicatingGroup} cancelDisabled={isDuplicatingGroup} data-cy="modal-title" diff --git a/frontend/src/ManageGroupPermissionsV2/groupPermissions.theme.scss b/frontend/src/ManageGroupPermissionsV2/groupPermissions.theme.scss index 9a0c321c53..d4184127e8 100644 --- a/frontend/src/ManageGroupPermissionsV2/groupPermissions.theme.scss +++ b/frontend/src/ManageGroupPermissionsV2/groupPermissions.theme.scss @@ -260,6 +260,7 @@ overflow: hidden; white-space: nowrap; max-width: 100px; + font-size: 12px; } .all-groups-list { diff --git a/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx b/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx index 6f69ce0233..4a7246dd6d 100644 --- a/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx +++ b/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx @@ -102,11 +102,22 @@ class ManageOrgUsersComponent extends React.Component { changeNewUserOption = (name, e) => { let fields = this.state.fields; + let errors = {}; fields[name] = e.target.value; this.setState({ fields, }); + + if (name === 'email') { + if (!this.validateEmail(fields['email'])) { + errors['email'] = 'Email is not valid'; + this.setState({ errors }); + } else { + errors['email'] = ''; + this.setState({ errors }); + } + } }; archiveOrgUser = (id) => { diff --git a/frontend/src/ManageOrgUsers/UserGroupsSelect.jsx b/frontend/src/ManageOrgUsers/UserGroupsSelect.jsx index b8c091ef15..6270a42eb5 100644 --- a/frontend/src/ManageOrgUsers/UserGroupsSelect.jsx +++ b/frontend/src/ManageOrgUsers/UserGroupsSelect.jsx @@ -36,7 +36,7 @@ export function UserGroupsSelect(props) { return (
- {type === 'default' ? 'USER ROLE' : 'CUSTOM GROUP'} + {type === 'default' ? 'USER ROLE' : 'GROUPS'} {type === 'default' && *}
); diff --git a/frontend/src/_styles/theme.scss b/frontend/src/_styles/theme.scss index 6a700153da..41f6a8b62e 100644 --- a/frontend/src/_styles/theme.scss +++ b/frontend/src/_styles/theme.scss @@ -9380,7 +9380,7 @@ tbody { } .groups-sub-header-wrap { - width: 612px; + // width: 612px; height: 36px; border-bottom: 1px solid var(--slate5) !important; diff --git a/frontend/src/_styles/widgets/multi-select.scss b/frontend/src/_styles/widgets/multi-select.scss index caa63dce8f..86ede8e00a 100644 --- a/frontend/src/_styles/widgets/multi-select.scss +++ b/frontend/src/_styles/widgets/multi-select.scss @@ -181,6 +181,10 @@ } } +.tj-ms-usergroup{ + width: auto; +} + .tj-ms-count { border-radius: 2px; display: flex; diff --git a/server/src/services/granular_permissions.service.ts b/server/src/services/granular_permissions.service.ts index 38eaf5d00f..252209d25d 100644 --- a/server/src/services/granular_permissions.service.ts +++ b/server/src/services/granular_permissions.service.ts @@ -204,7 +204,7 @@ export class GranularPermissionsService { message: { error: ERROR_HANDLER.UPDATE_EDITABLE_PERMISSION_END_USER_GROUP, data: groupEndUsers?.map((user) => user.email), - title: 'Cannot add this permissions to the group', + title: 'Cannot add this permission to the group', type: 'USER_ROLE_CHANGE', }, }); diff --git a/server/src/services/group_permissions.service.v2.ts b/server/src/services/group_permissions.service.v2.ts index 384f4e10c0..bd8b74eb99 100644 --- a/server/src/services/group_permissions.service.v2.ts +++ b/server/src/services/group_permissions.service.v2.ts @@ -112,7 +112,7 @@ export class GroupPermissionsServiceV2 { message: { error: ERROR_HANDLER.UPDATE_EDITABLE_PERMISSION_END_USER_GROUP, data: getEndUsersList?.map((user) => user.email), - title: 'Cannot add this permissions to the group', + title: 'Cannot add this permission to the group', type: 'USER_ROLE_CHANGE', }, }); @@ -202,7 +202,7 @@ export class GroupPermissionsServiceV2 { message: { error: ERROR_HANDLER.UPDATE_EDITABLE_PERMISSION_END_USER_GROUP, data: editorUsersToBeAdded?.map((user) => user.email), - title: 'Cannot add this permissions to the group', + title: 'Cannot add this permission to the group', type: 'USER_ROLE_CHANGE_ADD_USERS', }, }); From 7a25f4a5c4523a09c826205c580a6257c106d11d Mon Sep 17 00:00:00 2001 From: kriks7iitk Date: Wed, 10 Jul 2024 13:48:26 +0530 Subject: [PATCH 048/190] Merge group revamp --- .vscode/settings.json | 3 +- .../cypress/constants/texts/manageGroups.js | 2 +- frontend/assets/translations/en.json | 3 +- .../ee/components/UsersPage/UsersTable.jsx | 81 +- frontend/src/App/App.jsx | 4 +- frontend/src/Editor/Editor.jsx | 7 +- frontend/src/Editor/Viewer.jsx | 14 +- frontend/src/HomePage/HomePage.jsx | 27 +- .../AddEditResourcePermissionsModal.jsx | 145 +++ .../AppPermissionActionContainer.jsx | 67 ++ .../AddResourcePermissionsMenu.jsx | 61 ++ .../AppResourcePermission.jsx | 151 +++ frontend/src/ManageGranularAccess/index.jsx | 535 ++++++++++ .../ChangeRoleModal.jsx | 75 ++ .../constant.js | 70 ++ .../grpPermissionResc.theme.scss | 146 +++ .../index.jsx | 998 ++++++++++++++++++ .../ManageGroupPermissions.jsx | 2 +- .../ErrorModal/ErrorModal.jsx | 55 + .../ManageGroupPermissionsV2.jsx | 788 ++++++++++++++ .../ManageGroupPermissionsV2/ResourceChip.jsx | 103 ++ .../groupPermissions.theme.scss | 458 ++++++++ .../ManageOrgConstants/ManageOrgConstants.jsx | 15 +- .../src/ManageOrgUsers/InviteUsersForm.jsx | 113 +- .../src/ManageOrgUsers/ManageOrgUsers.jsx | 55 +- .../ManageOrgUsers/ManageOrgUsersDrawer.jsx | 30 +- .../src/ManageOrgUsers/UserGroupsSelect.jsx | 42 +- frontend/src/ManageOrgVars/ManageOrgVars.jsx | 5 +- .../src/TooljetDatabase/Forms/styles.scss | 2 +- frontend/src/WorkspaceConstants/index.jsx | 5 +- frontend/src/_components/LogoNavDropdown.jsx | 21 +- frontend/src/_components/MultiSelectUser.jsx | 13 +- .../OrganizationLogin/OrganizationLogin.jsx | 2 +- frontend/src/_components/SearchBox.jsx | 12 + frontend/src/_helpers/utils.js | 6 +- .../src/_services/authentication.service.js | 2 + .../_services/groupPermission.v2.service.js | 190 ++++ frontend/src/_services/index.js | 1 + frontend/src/_styles/groups-permissions.scss | 146 +++ frontend/src/_styles/theme.scss | 154 ++- .../src/_styles/widgets/multi-select.scss | 4 + frontend/src/_ui/AppButton/AppButton.scss | 2 +- .../_ui/Icon/solidIcons/GranularAccess.jsx | 19 + frontend/src/_ui/Icon/solidIcons/UserGear.jsx | 19 + .../src/_ui/Icon/solidIcons/UserGroups.jsx | 39 + frontend/src/_ui/Icon/solidIcons/index.js | 6 + frontend/src/_ui/Layout/index.jsx | 5 +- frontend/src/_ui/Modal/AppsSelect.jsx | 204 ++++ frontend/src/_ui/Modal/appSelect.theme.scss | 228 ++++ frontend/src/_ui/Modal/index.jsx | 32 +- package.json | 6 + server/ee/services/oauth/oauth.service.ts | 11 +- .../1714015513342-AddGroupPermissionsTable.ts | 37 + .../1714015541245-AddGroupUsersTable.ts | 25 + ...14015564318-AddGranularPermissionsTable.ts | 32 + ...4015596201-AddAppsGroupPermissionsTable.ts | 28 + .../1714015615904-AddGroupAppsTable.ts | 23 + ...0-CreateDefaultGroupInExistingWorkspace.ts | 149 +++ ...sersToRespectiveRolesBuilderAndEndUsers.ts | 124 +++ ...737529-MigrateCustomGroupToNewUserGroup.ts | 213 ++++ ...-DropGroupPermissionsOlderRelatedTables.ts | 9 + server/src/app.module.ts | 6 +- server/src/constants/global.constant.ts | 96 ++ server/src/controllers/app.controller.ts | 1 + .../app_environments.controller.ts | 2 + .../app_import_export.controller.ts | 5 +- server/src/controllers/apps.controller.ts | 43 +- server/src/controllers/apps.controller.v2.ts | 39 +- server/src/controllers/comment.controller.ts | 11 +- server/src/controllers/folders.controller.ts | 13 +- .../global_data_sources.controller.ts | 9 +- .../group_permissions.controller.ts | 118 --- .../group_permissions.controller.v2.ts | 214 ++++ .../import_export_resources.controller.ts | 7 +- .../controllers/library_apps.controller.ts | 3 +- .../organization_users.controller.ts | 21 +- .../controllers/organizations.controller.ts | 9 +- server/src/controllers/plugins.controller.ts | 7 +- server/src/controllers/thread.controller.ts | 11 +- server/src/dto/granular-permissions.dto.ts | 58 + server/src/dto/group_permissions.dto.ts | 81 ++ server/src/dto/invite-new-user.dto.ts | 7 +- server/src/entities/app.entity.ts | 8 +- server/src/entities/app_base.entity.ts | 2 + .../entities/apps_group_permissions.entity.ts | 46 + .../entities/granular_permissions.entity.ts | 47 + server/src/entities/group_apps.entity.ts | 38 + .../src/entities/group_permissions.entity.ts | 65 ++ server/src/entities/group_users.entity.ts | 38 + server/src/entities/organization.entity.ts | 7 +- server/src/entities/user.entity.ts | 21 +- .../helpers/db-utility/db-search.helper.ts | 16 + .../db-utility/db-utility.interface.ts | 8 + .../src/helpers/db_constraints.constants.ts | 3 + server/src/helpers/queries.ts | 105 +- server/src/modules/apps/apps.module.ts | 8 +- server/src/modules/auth/auth.module.ts | 10 +- .../casl/abilities/apps-ability.factory.ts | 121 ++- .../abilities/comments-ability.factory.ts | 37 +- .../abilities/data-queries-ability.factory.ts | 54 + .../casl/abilities/folders-ability.factory.ts | 26 +- .../global-datasource-ability.factory.ts | 33 +- ...g-environment-variables-ability.factory.ts | 14 +- .../organization-constants-ability.factory.ts | 28 +- .../casl/abilities/plugins-ability.factory.ts | 22 +- .../casl/abilities/threads-ability.factory.ts | 42 +- .../abilities/tooljet-db-ability.factory.ts | 12 +- .../src/modules/casl/casl-ability.factory.ts | 41 +- server/src/modules/casl/casl.module.ts | 16 +- .../data_queries/data_queries.module.ts | 6 +- .../data_sources/data_sources.module.ts | 6 +- server/src/modules/folders/folders.module.ts | 7 +- .../group_permissions.module.ts | 34 - .../org_environment_variables.module.ts | 6 +- .../organization_constants.module.ts | 6 +- .../organizations/constant/constants.ts | 7 + .../organizations/organizations.module.ts | 10 +- .../constants/permissions-ability.constant.ts | 33 + .../permissions-ability.interface.ts | 48 + .../modules/permissions/permissions.module.ts | 9 + .../utility/permission-ability.utility.ts | 73 ++ server/src/modules/seeds/seeds.module.ts | 2 + .../granular-permissions.constant.ts | 45 + .../constants/group-permissions.constant.ts | 127 +++ .../granular-permissions.interface.ts | 67 ++ .../interface/group-permissions.interface.ts | 43 + .../group-permissions.utility.service.ts | 228 ++++ .../user_resource_permissions.module.ts | 15 + .../utility/granular-permissios.utility.ts | 75 ++ .../utility/group-permissions.utility.ts | 217 ++++ server/src/modules/users/users.module.ts | 7 +- .../src/services/app_import_export.service.ts | 28 - server/src/services/apps.service.ts | 90 +- server/src/services/auth.service.ts | 48 +- server/src/services/folders.service.ts | 184 ++-- .../services/granular_permissions.service.ts | 254 +++++ .../src/services/group_permissions.service.ts | 516 --------- .../services/group_permissions.service.v2.ts | 278 +++++ server/src/services/metadata.service.ts | 26 +- .../services/organization_users.service.ts | 31 +- server/src/services/organizations.service.ts | 151 ++- .../services/permissions-ability.service.ts | 90 ++ server/src/services/seeds.service.ts | 56 +- server/src/services/user-role.service.ts | 148 +++ server/src/services/users.service.ts | 366 ++----- server/tsconfig.json | 4 +- 146 files changed, 8896 insertions(+), 1898 deletions(-) create mode 100644 frontend/src/ManageGranularAccess/AddEditResourceModal/AddEditResourcePermissionsModal.jsx create mode 100644 frontend/src/ManageGranularAccess/AddEditResourceModal/AppPermissionActionContainer.jsx create mode 100644 frontend/src/ManageGranularAccess/AddResourcePermissionsMenu.jsx create mode 100644 frontend/src/ManageGranularAccess/AppResourcePermission.jsx create mode 100644 frontend/src/ManageGranularAccess/index.jsx create mode 100644 frontend/src/ManageGroupPermissionResourcesV2/ChangeRoleModal.jsx create mode 100644 frontend/src/ManageGroupPermissionResourcesV2/constant.js create mode 100644 frontend/src/ManageGroupPermissionResourcesV2/grpPermissionResc.theme.scss create mode 100644 frontend/src/ManageGroupPermissionResourcesV2/index.jsx create mode 100644 frontend/src/ManageGroupPermissionsV2/ErrorModal/ErrorModal.jsx create mode 100644 frontend/src/ManageGroupPermissionsV2/ManageGroupPermissionsV2.jsx create mode 100644 frontend/src/ManageGroupPermissionsV2/ResourceChip.jsx create mode 100644 frontend/src/ManageGroupPermissionsV2/groupPermissions.theme.scss create mode 100644 frontend/src/_services/groupPermission.v2.service.js create mode 100644 frontend/src/_styles/groups-permissions.scss create mode 100644 frontend/src/_ui/Icon/solidIcons/GranularAccess.jsx create mode 100644 frontend/src/_ui/Icon/solidIcons/UserGear.jsx create mode 100644 frontend/src/_ui/Icon/solidIcons/UserGroups.jsx create mode 100644 frontend/src/_ui/Modal/AppsSelect.jsx create mode 100644 frontend/src/_ui/Modal/appSelect.theme.scss create mode 100644 server/migrations/1714015513342-AddGroupPermissionsTable.ts create mode 100644 server/migrations/1714015541245-AddGroupUsersTable.ts create mode 100644 server/migrations/1714015564318-AddGranularPermissionsTable.ts create mode 100644 server/migrations/1714015596201-AddAppsGroupPermissionsTable.ts create mode 100644 server/migrations/1714015615904-AddGroupAppsTable.ts create mode 100644 server/migrations/1720352990850-CreateDefaultGroupInExistingWorkspace.ts create mode 100644 server/migrations/1720365772516-AddingUsersToRespectiveRolesBuilderAndEndUsers.ts create mode 100644 server/migrations/1720434737529-MigrateCustomGroupToNewUserGroup.ts create mode 100644 server/migrations/1720513124281-DropGroupPermissionsOlderRelatedTables.ts create mode 100644 server/src/constants/global.constant.ts delete mode 100644 server/src/controllers/group_permissions.controller.ts create mode 100644 server/src/controllers/group_permissions.controller.v2.ts create mode 100644 server/src/dto/granular-permissions.dto.ts create mode 100644 server/src/dto/group_permissions.dto.ts create mode 100644 server/src/entities/apps_group_permissions.entity.ts create mode 100644 server/src/entities/granular_permissions.entity.ts create mode 100644 server/src/entities/group_apps.entity.ts create mode 100644 server/src/entities/group_permissions.entity.ts create mode 100644 server/src/entities/group_users.entity.ts create mode 100644 server/src/helpers/db-utility/db-search.helper.ts create mode 100644 server/src/helpers/db-utility/db-utility.interface.ts create mode 100644 server/src/modules/casl/abilities/data-queries-ability.factory.ts delete mode 100644 server/src/modules/group_permissions/group_permissions.module.ts create mode 100644 server/src/modules/organizations/constant/constants.ts create mode 100644 server/src/modules/permissions/constants/permissions-ability.constant.ts create mode 100644 server/src/modules/permissions/interface/permissions-ability.interface.ts create mode 100644 server/src/modules/permissions/permissions.module.ts create mode 100644 server/src/modules/permissions/utility/permission-ability.utility.ts create mode 100644 server/src/modules/user_resource_permissions/constants/granular-permissions.constant.ts create mode 100644 server/src/modules/user_resource_permissions/constants/group-permissions.constant.ts create mode 100644 server/src/modules/user_resource_permissions/interface/granular-permissions.interface.ts create mode 100644 server/src/modules/user_resource_permissions/interface/group-permissions.interface.ts create mode 100644 server/src/modules/user_resource_permissions/services/group-permissions.utility.service.ts create mode 100644 server/src/modules/user_resource_permissions/user_resource_permissions.module.ts create mode 100644 server/src/modules/user_resource_permissions/utility/granular-permissios.utility.ts create mode 100644 server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts create mode 100644 server/src/services/granular_permissions.service.ts delete mode 100644 server/src/services/group_permissions.service.ts create mode 100644 server/src/services/group_permissions.service.v2.ts create mode 100644 server/src/services/permissions-ability.service.ts create mode 100644 server/src/services/user-role.service.ts diff --git a/.vscode/settings.json b/.vscode/settings.json index 24a4397851..35cab5fefc 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -23,5 +23,6 @@ ], "url": "https://raw.githubusercontent.com/ToolJet/ToolJet/develop/plugins/schemas/manifest.schema.json" } - ] + ], + "CodeGPT.apiKey": "CodeGPT Plus Beta" } \ No newline at end of file diff --git a/cypress-tests/cypress/constants/texts/manageGroups.js b/cypress-tests/cypress/constants/texts/manageGroups.js index 2f41ac7648..d608c96cdf 100644 --- a/cypress-tests/cypress/constants/texts/manageGroups.js +++ b/cypress-tests/cypress/constants/texts/manageGroups.js @@ -4,7 +4,7 @@ export const groupsText = { tableHeader: "Name", allUsers: "All users", admin: "Admin", - cardTitle: "Add new group", + cardTitle: "Create new group", cancelButton: "Cancel", createGroupButton: "Create Group", groupNameExistToast: "Group name already exist", diff --git a/frontend/assets/translations/en.json b/frontend/assets/translations/en.json index 4ea8ea391a..2536e1f576 100644 --- a/frontend/assets/translations/en.json +++ b/frontend/assets/translations/en.json @@ -9,6 +9,7 @@ "search": "Search", "update": "Update", "delete": "Delete", + "remove":"Remove", "add": "Add", "view": "View", "create": "Create", @@ -269,7 +270,7 @@ "userGroups": "User Groups", "createNewGroup": "Create new group", "updateGroup": "Update group", - "addNewGroup": "Add new group", + "addNewGroup": "Create new group", "enterName": "Enter group name", "createGroup": "Create Group", "name": "Name" diff --git a/frontend/ee/components/UsersPage/UsersTable.jsx b/frontend/ee/components/UsersPage/UsersTable.jsx index 64fff66932..10ebff63a8 100644 --- a/frontend/ee/components/UsersPage/UsersTable.jsx +++ b/frontend/ee/components/UsersPage/UsersTable.jsx @@ -8,6 +8,7 @@ import SolidIcon from '@/_ui/Icon/SolidIcons'; import { Tooltip } from 'react-tooltip'; import UsersActionMenu from './UsersActionMenu'; import { humanizeifDefaultGroupName, decodeEntities } from '@/_helpers/utils'; +import { ToolTip } from '@/_components/ToolTip'; const UsersTable = ({ isLoading, @@ -34,10 +35,10 @@ const UsersTable = ({ {translator('header.organization.menus.manageUsers.name', 'Name')} - - {translator('header.organization.menus.manageUsers.email', 'Email')} + + User role - Groups + Custom groups {users && users[0]?.status ? ( {translator('header.organization.menus.manageUsers.status', 'Status')} @@ -90,22 +91,20 @@ const UsersTable = ({ user.last_name ? user.last_name[0] : '' }`} /> - - {decodeEntities(user.name)} - +
+ + {decodeEntities(user.name)} + + + {user.email} + +
- - - {user.email} - - - + group.name)} isRole={true} /> + group.name)} /> {user.status && ( { +const GroupChipTD = ({ groups = [], isRole = false }) => { const [showAllGroups, setShowAllGroups] = useState(false); const groupsListRef = useRef(); @@ -213,20 +212,23 @@ const GroupChipTD = ({ groups = [] }) => { return arr; } - const orderedArray = moveValuesToLast(groups, ['all_users', 'admin']); + const orderedArray = groups; const toggleAllGroupsList = (e) => { setShowAllGroups(!showAllGroups); }; const renderGroupChip = (group, index) => ( - - {humanizeifDefaultGroupName(group)} - + + + {humanizeifDefaultGroupName(group)} + + ); return ( { @@ -235,28 +237,31 @@ const GroupChipTD = ({ groups = [] }) => { className={cx('text-muted groups-name-cell', { 'groups-hover': orderedArray.length > 2 })} >
- {orderedArray.slice(0, 2).map((group, index) => { - if (orderedArray.length <= 2) { - return renderGroupChip(group, index); - } + {orderedArray.length === 0 ? ( +
-
+ ) : ( + orderedArray.slice(0, 2).map((group, index) => { + if (orderedArray.length <= 2) { + return renderGroupChip(group, index); + } - if (orderedArray.length > 2) { - if (index === 1) { + if (orderedArray.length > 2 && index === 1) { return ( - <> - - {' '} - +{orderedArray.length - 1} more - + + {renderGroupChip(group, index)} + +{orderedArray.length - 2} more {showAllGroups && ( -
{groups.map((group, index) => renderGroupChip(group, index))}
+
+ {orderedArray.slice(2).map((group, index) => renderGroupChip(group, index))} +
)} - +
); } + return renderGroupChip(group, index); - } - })} + }) + )}
); diff --git a/frontend/src/App/App.jsx b/frontend/src/App/App.jsx index b9652f2279..5b2d0e2b66 100644 --- a/frontend/src/App/App.jsx +++ b/frontend/src/App/App.jsx @@ -36,9 +36,9 @@ import { useAppDataStore } from '@/_stores/appDataStore'; import cx from 'classnames'; import useAppDarkMode from '@/_hooks/useAppDarkMode'; import { ManageOrgUsers } from '@/ManageOrgUsers'; -import { ManageGroupPermissions } from '@/ManageGroupPermissions'; import OrganizationLogin from '@/_components/OrganizationLogin/OrganizationLogin'; import { ManageOrgVars } from '@/ManageOrgVars'; +import { ManageGroupPermissionsV2 } from '@/ManageGroupPermissionsV2/ManageGroupPermissionsV2'; import { setFaviconAndTitle } from '@white-label/whiteLabelling'; const AppWrapper = (props) => { @@ -310,7 +310,7 @@ class AppComponent extends React.Component { path="groups" element={ - + } /> diff --git a/frontend/src/Editor/Editor.jsx b/frontend/src/Editor/Editor.jsx index ae0adffb0e..314c259b69 100644 --- a/frontend/src/Editor/Editor.jsx +++ b/frontend/src/Editor/Editor.jsx @@ -223,12 +223,15 @@ const EditorComponent = (props) => { // Subscribe to changes in the current session using RxJS observable pattern const subscription = authenticationService.currentSession.subscribe((currentSession) => { - if (currentUser && currentSession?.group_permissions) { + if (currentUser && (currentSession?.group_permissions || currentSession?.role)) { const userVars = { email: currentUser.email, firstName: currentUser.first_name, lastName: currentUser.last_name, - groups: currentSession.group_permissions?.map((group) => group.group), + groups: currentSession?.group_permissions + ? ['all_users', ...currentSession.group_permissions.map((group) => group.name)] + : ['all_users'], + role: currentSession?.role?.name, }; const appUserDetails = { diff --git a/frontend/src/Editor/Viewer.jsx b/frontend/src/Editor/Viewer.jsx index 8597127db4..bb2a81b19f 100644 --- a/frontend/src/Editor/Viewer.jsx +++ b/frontend/src/Editor/Viewer.jsx @@ -280,13 +280,16 @@ class ViewerComponent extends React.Component { const currentUser = this.state.currentUser; let userVars = {}; - + const currentSessionValue = authenticationService.currentSessionValue; if (currentUser) { userVars = { email: currentUser.email, firstName: currentUser.first_name, lastName: currentUser.last_name, - groups: authenticationService.currentSessionValue?.group_permissions.map((group) => group.group), + groups: currentSessionValue?.group_permissions + ? ['All Users', ...currentSessionValue.group_permissions.map((group) => group.name)] + : ['All Users'], + role: currentSessionValue?.role?.name, }; } @@ -550,15 +553,18 @@ class ViewerComponent extends React.Component { const versionId = this.props.versionId; if (currentSession?.load_app && slug) { - if (currentSession?.group_permissions) { + if (currentSession?.group_permissions || currentSession?.role) { useAppDataStore.getState().actions.setAppId(appId); const currentUser = currentSession.current_user; + const currentSessionValue = authenticationService.currentSessionValue; const userVars = { email: currentUser.email, firstName: currentUser.first_name, lastName: currentUser.last_name, - groups: currentSession?.group_permissions?.map((group) => group.group), + groups: currentSessionValue?.group_permissions + ? ['All Users', ...currentSessionValue.group_permissions.map((group) => group.name)] + : ['All Users'], }; this.props.setCurrentState({ globals: { diff --git a/frontend/src/HomePage/HomePage.jsx b/frontend/src/HomePage/HomePage.jsx index 945987efd8..e11f5c2ed8 100644 --- a/frontend/src/HomePage/HomePage.jsx +++ b/frontend/src/HomePage/HomePage.jsx @@ -303,23 +303,28 @@ class HomePageComponent extends React.Component { canUserPerform(user, action, app) { const currentSession = authenticationService.currentSessionValue; + const userPermissions = currentSession.user_permissions; + const appPermission = currentSession.app_group_permissions; + const canUpdateApp = + appPermission && (appPermission.is_all_editable || appPermission.editable_apps_id.includes(app?.id)); + const canReadApp = + (appPermission && canUpdateApp) || + appPermission.is_all_viewable || + appPermission.viewable_apps_id.includes(app?.id); let permissionGrant; switch (action) { case 'create': - permissionGrant = this.canAnyGroupPerformAction('app_create', currentSession.group_permissions); + permissionGrant = currentSession.user_permissions.app_create; break; case 'read': + permissionGrant = this.isUserOwnerOfApp(user, app) || canReadApp; + break; case 'update': - permissionGrant = - this.canAnyGroupPerformActionOnApp(action, currentSession.app_group_permissions, app) || - this.isUserOwnerOfApp(user, app); + permissionGrant = canUpdateApp || this.isUserOwnerOfApp(user, app); break; case 'delete': - permissionGrant = - this.canAnyGroupPerformActionOnApp('delete', currentSession.app_group_permissions, app) || - this.canAnyGroupPerformAction('app_delete', currentSession.group_permissions) || - this.isUserOwnerOfApp(user, app); + permissionGrant = currentSession.user_permissions.app_delete || this.isUserOwnerOfApp(user, app); break; default: permissionGrant = false; @@ -363,15 +368,15 @@ class HomePageComponent extends React.Component { }; canCreateFolder = () => { - return this.canAnyGroupPerformAction('folder_create', authenticationService.currentSessionValue?.group_permissions); + return authenticationService.currentSessionValue?.user_permissions?.folder_c_r_u_d; }; canDeleteFolder = () => { - return this.canAnyGroupPerformAction('folder_delete', authenticationService.currentSessionValue?.group_permissions); + return authenticationService.currentSessionValue?.user_permissions?.folder_c_r_u_d; }; canUpdateFolder = () => { - return this.canAnyGroupPerformAction('folder_update', authenticationService.currentSessionValue?.group_permissions); + return authenticationService.currentSessionValue?.user_permissions?.folder_c_r_u_d; }; cancelDeleteAppDialog = () => { diff --git a/frontend/src/ManageGranularAccess/AddEditResourceModal/AddEditResourcePermissionsModal.jsx b/frontend/src/ManageGranularAccess/AddEditResourceModal/AddEditResourcePermissionsModal.jsx new file mode 100644 index 0000000000..3424779e03 --- /dev/null +++ b/frontend/src/ManageGranularAccess/AddEditResourceModal/AddEditResourcePermissionsModal.jsx @@ -0,0 +1,145 @@ +import React from 'react'; +import '../../ManageGroupPermissionsV2/groupPermissions.theme.scss'; +import ModalBase from '@/_ui/Modal'; +import { AppsSelect } from '@/_ui/Modal/AppsSelect'; +import AppPermissionsActions from './AppPermissionActionContainer'; + +function AddEditResourcePermissionsModal({ + handleClose, + handleConfirm, + updateParentState, + resourceType, + currentState, + show, + title, + confirmBtnProps, + disableBuilderLevelUpdate, + selectedApps, + setSelectedApps, + addableApps, + darkMode, +}) { + const isCustom = currentState?.isCustom; + const newPermissionName = currentState?.newPermissionName; + const initialPermissionState = currentState?.initialPermissionState; + const errors = currentState?.errors; + const isAll = currentState?.isAll; + + return ( + +
+ +
+ { + if (e.target.value?.length < 51) + updateParentState(() => ({ + newPermissionName: e.target.value, + })); + }} + /> + {errors['permissionName']} +
+
+
Permission name must be unique and max 50 characters
+
+
+ {/* Till here */} +
+ + { + updateParentState((prevState) => ({ + initialPermissionState: { + ...prevState.initialPermissionState, + canEdit: !prevState.initialPermissionState.canEdit, + canView: prevState.initialPermissionState.canEdit, + ...(prevState.initialPermissionState.canEdit && { hideFromDashboard: false }), + }, + })); + }} + handleClickView={() => { + updateParentState((prevState) => ({ + initialPermissionState: { + ...prevState.initialPermissionState, + canView: !prevState.initialPermissionState.canView, + canEdit: prevState.initialPermissionState.canView, + ...(prevState.initialPermissionState.canEdit && { hideFromDashboard: false }), + }, + })); + }} + handleHideFromDashboard={() => { + updateParentState((prevState) => ({ + initialPermissionState: { + ...initialPermissionState, + hideFromDashboard: !prevState.initialPermissionState.hideFromDashboard, + }, + })); + }} + disableBuilderLevelUpdate={disableBuilderLevelUpdate} + initialPermissionState={initialPermissionState} + /> +
+ +
+ +
+ + + +
+
+
+ ); +} + +export default AddEditResourcePermissionsModal; diff --git a/frontend/src/ManageGranularAccess/AddEditResourceModal/AppPermissionActionContainer.jsx b/frontend/src/ManageGranularAccess/AddEditResourceModal/AppPermissionActionContainer.jsx new file mode 100644 index 0000000000..cc0ad15c1a --- /dev/null +++ b/frontend/src/ManageGranularAccess/AddEditResourceModal/AppPermissionActionContainer.jsx @@ -0,0 +1,67 @@ +import React from 'react'; +import '../../ManageGroupPermissionsV2/groupPermissions.theme.scss'; + +function AppPermissionsActions({ + handleClickEdit, + handleClickView, + handleHideFromDashboard, + disableBuilderLevelUpdate, + initialPermissionState, +}) { + return ( +
+
+ +
+
+ + +
+
+ ); +} + +export default AppPermissionsActions; diff --git a/frontend/src/ManageGranularAccess/AddResourcePermissionsMenu.jsx b/frontend/src/ManageGranularAccess/AddResourcePermissionsMenu.jsx new file mode 100644 index 0000000000..26c750c67c --- /dev/null +++ b/frontend/src/ManageGranularAccess/AddResourcePermissionsMenu.jsx @@ -0,0 +1,61 @@ +import React from 'react'; +import '../ManageGroupPermissionsV2/groupPermissions.theme.scss'; +import { ButtonSolid } from '@/_ui/AppButton/AppButton'; +import { OverlayTrigger } from 'react-bootstrap'; + +function AddResourcePermissionsMenu({ openAddPermissionModal, resourcesOptions, currentGroupPermission }) { + return resourcesOptions.length > 1 ? ( + + { + openAddPermissionModal(); + }} + > + Apps + +
+ } + > +
+ + Add permission + +
+ + ) : ( +
+ { + openAddPermissionModal(); + }} + > + Add apps + +
+ ); +} + +export default AddResourcePermissionsMenu; diff --git a/frontend/src/ManageGranularAccess/AppResourcePermission.jsx b/frontend/src/ManageGranularAccess/AppResourcePermission.jsx new file mode 100644 index 0000000000..0c93d0b70c --- /dev/null +++ b/frontend/src/ManageGranularAccess/AppResourcePermission.jsx @@ -0,0 +1,151 @@ +import React, { useState } from 'react'; +import GroupChipTD from '@/ManageGroupPermissionsV2/ResourceChip'; +import '../ManageGroupPermissionsV2/groupPermissions.theme.scss'; +import SolidIcon from '@/_ui/Icon/SolidIcons'; +import { ButtonSolid } from '@/_ui/AppButton/AppButton'; +import { OverlayTrigger, Tooltip } from 'react-bootstrap'; +function AppResourcePermissions({ + updateOnlyGranularPermissions, + permissions, + currentGroupPermission, + openEditPermissionModal, +}) { + const [onHover, setHover] = useState(false); + const [notClickable, setNotClickable] = useState(false); + const isRoleGroup = currentGroupPermission.name == 'admin'; + const disableEditUpdate = currentGroupPermission.name == 'end-user'; + const appsPermissions = permissions.appsGroupPermissions; + let apps = appsPermissions?.groupApps?.map((app) => { + return app?.app?.name; + }); + if (apps.length == 0 || permissions.isAll) apps = ['All apps']; + + return ( +
{ + setHover(true); + }} + onMouseOut={() => { + setHover(false); + }} + onClick={() => { + !isRoleGroup && !notClickable && openEditPermissionModal(permissions); + }} + > +
+ +
{permissions.name}
+
+
+
+ + + +
+
+
+ +
+
+ { + openEditPermissionModal(permissions); + }} + disabled={isRoleGroup} + /> +
+
+ ); +} + +export default AppResourcePermissions; diff --git a/frontend/src/ManageGranularAccess/index.jsx b/frontend/src/ManageGranularAccess/index.jsx new file mode 100644 index 0000000000..18b6b559e1 --- /dev/null +++ b/frontend/src/ManageGranularAccess/index.jsx @@ -0,0 +1,535 @@ +import { ButtonSolid } from '@/_ui/AppButton/AppButton'; +import SolidIcon from '@/_ui/Icon/SolidIcons'; +import React from 'react'; +import { OverlayTrigger, Tooltip } from 'react-bootstrap'; +import { withTranslation } from 'react-i18next'; +import { groupPermissionV2Service } from '@/_services'; +import { toast } from 'react-hot-toast'; +import '../ManageGroupPermissionsV2/groupPermissions.theme.scss'; +import ChangeRoleModal from '@/ManageGroupPermissionResourcesV2/ChangeRoleModal'; +import AppResourcePermissions from '@/ManageGranularAccess/AppResourcePermission'; +import AddResourcePermissionsMenu from '@/ManageGranularAccess/AddResourcePermissionsMenu'; +import { ConfirmDialog } from '@/_components'; +import AddEditResourcePermissionsModal from '@/ManageGranularAccess/AddEditResourceModal/AddEditResourcePermissionsModal'; + +import { ToolTip } from '@/_components/ToolTip'; +class ManageGranularAccessComponent extends React.Component { + constructor(props) { + super(props); + + this.state = { + isLoading: false, + granularPermissions: [], + showAddPermissionModal: false, + errors: {}, + values: {}, + customSelected: true, + selectedApps: [], + type: null, + newPermissionName: null, + initialPermissionState: { + canEdit: false, + canView: false, + hideFromDashboard: false, + }, + currentEditingPermissions: null, + isAll: true, + isCustom: false, + addableApps: [], + modalType: 'add', + modalTitle: 'Add app permissions', + showAutoRoleChangeModal: false, + autoRoleChangeModalMessage: '', + autoRoleChangeModalList: [], + autoRoleChangeMessageType: '', + updateParam: {}, + updatingPermission: {}, + updateType: '', + deleteConfirmationModal: false, + deletingPermissions: false, + }; + } + + componentDidMount() { + this.fetchAppsCanBeAdded(); + this.fetchGranularPermissions(this.props.groupPermissionId); + } + + fetchAppsCanBeAdded = () => { + groupPermissionV2Service + .fetchAddableApps() + .then((data) => { + const addableApps = data.map((app) => { + return { + name: app.name, + value: app.id, + label: app.name, + }; + }); + this.setState({ + addableApps, + }); + }) + .catch((err) => { + toast.error(err.error); + }); + }; + + fetchGranularPermissions = (groupPermissionId) => { + this.setState({ + isLoading: true, + }); + groupPermissionV2Service.fetchGranularPermissions(groupPermissionId).then((data) => { + this.setState({ + granularPermissions: data, + isLoading: false, + }); + }); + }; + + deleteGranularPermissions = () => { + const { currentEditingPermissions } = this.state; + this.setState({ + deleteGranularPermissions: true, + }); + groupPermissionV2Service + .deleteGranularPermission(currentEditingPermissions.id) + .then(() => { + toast.success('Deleted permission successfully'); + this.fetchGranularPermissions(this.props.groupPermissionId); + this.closeAddPermissionModal(); + }) + .catch((err) => { + toast.error(err.error); + }) + .finally(() => { + this.setState({ + deleteConfirmationModal: false, + deleteGranularPermissions: false, + }); + }); + }; + + createGranularPermissions = () => { + const { initialPermissionState, isAll, newPermissionName, isCustom, selectedApps } = this.state; + if (isCustom && selectedApps.length == 0) { + toast.error('Please select the apps'); + return; + } + const body = { + name: newPermissionName, + type: 'app', + groupId: this.props.groupPermissionId, + isAll: isAll, + createAppsPermissionsObject: { + ...initialPermissionState, + resourcesToAdd: selectedApps.filter((apps) => !apps?.isAllField)?.map((option) => ({ appId: option.value })), + }, + }; + groupPermissionV2Service + .createGranularPermission(body) + .then(() => { + this.fetchGranularPermissions(this.props.groupPermissionId); + this.closeAddPermissionModal(); + }) + .catch(({ error }) => { + this.closeAddPermissionModal(); + if (error?.error) { + this.props.updateParentState({ + showEditRoleErrorModal: true, + errorTitle: error?.title ? error?.title : 'Cannot add granular permissions', + errorMessage: error.error, + errorIconName: 'usergear', + errorListItems: error.data, + }); + } + toast.error(error); + }); + // .then(()) + }; + + openEditPermissionModal = (granularPermission) => { + const currentApps = granularPermission?.appsGroupPermissions?.groupApps; + const appsGroupPermission = granularPermission?.appsGroupPermissions; + this.setState({ + currentEditingPermissions: granularPermission, + modalTitle: 'Edit app permissions', + showAddPermissionModal: true, + modalType: 'edit', + isAll: !!granularPermission.isAll, + isCustom: !granularPermission.isAll, + newPermissionName: granularPermission.name, + initialPermissionState: { + canEdit: appsGroupPermission.canEdit, + canView: appsGroupPermission.canView, + hideFromDashboard: appsGroupPermission.hideFromDashboard, + }, + + selectedApps: + currentApps?.length > 0 + ? currentApps?.map(({ app }) => { + return { + name: app.name, + value: app.id, + label: app.name, + }; + }) + : [], + }); + }; + + updateOnlyGranularPermissions = (permission, actions = {}, allowRoleChange) => { + const body = { + actions: actions, + allowRoleChange, + }; + groupPermissionV2Service + .updateGranularPermission(permission.id, body) + .then(() => { + this.fetchGranularPermissions(this.props.groupPermissionId); + this.closeAddPermissionModal(); + toast.success('Permission updated successfully'); + }) + .catch(({ error }) => { + if (error?.type) { + this.setState({ + showAutoRoleChangeModal: true, + autoRoleChangeModalMessage: error?.error, + autoRoleChangeModalList: error?.data, + autoRoleChangeMessageType: error?.type, + updateParam: actions, + updatingPermission: permission, + updateType: 'ONLY_PERMISSIONS', + }); + return; + } + this.props.updateParentState({ + showEditRoleErrorModal: true, + errorTitle: error?.title ? error?.title : 'Cannot remove last admin', + errorMessage: error.error, + errorIconName: 'usergear', + errorListItems: error.data, + }); + }); + }; + + updateGranularPermissions = (allowRoleChange) => { + const { currentEditingPermissions, selectedApps, newPermissionName, isAll, initialPermissionState } = this.state; + const currentResource = currentEditingPermissions?.appsGroupPermissions?.groupApps?.map((app) => { + return app.app.id; + }); + const selectedResource = selectedApps.filter((apps) => !apps?.isAllField)?.map((resource) => resource.value); + const resourcesToAdd = selectedResource + ?.filter((item) => !currentResource.includes(item)) + .map((id) => { + return { + appId: id, + }; + }); + const appsToDelete = currentResource?.filter((item) => !selectedResource?.includes(item)); + const groupAppsToDelete = currentEditingPermissions?.appsGroupPermissions?.groupApps?.filter((groupApp) => + appsToDelete?.includes(groupApp.appId) + ); + const resourcesToDelete = groupAppsToDelete?.map(({ id }) => { + return { + id: id, + }; + }); + const body = { + name: newPermissionName, + isAll: isAll, + actions: initialPermissionState, + resourcesToAdd, + resourcesToDelete, + allowRoleChange, + }; + + groupPermissionV2Service + .updateGranularPermission(currentEditingPermissions.id, body) + .then(() => { + this.fetchGranularPermissions(this.props.groupPermissionId); + this.closeAddPermissionModal(); + toast.success('Permission updated successfully'); + }) + .catch(({ error }) => { + if (error?.type) { + this.setState({ + showEditRoleErrorModal: false, + showAutoRoleChangeModal: true, + autoRoleChangeModalMessage: error?.error, + autoRoleChangeModalList: error?.data, + autoRoleChangeMessageType: error?.type, + updateType: '', + showAddPermissionModal: false, + }); + return; + } + toast.error(error.error); + this.closeAddPermissionModal(); + }); + }; + showPermissionText = (groupPermission) => { + const text = + groupPermission.name === 'admin' + ? 'Admin has edit access to all apps. These are not editable' + : 'End-user can only have permission to view apps'; + return ( +
+

+ {text} + + read documentation + {' '} + to know more +

+
+ ); + }; + + openAddPermissionModal = () => { + this.setState((prevState) => ({ + showAddPermissionModal: true, + initialPermissionState: { ...prevState.initialPermissionState, canView: true }, + isAll: true, + })); + }; + + closeAddPermissionModal = () => { + this.setState({ + currentEditingPermissions: null, + modalTitle: 'Add app permissions', + showAddPermissionModal: false, + modalType: 'add', + isAll: false, + isCustom: false, + newPermissionName: '', + initialPermissionState: { + canEdit: false, + canView: false, + hideFromDashboard: false, + }, + selectedApps: [], + }); + }; + + setSelectedApps = (values) => { + this.setState({ selectedApps: values }); + }; + + handleAutoRoleChangeModalClose = () => { + this.setState({ + showAutoRoleChangeModal: false, + autoRoleChangeModalMessage: '', + autoRoleChangeModalList: [], + autoRoleChangeMessageType: '', + updateParam: {}, + isLoading: false, + updatingPermission: {}, + updateType: '', + }); + }; + handleConfirmAutoRoleChangeGroupUpdate = () => { + this.updateGranularPermissions(true); + this.handleAutoRoleChangeModalClose(); + }; + + updateState = (stateUpdater) => { + this.setState((prevState) => stateUpdater(prevState)); + }; + + handleConfirmAutoRoleChangeOnlyGroupUpdate = () => { + const { updateParam, updatingPermission } = this.state; + this.updateOnlyGranularPermissions(updatingPermission, updateParam, true); + this.handleAutoRoleChangeModalClose(); + }; + + render() { + const { + isEmpty, + showAddPermissionModal, + errors, + selectedApps, + initialPermissionState, + isAll, + isCustom, + granularPermissions, + isLoading, + addableApps, + modalTitle, + modalType, + newPermissionName, + showAutoRoleChangeModal, + autoRoleChangeModalMessage, + autoRoleChangeModalList, + autoRoleChangeMessageType, + updateParam, + updatingPermission, + updateType, + deleteConfirmationModal, + deletingPermissions, + } = this.state; + + const resourcesOptions = ['Apps']; + const currentGroupPermission = this.props?.groupPermission; + const isRoleGroup = currentGroupPermission.name == 'admin'; + const defaultGroup = currentGroupPermission.type === 'default'; + const showPermissionInfo = currentGroupPermission.name == 'admin' || currentGroupPermission.name == 'end-user'; + const disableEditUpdate = currentGroupPermission.name == 'end-user'; + const addPermissionTooltipMessage = !newPermissionName + ? 'Please input permissions name' + : isCustom && selectedApps.length === 0 + ? 'Please select apps or select all apps option' + : ''; + return ( +
+ this.deleteGranularPermissions()} + onCancel={() => { + this.setState({ deleteConfirmationModal: false, deletingPermissions: false }); + }} + darkMode={this.props.darkMode} + /> + + { + this.updateGranularPermissions(); + } + } + updateParentState={this.updateState} + resourceType="app" + currentState={this.state} + show={showAddPermissionModal} + title={ +
+ + + +
+ {modalTitle} +
+ {modalType === 'edit' && !isRoleGroup && ( +
+ { + this.setState({ + deleteConfirmationModal: true, + showAddPermissionModal: false, + }); + }} + /> +
+ )} +
+ } + confirmBtnProps={{ + title: `${modalType === 'edit' ? 'Update' : 'Add'}`, + iconLeft: 'plus', + disabled: (modalType === 'add' && !newPermissionName) || (isCustom && selectedApps.length === 0), + tooltipMessage: addPermissionTooltipMessage, + }} + disableBuilderLevelUpdate={disableEditUpdate} + selectedApps={selectedApps} + setSelectedApps={this.setSelectedApps} + addableApps={addableApps} + darkMode={this.props.darkMode} + /> + {!granularPermissions.length ? ( +
+
+ +
+

No permissions added yet

+

+ Add assets to configure granular, asset-level permissions for this user group +

+ +
+ ) : ( + <> + {showPermissionInfo && this.showPermissionText(currentGroupPermission)} +
+

+ {'Name'} +

+

+ {'Permission'} +

+

+ {'Resource'} +

+
+
+ {isLoading ? ( + + +
+
+
+ + +
+ + +
+ + + ) : ( + <> + {granularPermissions.map((permissions, index) => ( + + ))} + + )} +
+
+ +
+ + )} +
+ ); + } +} + +export const ManageGranularAccess = withTranslation()(ManageGranularAccessComponent); diff --git a/frontend/src/ManageGroupPermissionResourcesV2/ChangeRoleModal.jsx b/frontend/src/ManageGroupPermissionResourcesV2/ChangeRoleModal.jsx new file mode 100644 index 0000000000..29da3bf6e7 --- /dev/null +++ b/frontend/src/ManageGroupPermissionResourcesV2/ChangeRoleModal.jsx @@ -0,0 +1,75 @@ +import React from 'react'; +import { useTranslation } from 'react-i18next'; +import ModalBase from '@/_ui/Modal'; +import '../ManageGroupPermissionsV2/groupPermissions.theme.scss'; + +function ChangeRoleModal({ + showAutoRoleChangeModal, + autoRoleChangeModalList, + autoRoleChangeMessageType, + handleAutoRoleChangeModalClose, + handleConfirmation, + darkMode, + isLoading, +}) { + const { t } = useTranslation(); + + const renderUserChangeMessage = (type) => { + const changePermissionMessage = ( +

+ Granting this permission to the user group will result in a role change for the following user(s) from{' '} + end-users to builders. Are you sure you want to continue? +

+ ); + const addUserMessage = ( +

+ Adding the following user(s) to this group will change their default group from end-users to{' '} + builders. Are you sure you want to continue? +

+ ); + const message = type === 'USER_ROLE_CHANGE_ADD_USERS' ? addUserMessage : changePermissionMessage; + return message; + }; + + const renderUserChangeTitle = (type) => { + const addUserTitle = ( +
+ Add user(s) +
+ ); + const updatePermissionTitile = ( +
+ Change in user role +
+ ); + const message = type === 'USER_ROLE_CHANGE_ADD_USERS' ? addUserTitle : updatePermissionTitile; + return message; + }; + + return ( + + <> + {renderUserChangeMessage(autoRoleChangeMessageType)} +

+
+ {autoRoleChangeModalList.map((item, index) => ( +
+ {`${index + 1}. ${item}`} +
+ ))} +
+ +
+ ); +} + +export default ChangeRoleModal; diff --git a/frontend/src/ManageGroupPermissionResourcesV2/constant.js b/frontend/src/ManageGroupPermissionResourcesV2/constant.js new file mode 100644 index 0000000000..67f43536bf --- /dev/null +++ b/frontend/src/ManageGroupPermissionResourcesV2/constant.js @@ -0,0 +1,70 @@ +import React from 'react'; + +export const EDIT_ROLE_MESSAGE = { + admin: { + builder: () => { + return ( +
+

+ Changing your user group from admin to builder will revoke your access to settings. +

+

Are you sure you want to continue?

+
+ ); + }, + 'end-user': (isPaidPlan) => { + return ( +
+

+ Changing your user group from admin to end-user will revoke your access to settings. + {isPaidPlan && 'This will also affect the count of users covered by your plan.'} +

+

Are you sure you want to continue?

+
+ ); + }, + }, + builder: { + 'end-user': (isPaidPlan) => { + return ( +
+ {isPaidPlan && ( +

+ Changing user default group from builder to end-user will affect the count of users covered by your plan. +

+ )} +

+ This will also remove the user from any custom groups with builder-like permissions. +

+

Are you sure you want to continue?

+
+ ); + }, + }, + 'end-user': { + builder: (isPaidPlan) => { + return ( +
+ {isPaidPlan && ( +

+ Changing user default group from end-user to builder will affect the count of users covered by your plan. +

+ )} +

Are you sure you want to continue?

+
+ ); + }, + admin: (isPaidPlan) => { + return ( +
+ {isPaidPlan && ( +

+ Changing user default group from end-user to admin will affect the count of users covered by your plan. +

+ )} +

Are you sure you want to continue?

+
+ ); + }, + }, +}; diff --git a/frontend/src/ManageGroupPermissionResourcesV2/grpPermissionResc.theme.scss b/frontend/src/ManageGroupPermissionResourcesV2/grpPermissionResc.theme.scss new file mode 100644 index 0000000000..581cc3eced --- /dev/null +++ b/frontend/src/ManageGroupPermissionResourcesV2/grpPermissionResc.theme.scss @@ -0,0 +1,146 @@ +@import '../_styles/colors.scss'; + + +.check-label-disable{ + color: var(--slate10) !important; +} + +.info-container { + display: flex; + width: auto; + height: auto; + padding: 10px 12px 8px 12px; + border: 1px solid var(--slate5); + background: var(--slate2); + border-radius: 6px 6px 6px 6px; + margin-top: 13px; + + + .info-btn { + padding: 6px 0px 0px 0px; + margin-right: 5px; + flex: 0 0 24px; + } + + .message { + margin-left: 5px; + display: inline-block; + word-wrap: break-word; + width: auto; + height: auto; + font-size: 12px; + line-height: 13px; + color: var(--slate11); + + p{ + padding: 0; + margin: 0; + } + + .open-git-btn { + margin-top: 5px; + color: var(--indigo9); + font-size: 10px; + font-weight: 500; + display: inline-block; + + .open-icn { + margin-right: 2px; + } + } + } +} + +.search-user-group-btn { + width: 20px; + margin-left: 2px; + margin-right: 7px; + height: 20px; + padding: 0 0; + background: none !important; + background-color: none !important; + box-shadow: none; + +} + + +.searchbox-custom{ + .tj-common-search-input-user { + width: 600px; + .input-icon-addon { + padding-right: 8px; + padding-left: 8px; + + } + + input { + box-sizing: border-box; + display: flex; + flex-direction: row; + align-items: center; + padding: 4px 8px !important; + gap: 16px; + width: 600px !important; + height: 28px !important; + background: var(--base); + border: 1px solid var(--slate7); + border-radius: 6px; + color: var(--slate12); + padding-left: 33px !important; + + + ::placeholder { + color: var(--slate9); + margin-left: 5px !important; + padding-left: 5px !important; + background-color: red !important; + } + + &:hover { + background: var(--slate2); + border: 1px solid var(--slate8); + } + + &:active { + background: var(--indigo2); + border: 2px solid var(--indigo11); + box-shadow: 0px 0px 0px 2px #C6D4F9; + outline: none; + } + + &:focus-visible { + background: var(--slate2); + border: 1px solid var(--slate8); + border-radius: 6px; + outline: none; + padding-left: 12px !important; + } + + &:disabled { + background: var(--slate3); + border: 1px solid var(--slate7); + } + } + } + +} + + +.edit-role-confirm { + width: 350px; + + .modal-footer { + border-top: 1px solid var(--slate6);; + } + + .form-label{ + color: var(--slate11); + } +} + + +.permission-body { + .tj-text-xxsm{ + color: var(--slate11) + } +} \ No newline at end of file diff --git a/frontend/src/ManageGroupPermissionResourcesV2/index.jsx b/frontend/src/ManageGroupPermissionResourcesV2/index.jsx new file mode 100644 index 0000000000..f996216af8 --- /dev/null +++ b/frontend/src/ManageGroupPermissionResourcesV2/index.jsx @@ -0,0 +1,998 @@ +import React from 'react'; +import cx from 'classnames'; +import { groupPermissionV2Service, authenticationService } from '@/_services'; +import { toast } from 'react-hot-toast'; +import { Link } from 'react-router-dom'; +import { withTranslation } from 'react-i18next'; +import ErrorBoundary from '@/Editor/ErrorBoundary'; +import { Loader } from '../ManageSSO/Loader'; +import SolidIcon from '@/_ui/Icon/solidIcons/index'; +import BulkIcon from '@/_ui/Icon/bulkIcons/index'; +import { FilterPreview, MultiSelectUser } from '@/_components'; + +import { ButtonSolid } from '@/_ui/AppButton/AppButton'; +import ModalBase from '@/_ui/Modal'; +import Select from '@/_ui/Select'; +import { ManageGranularAccess } from '@/ManageGranularAccess'; +import './grpPermissionResc.theme.scss'; +import { EDIT_ROLE_MESSAGE } from './constant'; +import { SearchBox } from '@/_components/SearchBox'; +import EditRoleErrorModal from '@/ManageGroupPermissionsV2/ErrorModal/ErrorModal'; +import ChangeRoleModal from '@/ManageGroupPermissionResourcesV2/ChangeRoleModal'; +import { ToolTip } from '@/_components/ToolTip'; +class ManageGroupPermissionResourcesComponent extends React.Component { + constructor(props) { + super(props); + + this.state = { + isLoadingGroup: true, + isLoadingApps: true, + isAddingApps: false, + isLoadingUsers: true, + isAddingUsers: false, + groupPermission: null, + usersInGroup: [], + appsInGroup: [], + addableApps: [], + usersNotInGroup: [], + appsNotInGroup: [], + selectedAppIds: [], + removeAppIds: [], + currentTab: 'users', + selectedUsers: [], + isChangeRoleModalOpen: false, + updatingUserRole: null, + isAddUsersToRoleModalOpen: false, + isRoleGroup: false, + selectedNewRole: '', + showRoleEditMessage: false, + showUserSearchBox: false, + errorListItems: [], + errorMessage: '', + errorTitle: '', + showEditRoleErrorModal: false, + errorIconName: '', + showAutoRoleChangeModal: false, + autoRoleChangeModalMessage: '', + autoRoleChangeModalList: [], + autoRoleChangeMessageType: '', + updateParam: {}, + }; + } + + componentDidMount() { + if (this.props.groupPermissionId) this.fetchGroupAndResources(this.props.groupPermissionId); + } + + componentDidUpdate(prevProps) { + if (this.props.groupPermissionId && this.props.groupPermissionId !== prevProps.groupPermissionId) { + this.fetchGroupAndResources(this.props.groupPermissionId); + this.setState({ + showUserSearchBox: false, + }); + } + } + + fetchGroupPermission = (groupPermissionId) => { + groupPermissionV2Service.getGroup(groupPermissionId).then(({ group, isBuilderLevel }) => { + this.setState((prevState) => { + return { + isRoleGroup: group.type === 'default', + groupPermission: group, + currentTab: prevState.currentTab, + isLoadingGroup: false, + isBuilderLevel: isBuilderLevel, + }; + }); + }); + }; + + fetchGroupAndResources = (groupPermissionId) => { + this.setState({ isLoadingGroup: true }); + this.fetchGroupPermission(groupPermissionId); + this.fetchUsersInGroup(groupPermissionId); + }; + + userFullName = (user) => { + return `${user?.first_name} ${user?.last_name ?? ''}`; + }; + + searchUsersNotInGroup = async (query, groupPermissionId) => { + return new Promise((resolve, reject) => { + groupPermissionV2Service + .getUsersNotInGroup(query, groupPermissionId) + .then((users) => { + resolve( + users.map((user) => { + return { + name: `${this.userFullName(user)} (${user.email})`, + value: user.id, + first_name: user.firstName, + last_name: user.lastName, + email: user.email, + role: user?.userGroups?.group?.name, + }; + }) + ); + }) + .catch(reject); + }); + }; + + fetchUsersInGroup = (groupPermissionId, searchString = '') => { + groupPermissionV2Service.getUsersInGroup(groupPermissionId, searchString).then((data) => { + this.setState({ + usersInGroup: data, + isLoadingUsers: false, + }); + }); + }; + + clearErrorState = () => { + this.setState({ + errorMessage: '', + showEditRoleErrorModal: false, + errorListItems: [], + errorTitle: '', + errorIconName: '', + selectedUsers: [], + isLoadingUsers: false, + isAddingUsers: false, + }); + }; + + updateGroupPermission = (groupPermissionId, params, allowRoleChange) => { + const currentSession = authenticationService.currentSessionValue; + groupPermissionV2Service + .update(groupPermissionId, { ...params, allowRoleChange }) + .then(() => { + toast.success('Group permissions updated'); + this.fetchGroupPermission(groupPermissionId); + }) + .catch(({ error }) => { + if (error?.type) { + this.setState({ + showAutoRoleChangeModal: true, + autoRoleChangeModalMessage: error?.error, + autoRoleChangeModalList: error?.data, + autoRoleChangeMessageType: error?.type, + }); + return; + } + this.setState({ + errorMessage: error?.error, + showEditRoleErrorModal: true, + errorListItems: error?.data, + errorTitle: error?.title ? error?.title : 'Cannot add this permission to the group', + errorIconName: 'lock', + }); + }); + }; + + setSelectedUsers = (value) => { + this.setState({ + selectedUsers: value, + }); + }; + + setSelectedApps = (value) => { + this.setState({ + selectedAppIds: value, + }); + }; + + addSelectedUsersToGroup = (groupPermissionId, selectedUsers, allowRoleChange) => { + this.setState({ isAddingUsers: true }); + const body = { + userIds: selectedUsers.map((user) => user.value), + groupId: groupPermissionId, + allowRoleChange, + }; + groupPermissionV2Service + .addUsersInGroups(body) + .then(() => { + this.setState({ + selectedUsers: [], + isLoadingUsers: true, + isAddingUsers: false, + }); + toast.success('Users added to the group'); + this.fetchUsersInGroup(groupPermissionId); + }) + .catch(({ error }) => { + if (error?.type) { + this.setState({ + isLoadingUsers: false, + showAutoRoleChangeModal: true, + autoRoleChangeModalMessage: error?.error, + autoRoleChangeModalList: error?.data, + autoRoleChangeMessageType: error?.type, + }); + return; + } + this.setState({ + showEditRoleErrorModal: true, + errorTitle: error?.title, + errorMessage: error?.error, + errorIconName: 'usergear', + isAddingUsers: false, + }); + }); + }; + + removeUserFromGroup = (groupUserId) => { + const { groupPermission } = this.state; + groupPermissionV2Service + .deleteUserFromGroup(groupUserId) + .then(() => { + this.setState({ removeUserIds: [], isLoadingUsers: true }); + this.fetchUsersInGroup(groupPermission.id); + }) + .then(() => { + toast.success('User removed from the group'); + }) + .catch(({ error }) => { + toast.error(error); + }); + }; + + showPermissionText = () => { + const { groupPermission } = this.state; + const text = + groupPermission.name === 'admin' + ? 'Admin has edit access to all apps. These are not editable' + : 'End-user can only have permission to view apps'; + return ( +
+

+ {text} + + read documentation + {' '} + to know more +

+
+ ); + }; + + removeSelection = (selected, value) => { + const updatedData = selected.filter((d) => d.value !== value); + this.setSelectedUsers([...updatedData]); + }; + + setErrorState = (state = {}) => { + this.setState({ + ...state, + }); + }; + + updateUserRole = () => { + const { updatingUserRole, groupPermission, selectedNewRole } = this.state; + const currentSession = authenticationService.currentSessionValue; + const currentUser = currentSession?.current_user; + this.setState({ + isLoadingUsers: true, + }); + const body = { + newRole: selectedNewRole, + userId: updatingUserRole.id, + }; + groupPermissionV2Service + .updateUserRole(body) + .then(() => { + this.fetchUsersInGroup(groupPermission.id); + toast.success('Role updated successfully'); + if (groupPermission?.name === 'admin') window.location.reload(); + if (currentUser.id === updatingUserRole.id) window.location.reload(true); + }) + .catch(({ error }) => { + this.setState({ + showEditRoleErrorModal: true, + errorTitle: error?.title ? error?.title : 'Cannot remove last admin', + errorMessage: error.error, + errorIconName: 'usergear', + errorListItems: error.data, + }); + }) + .finally(() => { + this.closeChangeRoleModal(); + }); + }; + closeChangeRoleModal = () => + this.setState({ + isChangeRoleModalOpen: false, + showRoleEditMessage: false, + updatingUserRole: null, + selectedNewRole: null, + isLoadingUsers: false, + }); + + changeThisComponentState = (state = {}) => { + this.setState(state); + }; + + generateSelection = (selected) => { + return selected?.map((d) => { + return ( +
+ this.removeSelection(selected, d.value)} /> +
+ ); + }); + }; + + openChangeRoleModal = (updatingUser) => + this.setState({ isChangeRoleModalOpen: true, updatingUserRole: updatingUser }); + + showChangeRoleModalMessage = () => { + console.log('called'); + this.setState({ showRoleEditMessage: true }); + }; + + handleUserSearchInGroup = (e) => { + this.fetchUsersInGroup(this.props.groupPermissionId, e?.target?.value); + }; + + toggleUserTabSearchBox = () => { + this.fetchUsersInGroup(this.props.groupPermissionId); + this.setState((prevState) => ({ + showUserSearchBox: !prevState.showUserSearchBox, + })); + }; + + toggleAutoRoleChangeModal = () => { + this.setState((prevState) => ({ + showAutoRoleChangeModal: !prevState.showAutoRoleChangeModal, + })); + }; + handleAutoRoleChangeModalClose = () => { + this.setState({ + showAutoRoleChangeModal: false, + autoRoleChangeModalMessage: '', + autoRoleChangeModalList: [], + autoRoleChangeMessageType: '', + updateParam: {}, + isLoadingGroup: false, + isLoadingUsers: false, + isAddingUsers: false, + }); + }; + + renderUserChangeMessage = (type) => { + const changePermissionMessage = ( +

+ Granting this permission to the user group will result in a role change for the following user(s) from{' '} + end-users to builders. Are you sure you want to continue? +

+ ); + const addUserMessage = ( +

+ Adding the following user(s) to this group will change their default group from end-users to{' '} + builders. Are you sure you want to continue? +

+ ); + const message = type === 'USER_ROLE_CHANGE_ADD_USERS' ? addUserMessage : changePermissionMessage; + return message; + }; + + toggleAddUsersToRoleModal = () => this.setState({ isAddUsersToRoleModalOpen: !this.state.isAddUsersToRoleModalOpen }); + + handleConfirmAutoRoleChangeGroupUpdate = () => { + const { updateParam, groupPermission } = this.state; + this.updateGroupPermission(groupPermission.id, updateParam, true); + this.setState({ + updateParam: {}, + }); + this.handleAutoRoleChangeModalClose(); + }; + + handleConfirmAutoRoleChangeAddUser = () => { + const { groupPermission, selectedUsers } = this.state; + this.addSelectedUsersToGroup(groupPermission?.id, selectedUsers, true); + this.handleAutoRoleChangeModalClose(); + }; + + render() { + if (!this.props.groupPermissionId) return null; + + const { + isLoadingGroup, + isLoadingUsers, + isAddingUsers, + appsNotInGroup, + usersInGroup, + groupPermission, + currentTab, + selectedUsers, + isChangeRoleModalOpen, + isAddUsersToRoleModalOpen, + updatingUserRole, + isRoleGroup, + selectedNewRole, + showRoleEditMessage, + showUserSearchBox, + errorListItems, + errorMessage, + errorTitle, + showEditRoleErrorModal, + errorIconName, + showAutoRoleChangeModal, + autoRoleChangeModalMessage, + autoRoleChangeModalList, + autoRoleChangeMessageType, + } = this.state; + + const isBasicPlan = false; + const isPaidPlan = false; + + const searchSelectClass = this.props.darkMode ? 'select-search-dark' : 'select-search'; + const showPermissionInfo = + isRoleGroup && (groupPermission?.name === 'admin' || groupPermission?.name === 'end-user'); + const disablePermissionUpdate = + isBasicPlan || groupPermission?.name === 'admin' || groupPermission?.name === 'end-user'; + + return ( + + + + Edit user role +
+ {updatingUserRole?.email} +
+
+ } + handleConfirm={ + EDIT_ROLE_MESSAGE?.[groupPermission?.name]?.[selectedNewRole] && !showRoleEditMessage + ? this.showChangeRoleModalMessage + : this.updateUserRole + } + show={isChangeRoleModalOpen} + isLoading={isLoadingUsers} + handleClose={this.closeChangeRoleModal} + confirmBtnProps={{ title: 'Continue', disabled: !selectedNewRole }} + darkMode={this.props.darkMode} + className="edit-role-confirm" + > + {selectedNewRole && showRoleEditMessage ? ( +
{EDIT_ROLE_MESSAGE?.[groupPermission?.name]?.[selectedNewRole](isPaidPlan)}
+ ) : ( +
+ + { + this.updateGroupPermission(groupPermission.id, { + appCreate: !groupPermission.appCreate, + }); + this.setState({ + updateParam: { appCreate: !groupPermission.appCreate }, + }); + }} + checked={groupPermission.appCreate} + disabled={disablePermissionUpdate} + data-cy="app-create-checkbox" + /> + + {this.props.t('globals.create', 'Create')} + + + Create apps in this workspace + + + +
+
+
+ +
+
+ {this.props.t( + 'header.organization.menus.manageGroups.permissionResources.folder', + 'Folder' + )} +
+
+
+ +
+
+
+
+
+ {this.props.t('globals.environmentVar', 'Workspace constant/variable')} +
+
+
+ +
+
+
+ + )} +
+
+
+
+ + + {/* Granular Access */} + +
+
+
+ )} +
+ + ); + } +} + +export const ManageGroupPermissionResourcesV2 = withTranslation()(ManageGroupPermissionResourcesComponent); diff --git a/frontend/src/ManageGroupPermissions/ManageGroupPermissions.jsx b/frontend/src/ManageGroupPermissions/ManageGroupPermissions.jsx index a7fb9ca550..3bed6a747c 100644 --- a/frontend/src/ManageGroupPermissions/ManageGroupPermissions.jsx +++ b/frontend/src/ManageGroupPermissions/ManageGroupPermissions.jsx @@ -455,7 +455,7 @@ class ManageGroupPermissionsComponent extends React.Component { title={ showGroupNameUpdateForm ? this.props.t('header.organization.menus.manageGroups.permissions.updateGroup', 'Update group') - : this.props.t('header.organization.menus.manageGroups.permissions.addNewGroup', 'Add new group') + : this.props.t('header.organization.menus.manageGroups.permissions.addNewGroup', 'Create new group') } > + +
+ onClose()} + data-cy="close-button" + iconWidth="20" + /> +
+
+ +
+ {errorTitle} +

{errorMessage}

+
+ +
+ {listItems.map((item, index) => ( +
+ {`${index + 1}. ${item}`} +
+ ))} +
+
+ + ); +} + +export default EditRoleErrorModal; diff --git a/frontend/src/ManageGroupPermissionsV2/ManageGroupPermissionsV2.jsx b/frontend/src/ManageGroupPermissionsV2/ManageGroupPermissionsV2.jsx new file mode 100644 index 0000000000..170e2f8602 --- /dev/null +++ b/frontend/src/ManageGroupPermissionsV2/ManageGroupPermissionsV2.jsx @@ -0,0 +1,788 @@ +import React from 'react'; +import { groupPermissionV2Service } from '@/_services'; +import { Tooltip } from 'react-tooltip'; +import { ConfirmDialog } from '@/_components'; +import { toast } from 'react-hot-toast'; +import { withTranslation } from 'react-i18next'; +import ErrorBoundary from '@/Editor/ErrorBoundary'; +import Modal from '../HomePage/Modal'; +import { ButtonSolid } from '@/_ui/AppButton/AppButton'; +import FolderList from '@/_ui/FolderList/FolderList'; +import { Loader } from '../ManageSSO/Loader'; +import Popover from 'react-bootstrap/Popover'; +import SolidIcon from '@/_ui/Icon/solidIcons/index'; +import ModalBase from '@/_ui/Modal'; +import OverflowTooltip from '@/_components/OverflowTooltip'; +import { ManageGroupPermissionResourcesV2 } from '@/ManageGroupPermissionResourcesV2'; +import './groupPermissions.theme.scss'; +import { SearchBox } from '@/_components/SearchBox'; +class ManageGroupPermissionsComponent extends React.Component { + constructor(props) { + super(props); + + this.state = { + isLoading: true, + groups: [], + defaultGroups: [], + creatingGroup: false, + showNewGroupForm: false, + newGroupName: '', + isDeletingGroup: false, + isUpdatingGroupName: false, + showGroupDeletionConfirmation: false, + showGroupNameUpdateForm: false, + groupToBeUpdated: null, + isSaveBtnDisabled: false, + selectedGroupPermissionId: null, + selectedGroup: 'Admin', + isDuplicatingGroup: false, + selectedGroupObject: null, + groupDuplicateOption: { addPermission: true, addApps: true, addUsers: true }, + showDuplicateGroupModal: false, + groupToDuplicate: '', + showGroupSearchBar: false, + filteredGroup: [], + groupNameMessage: 'Group name must be unique and max 50 characters', + }; + } + + componentDidMount() { + this.fetchGroups(); + } + + findCurrentGroupDetails = (data) => { + let currentUpdatedGroup = data.find((item) => { + return item.name == this.state.newGroupName; + }); + this.setState({ selectedGroup: currentUpdatedGroup.name }); + return currentUpdatedGroup.id; + }; + + duplicateGroup = () => { + const { groupDuplicateOption, groupToDuplicate } = this.state; + this.setState({ isDuplicatingGroup: true, creatingGroup: true }); + groupPermissionV2Service + .duplicate(groupToDuplicate, groupDuplicateOption) + .then((data) => { + this.setState({ + newGroupName: data?.name, + }); + + this.fetchGroups('current', () => { + this.setState({ + newGroupName: '', + creatingGroup: false, + selectedGroupPermissionId: data?.id, + selectedGroup: data?.name, + isDuplicatingGroup: false, + showDuplicateGroupModal: false, + groupDuplicateOption: { addPermission: true, addApps: true, addUsers: true }, + }); + }); + + toast.success('Group duplicated successfully!'); + }) + .catch((err) => { + this.setState({ + isDuplicatingGroup: false, + groupDuplicateOption: { addPermission: true, addApps: true, addUsers: true }, + }); + console.error('Error occured in duplicating: ', err); + toast.error('Could not duplicate group.\nPlease try again!'); + }); + }; + + toggleShowDuplicateModal = () => { + this.setState((prevState) => ({ + showDuplicateGroupModal: !prevState.showDuplicateGroupModal, + groupToDuplicate: '', + groupDuplicateOption: { addPermission: true, addApps: true, addUsers: true }, + })); + }; + + renderPopoverContent = (props, compoParam) => { + const { groupName, id } = compoParam; + const deleteGroup = () => { + this.deleteGroup(id); + }; + + const duplicateGroup = () => { + this.showDuplicateDiologBox(id); + }; + + const isDefaultGroup = groupName == 'end-user' || groupName == 'admin' || groupName == 'builder'; + + return ( +
+ + +
+ + +
+
+
+ {(groupName == 'all_users' || groupName == 'admin' || groupName == 'builder' || groupName == 'end-user') && ( + + )} +
+ ); + }; + sortDefaultGroup = (list) => { + const priority = { + admin: 1, + builder: 2, + 'end-user': 3, + }; + list.sort((a, b) => { + const priorityA = priority[a.name] || 4; // default to 4 if not found + const priorityB = priority[b.name] || 4; // default to 4 if not found + return priorityA - priorityB; + }); + return list; + }; + + fetchGroups = (type = 'admin', callback = () => {}) => { + this.setState({ + isLoading: true, + }); + + groupPermissionV2Service + .getGroups() + .then((data) => { + const groupPermissions = data.groupPermissions; + const defaultGroups = this.sortDefaultGroup(groupPermissions.filter((group) => group.type === 'default')); + const currentGroupId = + type == 'admin' + ? defaultGroups[0].id + : type == 'current' + ? this.findCurrentGroupDetails(groupPermissions) + : groupPermissions.at(-1).id; + this.setState( + { + groups: groupPermissions.filter((group) => group.type === 'custom'), + defaultGroups: defaultGroups, + filteredGroup: groupPermissions.filter((group) => group.type === 'custom'), + isLoading: false, + selectedGroupPermissionId: currentGroupId, + selectedGroupObject: groupPermissions.find((group) => group.id === currentGroupId), + }, + callback + ); + }) + .catch(({ error }) => { + toast.error(error); + this.setState({ + isLoading: false, + }); + }); + }; + + handleGroupSearch = (e) => { + const { groups } = this.state; + let filteredGroup = groups; + const value = e?.target?.value; + if (value) { + filteredGroup = groups.filter((group) => group.name.toLowerCase().includes(value.toLowerCase())); + } + this.setState({ + filteredGroup, + }); + }; + + changeNewGroupName = (value) => { + if (value.length > 50) { + this.setState({ + groupNameMessage: 'Max length has been reached', + isSaveBtnDisabled: true, + newGroupName: value?.slice(0, 50), + }); + return; + } + this.setState({ + newGroupName: value, + isSaveBtnDisabled: false, + groupNameMessage: 'Group name must be unique and max 50 characters', + }); + if ((this.state.groupToBeUpdated && this.state.groupToBeUpdated.name === value) || !value) { + this.setState({ + isSaveBtnDisabled: true, + }); + } + }; + + humanizeifDefaultGroupName = (groupName) => { + switch (groupName) { + case 'end-user': + return 'End-user'; + case 'admin': + return 'Admin'; + case 'builder': + return 'Builder'; + default: + return groupName; + } + }; + + createGroup = () => { + this.setState({ creatingGroup: true }); + groupPermissionV2Service + .create(this.state.newGroupName) + .then(() => { + this.setState({ + creatingGroup: false, + showNewGroupForm: false, + newGroupName: null, + selectedGroup: this.state.newGroupName, + }); + toast.success('Group has been created'); + this.fetchGroups('new'); + }) + .catch(({ error }) => { + toast.error(error, { + style: { + maxWidth: '500px !important', + }, + }); + this.setState({ + creatingGroup: false, + showNewGroupForm: true, + }); + }); + }; + + deleteGroup = (groupPermissionId) => { + this.setState({ + showGroupDeletionConfirmation: true, + groupToBeDeleted: groupPermissionId, + }); + }; + + updateGroupName = (groupPermission) => { + this.setState({ + showGroupNameUpdateForm: true, + groupToBeUpdated: groupPermission, + newGroupName: groupPermission.name, + isSaveBtnDisabled: true, + }); + }; + + cancelDeleteGroupDialog = () => { + this.setState({ + isDeletingGroup: false, + groupToBeDeleted: null, + showGroupDeletionConfirmation: false, + }); + }; + + executeGroupDeletion = () => { + this.setState({ isDeletingGroup: true }); + groupPermissionV2Service + .del(this.state.groupToBeDeleted) + .then(() => { + toast.success('Group deleted successfully'); + this.fetchGroups(); + this.setState({ selectedGroup: 'Admin', isDeletingGroup: false }); + }) + .catch(({ error }) => { + toast.error(error); + }) + .finally(() => { + this.cancelDeleteGroupDialog(); + }); + }; + + handleGroupSearchClose = () => { + this.setState((prevState) => ({ + showGroupSearchBar: false, + filteredGroup: prevState.groups, + })); + }; + + showDuplicateDiologBox = (id) => { + this.setState({ groupToDuplicate: id, showDuplicateGroupModal: true, isDuplicatingGroup: false }); + }; + + executeGroupUpdation = () => { + this.setState({ isUpdatingGroupName: true }); + groupPermissionV2Service + .update(this.state.groupToBeUpdated?.id, { name: this.state.newGroupName }) + .then(() => { + toast.success('Group name updated successfully'); + this.fetchGroups('current'); + this.setState({ + isUpdatingGroupName: false, + groupToBeUpdated: null, + showGroupNameUpdateForm: false, + selectedGroup: this.state.newGroupName, + }); + }) + .catch(({ error }) => { + toast.error(error); + this.setState({ + isUpdatingGroupName: false, + }); + }); + }; + + render() { + const { + isLoading, + showNewGroupForm, + showGroupNameUpdateForm, + creatingGroup, + isUpdatingGroupName, + groups, + isDeletingGroup, + showGroupDeletionConfirmation, + showDuplicateGroupModal, + isDuplicatingGroup, + groupDuplicateOption, + defaultGroups, + filteredGroup, + showGroupSearchBar, + } = this.state; + + const grounNameErrorStyle = + this.state.newGroupName?.length > 50 ? { color: '#ff0000', borderColor: '#ff0000' } : {}; + const { addPermission, addApps, addUsers } = groupDuplicateOption; + const allFalse = [addPermission, addApps, addUsers].every((value) => !value); + + return ( + +
+
+ this.executeGroupDeletion()} + onCancel={() => this.cancelDeleteGroupDialog()} + darkMode={this.props.darkMode} + /> + +
+ Duplicate the following parts of the group +
+
+
+
+ { + this.setState((prevState) => ({ + groupDuplicateOption: { + ...prevState.groupDuplicateOption, + addUsers: !prevState.groupDuplicateOption.addUsers, + }, + })); + }} + data-cy="users-check-input" + /> +
+
+
+ Users +
+
+
+
+
+ { + this.setState((prevState) => ({ + groupDuplicateOption: { + ...prevState.groupDuplicateOption, + addPermission: !prevState.groupDuplicateOption.addPermission, + }, + })); + }} + data-cy="permissions-check-input" + /> +
+
+
+ Permissions +
+
+
+
+
+ { + this.setState((prevState) => ({ + groupDuplicateOption: { + ...prevState.groupDuplicateOption, + addApps: !prevState.groupDuplicateOption.addApps, + }, + })); + }} + data-cy="apps-check-input" + /> +
+
+
+ Apps +
+
+
+
+
+
+

+ {groups?.length} Groups +

+ {!showNewGroupForm && !showGroupNameUpdateForm && ( + { + e.preventDefault(); + this.setState({ newGroupName: '', showNewGroupForm: true, isSaveBtnDisabled: true }); + }} + data-cy="create-new-group-button" + leftIcon="plus" + isLoading={isLoading} + iconWidth="16" + fill={'#FDFDFE'} + > + {this.props.t( + 'header.organization.menus.manageGroups.permissions.createNewGroup', + 'Create new group' + )} + + )} +
+ + + this.setState({ + showNewGroupForm: false, + showGroupNameUpdateForm: false, + newGroupName: null, + }) + } + title={ + showGroupNameUpdateForm + ? this.props.t('header.organization.menus.manageGroups.permissions.updateGroup', 'Update group') + : this.props.t('header.organization.menus.manageGroups.permissions.addNewGroup', 'Create new group') + } + > + { + e.preventDefault(); + if (showNewGroupForm) { + this.createGroup(); + } else { + this.executeGroupUpdation(); + } + }} + > +
+
+
+ = 50 ? 'custom-input-error' : ''}`} + placeholder={this.props.t( + 'header.organization.menus.manageGroups.permissions.enterName', + 'Enter group name' + )} + onChange={(e) => { + this.changeNewGroupName(e.target.value); + }} + value={this.state.newGroupName} + data-cy="group-name-input" + autoFocus + /> + + {this.state.groupNameMessage} + +
+
+
+
+ + this.setState({ + showNewGroupForm: false, + showGroupNameUpdateForm: false, + newGroupName: null, + }) + } + disabled={creatingGroup} + data-cy="cancel-button" + variant="tertiary" + > + {this.props.t('globals.cancel', 'Cancel')} + + + {showGroupNameUpdateForm + ? this.props.t('globals.save', 'Save') + : this.props.t('header.organization.menus.manageGroups.permissions.createGroup', 'Create Group')} + +
+ +
+ + {!showNewGroupForm && !showGroupNameUpdateForm && ( +
+
+
+
+ + USER ROLE +
+ {defaultGroups.map((permissionGroup) => { + return ( + { + this.setState({ + selectedGroupPermissionId: permissionGroup.id, + selectedGroup: this.humanizeifDefaultGroupName(permissionGroup.name), + selectedGroupObject: permissionGroup, + }); + }} + toolTipText={this.humanizeifDefaultGroupName(permissionGroup.name)} + overLayComponent={this.renderPopoverContent} + className="groups-folder-list" + dataCy={this.humanizeifDefaultGroupName(permissionGroup.name) + .toLowerCase() + .replace(/\s+/g, '-')} + > + + {this.humanizeifDefaultGroupName(permissionGroup.name)} + + + ); + })} +
+
+ {!showGroupSearchBar ? ( +
+ + CUSTOM GROUPS +
+ { + e.preventDefault(); + this.setState({ showGroupSearchBar: true }); + }} + size="xsm" + rightIcon="search" + iconWidth="15" + fill="#889096" + className="create-group-custom" + /> + { + e.preventDefault(); + this.setState({ newGroupName: null, showNewGroupForm: true, isSaveBtnDisabled: true }); + }} + size="sm" + fill="#889096" + rightIcon="plus" + iconWidth="20" + className="create-group-custom" + /> +
+
+ ) : ( +
+ +
+ )} + + {groups.length ? ( + filteredGroup.map((permissionGroup) => { + return ( + { + this.setState({ + selectedGroupPermissionId: permissionGroup.id, + selectedGroup: this.humanizeifDefaultGroupName(permissionGroup.name), + selectedGroupObject: permissionGroup, + }); + }} + toolTipText={this.humanizeifDefaultGroupName(permissionGroup.name)} + overLayComponent={this.renderPopoverContent} + className="groups-folder-list" + dataCy={this.humanizeifDefaultGroupName(permissionGroup.name) + .toLowerCase() + .replace(/\s+/g, '-')} + > + + {this.humanizeifDefaultGroupName(permissionGroup.name)} + + + ); + }) + ) : ( +
+ + No custom groups added +
+ )} +
+
+ +
+ {isLoading ? ( + + ) : ( + { + return { + name: this.humanizeifDefaultGroupName(group.name), + value: group.name, + }; + })} + /> + )} +
+
+ )} +
+
+
+ ); + } +} + +export const ManageGroupPermissionsV2 = withTranslation()(ManageGroupPermissionsComponent); + +const Field = ({ + text, + onClick, + customClass, + leftIcon, + leftIconWidth, + leftIconHeight = '18', + leftIconClassName, + buttonDisable = false, + tooltipContent = '', + tooltipId = '', + darkMode = false, +}) => { + return ( +
+ +
+ {leftIcon && ( + + )} +
+
{text}
+
+
+ ); +}; diff --git a/frontend/src/ManageGroupPermissionsV2/ResourceChip.jsx b/frontend/src/ManageGroupPermissionsV2/ResourceChip.jsx new file mode 100644 index 0000000000..afb4d71a51 --- /dev/null +++ b/frontend/src/ManageGroupPermissionsV2/ResourceChip.jsx @@ -0,0 +1,103 @@ +import React, { useEffect, useState, useRef } from 'react'; +import cx from 'classnames'; // Assuming you're using the classnames package +import { humanizeifDefaultGroupName } from '@/_helpers/utils'; +import './groupPermissions.theme.scss'; + +const GroupChipTD = ({ groups = [] }) => { + const [showAllGroups, setShowAllGroups] = useState(false); + const groupsListRef = useRef(); + + useEffect(() => { + const onCloseHandler = (e) => { + if (groupsListRef.current && !groupsListRef.current.contains(e.target)) { + setShowAllGroups(false); + } + }; + + window.addEventListener('click', onCloseHandler); + return () => { + window.removeEventListener('click', onCloseHandler); + }; + }, [showAllGroups]); + + function moveValuesToLast(arr, valuesToMove) { + const validValuesToMove = valuesToMove.filter((value) => arr.includes(value)); + + validValuesToMove.forEach((value) => { + const index = arr.indexOf(value); + if (index !== -1) { + const removedItem = arr.splice(index, 1); + arr.push(removedItem[0]); + } + }); + + return arr; + } + + const orderedArray = groups; + + const toggleAllGroupsList = (e) => { + setShowAllGroups(!showAllGroups); + }; + + const renderGroupChip = (group, index) => ( + + {humanizeifDefaultGroupName(group)} + + ); + + return ( +
{ + orderedArray.length > 2 && toggleAllGroupsList(e); + }} + className={cx('text-muted resource-name-cell', { 'groups-hover': orderedArray.length > 2 })} + > +
+ {orderedArray.length === 0 ? ( + renderGroupChip('-', null) + ) : ( + <> +
+ {orderedArray.slice(0, 2).map((group, index) => { + return renderGroupChip(group, index); + })} +
+
+ {orderedArray.slice(2, 4).map((group, index) => { + return renderGroupChip(group, index); + })} +
+ {orderedArray.length > 4 && ( + +
+ +{orderedArray.length - 4} more +
+ {showAllGroups && ( +
+ {orderedArray.slice(4).map((group, index) => renderGroupChip(group, index))} +
+ )} +
+ )} + + {/* orderedArray.slice(0, 2).map((group, index) => { + if (orderedArray.length <= 2) { + return renderGroupChip(group, index); + } + + if (orderedArray.length > 2 && index === 1) { + + } + + return renderGroupChip(group, index); + }) */} + + )} +
+
+ ); +}; + +export default GroupChipTD; diff --git a/frontend/src/ManageGroupPermissionsV2/groupPermissions.theme.scss b/frontend/src/ManageGroupPermissionsV2/groupPermissions.theme.scss new file mode 100644 index 0000000000..0ad36a1d01 --- /dev/null +++ b/frontend/src/ManageGroupPermissionsV2/groupPermissions.theme.scss @@ -0,0 +1,458 @@ +@import "../_styles/colors.scss"; + +.default-group-list-container { + margin-bottom: 20px; +} + +.empty-custom-group-info{ + margin-top: 15px; + border-radius: 6px; + border: 1px dashed var(--slate8) !important; + width: 100%; + height: 32px; + + padding: 3px 12px; + display: flex; + flex-direction: row; + + .info-icon{ + margin-top: 3px; + } + + .info-label{ + margin-left: 4px; + color: var(--slate9); + } +} + +.group-title { + font-weight: 500; + color: var(--slate11); + font-size: 12px; + margin-left: 5px; + } + +.create-group-cont { + margin-left:10px ; + margin-right: auto; + display: flex; + flex-direction: row; + .create-group-custom { + width: 20px; + margin-left: 2px; + margin-right: 2px; + height: 20px; + padding: 0 0; + background: none !important; + background-color: none !important; + box-shadow: none; + + } + } + + +.searchbox-custom{ + margin-bottom: 10px; + .tj-common-search-input-group { + .input-icon-addon { + padding-right: 8px; + padding-left: 8px; + + } + + input { + box-sizing: border-box; + display: flex; + flex-direction: row; + align-items: center; + padding: 4px 8px !important; + gap: 16px; + width: 190px !important; + height: 28px !important; + background: var(--base); + border: 1px solid var(--slate7); + border-radius: 6px; + color: var(--slate12); + padding-left: 33px !important; + + + ::placeholder { + color: var(--slate9); + margin-left: 5px !important; + padding-left: 5px !important; + background-color: red !important; + } + + &:hover { + background: var(--slate2); + border: 1px solid var(--slate8); + } + + &:active { + background: var(--indigo2); + border: 2px solid var(--indigo11); + box-shadow: 0px 0px 0px 2px #C6D4F9; + outline: none; + } + + &:focus-visible { + background: var(--slate2); + border: 1px solid var(--slate8); + border-radius: 6px; + outline: none; + padding-left: 12px !important; + } + + &:disabled { + background: var(--slate3); + border: 1px solid var(--slate7); + } + } + } + +} + +.edit-role-modal { + font-family: 'IBM Plex Sans'; + + .modal-dialog { + width: 320px; + } + + .modal-content { + background: linear-gradient(0deg, #FFFFFF, #FFFFFF), + linear-gradient(0deg, #DFE3E6, #DFE3E6); + } + + .modal-header { + justify-content: center !important; + flex-direction: column; + padding: 30px 32px 20px 32px; + border: none; + + .remove-icon-container{ + display: flex; + justify-content: flex-end; + margin-right: 10px; + + .close-btn { + + width: 20px; + margin: 5px 5px 5px 5px; + height: 20px; + padding: 0 0; + background: none !important; + background-color: none !important; + box-shadow: none; + } + } + .icon-class { + display: flex; /* Enable flexbox */ + justify-content: center; /* Center items horizontally */ + align-items: center; /* Center items vertically */ + justify-content: center; + width: 64px; + height: 64px; + background-color: var(--tomato3); + border-radius: 6px; + } + + .header-text { + font-style: normal; + font-weight: 600; + font-size: 16px; + text-align: center; + // line-height: 36px; + margin: 12px 0 5px 0; + } + + p { + font-style: normal; + font-weight: 400; + font-size: 14px; + color: #687076; + text-align: Center; + margin-bottom: 0px; + } + } + + .modal-body { + border: none; + padding: 12px 12px 22px 27px; + + .item-list { + display: flex; + gap: 5px; + flex-direction: column; + max-height: 100px; /* Set a fixed height or max-height */ + overflow-y: scroll; /* Enable vertical scrolling */ + } + } +} + +.edit-role-modal.dark-mode { + + .modal-footer, + .modal-header { + border-color: #232e3c !important; + + p { + color: rgba(255, 255, 255, 0.5) !important; + } + } + + .modal-body, + .modal-footer, + .modal-header, + .modal-content { + color: white; + background-color: #2b394a; + } + + .modal-content { + border: none; + } +} + + +.resource-name-cell { + transition: 0.3s all; + border-radius: 6px; + max-width: 170px; + position: relative !important; + overflow: visible !important; + + .groups-name-container { + display: flex; + flex-direction: column; + row-gap: 8px; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + max-height: 200px; + max-width: 170px; + + + .empty-text{ + display: flex; + justify-content: center; + margin-left: 20px; + } + + .groups-name-row { + display: flex; + column-gap: 8px; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + max-width: 170px; + } + } + + .group-chip { + padding: 2px 8px; + margin: 0; + border-radius: 6px; + background-color: var(--slate3); + color: var(--slate11); + min-height: 24px; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + max-width: 100px; + font-size: 12px; + } + + .all-groups-list { + position: absolute; + width: 100%; + top: 59px; + display: flex; + flex-direction: column; + background: var(--slate1); + align-items: flex-start; + border-radius: 6px; + border: 1px solid var(--slate1); + box-shadow: 0px 4px 6px -2px rgba(16, 24, 40, 0.03), 0px 12px 16px -4px rgba(16, 24, 40, 0.08); + padding: 9px 10px; + gap: 10px; + cursor: default; + max-height: 240px; + overflow: auto; + left: 0px; + z-index: 1; + + + .group-chip { + padding: 2px 8px; + margin: 0; + border-radius: 6px; + background-color: var(--slate3); + color: var(--slate11); + min-height: 24px; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + max-width: 200px; + } + } +} + +.groups-name-cell[data-active="true"] { + display: flex; + background: var(--gray5) !important; + justify-content: center; + + .groups-name-container { + padding-left: 6px; + justify-content: center; + } + + .group-chip { + max-width: unset !important; + } +} +.role-name-cell { + transition: 0.3s all; + border-radius: 6px; + width: 120px !important; + position: relative !important; + overflow: visible !important; + + .groups-name-container { + display: flex; + column-gap: 8px; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + max-width: 185px; + } + + .group-chip { + padding: 2px 8px; + margin: 0; + border-radius: 6px; + background-color: var(--slate3); + // color: var(--slate11); + min-height: 24px; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + max-width: 95px; + } + + .all-groups-list { + position: absolute; + width: 100%; + top: 41px; + display: flex; + flex-direction: column; + background: var(--slate1); + align-items: flex-start; + border-radius: 6px; + border: 1px solid var(--slate1); + box-shadow: 0px 4px 6px -2px rgba(16, 24, 40, 0.03), 0px 12px 16px -4px rgba(16, 24, 40, 0.08); + padding: 9px 10px; + gap: 10px; + cursor: default; + max-height: 240px; + overflow: auto; + left: 0px; + z-index: 1; + } +} + +.role-name-cell[data-active="true"] { + display: flex; + background: var(--gray5) !important; + justify-content: center; + + .groups-name-container { + padding-left: 6px; + justify-content: center; + } + + .group-chip { + max-width: unset !important; + } +} + + +.edit-icon-container{ + max-width: 10px; + display: flex; + justify-content: flex-end; + align-items: flex-start; + padding: 0; + height: 100%; + margin-bottom: auto; +} + + +.edit-permission-custom { + width: 20px; + margin-left: 2px; + margin-right: 2px; + height: 20px; + padding: 0 0; + background: none !important; + background-color: none !important; + box-shadow: none; +} + +.manage-resource-permission{ + + + .tj-text-xxsm{ + color: var(--slate11) + } + + + transition: background-color 0.3s ease; + border-bottom: 1px solid var(--slate5); + display: flex; + align-items:baseline; + padding: 12px; + gap: 10px; + + div { + width: 206px; + + + .resource-name { + display: flex; + flex-direction: row !important; + gap: 10px; + + + .resource-icon { + margin-right: 200px; + } + .resource-text { + margin-left: 10px; + } + } + } + + &:hover { + background-color: var(--slate3); + } + + +} + +.manage-resource-body { + padding: 24px; + font-size: 12px; + overflow-y: auto; + height: calc(100vh - 300px); + +} + +.error-text{ + color: red; +} +.form-control, +.error-input { + border-color: red !important; +} \ No newline at end of file diff --git a/frontend/src/ManageOrgConstants/ManageOrgConstants.jsx b/frontend/src/ManageOrgConstants/ManageOrgConstants.jsx index 77e7bc3a7d..bc897ba952 100644 --- a/frontend/src/ManageOrgConstants/ManageOrgConstants.jsx +++ b/frontend/src/ManageOrgConstants/ManageOrgConstants.jsx @@ -126,24 +126,15 @@ const ManageOrgConstantsComponent = ({ darkMode }) => { }; const canCreateVariable = () => { - return canAnyGroupPerformAction( - 'org_environment_variable_create', - authenticationService.currentSessionValue.group_permissions - ); + return authenticationService.currentSessionValue.user_permissions.org_constant_c_r_u_d; }; const canUpdateVariable = () => { - return canAnyGroupPerformAction( - 'org_environment_variable_update', - authenticationService.currentSessionValue.group_permissions - ); + return authenticationService.currentSessionValue.user_permissions.org_constant_c_r_u_d; }; const canDeleteVariable = () => { - return canAnyGroupPerformAction( - 'org_environment_variable_delete', - authenticationService.currentSessionValue.group_permissions - ); + return authenticationService.currentSessionValue.user_permissions.org_constant_c_r_u_d; }; const fetchEnvironments = () => { diff --git a/frontend/src/ManageOrgUsers/InviteUsersForm.jsx b/frontend/src/ManageOrgUsers/InviteUsersForm.jsx index 8fe5c71c20..ccbb0cec99 100644 --- a/frontend/src/ManageOrgUsers/InviteUsersForm.jsx +++ b/frontend/src/ManageOrgUsers/InviteUsersForm.jsx @@ -8,6 +8,8 @@ import { toast } from 'react-hot-toast'; import { FileDropzone } from './FileDropzone'; import { USER_DRAWER_MODES } from '@/_helpers/utils'; import { UserGroupsSelect } from './UserGroupsSelect'; +import { EDIT_ROLE_MESSAGE } from '@/ManageGroupPermissionResourcesV2/constant'; +import ModalBase from '@/_ui/Modal'; function InviteUsersForm({ onClose, @@ -27,26 +29,54 @@ function InviteUsersForm({ }) { const { t } = useTranslation(); const [activeTab, setActiveTab] = useState(1); - const [selectedGroups, setSelectedGroups] = useState([]); const [existingGroups, setExistingGroups] = useState([]); + const [newRole, setNewRole] = useState(null); + + const customGroups = groups.filter((group) => group.groupType === 'custom'); + const roleGroups = groups + .filter((group) => group.groupType === 'default') + .sort((a, b) => { + const sortOrder = ['admin', 'builder', 'end-user']; + const indexA = sortOrder.indexOf(a.value); + const indexB = sortOrder.indexOf(b.value); + + return indexA - indexB; + }); + const [isChangeRoleModalOpen, setIsChangeRoleModalOpen] = useState(false); + const groupedOptions = [ + { + label: 'default', + options: roleGroups, + }, + { + label: 'custom', + options: customGroups, + }, + ]; + const [selectedGroups, setSelectedGroups] = useState([]); const hiddenFileInput = useRef(null); useEffect(() => { if (currentEditingUser && groups.length) { - const { first_name, last_name, email, groups: addedToGroups } = currentEditingUser; + const { first_name, last_name, email, groups: addedToCustomGroups, role_group } = currentEditingUser; + const addedToGroups = [...addedToCustomGroups, ...role_group]; setUserValues({ fullName: `${first_name}${last_name && ` ${last_name}`}`, email: email, }); const preSelectedGroups = groups - .filter((group) => addedToGroups.includes(group.value)) + .filter((group) => addedToGroups.map((group) => group.name).includes(group.value)) .map((filteredGroup) => ({ ...filteredGroup, label: filteredGroup.name, })); - setExistingGroups(groups.filter((group) => addedToGroups.includes(group.value)).map((g) => g.value)); + setExistingGroups( + groups.filter((group) => addedToCustomGroups.map((gp) => gp.name).includes(group.value)).map((g) => g.id) + ); onChangeHandler(preSelectedGroups); + } else { + onChangeHandler(roleGroups.filter((group) => group.value === 'end-user')); } }, [currentEditingUser, groups]); @@ -65,44 +95,91 @@ function InviteUsersForm({ }; const onChangeHandler = (items) => { - setSelectedGroups(items); + let finalGroup = items; + const roleGroups = items.filter((group) => group.groupType === 'default'); + const currentRole = selectedGroups.find((group) => group.groupType === 'default'); + if (roleGroups.length == 2) { + finalGroup = items.filter((group) => group.value !== currentRole.value); + } + if (roleGroups.length === 0) return; + if (currentEditingUser) { + const role = finalGroup.find( + (group) => + group.groupType === 'default' && !currentEditingUser.role_group.map((role) => role.name).includes(group.value) + ); + setNewRole(role); + } + setSelectedGroups(finalGroup); }; const handleCreateUser = (e) => { e.preventDefault(); - const selectedGroupsIds = selectedGroups.map((group) => group.value); - manageUser(currentEditingUser?.id, selectedGroupsIds); + const role = selectedGroups.find((group) => group.groupType === 'default').value; + const selectedGroupsIds = selectedGroups.filter((group) => group.groupType !== 'default').map((group) => group.id); + manageUser(currentEditingUser?.id, selectedGroupsIds, role); }; const handleEditUser = (e) => { e.preventDefault(); - const selectedGroupsIds = selectedGroups.map((group) => group.value); - const newGroupsToAdd = selectedGroupsIds.filter((selectedGroupId) => !existingGroups.includes(selectedGroupId)); - const groupsToRemove = existingGroups.filter((existingGroup) => !selectedGroupsIds.includes(existingGroup)); - manageUser(currentEditingUser.id, selectedGroupsIds, newGroupsToAdd, groupsToRemove); + if (newRole) setIsChangeRoleModalOpen(true); + else { + editUser(); + } + }; + + const editUser = () => { + const { newGroupsToAdd, groupsToRemove, selectedGroupsIds, role } = getEditedGroups(); + manageUser(currentEditingUser.id, selectedGroupsIds, role, newGroupsToAdd, groupsToRemove); }; const getEditedGroups = () => { - const selectedGroupsIds = selectedGroups.map((group) => group.value); + const selectedGroupsIds = selectedGroups.filter((group) => group.groupType !== 'default').map((group) => group.id); const newGroupsToAdd = selectedGroupsIds.filter((selectedGroupId) => !existingGroups.includes(selectedGroupId)); const groupsToRemove = existingGroups.filter((existingGroup) => !selectedGroupsIds.includes(existingGroup)); - return { newGroupsToAdd, groupsToRemove }; + return { newGroupsToAdd, groupsToRemove, selectedGroupsIds }; }; + const validUserDetail = fields['fullName']?.length > 0 && fields['email']?.length > 0; + const isEdited = () => { const { newGroupsToAdd, groupsToRemove } = getEditedGroups(); const { first_name, last_name } = currentEditingUser || {}; return isEditing ? fields['fullName'] !== `${first_name}${last_name && ` ${last_name}`}` || groupsToRemove.length || + newRole || newGroupsToAdd.length : true; }; const isEditing = userDrawerMode === USER_DRAWER_MODES.EDIT; + const containRoleGroup = + selectedGroups.filter((item) => ['admin', 'end-user', 'builder'].includes(item.value)).length > 0; return (
+ {isChangeRoleModalOpen && ( + + Edit user role +
+ {currentEditingUser?.email} +
+
+ } + handleConfirm={editUser} + show={isChangeRoleModalOpen} + handleClose={() => { + setIsChangeRoleModalOpen(false); + onCancel(); + onClose(); + }} + confirmBtnProps={{ title: 'Continue' }} + > +
{EDIT_ROLE_MESSAGE?.[currentEditingUser?.role_group?.[0]?.name]?.[newRole?.value]()}
+ + )}
@@ -216,7 +293,7 @@ function InviteUsersForm({ ? 'User groups' : t('header.organization.menus.manageUsers.selectGroup', 'Select Group')} - +
@@ -274,7 +351,13 @@ function InviteUsersForm({ form={activeTab == 1 ? 'inviteByEmail' : 'inviteBulkUsers'} type="submit" variant="primary" - disabled={uploadingUsers || creatingUser || !isEdited()} + disabled={ + uploadingUsers || + creatingUser || + !isEdited() || + (!isEditing && !containRoleGroup && uploadingUsers) || + (!isEditing && !validUserDetail && uploadingUsers) + } data-cy={activeTab == 1 ? 'button-invite-users' : 'button-upload-users'} leftIcon={activeTab == 1 ? 'sent' : 'fileupload'} width="20" diff --git a/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx b/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx index 2d7d02e4ef..b16d83b27a 100644 --- a/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx +++ b/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx @@ -11,6 +11,7 @@ import { ButtonSolid } from '@/_ui/AppButton/AppButton'; import ManageOrgUsersDrawer from './ManageOrgUsersDrawer'; import { USER_DRAWER_MODES } from '@/_helpers/utils'; import { getQueryParams } from '@/_helpers/routes'; +import EditRoleErrorModal from '@/ManageGroupPermissionsV2/ErrorModal/ErrorModal'; class ManageOrgUsersComponent extends React.Component { constructor(props) { @@ -36,6 +37,11 @@ class ManageOrgUsersComponent extends React.Component { userDrawerMode: USER_DRAWER_MODES.CREATE, newSelectedGroups: [], existingGroupsToRemove: [], + showErrorModal: false, + errorModalMessage: '', + errorItemList: [], + errorTitle: '', + errorIconName: 'usergear', }; } @@ -73,7 +79,6 @@ class ManageOrgUsersComponent extends React.Component { if (!this.state.file) { errors['file'] = 'This field is required'; } - this.setState({ errors: errors }); return Object.keys(errors).length === 0; } @@ -96,11 +101,22 @@ class ManageOrgUsersComponent extends React.Component { changeNewUserOption = (name, e) => { let fields = this.state.fields; + let errors = {}; fields[name] = e.target.value; this.setState({ fields, }); + + if (name === 'email') { + if (!this.validateEmail(fields['email'])) { + errors['email'] = 'Email is not valid'; + this.setState({ errors }); + } else { + errors['email'] = ''; + this.setState({ errors }); + } + } }; archiveOrgUser = (id) => { @@ -135,6 +151,7 @@ class ManageOrgUsersComponent extends React.Component { }); }; + //Need to work on that inviteBulkUsers = (event) => { event.preventDefault(); if (this.handleFileValidation()) { @@ -178,7 +195,7 @@ class ManageOrgUsersComponent extends React.Component { }); }; - manageUser = (currentOrgUserId, selectedGroups, groupsToAdd, groupsToRemove) => { + manageUser = (currentOrgUserId, selectedGroups, role, groupsToAdd, groupsToRemove) => { const isEditing = this.state.userDrawerMode === USER_DRAWER_MODES.EDIT; if (this.handleValidation()) { if (!this.state.fields.fullName?.trim()) { @@ -201,11 +218,13 @@ class ManageOrgUsersComponent extends React.Component { last_name: this.state.fields.lastName, email: this.state.fields.email, groups: selectedGroups, + role: role, }; const updateUserBody = { addGroups: groupsToAdd, removeGroups: groupsToRemove, + role: role, }; service(currentOrgUserId, isEditing ? updateUserBody : createUserBody) .then(() => { @@ -220,7 +239,13 @@ class ManageOrgUsersComponent extends React.Component { }); }) .catch(({ error }) => { - toast.error(error); + this.setState({ + showErrorModal: true, + errorModalMessage: error.error, + errorTitle: error?.title || 'Conflicting Permissions', + errorItemList: error?.data, + errorIconName: 'usergear', + }); this.setState({ creatingUser: false }); }); } else { @@ -251,6 +276,16 @@ class ManageOrgUsersComponent extends React.Component { toast.success('Invitation URL copied'); }; + clearErrorState = () => { + this.setState({ + showErrorModal: false, + errorModalMessage: '', + errorItemList: [], + errorTitle: '', + errorIconName: '', + }); + }; + pageChanged = (page) => { this.fetchUsers(page, this.state.options); }; @@ -290,10 +325,24 @@ class ManageOrgUsersComponent extends React.Component { meta, currentEditingUser, userDrawerMode, + showErrorModal, + errorModalMessage, + errorItemList, + errorTitle, + errorIconName, } = this.state; return (
+ {this.state.isInviteUsersDrawerOpen && ( { switch (groupName) { - case 'all_users': - return 'All users'; + case 'end-user': + return 'End user'; case 'admin': return 'Admin'; + case 'builder': + return 'Builder'; default: return groupName; @@ -41,19 +43,17 @@ const ManageOrgUsersDrawer = ({ const fetchOrganizations = () => { const { current_organization_id } = authenticationService.currentSessionValue; - groupPermissionService + groupPermissionV2Service .getGroups() - .then(({ group_permissions }) => { - const orgGroups = group_permissions - .filter((group) => group.organization_id === current_organization_id) - .map(({ group }) => ({ - label: - group === 'all_users' && isEditing - ? `${humanizeifDefaultGroupName(group)} (Default group)` - : humanizeifDefaultGroupName(group), - name: humanizeifDefaultGroupName(group), - value: group, - ...(group === 'all_users' && isEditing && { isDisabled: true, isFixed: true }), + .then(({ groupPermissions }) => { + const orgGroups = groupPermissions + .filter((group) => group.organizationId === current_organization_id) + .map(({ name, type, id }) => ({ + label: humanizeifDefaultGroupName(name), + name: humanizeifDefaultGroupName(name), + value: name, + groupType: type, + id: id, })); setGroups(orgGroups); }) diff --git a/frontend/src/ManageOrgUsers/UserGroupsSelect.jsx b/frontend/src/ManageOrgUsers/UserGroupsSelect.jsx index 99a67c1e1e..6270a42eb5 100644 --- a/frontend/src/ManageOrgUsers/UserGroupsSelect.jsx +++ b/frontend/src/ManageOrgUsers/UserGroupsSelect.jsx @@ -3,6 +3,7 @@ import { ButtonSolid } from '@/_ui/AppButton/AppButton'; import React, { useState } from 'react'; import { useNavigate } from 'react-router-dom'; import Select, { components } from 'react-select'; +import SolidIcon from '@/_ui/Icon/solidIcons/index'; export function UserGroupsSelect(props) { const navigate = useNavigate(); @@ -30,12 +31,22 @@ export function UserGroupsSelect(props) { ); }; - const InputOption = ({ getStyles, Icon, isDisabled, isFocused, isSelected, children, innerProps, ...rest }) => { + const formatGroupLabel = (data) => { + const type = data.label; + return ( +
+ + {type === 'default' ? 'USER ROLE' : 'GROUPS'} + {type === 'default' && *} +
+ ); + }; + + const InputOption = ({ getStyles, Icon, isDisabled, isFocused, isSelected, children, data, innerProps, ...rest }) => { const [isActive, setIsActive] = useState(false); const onMouseDown = () => setIsActive(true); const onMouseUp = () => setIsActive(false); const onMouseLeave = () => setIsActive(false); - const style = { alignItems: 'center', backgroundColor: 'transparent', @@ -50,7 +61,6 @@ export function UserGroupsSelect(props) { onMouseLeave, style, }; - return ( ); }; + const MultiValueRemove = (props) => { + // Conditionally render the close icon + if (props.data.groupType === 'default') { + return null; // Do not render the close icon + } + return ; + }; const MultiValue = (props) => ( @@ -80,6 +101,11 @@ export function UserGroupsSelect(props) { ); const selectStyles = { + placeholder: (base) => ({ + ...base, + fontSize: '12px', + color: '#A0A0A0', + }), indicatorSeparator: (base) => ({ ...base, display: 'none', @@ -122,6 +148,7 @@ export function UserGroupsSelect(props) { border: '1px solid var(--slate7)', boxShadow: 'none', borderRadius: '6px', + background: 'unset', '&:hover': { border: '1px solid var(--slate8)', @@ -155,10 +182,11 @@ export function UserGroupsSelect(props) { closeMenuOnSelect={false} hideSelectedOptions={false} className={darkMode && 'theme-dark dark-theme'} - components={{ Option: InputOption, MultiValue, IndicatorSeparator: null }} + formatGroupLabel={formatGroupLabel} + components={{ Option: InputOption, MultiValue, MultiValueRemove, IndicatorSeparator: null }} {...props} styles={selectStyles} - placeholder="Select groups to add for this user" + placeholder="Select user groups and role .." noOptionsMessage={() => 'No groups found'} /> ); diff --git a/frontend/src/ManageOrgVars/ManageOrgVars.jsx b/frontend/src/ManageOrgVars/ManageOrgVars.jsx index 808214446e..3cc0adf66f 100644 --- a/frontend/src/ManageOrgVars/ManageOrgVars.jsx +++ b/frontend/src/ManageOrgVars/ManageOrgVars.jsx @@ -244,10 +244,7 @@ class RawManageOrgVarsComponent extends React.Component { } canDeleteVariable = () => { - return this.canAnyGroupPerformAction( - 'org_environment_variable_delete', - authenticationService.currentSessionValue.group_permissions - ); + return authenticationService.currentSessionValue.org_constant_c_r_u_d; }; setIsManageVarDrawerOpen = (val) => { this.setState({ isManageVarDrawerOpen: val }); diff --git a/frontend/src/TooljetDatabase/Forms/styles.scss b/frontend/src/TooljetDatabase/Forms/styles.scss index e30a8e22ed..150c7a6e8c 100644 --- a/frontend/src/TooljetDatabase/Forms/styles.scss +++ b/frontend/src/TooljetDatabase/Forms/styles.scss @@ -177,7 +177,7 @@ input.form-control:disabled { gap: 16px !important; - background: #f4f6fa !important; + background: var(--base) !important; border: 1px solid var(--slate7) !important; border-radius: 6px !important; margin-bottom: 4px !important; diff --git a/frontend/src/WorkspaceConstants/index.jsx b/frontend/src/WorkspaceConstants/index.jsx index 7a3821aa2d..851badf43c 100644 --- a/frontend/src/WorkspaceConstants/index.jsx +++ b/frontend/src/WorkspaceConstants/index.jsx @@ -17,10 +17,7 @@ export default function WorkspaceConstants({ darkMode, switchDarkMode }) { }; const canCreateVariableOrConstant = () => { - return canAnyGroupPerformAction( - 'org_environment_variable_create', - authenticationService.currentSessionValue.group_permissions - ); + return authenticationService.currentSessionValue.user_permissions.org_constant_c_r_u_d; }; useEffect(() => { diff --git a/frontend/src/_components/LogoNavDropdown.jsx b/frontend/src/_components/LogoNavDropdown.jsx index c5c2e6adcd..f512e41750 100644 --- a/frontend/src/_components/LogoNavDropdown.jsx +++ b/frontend/src/_components/LogoNavDropdown.jsx @@ -38,16 +38,17 @@ export default function LogoNavDropdown({ darkMode }) { Database )} - - - Data sources - - + {admin && ( + + + Data sources + + )} { - setOptions(filterOptions(listOfOptions.current)); + setOptions(listOfOptions.current); // eslint-disable-next-line react-hooks/exhaustive-deps }, [selectedValues, listOfOptions.current]); @@ -35,14 +35,19 @@ function MultiSelectUser({ ); function renderCustom(props, option) { + const valuePresent = selectedValues.some((item) => item.value === option.value); return (
{ - onSelect([...selectedValues, option]); + if (!valuePresent) { + onSelect([...selectedValues, option]); + } else { + onSelect([...selectedValues.filter((item) => item.value !== option.value)]); + } }} />
@@ -76,7 +81,7 @@ function MultiSelectUser({ closeOnSelect={false} search={true} multiple - value={{ name: '' }} + value={selectedValues} onChange={(id, value) => onSelect([...selectedValues, ...value])} placeholder={placeholder} debounce={onSearch ? 300 : undefined} diff --git a/frontend/src/_components/OrganizationLogin/OrganizationLogin.jsx b/frontend/src/_components/OrganizationLogin/OrganizationLogin.jsx index e82cfddf22..3c2eb1981f 100644 --- a/frontend/src/_components/OrganizationLogin/OrganizationLogin.jsx +++ b/frontend/src/_components/OrganizationLogin/OrganizationLogin.jsx @@ -319,7 +319,7 @@ class OrganizationLogin extends React.Component {
- Users will be able to sign up without being invited + Users will be able to sign up as end-users without being invited
diff --git a/frontend/src/_components/SearchBox.jsx b/frontend/src/_components/SearchBox.jsx index 4ee201d226..ec52e37fa1 100644 --- a/frontend/src/_components/SearchBox.jsx +++ b/frontend/src/_components/SearchBox.jsx @@ -38,12 +38,24 @@ export const SearchBox = forwardRef( onClearCallback?.(); }; + const handleClickOutside = (event) => { + if (ref.current && !ref.current.contains(event.target)) { + clearSearchText(); + // Your function to be triggered + } + }; + const mounted = useMounted(); useEffect(() => { + document.addEventListener('mousedown', handleClickOutside); if (mounted) { onSubmit?.(debouncedSearchTerm); } + return () => { + // Cleanup event listener on component unmount + document.removeEventListener('mousedown', handleClickOutside); + }; // eslint-disable-next-line react-hooks/exhaustive-deps }, [debouncedSearchTerm, onSubmit]); diff --git a/frontend/src/_helpers/utils.js b/frontend/src/_helpers/utils.js index 1e44d3373f..52300348e8 100644 --- a/frontend/src/_helpers/utils.js +++ b/frontend/src/_helpers/utils.js @@ -1227,11 +1227,13 @@ export const USER_DRAWER_MODES = { export const humanizeifDefaultGroupName = (groupName) => { switch (groupName) { - case 'all_users': - return 'All users'; + case 'end-user': + return 'End user'; case 'admin': return 'Admin'; + case 'builder': + return 'Builder'; default: return groupName; diff --git a/frontend/src/_services/authentication.service.js b/frontend/src/_services/authentication.service.js index 191221229d..09114aad0d 100644 --- a/frontend/src/_services/authentication.service.js +++ b/frontend/src/_services/authentication.service.js @@ -17,8 +17,10 @@ const currentSessionSubject = new BehaviorSubject({ current_organization_name: null, super_admin: null, admin: null, + user_permissions: null, group_permissions: null, app_group_permissions: null, + role: null, organizations: [], isUserLoggingIn: false, authentication_status: null, diff --git a/frontend/src/_services/groupPermission.v2.service.js b/frontend/src/_services/groupPermission.v2.service.js new file mode 100644 index 0000000000..8ac8da2338 --- /dev/null +++ b/frontend/src/_services/groupPermission.v2.service.js @@ -0,0 +1,190 @@ +import config from 'config'; +import { authHeader, handleResponse } from '@/_helpers'; + +export const groupPermissionV2Service = { + create, + update, + del, + getGroup, + getGroups, + fetchAddableApps, + getUsersInGroup, + getUsersNotInGroup, + updateUserRole, + addUsersInGroups, + deleteUserFromGroup, + createGranularPermission, + fetchGranularPermissions, + deleteGranularPermission, + updateGranularPermission, + duplicate, +}; + +function create(name) { + const body = { + name, + }; + + const requestOptions = { + method: 'POST', + headers: authHeader(), + credentials: 'include', + body: JSON.stringify(body), + }; + return fetch(`${config.apiUrl}/v2/group_permissions`, requestOptions).then(handleResponse); +} + +function update(groupPermissionId, body) { + const requestOptions = { + method: 'PUT', + headers: authHeader(), + credentials: 'include', + body: JSON.stringify(body), + }; + return fetch(`${config.apiUrl}/v2/group_permissions/${groupPermissionId}`, requestOptions).then(handleResponse); +} + +function del(groupPermissionId) { + const requestOptions = { + method: 'DELETE', + headers: authHeader(), + credentials: 'include', + }; + return fetch(`${config.apiUrl}/v2/group_permissions/${groupPermissionId}`, requestOptions).then(handleResponse); +} + +function getGroup(groupPermissionId) { + const requestOptions = { + method: 'GET', + headers: authHeader(), + credentials: 'include', + }; + return fetch(`${config.apiUrl}/v2/group_permissions/${groupPermissionId}`, requestOptions).then(handleResponse); +} + +function fetchAddableApps() { + const requestOptions = { + method: 'GET', + headers: authHeader(), + credentials: 'include', + }; + return fetch(`${config.apiUrl}/v2/group_permissions/granular-permissions/addable-apps`, requestOptions).then( + handleResponse + ); +} + +function getGroups() { + const requestOptions = { + method: 'GET', + headers: authHeader(), + credentials: 'include', + }; + return fetch(`${config.apiUrl}/v2/group_permissions`, requestOptions).then(handleResponse); +} + +function addUsersInGroups(body) { + const requestOptions = { + method: 'POST', + headers: authHeader(), + credentials: 'include', + body: JSON.stringify(body), + }; + return fetch(`${config.apiUrl}/v2/group_permissions/group-user`, requestOptions).then(handleResponse); +} + +function deleteUserFromGroup(id) { + const requestOptions = { + method: 'DELETE', + headers: authHeader(), + credentials: 'include', + }; + return fetch(`${config.apiUrl}/v2/group_permissions/group-user/${id}`, requestOptions).then(handleResponse); +} + +function createGranularPermission(body) { + const requestOptions = { + method: 'POST', + headers: authHeader(), + credentials: 'include', + body: JSON.stringify(body), + }; + return fetch(`${config.apiUrl}/v2/group_permissions/granular-permissions`, requestOptions).then(handleResponse); +} + +function updateGranularPermission(id, body) { + const requestOptions = { + method: 'PUT', + headers: authHeader(), + credentials: 'include', + body: JSON.stringify(body), + }; + return fetch(`${config.apiUrl}/v2/group_permissions/granular-permissions/update/${id}`, requestOptions).then( + handleResponse + ); +} + +function deleteGranularPermission(id) { + const requestOptions = { + method: 'DELETE', + headers: authHeader(), + credentials: 'include', + }; + return fetch(`${config.apiUrl}/v2/group_permissions/granular-permissions/${id}`, requestOptions).then(handleResponse); +} + +function fetchGranularPermissions(groupPermissionId) { + const requestOptions = { + method: 'GET', + headers: authHeader(), + credentials: 'include', + }; + return fetch(`${config.apiUrl}/v2/group_permissions/${groupPermissionId}/granular-permissions`, requestOptions).then( + handleResponse + ); +} + +function updateUserRole(body) { + const requestOptions = { + method: 'PUT', + headers: authHeader(), + credentials: 'include', + body: JSON.stringify(body), + }; + return fetch(`${config.apiUrl}/v2/group_permissions/user-role/edit`, requestOptions).then(handleResponse); +} + +function getUsersInGroup(groupPermissionId, searchInput = '') { + const requestOptions = { + method: 'GET', + headers: authHeader(), + credentials: 'include', + }; + return fetch( + `${config.apiUrl}/v2/group_permissions/${groupPermissionId}/group-user?input=${searchInput && searchInput?.trim()}`, + requestOptions + ).then(handleResponse); +} + +function getUsersNotInGroup(searchInput, groupPermissionId) { + const requestOptions = { + method: 'GET', + headers: authHeader(), + credentials: 'include', + }; + return fetch( + `${config.apiUrl}/v2/group_permissions/${groupPermissionId}/group-user/addable-users?input=${searchInput.trim()}`, + requestOptions + ).then(handleResponse); +} + +function duplicate(groupPermissionId, body) { + const requestOptions = { + method: 'POST', + headers: authHeader(), + credentials: 'include', + body: JSON.stringify(body), + }; + return fetch(`${config.apiUrl}/v2/group_permissions/${groupPermissionId}/duplicate`, requestOptions).then( + handleResponse + ); +} diff --git a/frontend/src/_services/index.js b/frontend/src/_services/index.js index ea9a1ab1e5..9925c306ec 100644 --- a/frontend/src/_services/index.js +++ b/frontend/src/_services/index.js @@ -22,3 +22,4 @@ export * from './globalDatasource.service'; export * from './app_environment.service'; export * from './copilot.service'; export * from './organization_constants.service'; +export * from './groupPermission.v2.service'; diff --git a/frontend/src/_styles/groups-permissions.scss b/frontend/src/_styles/groups-permissions.scss new file mode 100644 index 0000000000..456857bfd0 --- /dev/null +++ b/frontend/src/_styles/groups-permissions.scss @@ -0,0 +1,146 @@ +@import "./typography.scss"; +@import "./designtheme.scss"; + +.granular-access-container { + display: flex; + flex-direction: row; + height: 470px; + gap: 0; + + .manage-granular-permissions-info { + display: flex; + height: 48px; + width: 612px; + border-radius: 6px; + padding: 12px 24px 12px 24px; + background: var(--slate3); + border: 1px solid var(--slate5); + border-radius: 6px; + margin-bottom: 16px; + + p { + color: var(--slate12); + // gap: 14px; + display: flex; + align-items: center; + + } + } + + + .manage-granular-permission-header { + border-bottom: 1px solid var(--slate5); + display: flex; + p { + padding: 8px 12px; + // gap: 10px; + width: 230px; + height: 36px; + font-weight: 500; + color: var(--slate11) !important; + } + } + + .empty-container { + flex-shrink: 0; /* Prevent shrinking */ + height: 100%; /* Take full height of the parent container */ + display: flex; + align-items: center; /* Center items vertically */ + justify-content: center; /* Center items horizontally */ + text-align: center; + flex-direction: column; + width: 330px; + + .icon-container { + width: 55px; + height: 55px; + background: var(--indigo4); + border-radius: 6px; + + svg { + width: 45px; + height: 45px; + path { + fill: var(--indigo9); + } + } + } + + .add-permission-btn { + width: 135px; + } + } + + .permission-body-one { + flex-grow: 1; /* Allow this to grow and fill available space */ + overflow-y: auto; + border-bottom: 1px solid var(--slate5); + margin: 0; /* Ensure no margin */ + padding: 0; /* Ensure no padding */ + min-height: calc(100% - 48px - 16px - 55px - 70px); + max-height: calc(100% - 48px - 16px - 55px - 70px); + } + + .permission-body-two { + flex-grow: 1; /* Allow this to grow and fill available space */ + overflow-y: auto; + border-bottom: 1px solid var(--slate5); + margin: 0; /* Ensure no margin */ + padding: 0; /* Ensure no padding */ + min-height: calc(100% - 16px - 55px - 54px); + max-height: calc(100% - 16px - 55px - 54px); + } + + .side-button-cont { + display: flex; + justify-content: flex-end; + align-items: center; /* Ensure the content is centered vertically */ + height: 50px; + flex-shrink: 0; /* Prevent shrinking */ + margin: 0; /* Ensure no margin */ + padding: 12px; /* Ensure no padding */ + margin-bottom: 15px; + + .add-icon { + width: 135px; + height: 30px; + } + } +} + + +.permission-type { + border: 0px !important; + width: 100% !important; + justify-content: flex-start; + padding-left: 1rem; +} + +.permission-manager-modal { + .permission-manager-title { + display: flex; + align-items: center; + gap: 5px; + } + + .type-container { + display: flex; + justify-content: space-between; + + .right-container { + display: flex; + flex-direction: column; + } + } +} + + +.delete-icon-cont { + margin-left: 200px; + + .icon-class{ + border: none !important; + background-color: none !important; + + } +} \ No newline at end of file diff --git a/frontend/src/_styles/theme.scss b/frontend/src/_styles/theme.scss index 50a458d6df..e22a996df1 100644 --- a/frontend/src/_styles/theme.scss +++ b/frontend/src/_styles/theme.scss @@ -12,6 +12,7 @@ @import "./ui-operations.scss"; @import 'react-loading-skeleton/dist/skeleton.css'; @import './table-component.scss'; +@import './groups-permissions.scss'; @import 'tailwindcss/base'; @import 'tailwindcss/components'; @import 'tailwindcss/utilities'; @@ -8924,25 +8925,38 @@ tbody { padding: 16px; tbody { - - tr>td>span, - tr>td>a { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - max-width: 140px; + tr{ + td { + border-bottom-width: 0px !important; + display: flex; + align-items: center; + flex: 9%; + padding-left: 0px !important; + padding-right: 0px !important; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + &[data-name="role-header"] { + max-width: 98px !important; + } + span,a { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: 140px; + } + } } } thead { tr { - padding: 0px 6px; + padding: 6px 0px 0px 6px; gap: 8px; width: 848px; height: 40px; display: flex; align-items: center; - margin-top: 6px; } tr>th { @@ -8950,6 +8964,10 @@ tbody { border-bottom: none !important; padding: 0 !important; width: 282px; + + &[data-name="role-header"] { + width:120px !important; + } } } @@ -8963,17 +8981,21 @@ tbody { gap: 8px; } - tr>td { - border-bottom-width: 0px !important; - display: flex; - align-items: center; - flex: 9%; - padding-left: 0px !important; - padding-right: 0px !important; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - } + // tr>td { + // border-bottom-width: 0px !important; + // display: flex; + // align-items: center; + // flex: 9%; + // padding-left: 0px !important; + // padding-right: 0px !important; + // white-space: nowrap; + // overflow: hidden; + // text-overflow: ellipsis; + + // &[data-name="role-header"] { + // width:120px !important; + // } + // } } .user-actions-button { @@ -9440,15 +9462,21 @@ tbody { } .manage-groups-body { - padding: 24px; + padding: 12px 12px 10px 12px; font-size: 12px; - overflow-y: auto; + // overflow-y: auto; height: calc(100vh - 300px); + .group-users-list-container{ + height: calc(100vh - 300px - 100px); /* Set a fixed height */ + overflow-y: auto; /* Enable vertical scrolling */ + border-bottom: 1px solid var(--slate6) !important; + } + } .groups-sub-header-wrap { - width: 612px; + // width: 612px; height: 36px; border-bottom: 1px solid var(--slate5) !important; @@ -9618,14 +9646,15 @@ tbody { } .apps-permission-wrap { - height: 72px; + height: auto; justify-content: center; + width: auto; gap: 12px; } .apps-folder-permission-wrap, .apps--variable-permission-wrap { - height: 44px; + height: auto; } .manage-group-permision-header { @@ -9635,7 +9664,7 @@ tbody { p { padding: 8px 12px; gap: 10px; - width: 206px; + width: 230px; height: 36px; font-weight: 500; color: var(--slate11) !important; @@ -9682,13 +9711,19 @@ tbody { .default-group-wrap { gap: 10px; - width: 119px; - height: 28px; + width: 130px; + height: 32px; display: flex; align-items: center; justify-content: center; - background: var(--grass3); + background: var(--indigo3); border-radius: 100px; + border: 2px solid var(--indigo7); + color: var(--indigo9); + + path { + fill: var(--indigo9); + } } .sso-icon-wrapper { @@ -9759,6 +9794,9 @@ tbody { text-transform: capitalize; } + + + .manage-group-users-row { display: flex; flex-direction: row; @@ -9769,13 +9807,13 @@ tbody { border-bottom: 1px solid var(--slate5); p { - width: 272px; + width: 262px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; span { - max-width: 150px; + max-width: 140px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; @@ -9785,8 +9823,17 @@ tbody { &:hover .apps-remove-btn { display: flex; } + + .edit-role-btn{ + margin-left: auto; + margin-right: 20px; + display: flex; + align-items: center; + padding-top: 5px; + } } + .manage-group-app-table-body { width: 602px !important; @@ -9853,7 +9900,7 @@ tbody { border-bottom: 1px solid var(--slate5); width: 612px; height: 36px; - padding: 8px 12px; + padding: 8px 12px 8px 2px; align-items: center; @@ -9863,6 +9910,15 @@ tbody { font-weight: 500; } + .edit-role-btn{ + margin-left: auto; + margin-right: 50px; + display: flex; + width: 20px; + align-items: center; + padding-top: 5px; + } + } .manage-groups-permission-apps, @@ -9888,12 +9944,12 @@ tbody { .apps-variable-permission-wrap, .apps-constant-permission-wrap { gap: 10px; - height: 72px; + height: auto; } .apps-folder-permission-wrap, .apps-variable-permission-wrap { - height: 44px; + height: auto; border-bottom: 1px solid var(--slate5); } @@ -10800,6 +10856,12 @@ tbody { border-bottom-left-radius: 6px; border-bottom-right-radius: 6px; + + .user-detail{ + display: flex; + flex-direction: column; + } + } .user-filter-search { @@ -12784,7 +12846,7 @@ tbody { text-overflow: ellipsis; overflow: hidden; white-space: nowrap; - max-width: 185px; + max-width: 210px; } .group-chip { @@ -13170,6 +13232,27 @@ tbody { } } +.modal-base { + .modal-footer { + padding: 1rem; + + .tj-btn-left-icon { + svg { + width: 20px; + height: 20px; + + path { + fill: var(--indigo1); + } + } + } + + .tj-large-btn { + font-weight: 500; + font-size: 14px; + } + } +} .component-spinner { animation: l13 1s infinite linear; position: absolute; @@ -13183,7 +13266,6 @@ tbody { .widget-version-identifier { position: absolute; - right: 0px; top: 0px; border-radius: 0px 8px 0px 8px; height: 16px; diff --git a/frontend/src/_styles/widgets/multi-select.scss b/frontend/src/_styles/widgets/multi-select.scss index caa63dce8f..86ede8e00a 100644 --- a/frontend/src/_styles/widgets/multi-select.scss +++ b/frontend/src/_styles/widgets/multi-select.scss @@ -181,6 +181,10 @@ } } +.tj-ms-usergroup{ + width: auto; +} + .tj-ms-count { border-radius: 2px; display: flex; diff --git a/frontend/src/_ui/AppButton/AppButton.scss b/frontend/src/_ui/AppButton/AppButton.scss index 2fee7d996e..15320ad44e 100644 --- a/frontend/src/_ui/AppButton/AppButton.scss +++ b/frontend/src/_ui/AppButton/AppButton.scss @@ -1,7 +1,7 @@ @import "../../_styles/designtheme.scss"; .tj-base-btn { - box-sizing: border-box; + // box-sizing: border-box; display: flex; flex-direction: row; justify-content: center; diff --git a/frontend/src/_ui/Icon/solidIcons/GranularAccess.jsx b/frontend/src/_ui/Icon/solidIcons/GranularAccess.jsx new file mode 100644 index 0000000000..0c5a3b309b --- /dev/null +++ b/frontend/src/_ui/Icon/solidIcons/GranularAccess.jsx @@ -0,0 +1,19 @@ +import React from 'react'; + +const GranularAccess = ({ fill = '#C1C8CD', width = '17', className = '', viewBox = '0 0 17 17' }) => ( + + + +); + +export default GranularAccess; diff --git a/frontend/src/_ui/Icon/solidIcons/UserGear.jsx b/frontend/src/_ui/Icon/solidIcons/UserGear.jsx new file mode 100644 index 0000000000..e1a024cb5c --- /dev/null +++ b/frontend/src/_ui/Icon/solidIcons/UserGear.jsx @@ -0,0 +1,19 @@ +import React from 'react'; + +const UserGear = ({ fill = '#889096', width = '17', className = '', viewBox = '0 0 17 17' }) => ( + + + +); + +export default UserGear; diff --git a/frontend/src/_ui/Icon/solidIcons/UserGroups.jsx b/frontend/src/_ui/Icon/solidIcons/UserGroups.jsx new file mode 100644 index 0000000000..3b22d5ebba --- /dev/null +++ b/frontend/src/_ui/Icon/solidIcons/UserGroups.jsx @@ -0,0 +1,39 @@ +import React from 'react'; + +const UserGroup = ({ fill = '#889096', width = '15', className = '', viewBox = '0 0 15 15' }) => ( + + + + + + + + +); + +export default UserGroup; diff --git a/frontend/src/_ui/Icon/solidIcons/index.js b/frontend/src/_ui/Icon/solidIcons/index.js index 97a08d1e3a..45a5d1e040 100644 --- a/frontend/src/_ui/Icon/solidIcons/index.js +++ b/frontend/src/_ui/Icon/solidIcons/index.js @@ -167,6 +167,8 @@ import Open from './Open.jsx'; import TooljetIcon from './TooljetIcon.jsx'; import TriangleUpCenter from './TriangleUpCenter.jsx'; import TriangleDownCenter from './TriangleDownCenter.jsx'; +import UserGear from './UserGear.jsx'; +import GranularAccess from './GranularAccess.jsx'; import Search01 from './Search01.jsx'; import ShiftButtonIcon from './ShiftButtonIcon.jsx'; import Unpin01 from './Unpin01.jsx'; @@ -293,6 +295,8 @@ const Icon = (props) => { return ; case 'grid': return ; + case 'granularaccess': + return ; case 'helppolygon': return ; case 'home': @@ -445,6 +449,8 @@ const Icon = (props) => { return ; case 'usergroup': return ; + case 'usergear': + return ; case 'userremove': return ; case 'uturn': diff --git a/frontend/src/_ui/Layout/index.jsx b/frontend/src/_ui/Layout/index.jsx index 2acbaa32c3..6cc104f39c 100644 --- a/frontend/src/_ui/Layout/index.jsx +++ b/frontend/src/_ui/Layout/index.jsx @@ -47,10 +47,7 @@ function Layout({ }; const canCreateVariableOrConstant = () => { - return canAnyGroupPerformAction( - 'org_environment_variable_create', - authenticationService.currentSessionValue.group_permissions - ); + return authenticationService.currentSessionValue.user_permissions?.org_constant_c_r_u_d; }; return ( diff --git a/frontend/src/_ui/Modal/AppsSelect.jsx b/frontend/src/_ui/Modal/AppsSelect.jsx new file mode 100644 index 0000000000..4427a7298c --- /dev/null +++ b/frontend/src/_ui/Modal/AppsSelect.jsx @@ -0,0 +1,204 @@ +import { getWorkspaceId } from '@/_helpers/utils'; +import { ButtonSolid } from '@/_ui/AppButton/AppButton'; +import React, { useState } from 'react'; +import { useNavigate } from 'react-router-dom'; +import Select, { components } from 'react-select'; +import { FilterPreview } from '@/_components'; +import './appSelect.theme.scss'; + +export function AppsSelect(props) { + const navigate = useNavigate(); + const workspaceId = getWorkspaceId(); + const darkMode = localStorage.getItem('darkMode') === 'true'; + + //Will be used when workspace routing settings have been merged + const Menu = (props) => { + return ( + + {props.children} +
+ navigate(`/${workspaceId}/workspace-settings`)} + iconCustomClass="rectangle-add-icon" + className="create-group" + fill="var(--indigo9)" + variant="secondary" + leftIcon="addrectangle" + > + Create new group + +
+
+ ); + }; + + const InputOption = ({ getStyles, Icon, isDisabled, isFocused, isSelected, children, innerProps, ...rest }) => { + const [isActive, setIsActive] = useState(false); + const onMouseDown = () => setIsActive(true); + const onMouseUp = () => setIsActive(false); + const onMouseLeave = () => setIsActive(false); + + const style = { + alignItems: 'center', + backgroundColor: 'transparent', + color: 'inherit', + display: 'flex ', + }; + + const props = { + ...innerProps, + onMouseDown, + onMouseUp, + onMouseLeave, + style, + }; + + return ( + + +
{children}
+
+ ); + }; + + const MultiValue = (props) => { + // Check if props.data exists and is not "all" + if (!props.data?.isAllField) { + return ( + +
{props.data.name}
+
+ ); + } + }; + + const selectStyles = { + indicatorSeparator: (base) => ({ + ...base, + display: 'none', + }), + option: (base) => ({ + ...base, + '.select-option': { + margin: '0px 10px', + }, + }), + multiValue: (base) => ({ + ...base, + borderRadius: '6px', + backgroundColor: 'var(--slate3)', + color: 'var(--slate11)', + '.selected-value': { + padding: '0px 6px 1px 3px', + color: 'var(--slate11)', + }, + }), + multiValueRemove: (base, state) => ({ + ...base, + '&:hover': { + backgroundColor: 'var(--tomato3)', + color: 'var(--tomato9)', + }, + paddingLeft: '0px', + ...(state.data.isFixed && { display: 'none' }), + }), + input: (base) => ({ + ...base, + input: { + height: '25px !important', + color: 'var(--slate11) !important', + }, + }), + control: (base) => ({ + ...base, + outline: 'none', + border: '1px solid var(--slate7)', + boxShadow: 'none', + borderRadius: '6px', + background: 'unset', + '&:hover': { + border: '1px solid var(--slate8)', + }, + }), + menuList: (base) => ({ + ...base, + maxHeight: '200px', + }), + menu: (base) => ({ + ...base, + background: 'var(--slate1)', + '.add-group-btn': { + display: 'flex', + justifyContent: 'flex-end', + padding: '8px', + borderTop: '1px solid var(--slate5)', + '.create-group': { + background: 'none !important', + '.rectangle-add-icon': { + width: '20px', + height: '20px', + }, + }, + }, + }), + }; + + return ( + { switch (groupName) { case 'end-user': - return 'End user'; + return 'End-user'; case 'admin': return 'Admin'; diff --git a/server/src/modules/user_resource_permissions/constants/group-permissions.constant.ts b/server/src/modules/user_resource_permissions/constants/group-permissions.constant.ts index 0ab1e39477..5d73040de1 100644 --- a/server/src/modules/user_resource_permissions/constants/group-permissions.constant.ts +++ b/server/src/modules/user_resource_permissions/constants/group-permissions.constant.ts @@ -76,7 +76,7 @@ export const ERROR_HANDLER = { DEFAULT_GROUP_NAME_UPDATE: 'Not allowed to change default group name', DEFAULT_GROUP_NAME_DELETE: 'Not allowed to delete default group', NON_EDITABLE_GROUP_UPDATE: 'Group cannot be update because its not allowed', - NON_BUILDER_PERMISSION_UPDATE: 'End user cannot have this builder level permissions', + NON_BUILDER_PERMISSION_UPDATE: 'End-user cannot have this builder level permissions', DEFAULT_GROUP_UPDATE_NOT_ALLOWED: 'Defaults group cant be deleted', UPDATE_EDITABLE_PERMISSION_END_USER_GROUP: 'End-users can only be granted permission to view apps. If you wish to add this permission, kindly change the following users role from end-user to builder- ', diff --git a/server/src/modules/user_resource_permissions/services/group-permissions.utility.service.ts b/server/src/modules/user_resource_permissions/services/group-permissions.utility.service.ts index ca9a8076ae..d5461ac78b 100644 --- a/server/src/modules/user_resource_permissions/services/group-permissions.utility.service.ts +++ b/server/src/modules/user_resource_permissions/services/group-permissions.utility.service.ts @@ -117,7 +117,7 @@ export class GroupPermissionsUtilityService { message: { error: 'End-users can only be granted permission to view apps. Kindly change the user role or custom group to continue.', - title: 'Conflicting Permissions', + title: 'Conflicting permissions', }, }); } From ef2c8b7f13c21f7225b5eafb7f29d0ebac11d2fd Mon Sep 17 00:00:00 2001 From: kriks7iitk Date: Thu, 11 Jul 2024 11:15:22 +0530 Subject: [PATCH 050/190] moves migration to data migrations --- frontend/assets/csv/sample_upload.csv | 4 +- .../AddEditResourcePermissionsModal.jsx | 5 +- .../AppResourcePermission.jsx | 2 +- .../index.jsx | 15 +- .../ManageGroupPermissionsV2.jsx | 224 +++++++++--------- .../groupPermissions.theme.scss | 1 + ...0-CreateDefaultGroupInExistingWorkspace.ts | 0 ...sersToRespectiveRolesBuilderAndEndUsers.ts | 0 ...737529-MigrateCustomGroupToNewUserGroup.ts | 0 ...-DropGroupPermissionsOlderRelatedTables.ts | 0 server/src/helpers/queries.ts | 9 +- .../services/granular_permissions.service.ts | 5 +- server/src/services/organizations.service.ts | 20 +- 13 files changed, 152 insertions(+), 133 deletions(-) rename server/{migrations => data-migrations}/1720352990850-CreateDefaultGroupInExistingWorkspace.ts (100%) rename server/{migrations => data-migrations}/1720365772516-AddingUsersToRespectiveRolesBuilderAndEndUsers.ts (100%) rename server/{migrations => data-migrations}/1720434737529-MigrateCustomGroupToNewUserGroup.ts (100%) rename server/{migrations => data-migrations}/1720513124281-DropGroupPermissionsOlderRelatedTables.ts (100%) diff --git a/frontend/assets/csv/sample_upload.csv b/frontend/assets/csv/sample_upload.csv index b92715cca1..cd152f5452 100644 --- a/frontend/assets/csv/sample_upload.csv +++ b/frontend/assets/csv/sample_upload.csv @@ -1,2 +1,2 @@ -First Name,Last Name,Email,Group -test,user,test@gmail.com,For multiple groups separate using pipe (|) operator e.g. All Users|Admin \ No newline at end of file +First Name,Last Name,Email,Group,User Role +test,user,test@gmail.com,"For multiple groups separate using pipe (|) operator e.g. Groups1|Group2 or leave blank if no group assign","Assign each user a role: Admin, Builder or End User. User role value should be exact same" \ No newline at end of file diff --git a/frontend/src/ManageGranularAccess/AddEditResourceModal/AddEditResourcePermissionsModal.jsx b/frontend/src/ManageGranularAccess/AddEditResourceModal/AddEditResourcePermissionsModal.jsx index 3424779e03..3b7479032c 100644 --- a/frontend/src/ManageGranularAccess/AddEditResourceModal/AddEditResourcePermissionsModal.jsx +++ b/frontend/src/ManageGranularAccess/AddEditResourceModal/AddEditResourcePermissionsModal.jsx @@ -104,7 +104,7 @@ function AddEditResourcePermissionsModal({ type="radio" checked={isAll} onClick={() => { - updateParentState((prevState) => ({ isAll: !prevState.isAll, isCustom: !!prevState.isAll })); + !isAll && updateParentState((prevState) => ({ isAll: !prevState.isAll, isCustom: !!prevState.isAll })); }} />
@@ -121,7 +121,8 @@ function AddEditResourcePermissionsModal({ disabled={addableApps.length === 0 || disableBuilderLevelUpdate} checked={isCustom} onClick={() => { - updateParentState((prevState) => ({ isCustom: !prevState.isCustom, isAll: prevState.isCustom })); + !isCustom && + updateParentState((prevState) => ({ isCustom: !prevState.isCustom, isAll: prevState.isCustom })); }} />
diff --git a/frontend/src/ManageGranularAccess/AppResourcePermission.jsx b/frontend/src/ManageGranularAccess/AppResourcePermission.jsx index 0c93d0b70c..0b311e64a8 100644 --- a/frontend/src/ManageGranularAccess/AppResourcePermission.jsx +++ b/frontend/src/ManageGranularAccess/AppResourcePermission.jsx @@ -35,7 +35,7 @@ function AppResourcePermissions({ >
-
{permissions.name}
+
{` ${permissions.name}`}
diff --git a/frontend/src/ManageGroupPermissionResourcesV2/index.jsx b/frontend/src/ManageGroupPermissionResourcesV2/index.jsx index f996216af8..3305097887 100644 --- a/frontend/src/ManageGroupPermissionResourcesV2/index.jsx +++ b/frontend/src/ManageGroupPermissionResourcesV2/index.jsx @@ -555,7 +555,10 @@ class ManageGroupPermissionResourcesComponent extends React.Component {
- @@ -589,16 +588,90 @@ class ManageGroupPermissionsComponent extends React.Component {
- - {!showNewGroupForm && !showGroupNameUpdateForm && ( -
-
-
+
+
+
+
+ + USER ROLE +
+ {defaultGroups.map((permissionGroup) => { + return ( + { + this.setState({ + selectedGroupPermissionId: permissionGroup.id, + selectedGroup: this.humanizeifDefaultGroupName(permissionGroup.name), + selectedGroupObject: permissionGroup, + }); + }} + toolTipText={this.humanizeifDefaultGroupName(permissionGroup.name)} + overLayComponent={this.renderPopoverContent} + className="groups-folder-list" + dataCy={this.humanizeifDefaultGroupName(permissionGroup.name) + .toLowerCase() + .replace(/\s+/g, '-')} + > + + {this.humanizeifDefaultGroupName(permissionGroup.name)} + + + ); + })} +
+
+ {!showGroupSearchBar ? (
- - USER ROLE + + CUSTOM GROUPS +
+ { + e.preventDefault(); + this.setState({ showGroupSearchBar: true }); + }} + size="xsm" + rightIcon="search" + iconWidth="15" + fill="#889096" + className="create-group-custom" + /> + { + e.preventDefault(); + this.setState({ newGroupName: null, showNewGroupForm: true, isSaveBtnDisabled: true }); + }} + size="sm" + fill="#889096" + rightIcon="plus" + iconWidth="20" + className="create-group-custom" + /> +
- {defaultGroups.map((permissionGroup) => { + ) : ( +
+ +
+ )} + + {groups.length ? ( + filteredGroup.map((permissionGroup) => { return ( ); - })} -
-
- {!showGroupSearchBar ? ( -
- - CUSTOM GROUPS -
- { - e.preventDefault(); - this.setState({ showGroupSearchBar: true }); - }} - size="xsm" - rightIcon="search" - iconWidth="15" - fill="#889096" - className="create-group-custom" - /> - { - e.preventDefault(); - this.setState({ newGroupName: null, showNewGroupForm: true, isSaveBtnDisabled: true }); - }} - size="sm" - fill="#889096" - rightIcon="plus" - iconWidth="20" - className="create-group-custom" - /> -
-
- ) : ( -
- -
- )} - - {groups.length ? ( - filteredGroup.map((permissionGroup) => { - return ( - { - this.setState({ - selectedGroupPermissionId: permissionGroup.id, - selectedGroup: this.humanizeifDefaultGroupName(permissionGroup.name), - selectedGroupObject: permissionGroup, - }); - }} - toolTipText={this.humanizeifDefaultGroupName(permissionGroup.name)} - overLayComponent={this.renderPopoverContent} - className="groups-folder-list" - dataCy={this.humanizeifDefaultGroupName(permissionGroup.name) - .toLowerCase() - .replace(/\s+/g, '-')} - > - - {this.humanizeifDefaultGroupName(permissionGroup.name)} - - - ); - }) - ) : ( -
- - No custom groups added -
- )} -
-
- -
- {isLoading ? ( - + }) ) : ( - { - return { - name: this.humanizeifDefaultGroupName(group.name), - value: group.name, - }; - })} - /> +
+ + No custom groups added +
)}
- )} + +
+ {isLoading ? ( + + ) : ( + { + return { + name: this.humanizeifDefaultGroupName(group.name), + value: group.name, + }; + })} + /> + )} +
+
diff --git a/frontend/src/ManageGroupPermissionsV2/groupPermissions.theme.scss b/frontend/src/ManageGroupPermissionsV2/groupPermissions.theme.scss index 0ad36a1d01..1a6a4fd1cb 100644 --- a/frontend/src/ManageGroupPermissionsV2/groupPermissions.theme.scss +++ b/frontend/src/ManageGroupPermissionsV2/groupPermissions.theme.scss @@ -430,6 +430,7 @@ } .resource-text { margin-left: 10px; + padding-left: 20px; } } } diff --git a/server/migrations/1720352990850-CreateDefaultGroupInExistingWorkspace.ts b/server/data-migrations/1720352990850-CreateDefaultGroupInExistingWorkspace.ts similarity index 100% rename from server/migrations/1720352990850-CreateDefaultGroupInExistingWorkspace.ts rename to server/data-migrations/1720352990850-CreateDefaultGroupInExistingWorkspace.ts diff --git a/server/migrations/1720365772516-AddingUsersToRespectiveRolesBuilderAndEndUsers.ts b/server/data-migrations/1720365772516-AddingUsersToRespectiveRolesBuilderAndEndUsers.ts similarity index 100% rename from server/migrations/1720365772516-AddingUsersToRespectiveRolesBuilderAndEndUsers.ts rename to server/data-migrations/1720365772516-AddingUsersToRespectiveRolesBuilderAndEndUsers.ts diff --git a/server/migrations/1720434737529-MigrateCustomGroupToNewUserGroup.ts b/server/data-migrations/1720434737529-MigrateCustomGroupToNewUserGroup.ts similarity index 100% rename from server/migrations/1720434737529-MigrateCustomGroupToNewUserGroup.ts rename to server/data-migrations/1720434737529-MigrateCustomGroupToNewUserGroup.ts diff --git a/server/migrations/1720513124281-DropGroupPermissionsOlderRelatedTables.ts b/server/data-migrations/1720513124281-DropGroupPermissionsOlderRelatedTables.ts similarity index 100% rename from server/migrations/1720513124281-DropGroupPermissionsOlderRelatedTables.ts rename to server/data-migrations/1720513124281-DropGroupPermissionsOlderRelatedTables.ts diff --git a/server/src/helpers/queries.ts b/server/src/helpers/queries.ts index fd971c5fa1..359cdd2a84 100644 --- a/server/src/helpers/queries.ts +++ b/server/src/helpers/queries.ts @@ -53,10 +53,17 @@ export function viewableAppsQueryUsingPermissions( if (select) { viewableAppsQb.select(select.map((col) => `viewable_apps.${col}`)); } - if (userAppPermissions.hideAll || !(userAppPermissions.isAllEditable || userAppPermissions.isAllViewable)) { + const viewAll = userAppPermissions.isAllEditable || userAppPermissions.isAllViewable; + if (!viewAll || userAppPermissions.hideAll) { viewableAppsQb.where('viewable_apps.id IN (:...viewableApps)', { viewableApps, }); } + const hiddenApps = userAppPermissions.hiddenAppsId; + if (!userAppPermissions.hideAll && viewAll && hiddenApps.length > 0) { + viewableAppsQb.where('viewable_apps.id NOT IN (:...hiddenApps)', { + hiddenApps, + }); + } return viewableAppsQb; } diff --git a/server/src/services/granular_permissions.service.ts b/server/src/services/granular_permissions.service.ts index 386033fbb1..83e39ea582 100644 --- a/server/src/services/granular_permissions.service.ts +++ b/server/src/services/granular_permissions.service.ts @@ -40,7 +40,8 @@ export class GranularPermissionsService { ) { return await dbTransactionWrap(async (manager: EntityManager) => { const { createGranularPermissionDto, organizationId } = createGranularPermissionObject; - const { name, type, groupId, isAll } = createGranularPermissionDto; + const { name, type, groupId, isAll: isAllDto } = createGranularPermissionDto; + const isAll = isAllDto ? true : false; const granularPermissions: GranularPermissions = await catchDbException(async () => { const granularPermissions = manager.create(GranularPermissions, { name, type, groupId, isAll }); return await manager.save(granularPermissions); @@ -77,7 +78,7 @@ export class GranularPermissionsService { const { organizationId, updateGranularPermissionDto, group } = updateGranularPermissionsObj; const { isAll, name, resourcesToAdd, resourcesToDelete, actions, allowRoleChange } = updateGranularPermissionDto; const updateGranularPermission = { - isAll: isAll !== null || isAll !== undefined ? isAll : granularPermissions.isAll, + isAll: isAll ?? granularPermissions.isAll, ...(name && { name }), }; const updateResource: UpdateResourceGroupPermissionsObject = { diff --git a/server/src/services/organizations.service.ts b/server/src/services/organizations.service.ts index 5892bf3131..4b94f7e9c9 100644 --- a/server/src/services/organizations.service.ts +++ b/server/src/services/organizations.service.ts @@ -63,7 +63,7 @@ interface UserCsvRow { first_name: string; last_name: string; email: string; - role: string; + user_role: string; groups?: any; } @@ -711,7 +711,7 @@ export class OrganizationsService { const existingGroups = groupPermissions.map((groupPermission) => groupPermission.name); csv .parseString(fileStream.toString(), { - headers: ['first_name', 'last_name', 'email', 'groups', 'role'], + headers: ['first_name', 'last_name', 'email', 'groups', 'user_role'], renameHeaders: true, ignoreEmpty: true, }) @@ -719,13 +719,12 @@ export class OrganizationsService { return next(null, { ...row, groups: this.createGroupsList(row?.groups), - role: this.convertUserRolesCasing(row?.role), + user_role: this.convertUserRolesCasing(row?.user_role), }); }) .validate(async (data: UserCsvRow, next) => { await dbTransactionWrap(async (manager: EntityManager) => { //Check for existing users - let isInvalidRole = false; const user = await this.usersService.findByEmail(data?.email, undefined, undefined, manager); @@ -734,7 +733,14 @@ export class OrganizationsService { } else if (user?.organizationUsers?.some((ou) => ou.organizationId === currentUser.organizationId)) { existingUsers.push(data?.email); } else { - users.push(data); + const user = { + first_name: data.first_name, + last_name: data.last_name, + email: data.email, + role: data.user_role, + groups: data?.groups, + }; + users.push(user); } //Check for invalid groups @@ -748,8 +754,8 @@ export class OrganizationsService { } } - if (!Object.values(USER_ROLE).includes(data?.role as USER_ROLE)) { - invalidRoles.push(data?.role); + if (!Object.values(USER_ROLE).includes(data?.user_role as USER_ROLE)) { + invalidRoles.push(data?.user_role); isInvalidRole = true; } From d9cc52a3e52f20bbd912e7afab25a3ee23a02834 Mon Sep 17 00:00:00 2001 From: kriks7iitk Date: Thu, 11 Jul 2024 11:37:22 +0530 Subject: [PATCH 051/190] Deleted migeations from table migrations --- ...0-CreateDefaultGroupInExistingWorkspace.ts | 149 ------------ ...sersToRespectiveRolesBuilderAndEndUsers.ts | 124 ---------- ...737529-MigrateCustomGroupToNewUserGroup.ts | 213 ------------------ ...-DropGroupPermissionsOlderRelatedTables.ts | 9 - 4 files changed, 495 deletions(-) delete mode 100644 server/migrations/1720352990850-CreateDefaultGroupInExistingWorkspace.ts delete mode 100644 server/migrations/1720365772516-AddingUsersToRespectiveRolesBuilderAndEndUsers.ts delete mode 100644 server/migrations/1720434737529-MigrateCustomGroupToNewUserGroup.ts delete mode 100644 server/migrations/1720513124281-DropGroupPermissionsOlderRelatedTables.ts diff --git a/server/migrations/1720352990850-CreateDefaultGroupInExistingWorkspace.ts b/server/migrations/1720352990850-CreateDefaultGroupInExistingWorkspace.ts deleted file mode 100644 index 01624e6946..0000000000 --- a/server/migrations/1720352990850-CreateDefaultGroupInExistingWorkspace.ts +++ /dev/null @@ -1,149 +0,0 @@ -import { CreateGranularPermissionDto } from '@dto/granular-permissions.dto'; -import { - DEFAULT_GRANULAR_PERMISSIONS_NAME, - DEFAULT_RESOURCE_PERMISSIONS, - ResourceType, -} from '@module/user_resource_permissions/constants/granular-permissions.constant'; -import { - USER_ROLE, - DEFAULT_GROUP_PERMISSIONS_MIGRATIONS, -} from '@module/user_resource_permissions/constants/group-permissions.constant'; -import { - CreateResourcePermissionObject, - ResourcePermissionMetaData, -} from '@module/user_resource_permissions/interface/granular-permissions.interface'; -import { AppsGroupPermissions } from 'src/entities/apps_group_permissions.entity'; -import { GranularPermissions } from 'src/entities/granular_permissions.entity'; -import { GroupPermissions } from 'src/entities/group_permissions.entity'; -import { Organization } from 'src/entities/organization.entity'; -import { UserGroupPermission } from 'src/entities/user_group_permission.entity'; -import { EntityManager, MigrationInterface, QueryRunner } from 'typeorm'; - -export class CreateDefaultGroupInExistingWorkspace1720352990850 implements MigrationInterface { - public async up(queryRunner: QueryRunner): Promise { - const manager = queryRunner.manager; - const organizationIds = ( - await manager.find(Organization, { - select: ['id'], - }) - ).map((organization) => organization.id); - - for (const organizationId of organizationIds) { - for (const defaultGroup of Object.keys(USER_ROLE)) { - const groupPermissions = DEFAULT_GROUP_PERMISSIONS_MIGRATIONS[defaultGroup]; - const query = ` - INSERT INTO permission_groups ( - organization_id, - name, - type, - app_create, - app_delete, - folder_crud, - org_constant_crud, - data_source_create, - data_source_delete - ) VALUES ( - '${organizationId}', - '${groupPermissions.name}', - '${groupPermissions.type}', - ${groupPermissions.appCreate}, - ${groupPermissions.appDelete}, - ${groupPermissions.folderCRUD}, - ${groupPermissions.orgConstantCRUD}, - ${groupPermissions.dataSourceCreate}, - ${groupPermissions.dataSourceDelete} - ) RETURNING *; - `; - const group: GroupPermissions = (await manager.query(query))[0]; - const groupGranularPermissions: Record = - DEFAULT_RESOURCE_PERMISSIONS[group.name]; - - for (const resource of Object.keys(groupGranularPermissions)) { - const createResourcePermissionObj: CreateResourcePermissionObject = groupGranularPermissions[resource]; - const dtoObject = { - name: DEFAULT_GRANULAR_PERMISSIONS_NAME[resource], - groupId: group.id, - type: resource as ResourceType, - isAll: true, - createAppsPermissionsObject: {}, - }; - if (group.name === USER_ROLE.ADMIN) { - const granularPermissions = await this.createGranularPermission(manager, dtoObject); - await this.createAppsResourcePermission( - manager, - { granularPermissions, organizationId }, - createResourcePermissionObj - ); - } - } - //Migrating Admins to new Admins - if (group.name === USER_ROLE.ADMIN) { - const adminsUsers = await manager - .createQueryBuilder(UserGroupPermission, 'usersGroup') - .innerJoin( - 'usersGroup.groupPermission', - 'groupPermission', - 'groupPermission.organizationId = :organizationId', - { - organizationId, - } - ) - .where('groupPermission.group = :admin', { - admin: 'admin', - }) - .getMany(); - const userIds = adminsUsers.map((userGroup) => userGroup.userId); - await this.migrateUserGroup(manager, userIds, group.id); - } - } - } - } - - async createGranularPermission( - manager: EntityManager, - createObject: CreateGranularPermissionDto - ): Promise { - const query = ` - INSERT INTO granular_permissions ( - group_id, - name, - type, - is_all - ) VALUES ( - '${createObject.groupId}', '${createObject.name}', '${createObject.type}', ${createObject.isAll} - ) RETURNING *; - `; - return (await manager.query(query))[0]; - } - - async createAppsResourcePermission( - manager: EntityManager, - createMeta: ResourcePermissionMetaData, - createObject: CreateResourcePermissionObject - ): Promise { - const { granularPermissions } = createMeta; - const query = ` - INSERT INTO apps_group_permissions ( - granular_permission_id, - can_edit, - can_view, - hide_from_dashboard - ) VALUES ( - '${granularPermissions.id}', ${createObject.canEdit}, ${createObject.canView}, ${createObject.hideFromDashboard} - ) RETURNING *; - `; - return (await manager.query(query))[0]; - } - - async migrateUserGroup(manager: EntityManager, userIds: string[], groupId: string) { - if (userIds.length == 0) return; - const valuesString = userIds.map((id) => `('${id}', '${groupId}')`).join(','); - const query = ` - INSERT INTO group_users (user_id, group_id) - VALUES ${valuesString}; - `; - return await manager.query(query); - } - - public async down(queryRunner: QueryRunner): Promise {} -} diff --git a/server/migrations/1720365772516-AddingUsersToRespectiveRolesBuilderAndEndUsers.ts b/server/migrations/1720365772516-AddingUsersToRespectiveRolesBuilderAndEndUsers.ts deleted file mode 100644 index 25463d3ca7..0000000000 --- a/server/migrations/1720365772516-AddingUsersToRespectiveRolesBuilderAndEndUsers.ts +++ /dev/null @@ -1,124 +0,0 @@ -import { - GROUP_PERMISSIONS_TYPE, - USER_ROLE, -} from '@module/user_resource_permissions/constants/group-permissions.constant'; -import { GroupPermissions } from 'src/entities/group_permissions.entity'; -import { Organization } from 'src/entities/organization.entity'; -import { OrganizationUser } from 'src/entities/organization_user.entity'; -import { User } from 'src/entities/user.entity'; -import { UserGroupPermission } from 'src/entities/user_group_permission.entity'; -import { Brackets, EntityManager, MigrationInterface, QueryRunner } from 'typeorm'; - -export class AddingUsersToRespectiveRolesBuilderAndEndUsers1720365772516 implements MigrationInterface { - public async up(queryRunner: QueryRunner): Promise { - const manager = queryRunner.manager; - const organizationIds = ( - await manager.find(Organization, { - select: ['id'], - }) - ).map((organization) => organization.id); - await this.getAndConvertEditorBuilderUsers(manager, organizationIds); - } - - async getAndConvertEditorBuilderUsers(manager: EntityManager, organizationIds: string[]) { - for (const organizationId of organizationIds) { - const userIdsWithEditPermissions = ( - await manager - .createQueryBuilder(User, 'users') - .innerJoin( - 'users.organizationUsers', - 'organization_users', - 'organization_users.organizationId = :organizationId ', - { - organizationId, - } - ) - .innerJoin( - 'users.groupPermissions', - 'group_permissions', - 'organization_users.organizationId = group_permissions.organizationId' - ) - .leftJoin('group_permissions.appGroupPermission', 'app_group_permissions') - .andWhere( - new Brackets((qb) => { - qb.where('app_group_permissions.read = true AND app_group_permissions.update = true').orWhere( - 'group_permissions.appCreate = true' - ); - }) - ) - .select('users.id') - .distinct() - .getMany() - ).map((record) => record.id); - - const userIdsOfAppOwners = ( - await manager - .createQueryBuilder(User, 'users') - .innerJoin( - 'users.organizationUsers', - 'organization_users', - 'organization_users.organizationId = :organizationId', - { - organizationId, - } - ) - .innerJoin('users.apps', 'apps') - .select('users.id') - .distinct() - .getMany() - ).map((record) => record.id); - - const adminsUsers = ( - await manager - .createQueryBuilder(UserGroupPermission, 'usersGroup') - .innerJoin( - 'usersGroup.groupPermission', - 'groupPermission', - 'groupPermission.organizationId = :organizationId', - { - organizationId, - } - ) - .where('groupPermission.group = :admin', { - admin: 'admin', - }) - .getMany() - ).map((record) => record.userId); - const builderUsersWithAdmin = [...new Set([...userIdsWithEditPermissions, ...userIdsOfAppOwners])]; - const builderUsersWoAdmin = builderUsersWithAdmin.filter((id) => !adminsUsers.includes(id)); - const builderGroup = await manager.findOne(GroupPermissions, { - where: { name: USER_ROLE.BUILDER, type: GROUP_PERMISSIONS_TYPE.DEFAULT, organizationId: organizationId }, - }); - const endUserGroup = await manager.findOne(GroupPermissions, { - where: { name: USER_ROLE.END_USER, type: GROUP_PERMISSIONS_TYPE.DEFAULT, organizationId: organizationId }, - }); - - console.log('Builders users'); - console.log(builderUsersWoAdmin); - - await this.migrateUserGroup(manager, builderUsersWoAdmin, builderGroup.id); - const organizationUser = ( - await manager.find(OrganizationUser, { - where: { - organizationId, - }, - }) - ).map((record) => record.userId); - const builderAdminUsers = [...new Set([...builderUsersWoAdmin, ...adminsUsers])]; - const endUsers = organizationUser.filter((userId) => !builderAdminUsers.includes(userId)); - await this.migrateUserGroup(manager, endUsers, endUserGroup.id); - } - } - - async migrateUserGroup(manager: EntityManager, userIds: string[], groupId: string) { - if (userIds.length === 0) return; - const valuesString = userIds.map((id) => `('${id}', '${groupId}')`).join(','); - const query = ` - INSERT INTO group_users (user_id, group_id) - VALUES ${valuesString}; - `; - return await manager.query(query); - } - - public async down(queryRunner: QueryRunner): Promise {} -} diff --git a/server/migrations/1720434737529-MigrateCustomGroupToNewUserGroup.ts b/server/migrations/1720434737529-MigrateCustomGroupToNewUserGroup.ts deleted file mode 100644 index 8cc12e70d9..0000000000 --- a/server/migrations/1720434737529-MigrateCustomGroupToNewUserGroup.ts +++ /dev/null @@ -1,213 +0,0 @@ -import { CreateGranularPermissionDto } from '@dto/granular-permissions.dto'; -import { - DEFAULT_GRANULAR_PERMISSIONS_NAME, - ResourceType, -} from '@module/user_resource_permissions/constants/granular-permissions.constant'; -import { - GROUP_PERMISSIONS_TYPE, - USER_ROLE, -} from '@module/user_resource_permissions/constants/group-permissions.constant'; -import { - CreateResourcePermissionObject, - ResourcePermissionMetaData, -} from '@module/user_resource_permissions/interface/granular-permissions.interface'; -import { AppGroupPermission } from 'src/entities/app_group_permission.entity'; -import { AppsGroupPermissions } from 'src/entities/apps_group_permissions.entity'; -import { GranularPermissions } from 'src/entities/granular_permissions.entity'; -import { GroupPermission } from 'src/entities/group_permission.entity'; -import { GroupPermissions } from 'src/entities/group_permissions.entity'; -import { Organization } from 'src/entities/organization.entity'; -import { EntityManager, MigrationInterface, QueryRunner } from 'typeorm'; - -export class MigrateCustomGroupToNewUserGroup1720434737529 implements MigrationInterface { - public async up(queryRunner: QueryRunner): Promise { - const manager = queryRunner.manager; - const organizationIds = ( - await manager.find(Organization, { - select: ['id'], - }) - ).map((organization) => organization.id); - for (const organizationId of organizationIds) { - const groups = await manager - .createQueryBuilder(GroupPermission, 'groupPermission') - .where('groupPermission.organizationId = :organizationId', { - organizationId, - }) - .leftJoinAndSelect('groupPermission.appGroupPermission', 'appGroupPermission') - .leftJoinAndSelect('groupPermission.userGroupPermission', 'userGroupPermission') - .andWhere('groupPermission.group != :admin', { - admin: 'admin', - }) - .getMany(); - - for (const groupPermissions of groups) { - const query = ` - INSERT INTO permission_groups ( - organization_id, - name, - type, - app_create, - app_delete, - folder_crud, - org_constant_crud, - data_source_create, - data_source_delete - ) VALUES ( - '${organizationId}', - '${this.getGroupName(groupPermissions.group)}', - '${GROUP_PERMISSIONS_TYPE.CUSTOM_GROUP}', - ${groupPermissions.appCreate}, - ${groupPermissions.appDelete}, - ${groupPermissions.folderCreate}, - ${groupPermissions.orgEnvironmentConstantCreate}, - false, - false - ) RETURNING *; - `; - const group: GroupPermissions = (await manager.query(query))[0]; - const existingGroupUsers = groupPermissions.userGroupPermission; - await this.migrateUserGroup(manager, [...new Set(existingGroupUsers.map((record) => record.userId))], group.id); - const resources = [ResourceType.APP]; - for (const resource of resources) { - if (resource === ResourceType.APP) { - const viewLevelAppsPermissions = groupPermissions.appGroupPermission.filter( - (appPermissions) => appPermissions.read - ); - const updateLevelAppsPermissions = groupPermissions.appGroupPermission.filter( - (appPermissions) => appPermissions.update - ); - const createResourcePermissionObjView: CreateResourcePermissionObject = { - canView: true, - canEdit: false, - hideFromDashboard: false, - }; - await this.createAppLevelPermissions( - manager, - viewLevelAppsPermissions, - organizationId, - resource, - group, - createResourcePermissionObjView - ); - const createResourcePermissionObjEdit: CreateResourcePermissionObject = { - canView: false, - canEdit: true, - hideFromDashboard: false, - }; - await this.createAppLevelPermissions( - manager, - updateLevelAppsPermissions, - organizationId, - resource, - group, - createResourcePermissionObjEdit - ); - } - } - } - } - } - - getGroupName(name: string) { - switch (name) { - case USER_ROLE.BUILDER: - return `custom-${USER_ROLE.BUILDER}`; - case USER_ROLE.END_USER: - return `custom-${USER_ROLE.END_USER}`; - case 'all_users': - return `Custom All users`; - default: - return name; - } - } - - async createGranularPermission( - manager: EntityManager, - createObject: CreateGranularPermissionDto - ): Promise { - const query = ` - INSERT INTO granular_permissions ( - group_id, - name, - type, - is_all, - - ) VALUES ( - ${createObject.groupId} , ${createObject.name} , ${createObject.type},${createObject.isAll} - ) RETURNING *;`; - return (await manager.query(query))[0]; - } - - async createAppsResourcePermission( - manager: EntityManager, - createMeta: ResourcePermissionMetaData, - createObject: CreateResourcePermissionObject - ): Promise { - const { granularPermissions } = createMeta; - const query = ` - INSERT INTO apps_group_permissions ( - granular_permission_id, - can_edit, - can_view, - hide_from_dashboard - ) VALUES ( - ${granularPermissions.id}, - ${createObject.canEdit}, - ${createObject.canView}, - ${createObject.hideFromDashboard} - ) RETURNING *; - `; - return (await manager.query(query))[0]; - } - - async migrateUserGroup(manager: EntityManager, userIds: string[], groupId: string) { - if (userIds.length == 0) return; - const valuesString = userIds.map((id) => `('${id}', '${groupId}')`).join(','); - const query = ` - INSERT INTO group_users (user_id, group_id) - VALUES ${valuesString}; - `; - return await manager.query(query); - } - - async addAppsGroupToPermissions(manager: EntityManager, appIds: string[], appPermissionsId: string) { - const valuesString = appIds.map((id) => `('${id}', '${appPermissionsId}')`).join(','); - const query = ` - INSERT INTO group_apps (app_id, apps_group_permissions_id) - VALUES ${valuesString}; - `; - return await manager.query(query); - } - - async createAppLevelPermissions( - manager: EntityManager, - appsPermissions: AppGroupPermission[], - organizationId: string, - resource: ResourceType, - group: GroupPermissions, - createResourcePermissionObj: CreateResourcePermissionObject - ) { - const nameInit = createResourcePermissionObj.canView ? 'Viewable' : 'Updatable'; - if (appsPermissions.length === 0) return; - const dtoObject = { - name: `${nameInit} ${DEFAULT_GRANULAR_PERMISSIONS_NAME[resource]}`, - groupId: group.id, - type: resource as ResourceType, - isAll: false, - createAppsPermissionsObject: {}, - }; - const granularPermissions = await this.createGranularPermission(manager, dtoObject); - const appsGroupPermissions = await this.createAppsResourcePermission( - manager, - { granularPermissions, organizationId }, - createResourcePermissionObj - ); - await this.addAppsGroupToPermissions( - manager, - appsPermissions.map((record) => record.appId), - appsGroupPermissions.id - ); - } - - public async down(queryRunner: QueryRunner): Promise {} -} diff --git a/server/migrations/1720513124281-DropGroupPermissionsOlderRelatedTables.ts b/server/migrations/1720513124281-DropGroupPermissionsOlderRelatedTables.ts deleted file mode 100644 index 8a47a54d64..0000000000 --- a/server/migrations/1720513124281-DropGroupPermissionsOlderRelatedTables.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { MigrationInterface, QueryRunner } from 'typeorm'; - -export class DropGroupPermissionsOlderRelatedTables1720513124281 implements MigrationInterface { - public async up(queryRunner: QueryRunner): Promise { - queryRunner.query('DROP TABLE group_permissions, user_group_permissions, app_group_permissions CASCADE;'); - } - - public async down(queryRunner: QueryRunner): Promise {} -} From 1c20bb30fe4ba83c890f65402d4f57a8dcd28803 Mon Sep 17 00:00:00 2001 From: kriks7iitk Date: Thu, 11 Jul 2024 11:48:29 +0530 Subject: [PATCH 052/190] design issue --- frontend/src/ManageGroupPermissionResourcesV2/index.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/ManageGroupPermissionResourcesV2/index.jsx b/frontend/src/ManageGroupPermissionResourcesV2/index.jsx index 6d7115a998..4c75abe031 100644 --- a/frontend/src/ManageGroupPermissionResourcesV2/index.jsx +++ b/frontend/src/ManageGroupPermissionResourcesV2/index.jsx @@ -556,7 +556,7 @@ class ManageGroupPermissionResourcesComponent extends React.Component {
); }, From b8316730fe32fd983008e6326c0af37bebdcfbf2 Mon Sep 17 00:00:00 2001 From: kriks7iitk Date: Fri, 12 Jul 2024 11:52:12 +0530 Subject: [PATCH 064/190] Viewable apps query modiifcation --- .../AppPermissionActionContainer.jsx | 2 +- .../AppResourcePermission.jsx | 2 +- server/src/helpers/queries.ts | 16 +++++++--------- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/frontend/src/ManageGranularAccess/AddEditResourceModal/AppPermissionActionContainer.jsx b/frontend/src/ManageGranularAccess/AddEditResourceModal/AppPermissionActionContainer.jsx index cc0ad15c1a..669e59a1a0 100644 --- a/frontend/src/ManageGranularAccess/AddEditResourceModal/AppPermissionActionContainer.jsx +++ b/frontend/src/ManageGranularAccess/AddEditResourceModal/AppPermissionActionContainer.jsx @@ -41,7 +41,7 @@ function AppPermissionsActions({ />
View - Only view deployed version of app + Only access released version of apps
)} - {!props.isLoading && props.currentFolder.count === 0 && ( + {!props.isLoading && props.apps?.length === 0 && (
- {t('homePage.thisFolderIsEmpty', 'This folder is empty')} + {props.currentFolder?.count == 0 + ? t('homePage.thisFolderIsEmpty', 'This folder is empty') + : t('homePage.nonAccessibleFolderApps', 'No apps are accessible of this folder')}
)} diff --git a/server/src/helpers/queries.ts b/server/src/helpers/queries.ts index b9972391cd..89de0e7459 100644 --- a/server/src/helpers/queries.ts +++ b/server/src/helpers/queries.ts @@ -30,7 +30,7 @@ export function viewableAppsQueryUsingPermissions( select?: Array ): SelectQueryBuilder { const viewableApps = userAppPermissions.hideAll - ? [...userAppPermissions.editableAppsId] + ? [null, ...userAppPermissions.editableAppsId] : [ null, ...Array.from( @@ -40,6 +40,7 @@ export function viewableAppsQueryUsingPermissions( ]) ), ]; + const viewableAppsQb = manager .createQueryBuilder(AppBase, 'viewable_apps') .innerJoin('viewable_apps.user', 'user') @@ -55,14 +56,16 @@ export function viewableAppsQueryUsingPermissions( if (select) { viewableAppsQb.select(select.map((col) => `viewable_apps.${col}`)); } - const viewAll = userAppPermissions.isAllEditable || userAppPermissions.isAllViewable; - if (!viewAll || userAppPermissions.hideAll) { + const { isAllEditable, isAllViewable, hideAll } = userAppPermissions; + if (isAllEditable) return viewableAppsQb; + if ((isAllViewable && hideAll) || (!isAllViewable && !hideAll) || (!isAllViewable && hideAll)) { viewableAppsQb.where('viewable_apps.id IN (:...viewableApps)', { viewableApps, }); + return viewableAppsQb; } const hiddenApps = userAppPermissions.hiddenAppsId.filter((id) => !userAppPermissions.editableAppsId.includes(id)); - if (!userAppPermissions.hideAll && viewAll && hiddenApps.length > 0) { + if (!userAppPermissions.hideAll && isAllViewable && hiddenApps.length > 0) { viewableAppsQb.where('viewable_apps.id NOT IN (:...hiddenApps)', { hiddenApps, }); diff --git a/server/src/services/folders.service.ts b/server/src/services/folders.service.ts index 4c911387cb..ee752337fb 100644 --- a/server/src/services/folders.service.ts +++ b/server/src/services/folders.service.ts @@ -98,20 +98,29 @@ export class FoldersService { totalCount: 0, }; } - const viewableAppsTotal = Array.from( - new Set([ - ...userAppPermissions.editableAppsId, - ...userAppPermissions.viewableAppsId.filter((id) => !userAppPermissions.hiddenAppsId.includes(id)), - ]) - ); + const { isAllEditable, isAllViewable, hideAll } = userAppPermissions; + const viewableAppsTotal = isAllEditable + ? [null, ...folderAppIds] + : hideAll + ? [null, ...userAppPermissions.editableAppsId] + : isAllViewable + ? [null, ...folderAppIds].filter((id) => !userAppPermissions.hiddenAppsId.includes(id)) + : [ + null, + ...Array.from( + new Set([ + ...userAppPermissions.editableAppsId, + ...userAppPermissions.viewableAppsId.filter((id) => !userAppPermissions.hiddenAppsId.includes(id)), + ]) + ), + ]; - const viewableAppIds = viewableAppsTotal.filter((id) => folderAppIds.includes(id)); + const viewableAppIds = [null, ...viewableAppsTotal.filter((id) => folderAppIds.includes(id))]; const viewableAppsInFolder = createQueryBuilder(AppBase, 'apps') .innerJoin('apps.user', 'user') .addSelect(['user.firstName', 'user.lastName']); - // if (!(userAppPermissions.isAllEditable || userAppPermissions.isAllViewable)) { viewableAppsInFolder.where('apps.id IN (:...viewableAppIds)', { viewableAppIds: viewableAppIds, }); From 6af77a3f5bae4f2b804e5f71b158183961a0e01d Mon Sep 17 00:00:00 2001 From: kriks7iitk Date: Tue, 16 Jul 2024 19:58:01 +0530 Subject: [PATCH 083/190] Fix design issue --- .../src/ManageGroupPermissionResourcesV2/constant.js | 12 ++++++++++++ frontend/src/ManageOrgUsers/ManageOrgUsers.jsx | 9 ++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/frontend/src/ManageGroupPermissionResourcesV2/constant.js b/frontend/src/ManageGroupPermissionResourcesV2/constant.js index bc894fb953..e877ec0aed 100644 --- a/frontend/src/ManageGroupPermissionResourcesV2/constant.js +++ b/frontend/src/ManageGroupPermissionResourcesV2/constant.js @@ -45,6 +45,18 @@ export const EDIT_ROLE_MESSAGE = {
); }, + admin: (isPaidPlan) => { + return ( +
+ {isPaidPlan && ( +

+ Changing user role from builder to admin will grant access to all resources and settings. +

+ )} +

Are you sure you want to continue?

+
+ ); + }, }, 'end-user': { builder: (isPaidPlan) => { diff --git a/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx b/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx index cc266b92d4..ac093d3c43 100644 --- a/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx +++ b/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx @@ -175,7 +175,14 @@ class ManageOrgUsersComponent extends React.Component { }); }) .catch(({ error }) => { - toast.error(error, { position: 'top-center' }); + toast.error(error, { + position: 'top-center', + style: { + minWidth: '200px', + whiteSpace: 'nowrap', // Prevent text from wrapping to the next line + wordBreak: 'keep-all', // Prevent word breaks + }, + }); this.setState({ uploadingUsers: false }); }); } From 1812e640fb692ced1ab1434e38047e13f2d2e1c5 Mon Sep 17 00:00:00 2001 From: kriks7iitk Date: Wed, 17 Jul 2024 09:44:52 +0530 Subject: [PATCH 084/190] app delete fix --- frontend/src/HomePage/HomePage.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/frontend/src/HomePage/HomePage.jsx b/frontend/src/HomePage/HomePage.jsx index e11f5c2ed8..8fbefd370e 100644 --- a/frontend/src/HomePage/HomePage.jsx +++ b/frontend/src/HomePage/HomePage.jsx @@ -303,7 +303,6 @@ class HomePageComponent extends React.Component { canUserPerform(user, action, app) { const currentSession = authenticationService.currentSessionValue; - const userPermissions = currentSession.user_permissions; const appPermission = currentSession.app_group_permissions; const canUpdateApp = appPermission && (appPermission.is_all_editable || appPermission.editable_apps_id.includes(app?.id)); From 8301a4c4c36bc0dd4c0f677993d7336ff1e3362b Mon Sep 17 00:00:00 2001 From: kriks7iitk Date: Wed, 17 Jul 2024 10:17:20 +0530 Subject: [PATCH 085/190] Admin count check --- frontend/assets/translations/en.json | 1 + .../utility/group-permissions.utility.ts | 12 ++++++++++++ server/src/services/user-role.service.ts | 7 ++++++- 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/frontend/assets/translations/en.json b/frontend/assets/translations/en.json index 2536e1f576..8162b9e599 100644 --- a/frontend/assets/translations/en.json +++ b/frontend/assets/translations/en.json @@ -419,6 +419,7 @@ }, "noApplicationFound": "No Applications found", "thisFolderIsEmpty": "This folder is empty", + "nonAccessibleFolderApps":"No apps are accessible of this folder", "deleteAppAndData": "The app {{appName}} and the associated data will be permanently deleted, do you want to continue?", "removeAppFromFolder": "The app will be removed from this folder, do you want to continue?", "change": "Change", diff --git a/server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts b/server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts index 2dc65f2c5d..ea94a33937 100644 --- a/server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts +++ b/server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts @@ -203,6 +203,17 @@ export function getUserInGroupQuery( .innerJoinAndSelect('groupUsers.user', 'users', 'groupUsers.groupId = :groupId', { groupId, }) + .innerJoinAndSelect( + 'users.organizationUsers', + 'organizationUsers', + 'organizationUsers.organizationId != :organizationId', + { + organizationId, + } + ) + .andWhere('organizationUsers.status != :status', { + status: USER_STATUS.ARCHIVED, + }) .innerJoinAndSelect('users.userGroups', 'userRole') .innerJoinAndSelect('userRole.group', 'role', 'role.organizationId = :organizationId', { organizationId, @@ -219,6 +230,7 @@ export function getUserInGroupQuery( 'users.email', 'userRole.id', 'role.name', + 'organizationUsers.status', ]) .addSelect('role.name', 'userRole') .andWhere(addableUserGetOrConditions(searchInput)); diff --git a/server/src/services/user-role.service.ts b/server/src/services/user-role.service.ts index a2de5c8b5e..6ba08e6bb9 100644 --- a/server/src/services/user-role.service.ts +++ b/server/src/services/user-role.service.ts @@ -21,6 +21,7 @@ import { GroupPermissionsServiceV2 } from './group_permissions.service.v2'; import { AddUserRoleObject } from '@module/user_resource_permissions/interface/group-permissions.interface'; import { GroupPermissionsUtilityService } from '@module/user_resource_permissions/services/group-permissions.utility.service'; import { App } from 'src/entities/app.entity'; +import { USER_STATUS } from '@helpers/user_lifecycle'; @Injectable() export class UserRoleService { @@ -94,7 +95,11 @@ export class UserRoleService { null, manager ); - if (groupUsers.length < 2) + const admins = groupUsers + .map((group) => group.user) + .filter((user) => user.organizationUsers[0].status === USER_STATUS.ACTIVE); + + if (admins.length < 2) throw new BadRequestException({ message: { error: ERROR_HANDLER.EDITING_LAST_ADMIN_ROLE_NOT_ALLOWED, From 2e7246cca781cafc0505e3bfc28de6ca6b873a94 Mon Sep 17 00:00:00 2001 From: kriks7iitk Date: Wed, 17 Jul 2024 11:11:24 +0530 Subject: [PATCH 086/190] bulk upload user fix --- .../src/ManageOrgUsers/ManageOrgUsers.jsx | 31 ++++++++++++++----- .../group-permissions.utility.service.ts | 4 --- server/src/services/organizations.service.ts | 23 +++++++------- 3 files changed, 35 insertions(+), 23 deletions(-) diff --git a/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx b/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx index ac093d3c43..7eed8c4e27 100644 --- a/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx +++ b/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx @@ -175,6 +175,17 @@ class ManageOrgUsersComponent extends React.Component { }); }) .catch(({ error }) => { + if (error?.error) { + this.setState({ + showErrorModal: true, + errorModalMessage: error.error, + errorTitle: error?.title || 'Conflicting permissions', + errorItemList: error?.data, + errorIconName: 'usergear', + }); + this.setState({ creatingUser: false }); + return; + } toast.error(error, { position: 'top-center', style: { @@ -246,14 +257,18 @@ class ManageOrgUsersComponent extends React.Component { }); }) .catch(({ error }) => { - this.setState({ - showErrorModal: true, - errorModalMessage: error.error, - errorTitle: error?.title || 'Conflicting permissions', - errorItemList: error?.data, - errorIconName: 'usergear', - }); - this.setState({ creatingUser: false }); + if (error?.error) { + this.setState({ + showErrorModal: true, + errorModalMessage: error.error, + errorTitle: error?.title || 'Conflicting permissions', + errorItemList: error?.data, + errorIconName: 'usergear', + }); + this.setState({ creatingUser: false }); + return; + } + toast.error(error); }); } else { this.setState({ creatingUser: false, file: null, isInviteUsersDrawerOpen: true }); diff --git a/server/src/modules/user_resource_permissions/services/group-permissions.utility.service.ts b/server/src/modules/user_resource_permissions/services/group-permissions.utility.service.ts index d88d9e44bf..f31ae576e5 100644 --- a/server/src/modules/user_resource_permissions/services/group-permissions.utility.service.ts +++ b/server/src/modules/user_resource_permissions/services/group-permissions.utility.service.ts @@ -103,15 +103,11 @@ export class GroupPermissionsUtilityService { const { organizationId, userId, groupsToAddIds } = functionParam; return await dbTransactionWrap(async (manager: EntityManager) => { const userRole = await this.getUserRole(userId, organizationId, manager); - console.log('this is running'); - if (userRole.name === USER_ROLE.END_USER) { return await Promise.all( groupsToAddIds.map(async (id) => { const group = await manager.findOne(GroupPermissions, id); const isEditableGroup = await this.isEditableGroup(group, manager); - console.log(isEditableGroup); - if (isEditableGroup) { throw new BadRequestException({ message: { diff --git a/server/src/services/organizations.service.ts b/server/src/services/organizations.service.ts index bb730e71c7..72680fd777 100644 --- a/server/src/services/organizations.service.ts +++ b/server/src/services/organizations.service.ts @@ -571,6 +571,10 @@ export class OrganizationsService { email: inviteNewUserDto.email, ...getUserStatusAndSource(lifecycleEvents.USER_INVITE), }; + console.log('user is'); + + console.log(inviteNewUserDto); + const groups = inviteNewUserDto?.groups; const role = inviteNewUserDto.role; return await dbTransactionWrap(async (manager: EntityManager) => { @@ -634,8 +638,10 @@ export class OrganizationsService { true, manager ); + console.log('good till here'); await this.usersService.attachUserGroup(groups, currentOrganization.id, user.id, manager); + console.log('not good till here'); const name = fullName(currentUser.firstName, currentUser.lastName); if (shouldSendWelcomeMail) { this.emailService @@ -696,7 +702,7 @@ export class OrganizationsService { const archivedUsers = []; const invalidRows = []; const invalidFields = new Set(); - const invalidGroups = []; + let invalidGroups = []; const emailPattern = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i; const manager = getManager(); const invalidRoles = []; @@ -710,9 +716,12 @@ export class OrganizationsService { ignoreEmpty: true, }) .transform((row: UserCsvRow, next) => { + const groupNames = this.createGroupsList(row?.groups); + invalidGroups = [...invalidGroups, ...groupNames.filter((group) => !existingGroups.includes(group))]; + const groups = groupPermissions.filter((group) => groupNames.includes(group.name)).map((group) => group.id); return next(null, { ...row, - groups: this.createGroupsList(row?.groups), + groups: groups, user_role: this.convertUserRolesCasing(row?.user_role), }); }) @@ -720,6 +729,7 @@ export class OrganizationsService { await dbTransactionWrap(async (manager: EntityManager) => { //Check for existing users let isInvalidRole = false; + const user = await this.usersService.findByEmail(data?.email, undefined, undefined, manager); if (user?.status === USER_STATUS.ARCHIVED) { @@ -738,15 +748,6 @@ export class OrganizationsService { } //Check for invalid groups - const receivedGroups: string[] | null = data?.groups.length ? data?.groups : null; - - if (Array.isArray(receivedGroups)) { - for (const group of receivedGroups) { - if (existingGroups.indexOf(group) === -1) { - invalidGroups.push(group); - } - } - } if (!Object.values(USER_ROLE).includes(data?.user_role as USER_ROLE)) { invalidRoles.push(data?.user_role); From b19e19ea8e68176901ad667dd42e9b69df393eba Mon Sep 17 00:00:00 2001 From: kriks7iitk Date: Wed, 17 Jul 2024 11:27:03 +0530 Subject: [PATCH 087/190] loading issue resolved --- frontend/src/ManageOrgUsers/ManageOrgUsers.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx b/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx index 7eed8c4e27..e1a4088fd3 100644 --- a/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx +++ b/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx @@ -183,7 +183,7 @@ class ManageOrgUsersComponent extends React.Component { errorItemList: error?.data, errorIconName: 'usergear', }); - this.setState({ creatingUser: false }); + this.setState({ creatingUser: false, uploadingUsers: false }); return; } toast.error(error, { From 9857f631e61fec5bb9b9cd6a7435b89fa2818f10 Mon Sep 17 00:00:00 2001 From: kriks7iitk Date: Wed, 17 Jul 2024 11:33:09 +0530 Subject: [PATCH 088/190] Added error message for admin to builder --- .../src/ManageGroupPermissionResourcesV2/constant.js | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/frontend/src/ManageGroupPermissionResourcesV2/constant.js b/frontend/src/ManageGroupPermissionResourcesV2/constant.js index e877ec0aed..8f235c753f 100644 --- a/frontend/src/ManageGroupPermissionResourcesV2/constant.js +++ b/frontend/src/ManageGroupPermissionResourcesV2/constant.js @@ -45,14 +45,13 @@ export const EDIT_ROLE_MESSAGE = {
); }, - admin: (isPaidPlan) => { + admin: () => { return (
- {isPaidPlan && ( -

- Changing user role from builder to admin will grant access to all resources and settings. -

- )} +

+ Changing user role from builder to admin will grant access to all resources and settings. +

+

Are you sure you want to continue?

); From cd017fabbf6ef6b2461bdaa978c758d6c9671d6e Mon Sep 17 00:00:00 2001 From: kriks7iitk Date: Wed, 17 Jul 2024 11:40:11 +0530 Subject: [PATCH 089/190] interchange sample template column position --- frontend/assets/csv/sample_upload.csv | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/assets/csv/sample_upload.csv b/frontend/assets/csv/sample_upload.csv index cd152f5452..2b4a556c8e 100644 --- a/frontend/assets/csv/sample_upload.csv +++ b/frontend/assets/csv/sample_upload.csv @@ -1,2 +1,2 @@ -First Name,Last Name,Email,Group,User Role -test,user,test@gmail.com,"For multiple groups separate using pipe (|) operator e.g. Groups1|Group2 or leave blank if no group assign","Assign each user a role: Admin, Builder or End User. User role value should be exact same" \ No newline at end of file +First Name,Last Name,Email,User Role,Group, +test,user,test@gmail.com,"Assign each user a role: Admin, Builder or End User. User role value should be exact same","For multiple groups separate using pipe (|) operator e.g. Groups1|Group2 or leave blank if no group assign" \ No newline at end of file From cbf75f74ba7714b8b08c0d7941a4a045056ada68 Mon Sep 17 00:00:00 2001 From: kriks7iitk Date: Wed, 17 Jul 2024 13:35:01 +0530 Subject: [PATCH 090/190] user query fix --- .../utility/group-permissions.utility.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts b/server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts index ea94a33937..a3534fa0e6 100644 --- a/server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts +++ b/server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts @@ -206,7 +206,7 @@ export function getUserInGroupQuery( .innerJoinAndSelect( 'users.organizationUsers', 'organizationUsers', - 'organizationUsers.organizationId != :organizationId', + 'organizationUsers.organizationId = :organizationId', { organizationId, } From 4af32c6f98057037c5746bbdae2119cc48cf1fe8 Mon Sep 17 00:00:00 2001 From: kriks7iitk Date: Wed, 17 Jul 2024 13:35:28 +0530 Subject: [PATCH 091/190] migration and user query fix --- .../1720434737529-MigrateCustomGroupToNewUserGroup.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/data-migrations/1720434737529-MigrateCustomGroupToNewUserGroup.ts b/server/data-migrations/1720434737529-MigrateCustomGroupToNewUserGroup.ts index cc903ac007..4c98129a90 100644 --- a/server/data-migrations/1720434737529-MigrateCustomGroupToNewUserGroup.ts +++ b/server/data-migrations/1720434737529-MigrateCustomGroupToNewUserGroup.ts @@ -119,7 +119,7 @@ export class MigrateCustomGroupToNewUserGroup1720434737529 implements MigrationI return `Custom All users`; case 'Builder': return `Custom Builder`; - case 'End User': + case 'End-user': return `Custom End User`; case 'Admin': return `Custom Admin`; From 39a675c89da002fa2b2ab4442c63ba1dfe44b46d Mon Sep 17 00:00:00 2001 From: kriks7iitk Date: Thu, 18 Jul 2024 13:43:38 +0530 Subject: [PATCH 092/190] cache issue for reduce function --- .../services/permissions-ability.service.ts | 37 +++++++++++++------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/server/src/services/permissions-ability.service.ts b/server/src/services/permissions-ability.service.ts index 41b65a43f4..b87847f725 100644 --- a/server/src/services/permissions-ability.service.ts +++ b/server/src/services/permissions-ability.service.ts @@ -54,6 +54,8 @@ export class AbilityService { if (resources && resources.some((item) => item.resource === TOOLJET_RESOURCE.APP)) { userPermissions[TOOLJET_RESOURCE.APP] = await this.createUserAppsPermissions(appsGranularPermissions, user); } + console.log(userPermissions); + return userPermissions; } @@ -61,24 +63,35 @@ export class AbilityService { appsGranularPermissions: GranularPermissions[], user: User ): Promise { - const userAppsPermissions: UserAppsPermissions = appsGranularPermissions.reduce((acc, permission) => { + const userAppsPermissions: UserAppsPermissions = { ...DEFAULT_USER_APPS_PERMISSIONS }; + + appsGranularPermissions.forEach((permission) => { const appsPermission = permission?.appsGroupPermissions; + const groupApps = appsPermission?.groupApps ? appsPermission.groupApps.map((item) => item.appId) : []; - return { - isAllEditable: acc.isAllEditable || (permission.isAll && appsPermission?.canEdit), - editableAppsId: Array.from(new Set([...acc.editableAppsId, ...(appsPermission?.canEdit ? groupApps : [])])), - isAllViewable: acc.isAllViewable || (permission.isAll && appsPermission?.canView), - viewableAppsId: Array.from(new Set([...acc.viewableAppsId, ...(appsPermission?.canView ? groupApps : [])])), - hiddenAppsId: Array.from( - new Set([...acc.hiddenAppsId, ...(appsPermission?.hideFromDashboard ? groupApps : [])]) - ), - hideAll: acc.hideAll || (appsPermission.hideFromDashboard && permission.isAll), - }; - }, DEFAULT_USER_APPS_PERMISSIONS); + + userAppsPermissions.isAllEditable = + userAppsPermissions.isAllEditable || (permission.isAll && appsPermission?.canEdit); + userAppsPermissions.editableAppsId = Array.from( + new Set([...userAppsPermissions.editableAppsId, ...(appsPermission?.canEdit ? groupApps : [])]) + ); + userAppsPermissions.isAllViewable = + userAppsPermissions.isAllViewable || (permission.isAll && appsPermission?.canView); + userAppsPermissions.viewableAppsId = Array.from( + new Set([...userAppsPermissions.viewableAppsId, ...(appsPermission?.canView ? groupApps : [])]) + ); + userAppsPermissions.hiddenAppsId = Array.from( + new Set([...userAppsPermissions.hiddenAppsId, ...(appsPermission?.hideFromDashboard ? groupApps : [])]) + ); + userAppsPermissions.hideAll = + userAppsPermissions.hideAll || (appsPermission?.hideFromDashboard && permission.isAll); + }); + await dbTransactionWrap(async (manager: EntityManager) => { const appsOwnedByUser = await manager.find(App, { where: { userId: user.id, organizationId: user.organizationId }, }); + const appsIdOwnedByUser = appsOwnedByUser.map((app) => app.id); userAppsPermissions.editableAppsId = Array.from( new Set([...userAppsPermissions.editableAppsId, ...appsIdOwnedByUser]) From 0e55aecbfa312ab3318b57c68aef7876d573970e Mon Sep 17 00:00:00 2001 From: kriks7iitk Date: Thu, 18 Jul 2024 13:57:07 +0530 Subject: [PATCH 093/190] bulk upoad subpath fix --- frontend/src/ManageOrgUsers/InviteUsersForm.jsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/frontend/src/ManageOrgUsers/InviteUsersForm.jsx b/frontend/src/ManageOrgUsers/InviteUsersForm.jsx index f06f78b17e..f5ba332fc1 100644 --- a/frontend/src/ManageOrgUsers/InviteUsersForm.jsx +++ b/frontend/src/ManageOrgUsers/InviteUsersForm.jsx @@ -32,7 +32,6 @@ function InviteUsersForm({ const [activeTab, setActiveTab] = useState(1); const [existingGroups, setExistingGroups] = useState([]); const [newRole, setNewRole] = useState(null); - const customGroups = groups.filter((group) => group.groupType === 'custom'); const roleGroups = groups .filter((group) => group.groupType === 'default') @@ -312,7 +311,9 @@ function InviteUsersForm({ ToolJet won’t be able to recognise files in any other format.{' '}

Date: Thu, 18 Jul 2024 14:02:10 +0530 Subject: [PATCH 094/190] copywriitng cleaning --- frontend/assets/translations/en.json | 2 +- frontend/src/HomePage/AppList.jsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/assets/translations/en.json b/frontend/assets/translations/en.json index 8162b9e599..4cb162a07d 100644 --- a/frontend/assets/translations/en.json +++ b/frontend/assets/translations/en.json @@ -419,7 +419,7 @@ }, "noApplicationFound": "No Applications found", "thisFolderIsEmpty": "This folder is empty", - "nonAccessibleFolderApps":"No apps are accessible of this folder", + "nonAccessibleFolderApps":"You do not have access to any applications in this folder.", "deleteAppAndData": "The app {{appName}} and the associated data will be permanently deleted, do you want to continue?", "removeAppFromFolder": "The app will be removed from this folder, do you want to continue?", "change": "Change", diff --git a/frontend/src/HomePage/AppList.jsx b/frontend/src/HomePage/AppList.jsx index 54cf513b3e..cea0156f19 100644 --- a/frontend/src/HomePage/AppList.jsx +++ b/frontend/src/HomePage/AppList.jsx @@ -57,7 +57,7 @@ const AppList = (props) => { > {props.currentFolder?.count == 0 ? t('homePage.thisFolderIsEmpty', 'This folder is empty') - : t('homePage.nonAccessibleFolderApps', 'No apps are accessible of this folder')} + : t('homePage.nonAccessibleFolderApps', 'You do not have access to any applications in this folder.')}
)} From f1827722ab83bfa48d0baf6ef72013a61b921f57 Mon Sep 17 00:00:00 2001 From: kriks7iitk Date: Thu, 18 Jul 2024 14:14:06 +0530 Subject: [PATCH 095/190] group name default group issue --- .../constants/group-permissions.constant.ts | 1 + .../utility/group-permissions.utility.ts | 7 ++++++- server/src/services/permissions-ability.service.ts | 4 ++-- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/server/src/modules/user_resource_permissions/constants/group-permissions.constant.ts b/server/src/modules/user_resource_permissions/constants/group-permissions.constant.ts index eff5ce2bba..abeaf2efc7 100644 --- a/server/src/modules/user_resource_permissions/constants/group-permissions.constant.ts +++ b/server/src/modules/user_resource_permissions/constants/group-permissions.constant.ts @@ -102,6 +102,7 @@ export const DEFAULT_GROUP_PERMISSIONS_MIGRATIONS = { export const ERROR_HANDLER = { GROUP_NOT_EXIST: "Group doesn't exist", + RESERVED_KEYWORDS_FOR_GROUP_NAME: 'Group name cannot be same as reserved keywords', DEFAULT_GROUP_NAME: 'Name cannot be same as user default group', DEFAULT_GROUP_NAME_UPDATE: 'Not allowed to change default group name', DEFAULT_GROUP_NAME_DELETE: 'Not allowed to delete default group', diff --git a/server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts b/server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts index a3534fa0e6..d8775aeab5 100644 --- a/server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts +++ b/server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts @@ -135,7 +135,12 @@ export function getAllUserGroupsQuery( } export function validateCreateGroupOperation(createGroupPermissionDto: CreateGroupPermissionDto) { - if (createGroupPermissionDto.name in USER_ROLE) throw new BadRequestException(ERROR_HANDLER.DEFAULT_GROUP_NAME); + const humanizeList = ['End-user', 'Builder', 'Admin']; + if (humanizeList.includes(createGroupPermissionDto.name)) + throw new BadRequestException(ERROR_HANDLER.DEFAULT_GROUP_NAME); + + if (Object.values(USER_ROLE).includes(createGroupPermissionDto.name as USER_ROLE)) + throw new BadRequestException(ERROR_HANDLER.RESERVED_KEYWORDS_FOR_GROUP_NAME); } export function addableUsersToGroupQuery( diff --git a/server/src/services/permissions-ability.service.ts b/server/src/services/permissions-ability.service.ts index b87847f725..681ba7f5b5 100644 --- a/server/src/services/permissions-ability.service.ts +++ b/server/src/services/permissions-ability.service.ts @@ -16,7 +16,7 @@ import { import { GranularPermissions } from 'src/entities/granular_permissions.entity'; import { TOOLJET_RESOURCE } from 'src/constants/global.constant'; import { getUserPermissionsQuery } from '@module/permissions/utility/permission-ability.utility'; -import { App } from 'src/entities/app.entity'; +import { AppBase } from 'src/entities/app_base.entity'; @Injectable() export class AbilityService { @@ -88,7 +88,7 @@ export class AbilityService { }); await dbTransactionWrap(async (manager: EntityManager) => { - const appsOwnedByUser = await manager.find(App, { + const appsOwnedByUser = await manager.find(AppBase, { where: { userId: user.id, organizationId: user.organizationId }, }); From 8a4600803ad9b4e99732d6855f4a4f2b3d35f405 Mon Sep 17 00:00:00 2001 From: kriks7iitk Date: Thu, 18 Jul 2024 14:36:16 +0530 Subject: [PATCH 096/190] user role fix --- server/src/services/user-role.service.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/src/services/user-role.service.ts b/server/src/services/user-role.service.ts index 6ba08e6bb9..605684535b 100644 --- a/server/src/services/user-role.service.ts +++ b/server/src/services/user-role.service.ts @@ -98,8 +98,8 @@ export class UserRoleService { const admins = groupUsers .map((group) => group.user) .filter((user) => user.organizationUsers[0].status === USER_STATUS.ACTIVE); - - if (admins.length < 2) + const isAdmin = admins.find((admin) => admin.id === userId); + if (isAdmin && admins.length < 2) throw new BadRequestException({ message: { error: ERROR_HANDLER.EDITING_LAST_ADMIN_ROLE_NOT_ALLOWED, From bb46d8438cd7046e11e058c5e69e953eea07c629 Mon Sep 17 00:00:00 2001 From: Rudra Date: Thu, 18 Jul 2024 14:51:42 +0530 Subject: [PATCH 097/190] bulk upload cta and same group error name --- frontend/src/ManageGranularAccess/index.jsx | 3 +-- frontend/src/ManageOrgUsers/FileDropzone.jsx | 11 ++++++++++- frontend/src/ManageOrgUsers/InviteUsersForm.jsx | 10 +++++++++- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/frontend/src/ManageGranularAccess/index.jsx b/frontend/src/ManageGranularAccess/index.jsx index 6cc583a4b7..88d558361b 100644 --- a/frontend/src/ManageGranularAccess/index.jsx +++ b/frontend/src/ManageGranularAccess/index.jsx @@ -134,7 +134,6 @@ class ManageGranularAccessComponent extends React.Component { }) .catch(({ error }) => { this.closeAddPermissionModal(); - console.log(error); if (error?.error) { this.props.updateParentState({ showEditRoleErrorModal: true, @@ -145,7 +144,7 @@ class ManageGranularAccessComponent extends React.Component { }); return; } - toast.error(error?.error, { + toast.error(error, { style: { maxWidth: '500px', }, diff --git a/frontend/src/ManageOrgUsers/FileDropzone.jsx b/frontend/src/ManageOrgUsers/FileDropzone.jsx index 488669bcad..c1e5757212 100644 --- a/frontend/src/ManageOrgUsers/FileDropzone.jsx +++ b/frontend/src/ManageOrgUsers/FileDropzone.jsx @@ -3,7 +3,15 @@ import { useDropzone } from 'react-dropzone'; import BulkIcon from '@/_ui/Icon/BulkIcons'; import { toast } from 'react-hot-toast'; -export function FileDropzone({ handleClick, hiddenFileInput, errors, handleFileChange, inviteBulkUsers, onDrop }) { +export function FileDropzone({ + handleClick, + hiddenFileInput, + errors, + handleFileChange, + inviteBulkUsers, + onDrop, + setFileUpload, +}) { const [fileData, setFileData] = useState(); const { getRootProps, getInputProps, isDragActive, acceptedFiles } = useDropzone({ accept: { parsedFileType: ['text/csv'] }, @@ -58,6 +66,7 @@ export function FileDropzone({ handleClick, hiddenFileInput, errors, handleFileC e.target.value = null; } else { handleFileChange(file); + setFileUpload(true); } }} accept=".csv" diff --git a/frontend/src/ManageOrgUsers/InviteUsersForm.jsx b/frontend/src/ManageOrgUsers/InviteUsersForm.jsx index f5ba332fc1..c0fb9ede6f 100644 --- a/frontend/src/ManageOrgUsers/InviteUsersForm.jsx +++ b/frontend/src/ManageOrgUsers/InviteUsersForm.jsx @@ -43,6 +43,7 @@ function InviteUsersForm({ return indexA - indexB; }); const [isChangeRoleModalOpen, setIsChangeRoleModalOpen] = useState(false); + const [fileUpload, setFileUpload] = useState(false); const groupedOptions = [ { label: 'default', @@ -54,6 +55,10 @@ function InviteUsersForm({ }, ]; const [selectedGroups, setSelectedGroups] = useState([]); + useEffect(() => { + console.log('activeTab changed', activeTab); + setFileUpload(false); + }, [activeTab]); const hiddenFileInput = useRef(null); @@ -81,11 +86,13 @@ function InviteUsersForm({ }, [currentEditingUser, groups]); const onDrop = useCallback((acceptedFiles) => { + console.log('onDrop', acceptedFiles); const file = acceptedFiles[0]; if (Math.round(file.size / 1024) > 1024) { toast.error('File size cannot exceed more than 1MB'); } else { handleFileChange(file); + setFileUpload(true); } // eslint-disable-next-line react-hooks/exhaustive-deps }, []); @@ -334,6 +341,7 @@ function InviteUsersForm({ handleFileChange={handleFileChange} inviteBulkUsers={inviteBulkUsers} onDrop={onDrop} + setFileUpload={setFileUpload} />
)} @@ -353,7 +361,7 @@ function InviteUsersForm({ form={activeTab == 1 ? 'inviteByEmail' : 'inviteBulkUsers'} type="submit" variant="primary" - disabled={uploadingUsers || creatingUser || !isEdited()} + disabled={uploadingUsers || creatingUser || !isEdited() || (activeTab !== 1 && !fileUpload)} data-cy={activeTab == 1 ? 'button-invite-users' : 'button-upload-users'} leftIcon={activeTab == 1 ? 'sent' : 'fileupload'} width="20" From eab16ab7bc36f24e91d11b21570d3b52cc160d8c Mon Sep 17 00:00:00 2001 From: Rudra Date: Thu, 18 Jul 2024 14:53:56 +0530 Subject: [PATCH 098/190] removed logs --- frontend/src/ManageOrgUsers/InviteUsersForm.jsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/frontend/src/ManageOrgUsers/InviteUsersForm.jsx b/frontend/src/ManageOrgUsers/InviteUsersForm.jsx index c0fb9ede6f..1f877c8c70 100644 --- a/frontend/src/ManageOrgUsers/InviteUsersForm.jsx +++ b/frontend/src/ManageOrgUsers/InviteUsersForm.jsx @@ -56,7 +56,6 @@ function InviteUsersForm({ ]; const [selectedGroups, setSelectedGroups] = useState([]); useEffect(() => { - console.log('activeTab changed', activeTab); setFileUpload(false); }, [activeTab]); @@ -86,7 +85,6 @@ function InviteUsersForm({ }, [currentEditingUser, groups]); const onDrop = useCallback((acceptedFiles) => { - console.log('onDrop', acceptedFiles); const file = acceptedFiles[0]; if (Math.round(file.size / 1024) > 1024) { toast.error('File size cannot exceed more than 1MB'); From af3b51c888a612b4aaaa78d2228b913f02e2d45d Mon Sep 17 00:00:00 2001 From: Rudra Date: Thu, 18 Jul 2024 16:33:16 +0530 Subject: [PATCH 099/190] undefined file change --- frontend/src/ManageOrgUsers/FileDropzone.jsx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/frontend/src/ManageOrgUsers/FileDropzone.jsx b/frontend/src/ManageOrgUsers/FileDropzone.jsx index c1e5757212..c7825f9a7b 100644 --- a/frontend/src/ManageOrgUsers/FileDropzone.jsx +++ b/frontend/src/ManageOrgUsers/FileDropzone.jsx @@ -61,6 +61,9 @@ export function FileDropzone({ onChange={(e) => { const file = e.target.files[0]; setFileData(file); + if (file === undefined) { + setFileUpload(false); + } if (Math.round(file.size / 1024) > 1024) { toast.error('File size cannot exceed more than 1MB'); e.target.value = null; From 676a3492761deec90dc37b2b258bbf6efc6946f3 Mon Sep 17 00:00:00 2001 From: kriks7iitk Date: Thu, 18 Jul 2024 17:35:27 +0530 Subject: [PATCH 100/190] fix for folder --- frontend/src/HomePage/AppList.jsx | 2 +- .../utility/group-permissions.utility.ts | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/frontend/src/HomePage/AppList.jsx b/frontend/src/HomePage/AppList.jsx index cea0156f19..593f4c8901 100644 --- a/frontend/src/HomePage/AppList.jsx +++ b/frontend/src/HomePage/AppList.jsx @@ -48,7 +48,7 @@ const AppList = (props) => {
)} - {!props.isLoading && props.apps?.length === 0 && ( + {!props.isLoading && (props.apps?.length === 0 || props.currentFolder?.count == 0) && (
Date: Thu, 18 Jul 2024 18:30:16 +0530 Subject: [PATCH 101/190] sanity fix --- frontend/src/HomePage/AppList.jsx | 2 +- frontend/src/HomePage/HomePage.jsx | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/src/HomePage/AppList.jsx b/frontend/src/HomePage/AppList.jsx index 593f4c8901..cea0156f19 100644 --- a/frontend/src/HomePage/AppList.jsx +++ b/frontend/src/HomePage/AppList.jsx @@ -48,7 +48,7 @@ const AppList = (props) => {
)} - {!props.isLoading && (props.apps?.length === 0 || props.currentFolder?.count == 0) && ( + {!props.isLoading && props.apps?.length === 0 && (
)} - {(isLoading || meta.total_count > 0 || currentFolder.count === 0) && ( + {(isLoading || meta.total_count > 0 || !_.isEmpty(currentFolder)) && ( Date: Thu, 18 Jul 2024 18:40:26 +0530 Subject: [PATCH 102/190] constant change --- .../constants/group-permissions.constant.ts | 2 +- .../utility/group-permissions.utility.ts | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/server/src/modules/user_resource_permissions/constants/group-permissions.constant.ts b/server/src/modules/user_resource_permissions/constants/group-permissions.constant.ts index abeaf2efc7..8be0d5eb4b 100644 --- a/server/src/modules/user_resource_permissions/constants/group-permissions.constant.ts +++ b/server/src/modules/user_resource_permissions/constants/group-permissions.constant.ts @@ -103,7 +103,7 @@ export const DEFAULT_GROUP_PERMISSIONS_MIGRATIONS = { export const ERROR_HANDLER = { GROUP_NOT_EXIST: "Group doesn't exist", RESERVED_KEYWORDS_FOR_GROUP_NAME: 'Group name cannot be same as reserved keywords', - DEFAULT_GROUP_NAME: 'Name cannot be same as user default group', + DEFAULT_GROUP_NAME: 'Group name already exists', DEFAULT_GROUP_NAME_UPDATE: 'Not allowed to change default group name', DEFAULT_GROUP_NAME_DELETE: 'Not allowed to delete default group', NON_EDITABLE_GROUP_UPDATE: 'Group cannot be update because its not allowed', diff --git a/server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts b/server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts index 01047c9d2a..56301ed457 100644 --- a/server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts +++ b/server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts @@ -136,9 +136,15 @@ export function getAllUserGroupsQuery( } export function validateCreateGroupOperation(createGroupPermissionDto: CreateGroupPermissionDto) { + console.log('this is running'); + const humanizeList = ['End-user', 'Builder', 'Admin']; - if (humanizeList.includes(createGroupPermissionDto.name)) + + if (humanizeList.includes(createGroupPermissionDto.name)) { + console.log('this is running'); + throw new BadRequestException(ERROR_HANDLER.DEFAULT_GROUP_NAME); + } if (Object.values(USER_ROLE).includes(createGroupPermissionDto.name as USER_ROLE)) throw new BadRequestException(ERROR_HANDLER.RESERVED_KEYWORDS_FOR_GROUP_NAME); From 0abaa754ba44def154070d283e0591096ded65a0 Mon Sep 17 00:00:00 2001 From: kriks7iitk Date: Fri, 19 Jul 2024 13:23:33 +0530 Subject: [PATCH 103/190] constant fix --- .../constant.js | 3 ++- .../group-permissions.utility.service.ts | 2 ++ .../utility/group-permissions.utility.ts | 2 -- server/src/services/auth.service.ts | 3 ++- server/src/services/users.service.ts | 23 +------------------ 5 files changed, 7 insertions(+), 26 deletions(-) diff --git a/frontend/src/ManageGroupPermissionResourcesV2/constant.js b/frontend/src/ManageGroupPermissionResourcesV2/constant.js index 8f235c753f..783b048b7d 100644 --- a/frontend/src/ManageGroupPermissionResourcesV2/constant.js +++ b/frontend/src/ManageGroupPermissionResourcesV2/constant.js @@ -21,7 +21,8 @@ export const EDIT_ROLE_MESSAGE = { return (

- This will also remove the user from any custom groups with builder-like permissions. + Changing your user group from admin to end-user will revoke your access to settings. This will also remove + the user from any custom groups with builder-like permissions. {isPaidPlan && 'This will also affect the count of users covered by your plan.'}

Are you sure you want to continue?

diff --git a/server/src/modules/user_resource_permissions/services/group-permissions.utility.service.ts b/server/src/modules/user_resource_permissions/services/group-permissions.utility.service.ts index f31ae576e5..08218a7461 100644 --- a/server/src/modules/user_resource_permissions/services/group-permissions.utility.service.ts +++ b/server/src/modules/user_resource_permissions/services/group-permissions.utility.service.ts @@ -2,6 +2,7 @@ import { BadRequestException, Injectable } from '@nestjs/common'; import { GroupPermissions } from 'src/entities/group_permissions.entity'; import { User } from 'src/entities/user.entity'; import { + ERROR_HANDLER, GROUP_PERMISSIONS_TYPE, USER_ROLE, } from '@module/user_resource_permissions/constants/group-permissions.constant'; @@ -107,6 +108,7 @@ export class GroupPermissionsUtilityService { return await Promise.all( groupsToAddIds.map(async (id) => { const group = await manager.findOne(GroupPermissions, id); + if (!group) throw new BadRequestException(ERROR_HANDLER.GROUP_NOT_EXIST); const isEditableGroup = await this.isEditableGroup(group, manager); if (isEditableGroup) { throw new BadRequestException({ diff --git a/server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts b/server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts index 56301ed457..7614ede49a 100644 --- a/server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts +++ b/server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts @@ -136,8 +136,6 @@ export function getAllUserGroupsQuery( } export function validateCreateGroupOperation(createGroupPermissionDto: CreateGroupPermissionDto) { - console.log('this is running'); - const humanizeList = ['End-user', 'Builder', 'Admin']; if (humanizeList.includes(createGroupPermissionDto.name)) { diff --git a/server/src/services/auth.service.ts b/server/src/services/auth.service.ts index a50892830f..43fed53ea2 100644 --- a/server/src/services/auth.service.ts +++ b/server/src/services/auth.service.ts @@ -242,13 +242,14 @@ export class AuthService { organizationId: user.organizationId, resources: [{ resource: TOOLJET_RESOURCE.APP }], }); + const isAdmin = !!permissions.find((permission) => permission.name === USER_ROLE.ADMIN); const appGroupPermissions = userPermissions?.[TOOLJET_RESOURCE.APP]; delete userPermissions?.[TOOLJET_RESOURCE.APP]; return decamelizeKeys({ currentOrganizationId: user.organizationId, currentOrganizationSlug: organization.slug, currentOrganizationName: organization.name, - admin: await this.usersService.hasGroup(user, USER_ROLE.ADMIN, null, manager), + admin: isAdmin, userPermissions: userPermissions, groupPermissions: permissions.filter( (group) => group.type === GROUP_PERMISSIONS_TYPE.CUSTOM_GROUP || group.name === USER_ROLE.ADMIN diff --git a/server/src/services/users.service.ts b/server/src/services/users.service.ts index c79cfef16f..4958d9a90c 100644 --- a/server/src/services/users.service.ts +++ b/server/src/services/users.service.ts @@ -8,16 +8,12 @@ import { BadRequestException } from '@nestjs/common'; import { cleanObject, dbTransactionWrap } from 'src/helpers/utils.helper'; import { CreateFileDto } from '@dto/create-file.dto'; import { USER_STATUS, WORKSPACE_USER_STATUS } from 'src/helpers/user_lifecycle'; -import { - GROUP_PERMISSIONS_TYPE, - USER_ROLE, -} from '@module/user_resource_permissions/constants/group-permissions.constant'; +import { USER_ROLE } from '@module/user_resource_permissions/constants/group-permissions.constant'; import { GroupPermissionsServiceV2 } from './group_permissions.service.v2'; import { UserRoleService } from './user-role.service'; import { validateDeleteGroupUserOperation } from '@module/user_resource_permissions/utility/group-permissions.utility'; import { GroupPermissionsUtilityService } from '@module/user_resource_permissions/services/group-permissions.utility.service'; import { Organization } from 'src/entities/organization.entity'; -import { GroupPermissions } from 'src/entities/group_permissions.entity'; const uuid = require('uuid'); const bcrypt = require('bcrypt'); @@ -227,23 +223,6 @@ export class UsersService { if (isAdmin && allActiveAdmin.length < 2) throw new BadRequestException('Atleast one active admin is required'); } - async hasGroup(user: User, role: USER_ROLE, organizationId?: string, manager?: EntityManager): Promise { - return await dbTransactionWrap(async (manager: EntityManager) => { - const result = await manager - .createQueryBuilder(GroupPermissions, 'group_permissions') - .innerJoin('group_permissions.groupUsers', 'groupUsers') - .where('group_permissions.organizationId = :organizationId', { - organizationId: organizationId || user.organizationId, - }) - .andWhere('group_permissions.name = :role ', { role }) - .andWhere('group_permissions.type = :type', { type: GROUP_PERMISSIONS_TYPE.DEFAULT }) - .andWhere('groupUsers.userId = :userId', { userId: user.id }) - .getCount(); - - return result > 0; - }, manager); - } - async returnOrgIdOfAnApp(slug: string): Promise<{ organizationId: string; isPublic: boolean }> { let app: App; try { From 52ef88ad7d739e711a3bf67582e1ab80b73aaab3 Mon Sep 17 00:00:00 2001 From: Rudra Date: Fri, 19 Jul 2024 14:42:04 +0530 Subject: [PATCH 104/190] border colour fix --- frontend/src/SignupPage/SignupPage.jsx | 2 +- frontend/src/_components/OrganizationLogin/GithubSsoModal.jsx | 2 +- frontend/src/_components/OrganizationLogin/GoogleSsoModal.jsx | 2 +- frontend/src/_styles/onboarding.scss | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/src/SignupPage/SignupPage.jsx b/frontend/src/SignupPage/SignupPage.jsx index 35a386fbdb..2246604d48 100644 --- a/frontend/src/SignupPage/SignupPage.jsx +++ b/frontend/src/SignupPage/SignupPage.jsx @@ -333,7 +333,7 @@ class SignupPageComponent extends React.Component { Terms of Service{' '} - & + & {' '} Privacy Policy diff --git a/frontend/src/_components/OrganizationLogin/GithubSsoModal.jsx b/frontend/src/_components/OrganizationLogin/GithubSsoModal.jsx index 5888d59a3a..3e05a718a8 100644 --- a/frontend/src/_components/OrganizationLogin/GithubSsoModal.jsx +++ b/frontend/src/_components/OrganizationLogin/GithubSsoModal.jsx @@ -262,7 +262,7 @@ export function GithubSSOModal({ settings, onClose, onUpdateSSOSettings, isInsta -
+

{`${window.public_config?.TOOLJET_HOST}${ window.public_config?.SUB_PATH ? window.public_config?.SUB_PATH : '/' }sso/git/${configId}`}

diff --git a/frontend/src/_components/OrganizationLogin/GoogleSsoModal.jsx b/frontend/src/_components/OrganizationLogin/GoogleSsoModal.jsx index 1458d133e9..418ecbd5d9 100644 --- a/frontend/src/_components/OrganizationLogin/GoogleSsoModal.jsx +++ b/frontend/src/_components/OrganizationLogin/GoogleSsoModal.jsx @@ -193,7 +193,7 @@ export function GoogleSSOModal({ settings, onClose, onUpdateSSOSettings, isInsta -
+

{`${window.public_config?.TOOLJET_HOST}${ window.public_config?.SUB_PATH ? window.public_config?.SUB_PATH : '/' }sso/google/${configId}`}

diff --git a/frontend/src/_styles/onboarding.scss b/frontend/src/_styles/onboarding.scss index bc5613e423..d2fcc98e4b 100644 --- a/frontend/src/_styles/onboarding.scss +++ b/frontend/src/_styles/onboarding.scss @@ -462,7 +462,7 @@ text-align: center; span { - color: #466BF2; + color: #206bc4; } } From e18963f156c1a5ef5cceacc40a956f0e5799b869 Mon Sep 17 00:00:00 2001 From: Rudra Date: Mon, 22 Jul 2024 11:25:06 +0530 Subject: [PATCH 105/190] added new loader for granular perm and copywriting fix --- frontend/src/ManageGranularAccess/index.jsx | 22 +++++++------------ .../constant.js | 3 +-- .../src/ManageOrgUsers/ManageOrgUsers.jsx | 1 + 3 files changed, 10 insertions(+), 16 deletions(-) diff --git a/frontend/src/ManageGranularAccess/index.jsx b/frontend/src/ManageGranularAccess/index.jsx index 88d558361b..3d4a9e96ee 100644 --- a/frontend/src/ManageGranularAccess/index.jsx +++ b/frontend/src/ManageGranularAccess/index.jsx @@ -11,6 +11,7 @@ import AppResourcePermissions from '@/ManageGranularAccess/AppResourcePermission import AddResourcePermissionsMenu from '@/ManageGranularAccess/AddResourcePermissionsMenu'; import { ConfirmDialog } from '@/_components'; import AddEditResourcePermissionsModal from '@/ManageGranularAccess/AddEditResourceModal/AddEditResourcePermissionsModal'; +import Spinner from 'react-bootstrap/Spinner'; import { ToolTip } from '@/_components/ToolTip'; class ManageGranularAccessComponent extends React.Component { @@ -468,7 +469,7 @@ class ManageGranularAccessComponent extends React.Component { addableApps={addableApps} darkMode={this.props.darkMode} /> - {!granularPermissions.length ? ( + {!granularPermissions.length && !isLoading ? (
@@ -501,19 +502,12 @@ class ManageGranularAccessComponent extends React.Component {
{isLoading ? ( - - -
-
-
- - -
- - -
- - +
+ +
) : ( <> {granularPermissions.map((permissions, index) => ( diff --git a/frontend/src/ManageGroupPermissionResourcesV2/constant.js b/frontend/src/ManageGroupPermissionResourcesV2/constant.js index 783b048b7d..2adb298965 100644 --- a/frontend/src/ManageGroupPermissionResourcesV2/constant.js +++ b/frontend/src/ManageGroupPermissionResourcesV2/constant.js @@ -21,8 +21,7 @@ export const EDIT_ROLE_MESSAGE = { return (

- Changing your user group from admin to end-user will revoke your access to settings. This will also remove - the user from any custom groups with builder-like permissions. + Changing your user group from admin to end-user will revoke your access to settings. {isPaidPlan && 'This will also affect the count of users covered by your plan.'}

Are you sure you want to continue?

diff --git a/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx b/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx index e1a4088fd3..f05a11d404 100644 --- a/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx +++ b/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx @@ -28,6 +28,7 @@ class ManageOrgUsersComponent extends React.Component { errors: {}, meta: { total_count: 0, + currentPage: 1, }, currentPage: 1, options: {}, From 210b239c78b726ea408a0de469a63cdda440c2a2 Mon Sep 17 00:00:00 2001 From: Rudra Date: Mon, 22 Jul 2024 12:49:56 +0530 Subject: [PATCH 106/190] color change --- frontend/src/_styles/onboarding.scss | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/frontend/src/_styles/onboarding.scss b/frontend/src/_styles/onboarding.scss index d2fcc98e4b..43a08e017c 100644 --- a/frontend/src/_styles/onboarding.scss +++ b/frontend/src/_styles/onboarding.scss @@ -461,9 +461,7 @@ line-break: anywhere; text-align: center; - span { - color: #206bc4; - } + } .signup-password-wrap, From 1c2f1705ca7f5785d993ca0bd7b8c30649a7d552 Mon Sep 17 00:00:00 2001 From: Anantshree Chandola Date: Mon, 22 Jul 2024 16:50:21 +0530 Subject: [PATCH 107/190] fix bulk upload --- frontend/assets/csv/sample_upload.csv | 2 +- server/src/services/organizations.service.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/assets/csv/sample_upload.csv b/frontend/assets/csv/sample_upload.csv index 2b4a556c8e..fbb4582f2b 100644 --- a/frontend/assets/csv/sample_upload.csv +++ b/frontend/assets/csv/sample_upload.csv @@ -1,2 +1,2 @@ -First Name,Last Name,Email,User Role,Group, +First Name,Last Name,Email,User Role,Group test,user,test@gmail.com,"Assign each user a role: Admin, Builder or End User. User role value should be exact same","For multiple groups separate using pipe (|) operator e.g. Groups1|Group2 or leave blank if no group assign" \ No newline at end of file diff --git a/server/src/services/organizations.service.ts b/server/src/services/organizations.service.ts index 72680fd777..6cf13e492e 100644 --- a/server/src/services/organizations.service.ts +++ b/server/src/services/organizations.service.ts @@ -711,7 +711,7 @@ export class OrganizationsService { const existingGroups = groupPermissions.map((groupPermission) => groupPermission.name); csv .parseString(fileStream.toString(), { - headers: ['first_name', 'last_name', 'email', 'groups', 'user_role'], + headers: ['first_name', 'last_name', 'email', 'user_role', 'groups'], renameHeaders: true, ignoreEmpty: true, }) From 0bd6cc009725988ce6b8463031d16be46903118e Mon Sep 17 00:00:00 2001 From: Muhsin Shah Date: Tue, 23 Jul 2024 12:59:51 +0530 Subject: [PATCH 108/190] Added express-static types to the dependency array to solve the nest build issue --- server/package-lock.json | 13 +++++-------- server/package.json | 1 + 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/server/package-lock.json b/server/package-lock.json index 1fe3333618..20204050e5 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -25,6 +25,7 @@ "@sentry/node": "6.17.6", "@sentry/tracing": "6.17.6", "@tooljet/plugins": "../plugins", + "@types/express-serve-static-core": "^4.19.5", "bcrypt": "^5.0.1", "class-transformer": "^0.5.1", "class-validator": "^0.14.0", @@ -112,6 +113,7 @@ } }, "../plugins": { + "name": "@tooljet/plugins", "version": "0.0.1", "dependencies": { "@tooljet-plugins/airtable": "file:packages/airtable", @@ -3039,7 +3041,6 @@ "version": "4.19.5", "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz", "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==", - "dev": true, "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -3158,8 +3159,7 @@ "node_modules/@types/mime": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", - "dev": true + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" }, "node_modules/@types/mjml": { "version": "4.7.4", @@ -3281,14 +3281,12 @@ "node_modules/@types/qs": { "version": "6.9.15", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", - "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", - "dev": true + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==" }, "node_modules/@types/range-parser": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", - "dev": true + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" }, "node_modules/@types/request-ip": { "version": "0.0.37", @@ -3326,7 +3324,6 @@ "version": "0.17.4", "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", - "dev": true, "dependencies": { "@types/mime": "^1", "@types/node": "*" diff --git a/server/package.json b/server/package.json index 885d9663fe..65d6ade5cf 100644 --- a/server/package.json +++ b/server/package.json @@ -50,6 +50,7 @@ "@sentry/node": "6.17.6", "@sentry/tracing": "6.17.6", "@tooljet/plugins": "../plugins", + "@types/express-serve-static-core": "^4.19.5", "bcrypt": "^5.0.1", "class-transformer": "^0.5.1", "class-validator": "^0.14.0", From 3a6bfe340d8b510ef772b94aa2a5ccc6833a4f46 Mon Sep 17 00:00:00 2001 From: Muhsin Shah Date: Tue, 23 Jul 2024 13:10:57 +0530 Subject: [PATCH 109/190] Refactoring the code --- server/src/entity-subscribers/apps.subscriber.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/server/src/entity-subscribers/apps.subscriber.ts b/server/src/entity-subscribers/apps.subscriber.ts index a8340a749e..cea3d13b9d 100644 --- a/server/src/entity-subscribers/apps.subscriber.ts +++ b/server/src/entity-subscribers/apps.subscriber.ts @@ -1,5 +1,4 @@ -import { DataSource, EntitySubscriberInterface, EventSubscriber, InsertEvent } from 'typeorm'; -import { Repository } from 'typeorm'; +import { DataSource, EntitySubscriberInterface, EventSubscriber, InsertEvent, Repository } from 'typeorm'; import { InjectRepository } from '@nestjs/typeorm'; import { AppVersion } from 'src/entities/app_version.entity'; import { App } from 'src/entities/app.entity'; From cae9a1ed9dfa2ed70092a06e8e913bce5364cc46 Mon Sep 17 00:00:00 2001 From: Muhsin Shah Date: Fri, 19 Jul 2024 17:20:19 +0530 Subject: [PATCH 110/190] Added :prod migration script changes --- server/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/package.json b/server/package.json index 65d6ade5cf..c2748f5d8a 100644 --- a/server/package.json +++ b/server/package.json @@ -23,8 +23,8 @@ "db:drop": "ts-node ./scripts/drop-database.ts", "db:migrate": "ts-node -r tsconfig-paths/register --transpile-only ./node_modules/typeorm/cli.js migration:run --dataSource ./src/migration-helpers/db-migrations-datasource.ts && npm run db:migrate:data", "db:migrate:data": "ts-node -r tsconfig-paths/register --transpile-only ./node_modules/typeorm/cli.js migration:run --dataSource ./src/migration-helpers/data-migrations-datasource.ts", - "db:migrate:prod": "node ./node_modules/typeorm/cli.js migration:run --config dist/ormconfig.js && npm run db:migrate:data:prod", - "db:migrate:data:prod": "node ./node_modules/typeorm/cli.js migration:run --config dist/data-migration-config.js", + "db:migrate:prod": "node ./node_modules/typeorm/cli.js migration:run --dataSource dist/src/migration-helpers/db-migrations-datasource.js && npm run db:migrate:data:prod", + "db:migrate:data:prod": "node ./node_modules/typeorm/cli.js migration:run --dataSource dist/src/migration-helpers/data-migrations-datasource.js", "db:seed": "ts-node -r tsconfig-paths/register --transpile-only ./scripts/seeds.ts", "db:seed:prod": "node dist/scripts/seeds.js", "db:setup": "npm run db:create && npm run db:migrate", From 994686a1f1db49fa57be00e62043839fc52c11a9 Mon Sep 17 00:00:00 2001 From: gsmithun4 Date: Tue, 9 Jul 2024 13:54:51 +0530 Subject: [PATCH 111/190] initial commit --- server/src/main.ts | 78 +++++++++++++++++++++++++--------------------- 1 file changed, 42 insertions(+), 36 deletions(-) diff --git a/server/src/main.ts b/server/src/main.ts index f4590c0452..6f5a0eee6b 100644 --- a/server/src/main.ts +++ b/server/src/main.ts @@ -68,50 +68,56 @@ async function bootstrap() { exclude: pathsToExclude, }); app.enableCors({ - origin: true, + origin: process.env.TOOLJET_HOST, credentials: true, }); app.use(compression()); app.use( - helmet.contentSecurityPolicy({ - useDefaults: true, - directives: { - upgradeInsecureRequests: null, - 'img-src': ['*', 'data:', 'blob:'], - 'script-src': [ - 'maps.googleapis.com', - 'storage.googleapis.com', - 'apis.google.com', - 'accounts.google.com', - "'self'", - "'unsafe-inline'", - "'unsafe-eval'", - 'blob:', - 'https://unpkg.com/@babel/standalone@7.17.9/babel.min.js', - 'https://unpkg.com/react@16.7.0/umd/react.production.min.js', - 'https://unpkg.com/react-dom@16.7.0/umd/react-dom.production.min.js', - 'cdn.skypack.dev', - 'cdn.jsdelivr.net', - 'https://esm.sh', - 'www.googletagmanager.com', - ], - 'default-src': [ - 'maps.googleapis.com', - 'storage.googleapis.com', - 'apis.google.com', - 'accounts.google.com', - '*.sentry.io', - "'self'", - 'blob:', - 'www.googletagmanager.com', - ], - 'connect-src': ['ws://' + domain, "'self'", '*'], - 'frame-ancestors': ['*'], - 'frame-src': ['*'], + helmet({ + contentSecurityPolicy: { + useDefaults: true, + directives: { + upgradeInsecureRequests: null, + 'img-src': ['*', 'data:', 'blob:'], + 'script-src': [ + 'maps.googleapis.com', + 'storage.googleapis.com', + 'apis.google.com', + 'accounts.google.com', + "'self'", + "'unsafe-inline'", + "'unsafe-eval'", + 'blob:', + 'https://unpkg.com/@babel/standalone@7.17.9/babel.min.js', + 'https://unpkg.com/react@16.7.0/umd/react.production.min.js', + 'https://unpkg.com/react-dom@16.7.0/umd/react-dom.production.min.js', + 'cdn.skypack.dev', + 'cdn.jsdelivr.net', + 'https://esm.sh', + 'www.googletagmanager.com', + ], + 'default-src': [ + 'maps.googleapis.com', + 'storage.googleapis.com', + 'apis.google.com', + 'accounts.google.com', + '*.sentry.io', + "'self'", + 'blob:', + 'www.googletagmanager.com', + ], + 'connect-src': ['ws://' + domain, "'self'", '*'], + 'frame-ancestors': ['*'], + 'frame-src': ['*'], + }, }, + frameguard: process.env.ENABLE_APP_EMBED || process.env.ENABLE_PRIVATE_APP_EMBED ? false : { action: 'deny' }, + hidePoweredBy: true, }) ); + // app.use( + // helmet.crossOriginEmbedderPolicy({})) app.use(cookieParser()); app.use(json({ limit: '50mb' })); From e86697dbf1945e8c4b4b0911b131fc9560ba80e2 Mon Sep 17 00:00:00 2001 From: gsmithun4 Date: Tue, 16 Jul 2024 17:42:59 +0530 Subject: [PATCH 112/190] improvements --- .env.example | 9 +++ server/src/app.module.ts | 17 ++++- server/src/helpers/utils.helper.ts | 4 + .../custom-headers.interceptors.ts | 17 +++++ server/src/interceptors/helmet.interceptor.ts | 74 +++++++++++++++++++ server/src/main.ts | 55 +------------- server/src/services/auth.service.ts | 6 +- 7 files changed, 128 insertions(+), 54 deletions(-) create mode 100644 server/src/interceptors/custom-headers.interceptors.ts create mode 100644 server/src/interceptors/helmet.interceptor.ts diff --git a/.env.example b/.env.example index 4ffba67912..c5636be711 100644 --- a/.env.example +++ b/.env.example @@ -81,3 +81,12 @@ ENABLE_ONBOARDING_QUESTIONS_FOR_ALL_SIGN_UPS= #session expiry in minutes USER_SESSION_EXPIRY= + +#Disable app embed feature, if true then private and public app embed is not allowed +DISABLE_APP_EMBED= + +# if true then private app embed is not allowed +ENABLE_PRIVATE_APP_EMBED= + +#Enable cors else restricted to TOOLJET_HOST +ENABLE_CORS= diff --git a/server/src/app.module.ts b/server/src/app.module.ts index 2fdd5de61c..c672007ab3 100644 --- a/server/src/app.module.ts +++ b/server/src/app.module.ts @@ -47,6 +47,9 @@ import { ImportExportResourcesModule } from './modules/import_export_resources/i import { MailerModule } from '@nestjs-modules/mailer'; import { HandlebarsAdapter } from '@nestjs-modules/mailer/dist/adapters/handlebars.adapter'; import { GetConnection } from './helpers/getconnection'; +import { APP_INTERCEPTOR } from '@nestjs/core/constants'; +import { HelmetInterceptor } from './interceptors/helmet.interceptor'; +import { CustomHeadersInterceptor } from './interceptors/custom-headers.interceptors'; const imports = [ ScheduleModule.forRoot(), @@ -172,7 +175,19 @@ if (process.env.ENABLE_TOOLJET_DB === 'true') { @Module({ imports, controllers: [AppController], - providers: [EmailService, SeedsService, GetConnection], + providers: [ + EmailService, + SeedsService, + GetConnection, + { + provide: APP_INTERCEPTOR, + useClass: HelmetInterceptor, + }, + { + provide: APP_INTERCEPTOR, + useClass: CustomHeadersInterceptor, + }, + ], }) export class AppModule implements OnModuleInit { constructor() {} diff --git a/server/src/helpers/utils.helper.ts b/server/src/helpers/utils.helper.ts index 62653c3b66..3ef6b79b57 100644 --- a/server/src/helpers/utils.helper.ts +++ b/server/src/helpers/utils.helper.ts @@ -303,3 +303,7 @@ export const isValidDomain = (email: string, restrictedDomain: string): boolean } return true; }; + +export const isHttpsEnabled = () => { + return !!process.env.TOOLJET_HOST?.startsWith('https'); +}; diff --git a/server/src/interceptors/custom-headers.interceptors.ts b/server/src/interceptors/custom-headers.interceptors.ts new file mode 100644 index 0000000000..4906918273 --- /dev/null +++ b/server/src/interceptors/custom-headers.interceptors.ts @@ -0,0 +1,17 @@ +import { Injectable, NestInterceptor, ExecutionContext, CallHandler } from '@nestjs/common'; +import { Observable } from 'rxjs'; +import { map } from 'rxjs/operators'; + +@Injectable() +export class CustomHeadersInterceptor implements NestInterceptor { + intercept(context: ExecutionContext, next: CallHandler): Observable { + return next.handle().pipe( + map((data) => { + const response = context.switchToHttp().getResponse(); + response.setHeader('Permissions-Policy', 'geolocation=(self), camera=(), microphone=()'); + response.setHeader('Cache-Control', 'no-cache, no-store, must-revalidate'); + return data; + }) + ); + } +} diff --git a/server/src/interceptors/helmet.interceptor.ts b/server/src/interceptors/helmet.interceptor.ts new file mode 100644 index 0000000000..1b99c33c63 --- /dev/null +++ b/server/src/interceptors/helmet.interceptor.ts @@ -0,0 +1,74 @@ +import { Injectable, NestInterceptor, ExecutionContext, CallHandler } from '@nestjs/common'; +import { Observable } from 'rxjs'; +import * as helmet from 'helmet'; +import { ConfigService } from '@nestjs/config'; + +@Injectable() +export class HelmetInterceptor implements NestInterceptor { + private readonly helmet: ReturnType; + + constructor(private configService: ConfigService) { + const host = new URL(this.configService.get('TOOLJET_HOST')); + const domain = host.hostname; + this.helmet = helmet({ + contentSecurityPolicy: { + useDefaults: true, + directives: { + upgradeInsecureRequests: null, + 'img-src': ['*', 'data:', 'blob:'], + 'script-src': [ + 'maps.googleapis.com', + 'storage.googleapis.com', + 'apis.google.com', + 'accounts.google.com', + "'self'", + "'unsafe-inline'", + "'unsafe-eval'", + 'blob:', + 'https://unpkg.com/@babel/standalone@7.17.9/babel.min.js', + 'https://unpkg.com/react@16.7.0/umd/react.production.min.js', + 'https://unpkg.com/react-dom@16.7.0/umd/react-dom.production.min.js', + 'cdn.skypack.dev', + 'cdn.jsdelivr.net', + 'https://esm.sh', + 'www.googletagmanager.com', + ], + 'default-src': [ + 'maps.googleapis.com', + 'storage.googleapis.com', + 'apis.google.com', + 'accounts.google.com', + '*.sentry.io', + "'self'", + 'blob:', + 'www.googletagmanager.com', + ], + 'connect-src': ['ws://' + domain, "'self'", '*'], + 'frame-ancestors': ['*'], + 'frame-src': ['*'], + }, + }, + frameguard: + this.configService.get('DISABLE_APP_EMBED') !== 'true' || + this.configService.get('ENABLE_PRIVATE_APP_EMBED') === 'true' + ? false + : { action: 'deny' }, + hidePoweredBy: true, + referrerPolicy: { + policy: 'no-referrer', + }, + }); + } + + intercept(context: ExecutionContext, next: CallHandler): Observable { + const httpContext = context.switchToHttp(); + const request = httpContext.getRequest(); + const response = httpContext.getResponse(); + + return new Observable((subscriber) => { + this.helmet(request, response, () => { + next.handle().subscribe(subscriber); + }); + }); + } +} diff --git a/server/src/main.ts b/server/src/main.ts index 6f5a0eee6b..ac9ddfa7f9 100644 --- a/server/src/main.ts +++ b/server/src/main.ts @@ -4,7 +4,6 @@ import { WsAdapter } from '@nestjs/platform-ws'; import * as cookieParser from 'cookie-parser'; import * as compression from 'compression'; import { AppModule } from './app.module'; -import * as helmet from 'helmet'; import { Logger } from 'nestjs-pino'; import { urlencoded, json } from 'express'; import { AllExceptionsFilter } from './filters/all-exceptions-filter'; @@ -46,8 +45,6 @@ async function bootstrap() { abortOnError: false, }); const configService = app.get(ConfigService); - const host = new URL(process.env.TOOLJET_HOST); - const domain = host.hostname; app.useLogger(app.get(Logger)); app.useGlobalFilters(new AllExceptionsFilter(app.get(Logger))); @@ -68,57 +65,10 @@ async function bootstrap() { exclude: pathsToExclude, }); app.enableCors({ - origin: process.env.TOOLJET_HOST, + origin: process.env.ENABLE_CORS === 'true' || process.env.TOOLJET_HOST, credentials: true, }); app.use(compression()); - - app.use( - helmet({ - contentSecurityPolicy: { - useDefaults: true, - directives: { - upgradeInsecureRequests: null, - 'img-src': ['*', 'data:', 'blob:'], - 'script-src': [ - 'maps.googleapis.com', - 'storage.googleapis.com', - 'apis.google.com', - 'accounts.google.com', - "'self'", - "'unsafe-inline'", - "'unsafe-eval'", - 'blob:', - 'https://unpkg.com/@babel/standalone@7.17.9/babel.min.js', - 'https://unpkg.com/react@16.7.0/umd/react.production.min.js', - 'https://unpkg.com/react-dom@16.7.0/umd/react-dom.production.min.js', - 'cdn.skypack.dev', - 'cdn.jsdelivr.net', - 'https://esm.sh', - 'www.googletagmanager.com', - ], - 'default-src': [ - 'maps.googleapis.com', - 'storage.googleapis.com', - 'apis.google.com', - 'accounts.google.com', - '*.sentry.io', - "'self'", - 'blob:', - 'www.googletagmanager.com', - ], - 'connect-src': ['ws://' + domain, "'self'", '*'], - 'frame-ancestors': ['*'], - 'frame-src': ['*'], - }, - }, - frameguard: process.env.ENABLE_APP_EMBED || process.env.ENABLE_PRIVATE_APP_EMBED ? false : { action: 'deny' }, - hidePoweredBy: true, - }) - ); - // app.use( - // helmet.crossOriginEmbedderPolicy({})) - app.use(cookieParser()); app.use(json({ limit: '50mb' })); app.use(urlencoded({ extended: true, limit: '50mb', parameterLimit: 1000000 })); @@ -142,7 +92,8 @@ async function bootstrap() { await app.listen(port, listen_addr, function () { const tooljetHost = configService.get('TOOLJET_HOST'); - console.log(`Ready to use at ${tooljetHost} 🚀`); + const subPath = configService.get('SUB_PATH'); + console.log(`Ready to use at ${tooljetHost}${subPath || ''} 🚀`); }); } diff --git a/server/src/services/auth.service.ts b/server/src/services/auth.service.ts index 97c8973f8f..f7c13717f4 100644 --- a/server/src/services/auth.service.ts +++ b/server/src/services/auth.service.ts @@ -28,6 +28,7 @@ import { generateNextNameAndSlug, generateOrgInviteURL, isValidDomain, + isHttpsEnabled, } from 'src/helpers/utils.helper'; import { getUserErrorMessages, @@ -702,7 +703,8 @@ export class AuthService { async forgotPassword(email: string) { const user = await this.usersService.findByEmail(email); if (!user) { - throw new BadRequestException('Email address not found'); + // No need to throw error - To prevent Username Enumeration vulnerability + return; } const forgotPasswordToken = uuid.v4(); await this.usersService.updateUser(user.id, { forgotPasswordToken }); @@ -1078,6 +1080,7 @@ export class AuthService { if (organization) user.organizationId = organization.id; const cookieOptions: CookieOptions = { + secure: isHttpsEnabled(), httpOnly: true, sameSite: 'strict', maxAge: 2 * 365 * 24 * 60 * 60 * 1000, // maximum expiry 2 years @@ -1211,6 +1214,7 @@ export class AuthService { const cookieOptions: CookieOptions = { httpOnly: true, + secure: isHttpsEnabled(), sameSite: 'strict', maxAge: 2 * 365 * 24 * 60 * 60 * 1000, // maximum expiry 2 years }; From 269b659779745a9456a69a1d74f26c9d6f4f26fb Mon Sep 17 00:00:00 2001 From: gsmithun4 Date: Tue, 23 Jul 2024 16:04:32 +0530 Subject: [PATCH 113/190] migration fix --- .../1720434737529-MigrateCustomGroupToNewUserGroup.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/data-migrations/1720434737529-MigrateCustomGroupToNewUserGroup.ts b/server/data-migrations/1720434737529-MigrateCustomGroupToNewUserGroup.ts index 4c98129a90..542eadd419 100644 --- a/server/data-migrations/1720434737529-MigrateCustomGroupToNewUserGroup.ts +++ b/server/data-migrations/1720434737529-MigrateCustomGroupToNewUserGroup.ts @@ -205,7 +205,7 @@ export class MigrateCustomGroupToNewUserGroup1720434737529 implements MigrationI const nameInit = createResourcePermissionObj.canView ? 'Viewable' : 'Updatable'; if (appsPermissions.length === 0) return; const dtoObject = { - name: `'${nameInit} ${DEFAULT_GRANULAR_PERMISSIONS_NAME[resource]}'`, + name: `${nameInit} ${DEFAULT_GRANULAR_PERMISSIONS_NAME[resource]}`, groupId: group.id, type: resource as ResourceType, isAll: false, From 4daa8f1900e3039050d0926641468e668a3463a1 Mon Sep 17 00:00:00 2001 From: Muhsin Shah Date: Tue, 23 Jul 2024 17:00:35 +0530 Subject: [PATCH 114/190] Changed .env.example comment --- .env.example | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.env.example b/.env.example index c5636be711..ee85517567 100644 --- a/.env.example +++ b/.env.example @@ -85,7 +85,7 @@ USER_SESSION_EXPIRY= #Disable app embed feature, if true then private and public app embed is not allowed DISABLE_APP_EMBED= -# if true then private app embed is not allowed +# if true then private app embed is allowed ENABLE_PRIVATE_APP_EMBED= #Enable cors else restricted to TOOLJET_HOST From e1eb6c7ac1b02ac9d9673d7fdaaada76acf23e5f Mon Sep 17 00:00:00 2001 From: Muhsin Shah Date: Tue, 23 Jul 2024 18:13:19 +0530 Subject: [PATCH 115/190] Added metadata fix --- server/src/services/metadata.service.ts | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/server/src/services/metadata.service.ts b/server/src/services/metadata.service.ts index 79b5426d82..2b179a4bcd 100644 --- a/server/src/services/metadata.service.ts +++ b/server/src/services/metadata.service.ts @@ -17,11 +17,10 @@ export class MetadataService { private metadataRepository: Repository, private configService: ConfigService, private readonly _dataSource: TypeORMDatasource - ) {} async getMetaData() { - let metadata = await this.metadataRepository.findOne({}); + let [metadata] = await this.metadataRepository.find(); if (!metadata) { metadata = await this.metadataRepository.save( @@ -37,7 +36,7 @@ export class MetadataService { } async updateMetaData(newOptions: any) { - const metadata = await this.metadataRepository.findOne({}); + const [metadata] = await this.metadataRepository.find(); return await this.metadataRepository.update(metadata.id, { data: { ...metadata.data, ...newOptions }, @@ -150,7 +149,12 @@ export class MetadataService { ).map((record) => record.id); const userIdsOfAppOwners = ( - await this._dataSource.createQueryBuilder(User, 'users').innerJoin('users.apps', 'apps').select('users.id').distinct().getMany() + await this._dataSource + .createQueryBuilder(User, 'users') + .innerJoin('users.apps', 'apps') + .select('users.id') + .distinct() + .getMany() ).map((record) => record.id); const totalEditorCount = await manager.count(User, { From bc337cad1b644e3dcf05a4c46563d18cc22e75dd Mon Sep 17 00:00:00 2001 From: Ajith KV Date: Tue, 30 Jul 2024 11:53:26 +0530 Subject: [PATCH 116/190] Add data-cy for user group components (#10502) --- .../ee/components/UsersPage/UsersTable.jsx | 10 ++++-- .../AddEditResourcePermissionsModal.jsx | 32 ++++++++++++++----- .../AppPermissionActionContainer.jsx | 25 ++++++++++++--- .../AddResourcePermissionsMenu.jsx | 1 + .../AppResourcePermission.jsx | 30 +++++++++++------ frontend/src/ManageGranularAccess/index.jsx | 15 +++++---- .../index.jsx | 24 ++++++++------ .../ErrorModal/ErrorModal.jsx | 8 +++-- .../ManageGroupPermissionsV2.jsx | 18 ++++++++--- frontend/src/_ui/FolderList/FolderList.jsx | 1 + frontend/src/_ui/Modal/index.jsx | 2 +- 11 files changed, 117 insertions(+), 49 deletions(-) diff --git a/frontend/ee/components/UsersPage/UsersTable.jsx b/frontend/ee/components/UsersPage/UsersTable.jsx index 10ebff63a8..8a37cd5a9d 100644 --- a/frontend/ee/components/UsersPage/UsersTable.jsx +++ b/frontend/ee/components/UsersPage/UsersTable.jsx @@ -35,7 +35,7 @@ const UsersTable = ({ {translator('header.organization.menus.manageUsers.name', 'Name')} - + User role Custom groups @@ -83,7 +83,7 @@ const UsersTable = ({ {Array.isArray(users) && users.length > 0 && users.map((user) => ( - + {decodeEntities(user.name)} - + {user.email}
diff --git a/frontend/src/ManageGranularAccess/AddEditResourceModal/AddEditResourcePermissionsModal.jsx b/frontend/src/ManageGranularAccess/AddEditResourceModal/AddEditResourcePermissionsModal.jsx index fabb65f4b6..18a12ae66a 100644 --- a/frontend/src/ManageGranularAccess/AddEditResourceModal/AddEditResourcePermissionsModal.jsx +++ b/frontend/src/ManageGranularAccess/AddEditResourceModal/AddEditResourcePermissionsModal.jsx @@ -38,7 +38,9 @@ function AddEditResourcePermissionsModal({ darkMode={darkMode} >
- +
- {errors['permissionName']} + + {errors['permissionName']} +
50 ? 'error-text' : ''}`}> -
Permission name must be unique and max 50 characters
+
Permission name must be unique and max 50 characters
{/* Till here */}
- + { updateParentState((prevState) => ({ @@ -100,8 +107,10 @@ function AddEditResourcePermissionsModal({
- -
+ +
diff --git a/frontend/src/ManageGranularAccess/AddEditResourceModal/AppPermissionActionContainer.jsx b/frontend/src/ManageGranularAccess/AddEditResourceModal/AppPermissionActionContainer.jsx index 8a4fd3cc33..1bdf2dddc1 100644 --- a/frontend/src/ManageGranularAccess/AddEditResourceModal/AppPermissionActionContainer.jsx +++ b/frontend/src/ManageGranularAccess/AddEditResourceModal/AppPermissionActionContainer.jsx @@ -31,16 +31,22 @@ function AppPermissionsActions({ onClick={() => { !initialPermissionState.canEdit && handleClickEdit(); }} + data-cy="edit-permission-radio" />
Edit - + Access to app builder
@@ -57,15 +63,21 @@ function AppPermissionsActions({ onClick={() => { !initialPermissionState.canView && handleClickView(); }} + data-cy="view-permission-radio" />
View - + Only access released version of apps
@@ -79,10 +91,15 @@ function AppPermissionsActions({ onClick={() => { handleHideFromDashboard(); }} + data-cy="hide-from-dashboard-permission-input" />
- Hide from dashboard - App will be accessible by URL only + + Hide from dashboard + + + App will be accessible by URL only +
diff --git a/frontend/src/ManageGranularAccess/AddResourcePermissionsMenu.jsx b/frontend/src/ManageGranularAccess/AddResourcePermissionsMenu.jsx index a229c459d5..bd0cf55f56 100644 --- a/frontend/src/ManageGranularAccess/AddResourcePermissionsMenu.jsx +++ b/frontend/src/ManageGranularAccess/AddResourcePermissionsMenu.jsx @@ -51,6 +51,7 @@ function AddResourcePermissionsMenu({ openAddPermissionModal, resourcesOptions, onClick={() => { openAddPermissionModal(); }} + data-cy="add-apps-buton" > Add apps diff --git a/frontend/src/ManageGranularAccess/AppResourcePermission.jsx b/frontend/src/ManageGranularAccess/AppResourcePermission.jsx index 6650f5b98d..0c56a51e45 100644 --- a/frontend/src/ManageGranularAccess/AppResourcePermission.jsx +++ b/frontend/src/ManageGranularAccess/AppResourcePermission.jsx @@ -35,7 +35,10 @@ function AppResourcePermissions({ >
-
{` ${permissions.name}`}
+
{` ${permissions.name}`}
@@ -71,13 +74,15 @@ function AppResourcePermissions({ }} checked={appsPermissions.canEdit} disabled={isRoleGroup || disableEditUpdate} - data-cy="app-create-checkbox" + data-cy="app-edit-radio" /> - + {'Edit'} {/* Create apps in this workspace */} - Access to app builder + + Access to app builder +
@@ -102,12 +107,14 @@ function AppResourcePermissions({ }} checked={appsPermissions.canView} disabled={isRoleGroup || disableEditUpdate} - data-cy="app-delete-checkbox" + data-cy="app-view-radio" /> - + {'View'} - Only access released version of apps + + Only access released version of apps +
- + {'Hide from dashbaord'} - App will be accessible by URL only + + App will be accessible by URL only +
@@ -152,6 +161,7 @@ function AppResourcePermissions({ openEditPermissionModal(permissions); }} disabled={isRoleGroup} + data-cy="edit-permission-button" /> )}
diff --git a/frontend/src/ManageGranularAccess/index.jsx b/frontend/src/ManageGranularAccess/index.jsx index 88d558361b..c13375a753 100644 --- a/frontend/src/ManageGranularAccess/index.jsx +++ b/frontend/src/ManageGranularAccess/index.jsx @@ -435,7 +435,7 @@ class ManageGranularAccessComponent extends React.Component { -
+
{modalTitle}
{modalType === 'edit' && !isRoleGroup && ( @@ -451,6 +451,7 @@ class ManageGranularAccessComponent extends React.Component { showAddPermissionModal: false, }); }} + data-cy="delete-button" />
)} @@ -470,11 +471,13 @@ class ManageGranularAccessComponent extends React.Component { /> {!granularPermissions.length ? (
-
+
-

No permissions added yet

-

+

+ No permissions added yet +

+

Add assets to configure granular, asset-level permissions for this user group

@@ -489,13 +492,13 @@ class ManageGranularAccessComponent extends React.Component { <> {showPermissionInfo && this.showPermissionText(currentGroupPermission)}
-

+

{'Name'}

{'Permission'}

-

+

{'Resource'}

diff --git a/frontend/src/ManageGroupPermissionResourcesV2/index.jsx b/frontend/src/ManageGroupPermissionResourcesV2/index.jsx index 10d72a6758..a2d601ec80 100644 --- a/frontend/src/ManageGroupPermissionResourcesV2/index.jsx +++ b/frontend/src/ManageGroupPermissionResourcesV2/index.jsx @@ -477,7 +477,9 @@ class ManageGroupPermissionResourcesComponent extends React.Component {
{EDIT_ROLE_MESSAGE?.[groupPermission?.name]?.[selectedNewRole](isPaidPlan)}
) : (
- + - - {this.props.t('editor.shareModal.makeApplicationPublic', 'Make application public')} - -
-
+ + + + {this.props.t('editor.share', 'Share')} + + + + + + { + + } + + + + {this.isUserAdmin && ( + + Manage users + + )} + + +
); } } diff --git a/frontend/src/_helpers/constants.js b/frontend/src/_helpers/constants.js index 614a64ffb3..59d06df60a 100644 --- a/frontend/src/_helpers/constants.js +++ b/frontend/src/_helpers/constants.js @@ -91,6 +91,7 @@ export const ERROR_MESSAGES = { export const TOOLTIP_MESSAGES = { SHARE_URL_UNAVAILABLE: 'Share URL is unavailable until current version is released', + RELEASE_VERSION_URL_UNAVAILABLE: 'Release the version to make it public', }; export const DATA_SOURCE_TYPE = { diff --git a/frontend/src/_ui/HttpHeaders/sourceEditorStyles.scss b/frontend/src/_ui/HttpHeaders/sourceEditorStyles.scss index b6de1cea5a..a625c2dcfd 100644 --- a/frontend/src/_ui/HttpHeaders/sourceEditorStyles.scss +++ b/frontend/src/_ui/HttpHeaders/sourceEditorStyles.scss @@ -1,78 +1,94 @@ input.form-control, - textarea, - .input-control { - gap: 16px !important; - background: var(--base) !important; - border: 1px solid var(--slate7) !important; - border-radius: 6px; - margin-bottom: 4px !important; - color: var(--slate12) !important; - transition: none; - height: 35px; - padding-left: 0.4375rem; - padding-right: 0.4375rem; - padding-top: 0.75rem; - padding-bottom: 0.75rem; - overflow-x: 'auto'; - white-space: 'nowrap'; +textarea, +.input-control { + gap: 16px !important; + background: var(--base) !important; + border: 1px solid var(--slate7) !important; + border-radius: 6px; + margin-bottom: 4px !important; + color: var(--slate12) !important; + transition: none; + height: 35px; + padding-left: 0.4375rem; + padding-right: 0.4375rem; + padding-top: 0.75rem; + padding-bottom: 0.75rem; + overflow-x: 'auto'; + white-space: 'nowrap'; + &:hover { + background: var(--slate1) !important; + border: 1px solid var(--slate8) !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + outline: none; + } + + &:focus-visible { + background: var(--indigo2) !important; + border: 1px solid var(--indigo9) !important; + box-shadow: none !important; + } + + &.input-error-border { + border-color: #DB4324 !important; + } + + &:-webkit-autofill { + box-shadow: 0 0 0 1000px var(--base) inset !important; + -webkit-text-fill-color: var(--slate12) !important; + &:hover { - background: var(--slate1) !important; - border: 1px solid var(--slate8) !important; - -webkit-box-shadow: none !important; - box-shadow: none !important; - outline: none; + box-shadow: 0 0 0 1000px var(--slate1) inset !important; + -webkit-text-fill-color: var(--slate12) !important; } &:focus-visible { - background: var(--indigo2) !important; - border: 1px solid var(--indigo9) !important; - box-shadow: none !important; - } - - &.input-error-border { - border-color: #DB4324 !important; - } - - &:-webkit-autofill { - box-shadow: 0 0 0 1000px var(--base) inset !important; + box-shadow: 0 0 0 1000px var(--indigo2) inset !important; -webkit-text-fill-color: var(--slate12) !important; - - &:hover { - box-shadow: 0 0 0 1000px var(--slate1) inset !important; - -webkit-text-fill-color: var(--slate12) !important; - } - - &:focus-visible { - box-shadow: 0 0 0 1000px var(--indigo2) inset !important; - -webkit-text-fill-color: var(--slate12) !important; - } } - } - .empty-key-value { - border-radius: 6px; - padding: 10px; - text-align: center; - width: 625px; - height: 32px; - display: flex; - align-items: center; - justify-content: center; - margin-bottom: 10px; - color: #687076; - font-size: 12px; - font-weight: 400; - line-height: 20px; - border: 1px dashed #E6E8EB; - } +} - .trash { - height: 32px; - display: flex; - justify-content: 'center'; - align-items: 'center'; - } - +.empty-key-value { + border-radius: 6px; + padding: 10px; + text-align: center; + width: 625px; + height: 32px; + display: flex; + align-items: center; + justify-content: center; + margin-bottom: 10px; + color: #687076; + font-size: 12px; + font-weight: 400; + line-height: 20px; + border: 1px dashed #E6E8EB; +} + +.trash { + height: 32px; + display: flex; + justify-content: 'center'; + align-items: 'center'; +} + +.empty-version { + border-radius: 6px; + padding: 10px; + text-align: center; + width: auto; + height: 32px; + display: flex; + align-items: center; + justify-content: center; + margin-bottom: 10px; + color: #687076; + font-size: 12px; + font-weight: 400; + line-height: 20px; + border: 1px dashed #E6E8EB; +} \ No newline at end of file From 52ab7b2b9a6d474a100cfa6a63477a2a45b8cf99 Mon Sep 17 00:00:00 2001 From: Rohan Lahori <64496391+rohanlahori@users.noreply.github.com> Date: Tue, 3 Sep 2024 12:47:06 +0530 Subject: [PATCH 167/190] fixed empty slug issue (#10690) * fixed empty slug issue * minor bug fix * removed unused console logs --- .../OrganizationManager/CreateOrganization.jsx | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/frontend/src/_components/OrganizationManager/CreateOrganization.jsx b/frontend/src/_components/OrganizationManager/CreateOrganization.jsx index 204487773a..6357b000bb 100644 --- a/frontend/src/_components/OrganizationManager/CreateOrganization.jsx +++ b/frontend/src/_components/OrganizationManager/CreateOrganization.jsx @@ -19,6 +19,7 @@ export const CreateOrganization = ({ showCreateOrg, setShowCreateOrg }) => { const darkMode = localStorage.getItem('darkMode') === 'true'; const { t } = useTranslation(); const isSlugSet = useRef(false); // Flag to track if slug has been initially set + const sluginput = useRef(''); const createOrganization = () => { let emptyError = false; @@ -138,7 +139,7 @@ export const CreateOrganization = ({ showCreateOrg, setShowCreateOrg }) => { useEffect(() => { if (!isSlugSet.current && name.value && !slugProgress && !workspaceNameProgress) { const defaultValue = - name.value + name?.value .replace(/\s+/g, '') .toLowerCase() .replace(/[^a-z0-9-\s]/g, '') || ''; @@ -147,6 +148,7 @@ export const CreateOrganization = ({ showCreateOrg, setShowCreateOrg }) => { const checkWorkspaceUniqueness = async () => { try { await organizationService.checkWorkspaceUniqueness(null, defaultValue); + sluginput.current.value = defaultValue; } catch (errResponse) { let error = { status: false, @@ -160,9 +162,10 @@ export const CreateOrganization = ({ showCreateOrg, setShowCreateOrg }) => { setSlugProgress(false); } if (slugProgress && !isSlugSet.current) { + // this is to denote that the user has tried editing the slug -- so now slug and name are independent of each other isSlugSet.current = true; } - }, [name.value, slugProgress, workspaceNameProgress, isSlugSet]); + }, [name.value, slug.value, slugProgress, workspaceNameProgress, isSlugSet]); const isDisabled = isCreating || isNameDisabled || isSlugDisabled || slugProgress || workspaceNameProgress; @@ -194,6 +197,8 @@ export const CreateOrganization = ({ showCreateOrg, setShowCreateOrg }) => { + ) : name.value && !workspaceNameProgress ? ( + ) : (
+); + +export default Spinner; diff --git a/frontend/src/modules/common/components/SubmitButton/index.js b/frontend/src/modules/common/components/SubmitButton/index.js new file mode 100644 index 0000000000..f7563c25ec --- /dev/null +++ b/frontend/src/modules/common/components/SubmitButton/index.js @@ -0,0 +1 @@ +export { default } from './SubmitButton'; diff --git a/frontend/src/modules/common/components/SubmitButton/resources/images/enter-icon.svg b/frontend/src/modules/common/components/SubmitButton/resources/images/enter-icon.svg new file mode 100644 index 0000000000..7484fdc5f3 --- /dev/null +++ b/frontend/src/modules/common/components/SubmitButton/resources/images/enter-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/frontend/src/modules/common/components/SubmitButton/resources/styles/submit-button.styles.scss b/frontend/src/modules/common/components/SubmitButton/resources/styles/submit-button.styles.scss new file mode 100644 index 0000000000..bba7200fe1 --- /dev/null +++ b/frontend/src/modules/common/components/SubmitButton/resources/styles/submit-button.styles.scss @@ -0,0 +1,35 @@ +.submit-button { + height: 32px; + width: fit-content; + min-width: 87px; + border-radius: var(--4, 8px); + margin: 10px 8px; + padding: 6px 8px; + + .button-text { + color: var(--Text-on-color, #FFF); + font-size: 12px; + font-style: normal; + font-weight: 500; + line-height: 18px; + } + + &:disabled { + background-color: var(--Disabled, #C2CFFD) !important; + opacity: 0.8; + + svg>path { + fill: #FFF !important; + } + } +} + +.dark-theme { + .submit-button { + &:disabled { + background: var(--slate6) !important; + color: var(--slate9) !important; + cursor: auto !important; + } + } +} diff --git a/frontend/src/modules/common/components/index.js b/frontend/src/modules/common/components/index.js new file mode 100644 index 0000000000..cf00a9ed09 --- /dev/null +++ b/frontend/src/modules/common/components/index.js @@ -0,0 +1,19 @@ +import FormTextInput from './FormTextInput'; +import PasswordInput from './PasswordInput'; +import GeneralFeatureImage from './GeneralFeatureImage'; +import SubmitButton from './SubmitButton'; +import FormHeader from './FormHeader'; +import EmailComponent from './EmailComponent'; +import FormDescription from './FormDescription'; +import SSOAuthModule from './SSOAuthModule'; + +export { + FormTextInput, + PasswordInput, + GeneralFeatureImage, + SubmitButton, + FormHeader, + EmailComponent, + FormDescription, + SSOAuthModule, +}; diff --git a/frontend/src/modules/common/helpers/index.js b/frontend/src/modules/common/helpers/index.js new file mode 100644 index 0000000000..3af21c238a --- /dev/null +++ b/frontend/src/modules/common/helpers/index.js @@ -0,0 +1,3 @@ +import * as utils from './utils'; + +export { utils }; diff --git a/frontend/src/modules/common/helpers/utils.js b/frontend/src/modules/common/helpers/utils.js new file mode 100644 index 0000000000..994ed91dba --- /dev/null +++ b/frontend/src/modules/common/helpers/utils.js @@ -0,0 +1,10 @@ +import { isString } from 'lodash'; + +const processErrorMessage = (error) => { + if (isString(error)) { + return error; + } + return error?.error || 'Something went wrong. Please try again.'; +}; + +export { processErrorMessage }; diff --git a/frontend/src/modules/common/hooks/index.js b/frontend/src/modules/common/hooks/index.js new file mode 100644 index 0000000000..793adc5804 --- /dev/null +++ b/frontend/src/modules/common/hooks/index.js @@ -0,0 +1,3 @@ +import { default as useEnterKeyPress } from './useEnterKeyPress.jsx'; + +export { useEnterKeyPress }; diff --git a/frontend/src/modules/common/hooks/useEnterKeyPress.jsx b/frontend/src/modules/common/hooks/useEnterKeyPress.jsx new file mode 100644 index 0000000000..5ed80e459c --- /dev/null +++ b/frontend/src/modules/common/hooks/useEnterKeyPress.jsx @@ -0,0 +1,17 @@ +import { useEffect } from 'react'; + +const useEnterKeyPress = (callback) => { + useEffect(() => { + const handleKeyDown = (event) => { + if (event.key === 'Enter') { + callback(event); + } + }; + document.addEventListener('keydown', handleKeyDown); + return () => { + document.removeEventListener('keydown', handleKeyDown); + }; + }, [callback]); +}; + +export default useEnterKeyPress; diff --git a/frontend/src/modules/common/resources/images/Logo.jsx b/frontend/src/modules/common/resources/images/Logo.jsx new file mode 100644 index 0000000000..2fd264de65 --- /dev/null +++ b/frontend/src/modules/common/resources/images/Logo.jsx @@ -0,0 +1,110 @@ +import React from 'react'; + +const Logo = () => { + const darkMode = localStorage.getItem('darkMode') === 'true'; + + return darkMode ? ( + + + + + + + + + + + + + + + + + + + + + + + + + ) : ( + + + + + + + + + + + + + + + + + + + + + + + + + ); +}; + +export default Logo; diff --git a/frontend/src/modules/common/resources/styles/common.styles.scss b/frontend/src/modules/common/resources/styles/common.styles.scss new file mode 100644 index 0000000000..37654d8828 --- /dev/null +++ b/frontend/src/modules/common/resources/styles/common.styles.scss @@ -0,0 +1,21 @@ +.form-header { + font-size: 32px; + font-weight: 500; + margin-top: 32px; + color: var(--text-default, #1B1F24); +} + +.onboarding-form-width { + width: 308px; +} + +.free-space { + display: block; + height: 24px; +} + +.info-screen { + .onboarding-form-wrapper { + margin-top: 0px; + } +} \ No newline at end of file diff --git a/frontend/src/modules/index.js b/frontend/src/modules/index.js new file mode 100644 index 0000000000..0ed19c073e --- /dev/null +++ b/frontend/src/modules/index.js @@ -0,0 +1,7 @@ +/* Common styles */ +import './common/resources/styles/common.styles.scss'; +/* Modules */ +import onboarding from './onboarding'; +import auth from './auth'; + +export { onboarding, auth }; diff --git a/frontend/src/modules/onboarding/components/OnboardingBackgroundWrapper/OnboardingBackgroundWrapper.jsx b/frontend/src/modules/onboarding/components/OnboardingBackgroundWrapper/OnboardingBackgroundWrapper.jsx new file mode 100644 index 0000000000..6728ba078d --- /dev/null +++ b/frontend/src/modules/onboarding/components/OnboardingBackgroundWrapper/OnboardingBackgroundWrapper.jsx @@ -0,0 +1,35 @@ +import React from 'react'; +import './resources/styles/background.styles.scss'; + +const OnboardingBackgroundWrapper = ({ + LeftSideComponent, + RightSideComponent, + MiddleComponent, + rightSize = 7, + leftSize = 5, +}) => { + return ( +
+
+ {MiddleComponent ? ( +
+
+ +
+
+ ) : ( +
+
+ +
+
+ +
+
+ )} +
+
+ ); +}; + +export default OnboardingBackgroundWrapper; diff --git a/frontend/src/modules/onboarding/components/OnboardingBackgroundWrapper/index.js b/frontend/src/modules/onboarding/components/OnboardingBackgroundWrapper/index.js new file mode 100644 index 0000000000..7ca40b3b24 --- /dev/null +++ b/frontend/src/modules/onboarding/components/OnboardingBackgroundWrapper/index.js @@ -0,0 +1 @@ +export { default } from './OnboardingBackgroundWrapper'; diff --git a/frontend/src/modules/onboarding/components/OnboardingBackgroundWrapper/resources/styles/background.styles.scss b/frontend/src/modules/onboarding/components/OnboardingBackgroundWrapper/resources/styles/background.styles.scss new file mode 100644 index 0000000000..5aaffb7dbf --- /dev/null +++ b/frontend/src/modules/onboarding/components/OnboardingBackgroundWrapper/resources/styles/background.styles.scss @@ -0,0 +1,53 @@ +.onboarding-background-wrapper { + height: 100vh; + overflow: hidden; + background-image:url('data:image/svg+xml,'); + background-size: cover; + background-size: cover; + background-position: center; + background-repeat: no-repeat; + + .container-fluid { + height: 100%; + padding: 0; + overflow-y: auto; + overflow-x: hidden; + } + + .row { + height: 100%; + } + + .leftside-wrapper, + .rightside-wrapper { + height: 100%; + } + + .leftside-wrapper { + padding-left: 100px; + } + + .rightside-wrapper {} + + @media (max-width: 767px) { + .rightside-wrapper { + display: none !important; + } + + .leftside-wrapper { + width: 100%; + } + } + + @media (min-width: 1600px) { + .leftside-wrapper { + padding-left: 160px; + } + } +} + +.dark-theme { + .onboarding-background-wrapper { + background-image: url('data:image/svg+xml,'); + } +} diff --git a/frontend/src/modules/onboarding/components/OnboardingForm/OnboardingForm.jsx b/frontend/src/modules/onboarding/components/OnboardingForm/OnboardingForm.jsx new file mode 100644 index 0000000000..ea2760fd32 --- /dev/null +++ b/frontend/src/modules/onboarding/components/OnboardingForm/OnboardingForm.jsx @@ -0,0 +1,82 @@ +import React from 'react'; +import { FormHeader, FormDescription, SubmitButton } from '@/modules/common/components'; +import { OnboardingFormWrapper, OnboardingFormInsideWrapper } from '@/modules/onboarding/components'; +import useOnboardingStore from '@/modules/onboarding/stores/onboardingStore'; +import useInvitationsStore from '@/modules/onboarding/stores/invitationsStore'; +import { shallow } from 'zustand/shallow'; +import './resources/styles/onboarding-form.styles.scss'; +import LeftArow from './resources/images/left-arrow.svg'; +import cx from 'classnames'; + +const OnboardingForm = ({ + title, + description, + children, + onSubmit, + isSubmitting, + isFormValid, + hideSubmitBtn = false, +}) => { + const { currentStep, totalSteps, prevStep, disabledBackButton } = useOnboardingStore( + (state) => ({ + currentStep: state.currentStep, + totalSteps: state.totalSteps, + prevStep: state.prevStep, + disabledBackButton: state.disabledBackButton, + }), + shallow + ); + const { initiatedInvitedUserOnboarding } = useInvitationsStore( + (state) => ({ + initiatedInvitedUserOnboarding: state.initiatedInvitedUserOnboarding, + }), + shallow + ); + + const handleBackClick = () => { + if (disabledBackButton) return; + prevStep(); + }; + + const disabledCondition = disabledBackButton || (initiatedInvitedUserOnboarding && currentStep === 1); + const iconClasses = cx('steps__back', { + disabled: disabledCondition, + }); + const shouldShowSteps = totalSteps > 1; + const formClasses = cx('onboarding-questions-form', { + __ce: !shouldShowSteps, + }); + + return ( + + +
+ {shouldShowSteps && ( +
+
+ +
+ Step {currentStep} of {totalSteps} +
+ )} + {title} + {description && {description}} +
+ {children} + {!hideSubmitBtn && ( + + )} + +
+
+
+ ); +}; + +export default OnboardingForm; diff --git a/frontend/src/modules/onboarding/components/OnboardingForm/index.js b/frontend/src/modules/onboarding/components/OnboardingForm/index.js new file mode 100644 index 0000000000..9355778f00 --- /dev/null +++ b/frontend/src/modules/onboarding/components/OnboardingForm/index.js @@ -0,0 +1 @@ +export { default } from './OnboardingForm'; diff --git a/frontend/src/modules/onboarding/components/OnboardingForm/resources/images/left-arrow.svg b/frontend/src/modules/onboarding/components/OnboardingForm/resources/images/left-arrow.svg new file mode 100644 index 0000000000..4611e111d8 --- /dev/null +++ b/frontend/src/modules/onboarding/components/OnboardingForm/resources/images/left-arrow.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/frontend/src/modules/onboarding/components/OnboardingForm/resources/styles/onboarding-form.styles.scss b/frontend/src/modules/onboarding/components/OnboardingForm/resources/styles/onboarding-form.styles.scss new file mode 100644 index 0000000000..db2e93196e --- /dev/null +++ b/frontend/src/modules/onboarding/components/OnboardingForm/resources/styles/onboarding-form.styles.scss @@ -0,0 +1,41 @@ +.onboarding-questions-form { + padding-top: 92px; + + .form-header { + font-size: 28px; + font-style: normal; + line-height: normal; + letter-spacing: -0.56px; + margin-top: 0px; + } + + .steps { + display: flex; + align-items: center; + color: var(--Text-brand, #4368E3); + font-family: "IBM Plex Sans"; + font-size: 12px; + font-style: normal; + font-weight: 400; + line-height: 18px; + + span { + font-weight: 500; + margin: 0 3px 0 6px; + } + + &__back { + display: flex; + cursor: pointer; + } + } + + .disabled { + opacity: 0.5; + pointer-events: none; + } +} + +.__ce { + padding-top: 24px !important; +} diff --git a/frontend/src/modules/onboarding/components/OnboardingFormInsideWrapper/OnboardingFormInsideWrapper.jsx b/frontend/src/modules/onboarding/components/OnboardingFormInsideWrapper/OnboardingFormInsideWrapper.jsx new file mode 100644 index 0000000000..380b59098a --- /dev/null +++ b/frontend/src/modules/onboarding/components/OnboardingFormInsideWrapper/OnboardingFormInsideWrapper.jsx @@ -0,0 +1,11 @@ +import React from 'react'; + +const OnboardingFormInsideWrapper = ({ children: components }) => { + const styles = { + width: '308px', + }; + + return
{components}
; +}; + +export default OnboardingFormInsideWrapper; diff --git a/frontend/src/modules/onboarding/components/OnboardingFormInsideWrapper/index.js b/frontend/src/modules/onboarding/components/OnboardingFormInsideWrapper/index.js new file mode 100644 index 0000000000..b5a919bf73 --- /dev/null +++ b/frontend/src/modules/onboarding/components/OnboardingFormInsideWrapper/index.js @@ -0,0 +1 @@ +export { default } from './OnboardingFormInsideWrapper'; diff --git a/frontend/src/modules/onboarding/components/OnboardingFormWrapper/OnboardingFormWrapper.jsx b/frontend/src/modules/onboarding/components/OnboardingFormWrapper/OnboardingFormWrapper.jsx new file mode 100644 index 0000000000..9fce3586a6 --- /dev/null +++ b/frontend/src/modules/onboarding/components/OnboardingFormWrapper/OnboardingFormWrapper.jsx @@ -0,0 +1,41 @@ +import React, { useEffect, useState } from 'react'; +import Logo from '@/modules/common/resources/images/Logo'; +import './resources/styles/onboarding-form-wrapper.styles.scss'; +import { + retrieveWhiteLabelLogo, + fetchWhiteLabelDetails, + defaultWhiteLabellingSettings, +} from '@white-label/whiteLabelling'; + +const OnboardingFormWrapper = ({ children: components }) => { + const [whiteLabelLogo, setWhiteLableLogo] = useState(''); + const [imageWidth, setImageWidth] = useState(null); + useEffect(() => { + fetchWhiteLabelDetails(); + setWhiteLableLogo(retrieveWhiteLabelLogo()); + }, []); + const handleImageWidth = (event) => { + const { naturalWidth } = event.target; + setImageWidth(naturalWidth < 130 ? naturalWidth : 130); + }; + + const redirectToLoginPage = () => { + window.location.href = '/'; + }; + return ( +
+
+ {whiteLabelLogo != '' && + window.location.pathname != '/setup' && + whiteLabelLogo != defaultWhiteLabellingSettings.WHITE_LABEL_LOGO ? ( + + ) : ( + + )} +
+ {components} +
+ ); +}; + +export default OnboardingFormWrapper; diff --git a/frontend/src/modules/onboarding/components/OnboardingFormWrapper/index.js b/frontend/src/modules/onboarding/components/OnboardingFormWrapper/index.js new file mode 100644 index 0000000000..d4d4cf1ade --- /dev/null +++ b/frontend/src/modules/onboarding/components/OnboardingFormWrapper/index.js @@ -0,0 +1 @@ +export { default } from './OnboardingFormWrapper'; diff --git a/frontend/src/modules/onboarding/components/OnboardingFormWrapper/resources/styles/onboarding-form-wrapper.styles.scss b/frontend/src/modules/onboarding/components/OnboardingFormWrapper/resources/styles/onboarding-form-wrapper.styles.scss new file mode 100644 index 0000000000..76c5c0ef04 --- /dev/null +++ b/frontend/src/modules/onboarding/components/OnboardingFormWrapper/resources/styles/onboarding-form-wrapper.styles.scss @@ -0,0 +1,26 @@ +/* Default styles */ +.onboarding-form-wrapper { + margin-top: 120px; + /* Default margin-top */ +} + +/* Media query for 1366x768 resolution */ +@media screen and (min-width: 1366px) and (max-height: 768px) { + .onboarding-form-wrapper { + margin-top: 120px; + } +} + +/* Media query for 1440x900 resolution */ +@media screen and (min-width: 1440px) and (min-height: 900px) { + .onboarding-form-wrapper { + margin-top: 180px; + } +} + +/* Media query for 1920x1080 resolution and above */ +@media screen and (min-width: 1920px) and (min-height: 1080px) { + .onboarding-form-wrapper { + margin-top: 240px; + } +} diff --git a/frontend/src/modules/onboarding/components/OnboardingQuestions/OnboardingQuestionsCE.jsx b/frontend/src/modules/onboarding/components/OnboardingQuestions/OnboardingQuestionsCE.jsx new file mode 100644 index 0000000000..b377668613 --- /dev/null +++ b/frontend/src/modules/onboarding/components/OnboardingQuestions/OnboardingQuestionsCE.jsx @@ -0,0 +1,20 @@ +import React from 'react'; +import { WorkspaceNameForm, DynamicFeatureImage } from './components'; +import { OnboardingBackgroundWrapper } from '@/modules/onboarding/components'; + +const OnboardingQuestions = () => { + const renderCurrentStep = () => { + return ; + }; + + return ( +
+ renderCurrentStep()} + RightSideComponent={DynamicFeatureImage} + /> +
+ ); +}; + +export default OnboardingQuestions; diff --git a/frontend/src/modules/onboarding/components/OnboardingQuestions/components/DynamicFeatureImage/DynamicFeatureImageCE.jsx b/frontend/src/modules/onboarding/components/OnboardingQuestions/components/DynamicFeatureImage/DynamicFeatureImageCE.jsx new file mode 100644 index 0000000000..231a29663f --- /dev/null +++ b/frontend/src/modules/onboarding/components/OnboardingQuestions/components/DynamicFeatureImage/DynamicFeatureImageCE.jsx @@ -0,0 +1,15 @@ +import React from 'react'; +import { Step2 } from './resources/images'; +import './resources/styles/dynamic-feature-image.styles.scss'; + +const DynamicFeatureImage = () => { + const darkMode = localStorage.getItem('darkMode') === 'true'; + + return ( +
+ +
+ ); +}; + +export default DynamicFeatureImage; diff --git a/frontend/src/modules/onboarding/components/OnboardingQuestions/components/DynamicFeatureImage/index.js b/frontend/src/modules/onboarding/components/OnboardingQuestions/components/DynamicFeatureImage/index.js new file mode 100644 index 0000000000..44db141720 --- /dev/null +++ b/frontend/src/modules/onboarding/components/OnboardingQuestions/components/DynamicFeatureImage/index.js @@ -0,0 +1 @@ +export { default } from './DynamicFeatureImageCE'; diff --git a/frontend/src/modules/onboarding/components/OnboardingQuestions/components/DynamicFeatureImage/resources/images/Step2.jsx b/frontend/src/modules/onboarding/components/OnboardingQuestions/components/DynamicFeatureImage/resources/images/Step2.jsx new file mode 100644 index 0000000000..5eac3b7920 --- /dev/null +++ b/frontend/src/modules/onboarding/components/OnboardingQuestions/components/DynamicFeatureImage/resources/images/Step2.jsx @@ -0,0 +1,10 @@ +import React from 'react'; +import StepLight from './light-mode/step2.svg'; +import StepDark from './dark-mode/step2.svg'; + +const Step2 = ({ darkMode }) => { + const Component = darkMode ? StepDark : StepLight; + return ; +}; + +export default Step2; diff --git a/frontend/src/modules/onboarding/components/OnboardingQuestions/components/DynamicFeatureImage/resources/images/dark-mode/step2.svg b/frontend/src/modules/onboarding/components/OnboardingQuestions/components/DynamicFeatureImage/resources/images/dark-mode/step2.svg new file mode 100644 index 0000000000..663ad2d367 --- /dev/null +++ b/frontend/src/modules/onboarding/components/OnboardingQuestions/components/DynamicFeatureImage/resources/images/dark-mode/step2.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/src/modules/onboarding/components/OnboardingQuestions/components/DynamicFeatureImage/resources/images/index.js b/frontend/src/modules/onboarding/components/OnboardingQuestions/components/DynamicFeatureImage/resources/images/index.js new file mode 100644 index 0000000000..5cb165a49b --- /dev/null +++ b/frontend/src/modules/onboarding/components/OnboardingQuestions/components/DynamicFeatureImage/resources/images/index.js @@ -0,0 +1,3 @@ +import Step2 from './Step2'; + +export { Step2 }; diff --git a/frontend/src/modules/onboarding/components/OnboardingQuestions/components/DynamicFeatureImage/resources/images/light-mode/step2.svg b/frontend/src/modules/onboarding/components/OnboardingQuestions/components/DynamicFeatureImage/resources/images/light-mode/step2.svg new file mode 100644 index 0000000000..b49c1682c3 --- /dev/null +++ b/frontend/src/modules/onboarding/components/OnboardingQuestions/components/DynamicFeatureImage/resources/images/light-mode/step2.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/src/modules/onboarding/components/OnboardingQuestions/components/DynamicFeatureImage/resources/styles/dynamic-feature-image.styles.scss b/frontend/src/modules/onboarding/components/OnboardingQuestions/components/DynamicFeatureImage/resources/styles/dynamic-feature-image.styles.scss new file mode 100644 index 0000000000..c53806a201 --- /dev/null +++ b/frontend/src/modules/onboarding/components/OnboardingQuestions/components/DynamicFeatureImage/resources/styles/dynamic-feature-image.styles.scss @@ -0,0 +1,63 @@ +.dynamic-feature-image { + display: flex; + justify-content: center; + height: 100vh; + padding-top: 69px; + padding-bottom: 69px; + overflow: hidden; + + + svg { + display: block; + width: auto; + height: auto; + } + + .step3 { + align-self: center; + } +} + +.rightside-wrapper { + margin-top: 0px; + padding-right: 0px; +} + +.container-fluid { + padding-right: 0px; +} + +.dark-theme { + .step3 { + border-radius: 12px; + border: 1px solid var(--border-weak, #2B3036); + background: var(--page-page-default, #181B1F); + overflow: hidden; + + box-shadow: 0px 0px 1px 0px var(--dropshadow-100700-layer-1, rgba(0, 0, 0, 0.90)), 0px 8px 16px 0px var(--dropshadow-100400-layer-2, #000); + } +} + +/* Media query for 1366x768 resolution */ +@media screen and (min-width: 1366px) and (max-height: 768px) { + .dynamic-feature-image { + padding-top: 69px; + padding-bottom: 69px; + } +} + +/* Media query for 1440x900 resolution */ +@media screen and (min-width: 1440px) and (min-height: 900px) { + .dynamic-feature-image { + padding-top: 135px; + padding-bottom: 135px; + } +} + +/* Media query for 1920x1080 resolution and above */ +@media screen and (min-width: 1920px) and (min-height: 1080px) { + .dynamic-feature-image { + padding-top: 161px; + padding-bottom: 161px; + } +} \ No newline at end of file diff --git a/frontend/src/modules/onboarding/components/OnboardingQuestions/components/WorkspaceNameFormCE/WorkspaceNameFormCE.jsx b/frontend/src/modules/onboarding/components/OnboardingQuestions/components/WorkspaceNameFormCE/WorkspaceNameFormCE.jsx new file mode 100644 index 0000000000..6d392522c5 --- /dev/null +++ b/frontend/src/modules/onboarding/components/OnboardingQuestions/components/WorkspaceNameFormCE/WorkspaceNameFormCE.jsx @@ -0,0 +1,121 @@ +import React, { useState, useEffect } from 'react'; +import { OnboardingForm } from '@/modules/onboarding/components'; +import { FormTextInput } from '@/modules/common/components'; +import useInvitationsStore from '@/modules/onboarding/stores/invitationsStore'; +import useOnboardingStore from '@/modules/onboarding/stores/onboardingStore'; +import toast from 'react-hot-toast'; +import { shallow } from 'zustand/shallow'; +import { checkWorkspaceNameUniqueness } from '@/modules/onboarding/services/onboarding.service'; +import { useEnterKeyPress } from '@/modules/common/hooks'; +import '@/_styles/theme.scss'; + +const WorkspaceNameFormCE = () => { + const { onboardUserOrCreateAdmin, initiatedInvitedUserOnboarding } = useInvitationsStore( + (state) => ({ + onboardUserOrCreateAdmin: state.onboardUserOrCreateAdmin, + initiatedInvitedUserOnboarding: state.initiatedInvitedUserOnboarding, + }), + shallow + ); + const { setWorkspaceName, workspaceName, accountCreated } = useOnboardingStore( + (state) => ({ + setWorkspaceName: state.setWorkspaceName, + workspaceName: state.workspaceName, + accountCreated: state.accountCreated, + }), + shallow + ); + useEnterKeyPress(() => handleSubmit()); + + const [formData, setFormData] = useState({ workspaceName: workspaceName || 'My workspace' }); + const [error, setError] = useState(''); + const [isFormValid, setIsFormValid] = useState(true); + const [isSubmitting, setIsSubmitting] = useState(false); + const [isTouched, setIsTouched] = useState(false); + const TITLE = 'Set up your workspace!'; + const description = 'Set up workspaces to manage users, applications & resources across various teams'; + + useEffect(() => { + const initializeWorkspaceName = async () => { + if (initiatedInvitedUserOnboarding) { + const isUnique = await isWorkspaceNameUnique(formData.workspaceName); + if (!isUnique) { + const timestamp = new Date().getTime(); + const newName = `My workspace ${timestamp}`; + setFormData({ workspaceName: newName }); + setIsFormValid(true); + } + } + }; + initializeWorkspaceName(); + }, [initiatedInvitedUserOnboarding]); + + const isWorkspaceNameUnique = async (value) => { + try { + await checkWorkspaceNameUniqueness(value); + setError(''); + return true; + } catch (errResponse) { + const error = { + status: false, + errorMsg: errResponse?.error || 'An unknown error occurred', + }; + setError(error.errorMsg); + return false; + } + }; + + const handleInputChange = async (name, value) => { + setFormData((prevData) => ({ ...prevData, [name]: value })); + setIsTouched(true); + + if (value.trim() === '') { + setError('Workspace name is required'); + setIsFormValid(false); + } else { + const isUnique = await isWorkspaceNameUnique(value); + setIsFormValid(isUnique); + } + }; + + const handleSubmit = async (e) => { + e?.preventDefault(); + if (isFormValid) { + setIsSubmitting(true); + try { + await setWorkspaceName(formData.workspaceName); + await onboardUserOrCreateAdmin(); + } catch (error) { + const errorMessage = error?.error || 'Something went wrong. Please try again.'; + toast.error(errorMessage); + } finally { + setIsSubmitting(false); + } + } + }; + + return ( + + handleInputChange('workspaceName', e.target.value)} + name="workspaceName" + error={isTouched ? error : ''} + dataCy="onboarding-workspace-name" + required + disabled={accountCreated} + maxLength={50} + /> + + ); +}; + +export default WorkspaceNameFormCE; diff --git a/frontend/src/modules/onboarding/components/OnboardingQuestions/components/WorkspaceNameFormCE/index.js b/frontend/src/modules/onboarding/components/OnboardingQuestions/components/WorkspaceNameFormCE/index.js new file mode 100644 index 0000000000..a8a04f182a --- /dev/null +++ b/frontend/src/modules/onboarding/components/OnboardingQuestions/components/WorkspaceNameFormCE/index.js @@ -0,0 +1 @@ +export { default } from './WorkspaceNameFormCE'; diff --git a/frontend/src/modules/onboarding/components/OnboardingQuestions/components/index.js b/frontend/src/modules/onboarding/components/OnboardingQuestions/components/index.js new file mode 100644 index 0000000000..79298ef9f0 --- /dev/null +++ b/frontend/src/modules/onboarding/components/OnboardingQuestions/components/index.js @@ -0,0 +1,4 @@ +import WorkspaceNameForm from './WorkspaceNameFormCE'; +import DynamicFeatureImage from './DynamicFeatureImage'; + +export { WorkspaceNameForm, DynamicFeatureImage }; diff --git a/frontend/src/modules/onboarding/components/OnboardingQuestions/index.js b/frontend/src/modules/onboarding/components/OnboardingQuestions/index.js new file mode 100644 index 0000000000..330f9d12d8 --- /dev/null +++ b/frontend/src/modules/onboarding/components/OnboardingQuestions/index.js @@ -0,0 +1 @@ +export { default } from './OnboardingQuestionsCE'; diff --git a/frontend/src/modules/onboarding/components/index.js b/frontend/src/modules/onboarding/components/index.js new file mode 100644 index 0000000000..79e958cc3d --- /dev/null +++ b/frontend/src/modules/onboarding/components/index.js @@ -0,0 +1,13 @@ +import OnboardingBackgroundWrapper from './OnboardingBackgroundWrapper'; +import OnboardingFormWrapper from './OnboardingFormWrapper'; +import OnboardingFormInsideWrapper from './OnboardingFormInsideWrapper'; +import OnboardingQuestions from './OnboardingQuestions'; +import OnboardingForm from './OnboardingForm'; + +export { + OnboardingBackgroundWrapper, + OnboardingFormWrapper, + OnboardingFormInsideWrapper, + OnboardingQuestions, + OnboardingForm, +}; diff --git a/frontend/src/modules/onboarding/index.js b/frontend/src/modules/onboarding/index.js new file mode 100644 index 0000000000..4651f4979a --- /dev/null +++ b/frontend/src/modules/onboarding/index.js @@ -0,0 +1,44 @@ +import React from 'react'; +import { Route } from 'react-router-dom'; +import { SetupAdminPage, SignupPage, WorkspaceInvitationPage, InvitationPage } from './pages'; +import { AuthRoute, OrganizationInviteRoute } from '@/Routes'; +/* NOTE: + This file should be the entry point to a module. + Anything inside the module shouldn't be accessible outside module folder +*/ +const Onboarding = (props) => [ + } />, + + + + } + />, + + + + } + />, + + + + } + />, + } />, +]; + +export default Onboarding; diff --git a/frontend/src/modules/onboarding/pages/InvitationPage/InvitationPage.jsx b/frontend/src/modules/onboarding/pages/InvitationPage/InvitationPage.jsx new file mode 100644 index 0000000000..6ae1956d84 --- /dev/null +++ b/frontend/src/modules/onboarding/pages/InvitationPage/InvitationPage.jsx @@ -0,0 +1,81 @@ +import React, { useState, useEffect } from 'react'; +import { useLocation, useNavigate, useParams } from 'react-router-dom'; +import { verifyToken, onboarding } from '@/modules/onboarding/services/onboarding.service'; +import { toast } from 'react-hot-toast'; +import { OnboardingQuestions } from '@/modules/onboarding/components'; +import invitationsStore from '@/modules/onboarding/stores/invitationsStore'; +import { LinkExpiredPage } from '@/ConfirmationPage/LinkExpiredPage'; +import { utils } from '@/modules/common/helpers'; + +const PostOnboardingComponent = () => null; + +export const InvitationPage = (darkMode = false) => { + const [isLoading, setIsLoading] = useState(true); + const [fallBack, setFallBack] = useState(false); + + const location = useLocation(); + const params = useParams(); + const searchParams = new URLSearchParams(location?.search); + + const organizationId = searchParams.get('oid'); + const organizationToken = searchParams.get('organizationToken') || params?.organizationToken; + const source = searchParams.get('source'); + const redirectTo = searchParams.get('redirectTo'); + + const { initiateInvitedUserOnboarding, isOnboardingStepsCompleted } = invitationsStore(); + + useEffect(() => { + getUserDetails(); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + const getUserDetails = () => { + setIsLoading(true); + const token = params?.token; + verifyToken(token, organizationToken) + .then((data) => { + const shouldShowOnboardingQuestions = data?.onboarding_details?.questions; + if (shouldShowOnboardingQuestions) { + initiateInvitedUserOnboarding({ + inviteeEmail: data?.email, + token, + organizationToken, + source, + organizationId, + redirectTo, + }); + setIsLoading(false); + } else { + onboarding({ + companyName: '', + buildPurpose: '', + token, + organizationToken, + source, + }).then((data) => { + window.location.href = redirectTo || '/'; + }); + } + }) + .catch((error) => { + const errMessage = utils.processErrorMessage(error); + toast.error(errMessage, { position: 'top-center' }); + setIsLoading(false); + setFallBack(true); + }); + }; + + if (isLoading) { + return <>; + } + + if (fallBack) { + return ; + } + + if (isOnboardingStepsCompleted && PostOnboardingComponent) return ; + + if (!isLoading) return ; +}; + +export default InvitationPage; diff --git a/frontend/src/modules/onboarding/pages/InvitationPage/index.js b/frontend/src/modules/onboarding/pages/InvitationPage/index.js new file mode 100644 index 0000000000..5808c6bc46 --- /dev/null +++ b/frontend/src/modules/onboarding/pages/InvitationPage/index.js @@ -0,0 +1 @@ +export { default } from './InvitationPage'; diff --git a/frontend/src/modules/onboarding/pages/SetupAdminPage/SetupAdminPageCE.jsx b/frontend/src/modules/onboarding/pages/SetupAdminPage/SetupAdminPageCE.jsx new file mode 100644 index 0000000000..ffd6afeaca --- /dev/null +++ b/frontend/src/modules/onboarding/pages/SetupAdminPage/SetupAdminPageCE.jsx @@ -0,0 +1,23 @@ +import React from 'react'; +import { OnboardingBackgroundWrapper, OnboardingQuestions } from '@/modules/onboarding/components'; +import { SetupAdminForm } from './components'; +import { GeneralFeatureImage } from '@/modules/common/components'; +import useOnboardingStore from '@/modules/onboarding/stores/onboardingStore'; +import { shallow } from 'zustand/shallow'; + +const SetupAdminPageCE = () => { + const { currentStep } = useOnboardingStore( + (state) => ({ + currentStep: state.currentStep, + }), + shallow + ); + + if (currentStep > 0) { + return ; + } + + return ; +}; + +export default SetupAdminPageCE; diff --git a/frontend/src/modules/onboarding/pages/SetupAdminPage/components/SetupAdminForm/SetupAdminForm.jsx b/frontend/src/modules/onboarding/pages/SetupAdminPage/components/SetupAdminForm/SetupAdminForm.jsx new file mode 100644 index 0000000000..e3d7bb4783 --- /dev/null +++ b/frontend/src/modules/onboarding/pages/SetupAdminPage/components/SetupAdminForm/SetupAdminForm.jsx @@ -0,0 +1,142 @@ +import React, { useState, useEffect } from 'react'; +import { OnboardingFormWrapper } from '@/modules/onboarding/components'; +import { FormTextInput, PasswordInput, SubmitButton, FormHeader, EmailComponent } from '@/modules/common/components'; +import useOnboardingStore from '@/modules/onboarding/stores/onboardingStore'; +import { shallow } from 'zustand/shallow'; +import { validateEmail } from '@/_helpers/utils'; +import './resources/styles/setup-admin-form.styles.scss'; +import { useEnterKeyPress } from '@/modules/common/hooks'; + +const SetupAdminForm = () => { + const { setAdminDetails, nextStep, adminDetails, accountCreated } = useOnboardingStore( + (state) => ({ + setAdminDetails: state.setAdminDetails, + nextStep: state.nextStep, + adminDetails: state.adminDetails, + accountCreated: state.accountCreated, + }), + shallow + ); + + const [formData, setFormData] = useState(adminDetails); + const [errors, setErrors] = useState({ + name: '', + email: '', + password: '', + }); + const [touchedFields, setTouchedFields] = useState({ + name: false, + email: false, + password: false, + }); + const [isFormValid, setIsFormValid] = useState(false); + + const formAreaStyles = { + marginTop: '24px', + }; + const handleChange = (e) => { + const { name, value } = e.target; + setFormData((prevData) => ({ + ...prevData, + [name]: value, + })); + setTouchedFields((prevTouched) => ({ + ...prevTouched, + [name]: true, + })); + }; + + const validateField = (name, value) => { + switch (name) { + case 'name': + return value.trim() ? '' : 'Name is required'; + case 'email': + return value.trim() ? (validateEmail(value) ? '' : 'Email is invalid') : 'Email is required'; + case 'password': + return value.trim() + ? value.length >= 5 + ? '' + : 'Password must be at least 5 characters long' + : 'Password is required'; + default: + return ''; + } + }; + + useEffect(() => { + const newErrors = {}; + let isValid = true; + + Object.keys(formData).forEach((fieldName) => { + const fieldError = validateField(fieldName, formData[fieldName]); + newErrors[fieldName] = fieldError; + if (fieldError) isValid = false; + }); + + setErrors(newErrors); + setIsFormValid(isValid && Object.values(formData).every(Boolean)); + }, [formData]); + + const handleSubmit = (e) => { + e?.preventDefault(); + if (isFormValid) { + setAdminDetails(formData); + nextStep(); + } + }; + useEnterKeyPress(() => handleSubmit()); + return ( + +
+ + ); +}; + +export default SetupAdminForm; diff --git a/frontend/src/modules/onboarding/pages/SetupAdminPage/components/SetupAdminForm/index.js b/frontend/src/modules/onboarding/pages/SetupAdminPage/components/SetupAdminForm/index.js new file mode 100644 index 0000000000..4db5d17b4f --- /dev/null +++ b/frontend/src/modules/onboarding/pages/SetupAdminPage/components/SetupAdminForm/index.js @@ -0,0 +1 @@ +export { default } from './SetupAdminForm'; diff --git a/frontend/src/modules/onboarding/pages/SetupAdminPage/components/SetupAdminForm/resources/images/enter-icon.svg b/frontend/src/modules/onboarding/pages/SetupAdminPage/components/SetupAdminForm/resources/images/enter-icon.svg new file mode 100644 index 0000000000..7484fdc5f3 --- /dev/null +++ b/frontend/src/modules/onboarding/pages/SetupAdminPage/components/SetupAdminForm/resources/images/enter-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/frontend/src/modules/onboarding/pages/SetupAdminPage/components/SetupAdminForm/resources/styles/setup-admin-form.styles.scss b/frontend/src/modules/onboarding/pages/SetupAdminPage/components/SetupAdminForm/resources/styles/setup-admin-form.styles.scss new file mode 100644 index 0000000000..12da3e311c --- /dev/null +++ b/frontend/src/modules/onboarding/pages/SetupAdminPage/components/SetupAdminForm/resources/styles/setup-admin-form.styles.scss @@ -0,0 +1,25 @@ +.setup-admin-form-wrapper { + width: 308px; + + .form-input-area { + margin-top: 24px; + } + + .sign-up-button { + height: 32px; + width: 87px; + border-radius: var(--4, 8px); + margin: 10px 8px; + + .button-text { + color: var(--Text-on-color, #FFF); + /* default/medium */ + font-family: "IBM Plex Sans"; + font-size: 12px; + font-style: normal; + font-weight: 500; + line-height: 18px; + /* 150% */ + } + } +} \ No newline at end of file diff --git a/frontend/src/modules/onboarding/pages/SetupAdminPage/components/index.js b/frontend/src/modules/onboarding/pages/SetupAdminPage/components/index.js new file mode 100644 index 0000000000..9003cdf910 --- /dev/null +++ b/frontend/src/modules/onboarding/pages/SetupAdminPage/components/index.js @@ -0,0 +1,3 @@ +import SetupAdminForm from './SetupAdminForm'; + +export { SetupAdminForm }; diff --git a/frontend/src/modules/onboarding/pages/SetupAdminPage/index.js b/frontend/src/modules/onboarding/pages/SetupAdminPage/index.js new file mode 100644 index 0000000000..e487cc2c61 --- /dev/null +++ b/frontend/src/modules/onboarding/pages/SetupAdminPage/index.js @@ -0,0 +1 @@ +export { default } from './SetupAdminPageCE'; diff --git a/frontend/src/modules/onboarding/pages/SetupToolJetPage/SetupToolJetPage.jsx b/frontend/src/modules/onboarding/pages/SetupToolJetPage/SetupToolJetPage.jsx new file mode 100644 index 0000000000..fc09075d4c --- /dev/null +++ b/frontend/src/modules/onboarding/pages/SetupToolJetPage/SetupToolJetPage.jsx @@ -0,0 +1,48 @@ +import React from 'react'; +import { + OnboardingBackgroundWrapper, + OnboardingFormInsideWrapper, + OnboardingFormWrapper, +} from '@/modules/onboarding/components'; +import { SubmitButton, FormHeader, FormDescription, GeneralFeatureImage } from '@/modules/common/components'; +import { useEnterKeyPress } from '@/modules/common/hooks'; +import useOnboardingStore from '@/modules/onboarding/stores/onboardingStore'; +import { shallow } from 'zustand/shallow'; +import './resources/styles/setup-tooljet-page.styles.scss'; + +const SetupToolJetPage = () => { + const headerText = 'Welcome to ToolJet!'; + const description = "Let's set up your admin account and workspace to get started!"; + const { completeToolJetSetup } = useOnboardingStore( + (state) => ({ + completeToolJetSetup: state.completeToolJetSetup, + }), + shallow + ); + useEnterKeyPress(() => handleClick()); + + const handleClick = () => { + window.open('https://www.tooljet.com/thank-you', '_blank'); + // removed the production environment check for now -> would be required to add later. + // if (config.ENVIRONMENT === 'production') { + // window.open('https://www.tooljet.com/thank-you', '_blank'); + // } + completeToolJetSetup(); + }; + const LeftSideComponent = () => { + return ( +
+ + + {headerText} + {description} + + + +
+ ); + }; + return ; +}; + +export default SetupToolJetPage; diff --git a/frontend/src/modules/onboarding/pages/SetupToolJetPage/index.js b/frontend/src/modules/onboarding/pages/SetupToolJetPage/index.js new file mode 100644 index 0000000000..f8ec566ffb --- /dev/null +++ b/frontend/src/modules/onboarding/pages/SetupToolJetPage/index.js @@ -0,0 +1 @@ +export { default } from './SetupToolJetPage'; diff --git a/frontend/src/modules/onboarding/pages/SetupToolJetPage/resources/styles/setup-tooljet-page.styles.scss b/frontend/src/modules/onboarding/pages/SetupToolJetPage/resources/styles/setup-tooljet-page.styles.scss new file mode 100644 index 0000000000..2b041dde03 --- /dev/null +++ b/frontend/src/modules/onboarding/pages/SetupToolJetPage/resources/styles/setup-tooljet-page.styles.scss @@ -0,0 +1,7 @@ +.setup-tooljet-page { + align-self: center; + + .onboarding-form-wrapper { + margin-top: 0px !important; + } +} \ No newline at end of file diff --git a/frontend/src/modules/onboarding/pages/SignupPage/SignupPage.jsx b/frontend/src/modules/onboarding/pages/SignupPage/SignupPage.jsx new file mode 100644 index 0000000000..d411d7018e --- /dev/null +++ b/frontend/src/modules/onboarding/pages/SignupPage/SignupPage.jsx @@ -0,0 +1,121 @@ +import React, { useState, useEffect } from 'react'; +import { useLocation, useNavigate, useParams, Navigate } from 'react-router-dom'; +import { useTranslation } from 'react-i18next'; +import { toast } from 'react-hot-toast'; +import { authenticationService } from '@/_services'; +import OnboardingBackgroundWrapper from '@/modules/onboarding/components/OnboardingBackgroundWrapper'; +import { onInvitedUserSignUpSuccess } from '@/_helpers/platform/utils/auth.utils'; +import { checkWhiteLabelsDefaultState } from '@white-label/whiteLabelling'; +import { SignupForm, SignupSuccessInfo } from './components'; +import { GeneralFeatureImage } from '@/modules/common/components'; + +const SignupPage = ({ configs, organizationId }) => { + const { t } = useTranslation(); + const location = useLocation(); + const navigate = useNavigate(); + const params = useParams(); + const [signupSuccess, setSignupSuccess] = useState(false); + const [signingUserInfo, setSigningUserInfo] = useState({ + email: '', + name: '', + }); + const [defaultState, setDefaultState] = useState(false); + + const routeState = location.state; + const organizationToken = routeState?.organizationToken; + const inviteeEmail = routeState?.inviteeEmail; + const inviteOrganizationId = organizationId; + const paramInviteOrganizationSlug = params.organizationId; + const redirectTo = location?.search?.split('redirectTo=')[1]; + + useEffect(() => { + const errorMessage = location?.state?.errorMessage; + if (errorMessage) { + toast.error(errorMessage); + } + checkWhiteLabelsDefaultState(inviteOrganizationId).then((res) => { + setDefaultState(res); + }); + }, []); + + const handleSignup = (formData, onSuccess = () => {}, onFaluire = () => {}) => { + const { email, name, password } = formData; + + if (organizationToken) { + authenticationService + .activateAccountWithToken(email, password, organizationToken) + .then((response) => onInvitedUserSignUpSuccess(response, navigate)) + .catch((errorObj) => { + let errorMessage; + const isThereAnyErrorsArray = errorObj?.error?.length && typeof errorObj?.error?.[0] === 'string'; + if (isThereAnyErrorsArray) { + errorMessage = errorObj?.error?.[0]; + } else if (typeof errorObj?.error?.error === 'string') { + errorMessage = errorObj?.error?.error; + } + errorMessage && toast.error(errorMessage); + }); + } else { + authenticationService + .signup(email, name, password, inviteOrganizationId, redirectTo) + .then((response) => { + const { organizationInviteUrl } = response; + if (organizationInviteUrl) onInvitedUserSignUpSuccess(response, navigate); + setSigningUserInfo({ email, name }); + setSignupSuccess(true); + onSuccess(); + }) + .catch((e) => { + toast.error(e?.error || 'Something went wrong!', { + position: 'top-center', + }); + onFaluire(); + }); + } + }; + + if (paramInviteOrganizationSlug && !configs?.id) { + return ; + } + + const setSignupOrganizationDetails = () => { + authenticationService.setSignUpOrganizationDetails( + inviteOrganizationId, + paramInviteOrganizationSlug, + organizationToken + ); + }; + + if (signupSuccess) { + return ( + setSignupSuccess(false)} + organizationId={organizationId} + redirectTo={redirectTo} + /> + ); + } + + return ( + ( + + )} + RightSideComponent={GeneralFeatureImage} + /> + ); +}; + +export default SignupPage; diff --git a/frontend/src/modules/onboarding/pages/SignupPage/components/SignupForm/SignupForm.jsx b/frontend/src/modules/onboarding/pages/SignupPage/components/SignupForm/SignupForm.jsx new file mode 100644 index 0000000000..50256d4fd4 --- /dev/null +++ b/frontend/src/modules/onboarding/pages/SignupPage/components/SignupForm/SignupForm.jsx @@ -0,0 +1,202 @@ +import React, { useState, useEffect } from 'react'; +import { useTranslation } from 'react-i18next'; +import { Link } from 'react-router-dom'; +import { validateEmail } from '@/_helpers/utils'; +import { OnboardingFormWrapper, OnboardingFormInsideWrapper } from '@/modules/onboarding/components'; +import { FormTextInput, PasswordInput, SubmitButton, FormHeader, SSOAuthModule } from '@/modules/common/components'; +import SignupStatusCard from './components/SignupStatusCard'; +import './resources/styles/sign-up-form.styles.scss'; +import SepratorComponent from '@/modules/common/components/SepratorComponent'; + +const SignupForm = ({ + configs, + organizationId, + paramOrganizationSlug, + organizationToken, + inviteeEmail, + redirectTo, + onSubmit, + setSignupOrganizationDetails, + initialData, + defaultState, +}) => { + const { t } = useTranslation(); + const [isLoading, setIsLoading] = useState(false); + const [formData, setFormData] = useState({ + name: '', + email: '', + password: '', + }); + const [errors, setErrors] = useState({}); + const [isFormValid, setIsFormValid] = useState(false); + + const isAnySSOEnabled = configs?.google?.enabled || configs?.git?.enabled; + + const isFormSignUpEnabled = organizationId ? configs?.form?.enabled : configs?.form?.enable_sign_up; + const shouldShowSignInCTA = !organizationToken; + const comingFromInviteFlow = !!organizationToken; + const shouldShowSignupDisabledCard = !organizationToken && !configs?.enable_sign_up && !configs?.form?.enable_sign_up; + const signUpDisabledText = `Signup has been disabled by your ${organizationId ? 'workspace' : 'super'} admin.`; + + useEffect(() => { + if (initialData) { + setFormData({ ...initialData, password: '' }); + } + if (inviteeEmail) { + setFormData((prev) => ({ ...prev, email: inviteeEmail })); + } + }, [initialData, inviteeEmail]); + + useEffect(() => { + checkFormValidity(); + }, [formData]); + + const checkFormValidity = () => { + const isValid = + formData.email.trim() !== '' && + validateEmail(formData.email) && + formData.password.trim() !== '' && + formData.password.length >= 5 && + (comingFromInviteFlow || formData.name.trim() !== ''); + setIsFormValid(isValid); + }; + + const handleInputChange = (e) => { + const { name, value } = e.target; + setFormData((prev) => ({ ...prev, [name]: value })); + setErrors((prev) => ({ ...prev, [name]: '' })); + }; + + const handleSubmit = (e) => { + e.preventDefault(); + setIsLoading(true); + if (validateForm()) { + onSubmit( + formData, + () => { + setIsLoading(false); + }, + () => { + setIsLoading(false); + } + ); + } else { + setIsLoading(false); + } + }; + + const validateForm = () => { + let newErrors = {}; + if (!comingFromInviteFlow && !formData.name.trim()) { + newErrors.name = 'Name is required'; + } + if (!validateEmail(formData.email)) { + newErrors.email = 'Invalid email'; + } + if (formData.password.length < 5) { + newErrors.password = 'Password must be at least 5 characters long'; + } + setErrors(newErrors); + return Object.keys(newErrors).length === 0; + }; + + return ( +
+ + + {t('loginSignupPage.signUp', 'Sign up')} + {(organizationId || shouldShowSignInCTA) && ( +

+ {organizationId && ( + <> + Sign up to the workspace - {configs?.name}. + + )}{' '} + {shouldShowSignInCTA && ( + <> + {t('loginSignupPage.alreadyHaveAnAccount', 'Already have an account?')}{' '} + + {t('loginSignupPage.signIn', 'Sign in')} + + + )} +

+ )} + {shouldShowSignupDisabledCard ? ( + + ) : ( + <> + {isFormSignUpEnabled && ( +
+ {!comingFromInviteFlow && ( + + )} + + + + + )} + {isAnySSOEnabled && isFormSignUpEnabled && } + setSignupOrganizationDetails()} + /> + {defaultState && ( +

+ By signing up you are agreeing to the +
+ + + Terms of Service{' '} + + & + + {' '} + Privacy Policy + + +

+ )} + + )} +
+
+
+ ); +}; + +export default SignupForm; diff --git a/frontend/src/modules/onboarding/pages/SignupPage/components/SignupForm/components/SignupStatusCard/SignupStatusCard.jsx b/frontend/src/modules/onboarding/pages/SignupPage/components/SignupForm/components/SignupStatusCard/SignupStatusCard.jsx new file mode 100644 index 0000000000..5f15a1de53 --- /dev/null +++ b/frontend/src/modules/onboarding/pages/SignupPage/components/SignupForm/components/SignupStatusCard/SignupStatusCard.jsx @@ -0,0 +1,12 @@ +import React from 'react'; + +const SignupStatusCard = ({ text }) => { + return ( +
+ +

{text}

+
+ ); +}; + +export default SignupStatusCard; diff --git a/frontend/src/modules/onboarding/pages/SignupPage/components/SignupForm/components/SignupStatusCard/index.js b/frontend/src/modules/onboarding/pages/SignupPage/components/SignupForm/components/SignupStatusCard/index.js new file mode 100644 index 0000000000..f41325ce79 --- /dev/null +++ b/frontend/src/modules/onboarding/pages/SignupPage/components/SignupForm/components/SignupStatusCard/index.js @@ -0,0 +1 @@ +export { default } from './SignupStatusCard'; diff --git a/frontend/src/modules/onboarding/pages/SignupPage/components/SignupForm/index.js b/frontend/src/modules/onboarding/pages/SignupPage/components/SignupForm/index.js new file mode 100644 index 0000000000..ace4912211 --- /dev/null +++ b/frontend/src/modules/onboarding/pages/SignupPage/components/SignupForm/index.js @@ -0,0 +1 @@ +export { default } from './SignupForm'; diff --git a/frontend/src/modules/onboarding/pages/SignupPage/components/SignupForm/resources/styles/sign-up-form.styles.scss b/frontend/src/modules/onboarding/pages/SignupPage/components/SignupForm/resources/styles/sign-up-form.styles.scss new file mode 100644 index 0000000000..542c8ff246 --- /dev/null +++ b/frontend/src/modules/onboarding/pages/SignupPage/components/SignupForm/resources/styles/sign-up-form.styles.scss @@ -0,0 +1,56 @@ +.signup-form { + .form-header { + margin-bottom: 0px; + } + + .signup-info { + color: var(--text-placeholder, #6A727C); + font-size: 12px; + font-style: normal; + font-weight: 400; + line-height: 18px; + margin-bottom: 24px; + + .workspace-name { + color: var(--text-placeholder, #6A727C); + font-style: normal; + font-weight: 500; + } + } + + .signin-link { + color: var(--text-accent, #4368E3); + font-weight: 500; + text-decoration: none; + + &:hover { + text-decoration: underline; + } + } + + .form-input-area { + margin-top: 24px; + margin-bottom: 0px; + } + + .separator-signup { + .separator { + h2 { + margin-top: 24px !important; + } + } + } + + .password-input-wrapper { + margin-bottom: 24px; + } + + // SSO module styles + .sso-buttons-container { + margin-top: 24px; + } + + .sso-button { + margin-bottom: 12px; + } +} \ No newline at end of file diff --git a/frontend/src/modules/onboarding/pages/SignupPage/components/SignupSuccessInfo/SignupSuccessInfo.jsx b/frontend/src/modules/onboarding/pages/SignupPage/components/SignupSuccessInfo/SignupSuccessInfo.jsx new file mode 100644 index 0000000000..543e513f65 --- /dev/null +++ b/frontend/src/modules/onboarding/pages/SignupPage/components/SignupSuccessInfo/SignupSuccessInfo.jsx @@ -0,0 +1,38 @@ +import React, { useEffect } from 'react'; +import OnboardingBackgroundWrapper from '@/modules/onboarding/components/OnboardingBackgroundWrapper'; +import { OnboardingFormWrapper } from '@/modules/onboarding/components'; +import { FormHeader } from '@/modules/common/components'; +import './resources/styles/email-verification.styles.scss'; +import ResendVerificationEmail from './components/ResendVerificationEmail/ResendVerificationEmail'; +import SepratorComponent from '@/modules/common/components/SepratorComponent'; + +const SignupSuccessInfo = ({ email, name, backToSignup, organizationId, redirectTo }) => { + const SignupSuccessInfoComponent = () => { + const message = `We've sent a verification email to ${email}. Click the link inside to confirm your email and continue. This helps us ensure account security.`; + const info = `Did not receive an email? Check your spam folder!`; + return ( +
+ + Check your mail +

{message}

+ {info} + + +
+ +
+
+
+ ); + }; + + return ( + } + /> + ); +}; + +export default SignupSuccessInfo; diff --git a/frontend/src/modules/onboarding/pages/SignupPage/components/SignupSuccessInfo/components/ResendVerificationEmail/ResendVerificationEmail.jsx b/frontend/src/modules/onboarding/pages/SignupPage/components/SignupSuccessInfo/components/ResendVerificationEmail/ResendVerificationEmail.jsx new file mode 100644 index 0000000000..8415c7e109 --- /dev/null +++ b/frontend/src/modules/onboarding/pages/SignupPage/components/SignupSuccessInfo/components/ResendVerificationEmail/ResendVerificationEmail.jsx @@ -0,0 +1,49 @@ +import React, { useState, useEffect } from 'react'; +import { authenticationService } from '@/_services'; +import { toast } from 'react-hot-toast'; +import cx from 'classnames'; +import './resources/resend-email-verification.styles.scss'; + +const ResendVerificationEmail = ({ email, organizationId, redirectTo }) => { + const [isResendDisabled, setIsResendDisabled] = useState(true); + const [countdown, setCountdown] = useState(30); + + const handleResend = () => { + setIsResendDisabled(true); + authenticationService + .resendInvite(email, organizationId, redirectTo) + .then(() => { + setCountdown(30); + }) + .catch(({ error }) => { + setIsResendDisabled(false); + toast.error(error, { + position: 'top-center', + }); + }); + }; + useEffect(() => { + let timer; + if (countdown > 0) { + timer = setTimeout(() => setCountdown(countdown - 1), 1000); + } else { + setIsResendDisabled(false); + } + return () => clearTimeout(timer); + }, [countdown]); + return ( +
+ +
+ ); +}; + +export default ResendVerificationEmail; diff --git a/frontend/src/modules/onboarding/pages/SignupPage/components/SignupSuccessInfo/components/ResendVerificationEmail/index.js b/frontend/src/modules/onboarding/pages/SignupPage/components/SignupSuccessInfo/components/ResendVerificationEmail/index.js new file mode 100644 index 0000000000..4e2292a35f --- /dev/null +++ b/frontend/src/modules/onboarding/pages/SignupPage/components/SignupSuccessInfo/components/ResendVerificationEmail/index.js @@ -0,0 +1 @@ +export { default } from './ResendVerificationEmail'; diff --git a/frontend/src/modules/onboarding/pages/SignupPage/components/SignupSuccessInfo/components/ResendVerificationEmail/resources/resend-email-verification.styles.scss b/frontend/src/modules/onboarding/pages/SignupPage/components/SignupSuccessInfo/components/ResendVerificationEmail/resources/resend-email-verification.styles.scss new file mode 100644 index 0000000000..d838ec2336 --- /dev/null +++ b/frontend/src/modules/onboarding/pages/SignupPage/components/SignupSuccessInfo/components/ResendVerificationEmail/resources/resend-email-verification.styles.scss @@ -0,0 +1,35 @@ +.back-to-signup-button { + width: 100%; + margin-bottom: 10px; + + .button-parent { + display: flex; + align-items: center; + justify-content: center; + width: 100%; + height: 32px; + padding: 10px 16px; + border-radius: 8px; + border: 1px solid #D7D7D7; + background: #FFF; + box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.05); + cursor: pointer; + transition: background-color 0.3s ease; + + &:hover { + background-color: #f8f8f8; + } + + &:active { + background-color: #f0f0f0; + } + + .button-text { + color: var(--Text-default, #1B1F24); + font-size: 12px; + font-style: normal; + font-weight: 500; + line-height: 18px; + } + } +} \ No newline at end of file diff --git a/frontend/src/modules/onboarding/pages/SignupPage/components/SignupSuccessInfo/index.js b/frontend/src/modules/onboarding/pages/SignupPage/components/SignupSuccessInfo/index.js new file mode 100644 index 0000000000..c2519805d8 --- /dev/null +++ b/frontend/src/modules/onboarding/pages/SignupPage/components/SignupSuccessInfo/index.js @@ -0,0 +1 @@ +export { default } from './SignupSuccessInfo'; diff --git a/frontend/src/modules/onboarding/pages/SignupPage/components/SignupSuccessInfo/resources/styles/email-verification.styles.scss b/frontend/src/modules/onboarding/pages/SignupPage/components/SignupSuccessInfo/resources/styles/email-verification.styles.scss new file mode 100644 index 0000000000..47543b238d --- /dev/null +++ b/frontend/src/modules/onboarding/pages/SignupPage/components/SignupSuccessInfo/resources/styles/email-verification.styles.scss @@ -0,0 +1,122 @@ +.email-verification-wrapper { + text-align: center; + width: 356px; + + .form-header { + color: var(--Text-default, #1B1F24); + text-align: center; + font-size: 32px; + font-style: normal; + font-weight: 500; + line-height: 40px; + letter-spacing: -0.64px; + } + + .message { + color: var(--text-placeholder, #6A727C); + font-size: 14px; + font-style: normal; + font-weight: 400; + line-height: 20px; + } + + .separator-signup { + span { + color: var(--text-placeholder, #6A727C) !important; + font-weight: 500; + } + } + + .resend-border { + .button-parent { + border-color: var(--Border-brand-weak, #97AEFC) !important; + + &:hover { + background-color: #EEF2FF !important; + } + + &:active { + background-color: #DDE7FE !important; + } + } + } + + .back-to-signup-button { + width: 100%; + margin-bottom: 10px; + + .button-parent { + display: flex; + align-items: center; + justify-content: center; + width: 100%; + height: 32px; + padding: 10px 16px; + border-radius: 8px; + border: 1px solid #D7D7D7; + background: #FFF; + box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.05); + cursor: pointer; + transition: background-color 0.3s ease; + + &:hover { + background-color: #f8f8f8; + } + + &:active { + background-color: #f0f0f0; + } + + .button-text { + color: var(--Text-default, #1B1F24); + font-size: 12px; + font-style: normal; + font-weight: 500; + line-height: 18px; + } + } + } +} + +.dark-theme { + + .form-header { + color: var(--Text-default, #FAFCFF); + } + + .message { + color: var(--text-medium, #CFD3D8); + font-size: 14px; + font-style: normal; + font-weight: 400; + line-height: 20px; + } + + .back-to-signup-button { + width: 100%; + margin-bottom: 10px; + + .button-parent { + border-radius: var(--4, 8px); + border: 1px solid var(--Border-brand-weak, rgba(74, 109, 217, 0.40)); + background: var(--Button-Secondary-bg, #1E2226); + + &:hover { + background-color: rgba(255, 255, 255, 0.1) !important; + border-color: #4A4F54 !important; + } + + &:active { + background-color: #1E2226; + } + + .button-text { + color: var(--Text-default, #FAFCFF); + font-size: 12px; + font-style: normal; + font-weight: 500; + line-height: 18px; + } + } + } +} \ No newline at end of file diff --git a/frontend/src/modules/onboarding/pages/SignupPage/components/index.js b/frontend/src/modules/onboarding/pages/SignupPage/components/index.js new file mode 100644 index 0000000000..3ef246ca6b --- /dev/null +++ b/frontend/src/modules/onboarding/pages/SignupPage/components/index.js @@ -0,0 +1,4 @@ +import SignupForm from './SignupForm'; +import SignupSuccessInfo from './SignupSuccessInfo'; + +export { SignupForm, SignupSuccessInfo }; diff --git a/frontend/src/modules/onboarding/pages/SignupPage/index.js b/frontend/src/modules/onboarding/pages/SignupPage/index.js new file mode 100644 index 0000000000..fdd430edde --- /dev/null +++ b/frontend/src/modules/onboarding/pages/SignupPage/index.js @@ -0,0 +1 @@ +export { default } from './SignupPage'; diff --git a/frontend/src/modules/onboarding/pages/WorkspaceInvitationPage/WorkspaceInvitationPage.jsx b/frontend/src/modules/onboarding/pages/WorkspaceInvitationPage/WorkspaceInvitationPage.jsx new file mode 100644 index 0000000000..7a68f74256 --- /dev/null +++ b/frontend/src/modules/onboarding/pages/WorkspaceInvitationPage/WorkspaceInvitationPage.jsx @@ -0,0 +1,130 @@ +import React, { useEffect, useState } from 'react'; +import { OnboardingFormWrapper } from '@/modules/onboarding/components'; +import { + FormTextInput, + SubmitButton, + FormHeader, + FormDescription, + EmailComponent, + GeneralFeatureImage, +} from '@/modules/common/components'; +import { appService, authenticationService } from '@/_services'; +import OnboardingBackgroundWrapper from '@/modules/onboarding/components/OnboardingBackgroundWrapper'; +import './resources/styles/workspace_invitation_page.scss'; +import { onLoginSuccess } from '@/_helpers/platform/utils/auth.utils'; +import { updateCurrentSession } from '@/_helpers/authorizeWorkspace'; +import { toast } from 'react-hot-toast'; +import { + retrieveWhiteLabelText, + setFaviconAndTitle, + retrieveWhiteLabelFavicon, + checkWhiteLabelsDefaultState, +} from '@white-label/whiteLabelling'; +import { useEnterKeyPress } from '@/modules/common/hooks'; + +const WorkspaceInvitationPage = (props) => { + const [isLoading, setisLoading] = React.useState(false); + const [defaultState, setdefaultState] = React.useState(false); + const [whiteLabelText, setWhiteLabelText] = React.useState(retrieveWhiteLabelText()); + const [whiteLabelFavicon, setWhiteLabelFavicon] = React.useState(retrieveWhiteLabelFavicon()); + const userName = props.name || ''; + const userEmail = props.email || 'abc@gmail.com'; + const invitedOrganizationName = props.invitedOrganizationName || `Tooljet's workspace`; + + const organizationId = new URLSearchParams(props?.location?.search).get('oid'); + const organizationToken = new URLSearchParams(props?.location?.search).get('organizationToken'); + const source = new URLSearchParams(props?.location?.search).get('source'); + useEnterKeyPress(() => acceptInvite()); + + useEffect(() => { + authenticationService.deleteLoginOrganizationId(); + setFaviconAndTitle(whiteLabelFavicon, whiteLabelText, props?.location); + checkWhiteLabelsDefaultState(organizationId).then((res) => { + setdefaultState(res); + setWhiteLabelText(retrieveWhiteLabelText()); + setWhiteLabelFavicon(retrieveWhiteLabelFavicon()); + }); + }, []); + + const formAreaStyles = { + marginTop: '40px', + }; + const acceptInvite = (e) => { + e?.preventDefault(); + const parts = props.location.pathname.split('/'); + const token = parts[2]; + setisLoading(true); + appService + .acceptInvite({ + token, + }) + .then((data) => { + toast.success(`Added to the workspace successfully.`); + updateCurrentSession({ + isUserLoggingIn: true, + }); + onLoginSuccess(data, props.navigate); + }) + .catch(() => { + toast.error('Error while setting up your account.', { position: 'top-center' }); + setisLoading(false); + }); + }; + + const LeftSideComponent = () => { + return ( + +
+ {`Join ${invitedOrganizationName}`} + {`You are invited to ${ + invitedOrganizationName + ? `a workspace ${invitedOrganizationName}. Accept the invite to join the workspace.` + : whiteLabelText + }`} +
+ + + acceptInvite(e)} + className="accept-invite-button" + buttonText="Accept Invite" + /> + + {defaultState && ( +

+ By signing up you are agreeing to the +
+ + + Terms of Service{' '} + + & + + {' '} + Privacy Policy + + +

+ )} +
+
+ ); + }; + return ; +}; + +export default WorkspaceInvitationPage; diff --git a/frontend/src/modules/onboarding/pages/WorkspaceInvitationPage/index.js b/frontend/src/modules/onboarding/pages/WorkspaceInvitationPage/index.js new file mode 100644 index 0000000000..66ac01004e --- /dev/null +++ b/frontend/src/modules/onboarding/pages/WorkspaceInvitationPage/index.js @@ -0,0 +1 @@ +export { default } from './WorkspaceInvitationPage'; diff --git a/frontend/src/modules/onboarding/pages/WorkspaceInvitationPage/resources/styles/workspace_invitation_page.scss b/frontend/src/modules/onboarding/pages/WorkspaceInvitationPage/resources/styles/workspace_invitation_page.scss new file mode 100644 index 0000000000..145d30b1ca --- /dev/null +++ b/frontend/src/modules/onboarding/pages/WorkspaceInvitationPage/resources/styles/workspace_invitation_page.scss @@ -0,0 +1,5 @@ +.accept-invite-button { + width: auto; + border-radius: var(--Border-radius, 8px); + margin: 10px 8px; +} \ No newline at end of file diff --git a/frontend/src/modules/onboarding/pages/index.js b/frontend/src/modules/onboarding/pages/index.js new file mode 100644 index 0000000000..7ea326819e --- /dev/null +++ b/frontend/src/modules/onboarding/pages/index.js @@ -0,0 +1,6 @@ +import SetupAdminPage from './SetupAdminPage'; +import SignupPage from './SignupPage'; +import InvitationPage from './InvitationPage'; +import WorkspaceInvitationPage from './WorkspaceInvitationPage'; + +export { SetupAdminPage, SignupPage, WorkspaceInvitationPage, InvitationPage }; diff --git a/frontend/src/modules/onboarding/services/onboarding.service.ce.js b/frontend/src/modules/onboarding/services/onboarding.service.ce.js new file mode 100644 index 0000000000..0f06e9b2f4 --- /dev/null +++ b/frontend/src/modules/onboarding/services/onboarding.service.ce.js @@ -0,0 +1,96 @@ +import config from 'config'; +import { handleResponse } from '@/_helpers'; +import { updateCurrentSession } from '@/_helpers/authorizeWorkspace'; +import queryString from 'query-string'; + +function setupFirstUser({ companyName, buildPurpose, name, workspaceName, password, email }) { + const requestOptions = { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + credentials: 'include', + body: JSON.stringify({ + companyName, + buildPurpose, + name, + workspaceName, + email, + password, + }), + }; + return fetch(`${config.apiUrl}/onboarding/setup-first-user`, requestOptions) + .then(handleResponse) + .then((response) => { + onFirstUserAccountSetupSuccess(response); + return response; + }); +} + +const onFirstUserAccountSetupSuccess = (userResponse, callBack) => { + const { current_organization_id, current_organization_slug } = userResponse; + /* reset the authentication status and loggingIn status */ + const { email, id, first_name, last_name, organization_id, organization, ...restResponse } = userResponse; + const current_user = { + email, + id, + first_name, + last_name, + organization_id, + organization, + }; + + updateCurrentSession({ + current_user, + ...restResponse, + }); +}; + +function onboarding({ companyName, buildPurpose, workspaceName, token, organizationToken, source }) { + const payload = { + ...(companyName && { companyName }), + ...(buildPurpose && { buildPurpose }), + ...(token && { token }), + ...(organizationToken && { organizationToken }), + ...(source && { source }), + ...(workspaceName && { workspaceName }), + }; + + const requestOptions = { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + credentials: 'include', + body: JSON.stringify({ + ...payload, + }), + }; + return fetch(`${config.apiUrl}/setup-account-from-token`, requestOptions) + .then(handleResponse) + .then((response) => { + onFirstUserAccountSetupSuccess(response); + return response; + }); +} + +function verifyToken(token, organizationToken) { + const requestOptions = { + method: 'GET', + headers: { 'Content-Type': 'application/json' }, + }; + return fetch( + `${config.apiUrl}/verify-invite-token?token=${token}${ + organizationToken ? `&organizationToken=${organizationToken}` : '' + }`, + requestOptions + ) + .then(handleResponse) + .then((response) => { + return response; + }); +} + +function checkWorkspaceNameUniqueness(name) { + const requestOptions = { method: 'GET', headers: { 'Content-Type': 'application/json' } }; + const query = queryString.stringify({ name }); + return fetch(`${config.apiUrl}/organizations/workspace-name/unique?${query}`, requestOptions).then(handleResponse); +} + +export { setupFirstUser, verifyToken, onboarding, checkWorkspaceNameUniqueness }; diff --git a/frontend/src/modules/onboarding/services/onboarding.service.js b/frontend/src/modules/onboarding/services/onboarding.service.js new file mode 100644 index 0000000000..88d81ed749 --- /dev/null +++ b/frontend/src/modules/onboarding/services/onboarding.service.js @@ -0,0 +1,2 @@ +// Re-export all CE functions +export * from './onboarding.service.ce'; diff --git a/frontend/src/modules/onboarding/stores/index.js b/frontend/src/modules/onboarding/stores/index.js new file mode 100644 index 0000000000..24e464268f --- /dev/null +++ b/frontend/src/modules/onboarding/stores/index.js @@ -0,0 +1,4 @@ +import onboardingStore from './onboardingStore'; +import invitationStore from './invitationsStore'; + +export { onboardingStore, invitationStore }; diff --git a/frontend/src/modules/onboarding/stores/invitationsStore/index.js b/frontend/src/modules/onboarding/stores/invitationsStore/index.js new file mode 100644 index 0000000000..6ff77ebfac --- /dev/null +++ b/frontend/src/modules/onboarding/stores/invitationsStore/index.js @@ -0,0 +1 @@ +export { default } from './invitations.store'; diff --git a/frontend/src/modules/onboarding/stores/invitationsStore/invitations.store.ce.js b/frontend/src/modules/onboarding/stores/invitationsStore/invitations.store.ce.js new file mode 100644 index 0000000000..70bfc2dab9 --- /dev/null +++ b/frontend/src/modules/onboarding/stores/invitationsStore/invitations.store.ce.js @@ -0,0 +1,59 @@ +import create from 'zustand'; +import { zustandDevTools } from '@/_stores/utils'; +import useOnboardingStore from '../onboardingStore'; +import { onboarding } from '@/modules/onboarding/services/onboarding.service'; + +const initialState = { + token: null, + organizationToken: null, + source: null, + organizationId: null, + redirectTo: '/', +}; + +const useInvitationsStore = create( + zustandDevTools((set, get) => ({ + ...useOnboardingStore.getState(), + + initialState, + + initiatedInvitedUserOnboarding: false, + + inviteeEmail: null, + + initiateInvitedUserOnboarding: (states) => { + set(() => ({ ...states, initiatedInvitedUserOnboarding: true })); + }, + + onboardUser: async () => { + if (!useOnboardingStore.getState().accountCreated) { + const { token, source, organizationToken } = get(); + const { workspaceName, setAccountCreated } = useOnboardingStore.getState(); + await onboarding({ + token, + source, + organizationToken, + workspaceName, + }); + setAccountCreated(true); + } + clearPageHistory(); + // Redirect to home page after onboarding + window.location.href = '/'; + }, + + onboardUserOrCreateAdmin: async () => { + if (get().initiatedInvitedUserOnboarding) { + await get().onboardUser(); + } else { + await get().createSuperAdminAccount(); + } + }, + })) +); + +function clearPageHistory() { + history.replaceState(null, null, '/'); +} + +export default useInvitationsStore; diff --git a/frontend/src/modules/onboarding/stores/invitationsStore/invitations.store.js b/frontend/src/modules/onboarding/stores/invitationsStore/invitations.store.js new file mode 100644 index 0000000000..7eaa488e1b --- /dev/null +++ b/frontend/src/modules/onboarding/stores/invitationsStore/invitations.store.js @@ -0,0 +1,20 @@ +import create from 'zustand'; +import { zustandDevTools } from '@/_stores/utils'; +import ceInvitationsStore from './invitations.store.ce'; + +const useInvitationsStore = create( + zustandDevTools((set, get) => { + ceInvitationsStore.subscribe((ceState) => { + set((state) => ({ + ...state, + ...ceState, + })); + }); + + return { + ...ceInvitationsStore.getState(), + }; + }) +); + +export default useInvitationsStore; diff --git a/frontend/src/modules/onboarding/stores/onboardingStore/index.js b/frontend/src/modules/onboarding/stores/onboardingStore/index.js new file mode 100644 index 0000000000..cf57814cfb --- /dev/null +++ b/frontend/src/modules/onboarding/stores/onboardingStore/index.js @@ -0,0 +1 @@ +export { default } from './onboarding.store'; diff --git a/frontend/src/modules/onboarding/stores/onboardingStore/onboarding.store.ce.js b/frontend/src/modules/onboarding/stores/onboardingStore/onboarding.store.ce.js new file mode 100644 index 0000000000..f900c5ed5c --- /dev/null +++ b/frontend/src/modules/onboarding/stores/onboardingStore/onboarding.store.ce.js @@ -0,0 +1,70 @@ +import create from 'zustand'; +import { zustandDevTools } from '@/_stores/utils'; +import { setupFirstUser } from '@/modules/onboarding/services/onboarding.service'; + +const useCEOnboardingStore = create( + zustandDevTools((set, get) => ({ + // Admin details + adminDetails: { + name: '', + email: '', + password: '', + }, + + // Workspace name + workspaceName: '', + + currentStep: 0, + totalSteps: 1, + accountCreated: false, + + // Action to update admin details + setAdminDetails: (details) => + set((state) => ({ + adminDetails: { ...state.adminDetails, ...details }, + })), + + // Action to set workspace name + setWorkspaceName: (name) => set({ workspaceName: name }), + + // Action to move to next step + nextStep: () => set((state) => ({ currentStep: state.currentStep + 1 })), + + // Action to move to previous step + prevStep: () => set((state) => ({ currentStep: Math.max(0, state.currentStep - 1) })), + + // action to set current step + setCurrentStep: (step) => set({ currentStep: step }), + + // Action to reset the store + resetStore: () => + set({ + adminDetails: { name: '', email: '', password: '' }, + workspaceName: '', + currentStep: 0, + accountCreated: false, + }), + + // Action to prepare data for API call + prepareSetupAdminData: () => { + const state = get(); + return { + ...state.adminDetails, + workspaceName: state.workspaceName, + }; + }, + + createSuperAdminAccount: async () => { + if (!get().accountCreated) { + const data = get().prepareSetupAdminData(); + await setupFirstUser(data); + set({ accountCreated: true }); + } + window.location.href = '/'; + }, + + setAccountCreated: (value) => set({ accountCreated: value }), + })) +); + +export default useCEOnboardingStore; diff --git a/frontend/src/modules/onboarding/stores/onboardingStore/onboarding.store.js b/frontend/src/modules/onboarding/stores/onboardingStore/onboarding.store.js new file mode 100644 index 0000000000..7078f6611e --- /dev/null +++ b/frontend/src/modules/onboarding/stores/onboardingStore/onboarding.store.js @@ -0,0 +1,20 @@ +import create from 'zustand'; +import { zustandDevTools } from '@/_stores/utils'; +import ceOnboardingStore from './onboarding.store.ce'; + +const useOnboardingStore = create( + zustandDevTools((set, get) => { + ceOnboardingStore.subscribe((ceState) => { + set((state) => ({ + ...state, + ...ceState, + })); + }); + + return { + ...ceOnboardingStore.getState(), + }; + }) +); + +export default useOnboardingStore; diff --git a/server/ce/onboarding/controller.ts b/server/ce/onboarding/controller.ts new file mode 100644 index 0000000000..45724bb57c --- /dev/null +++ b/server/ce/onboarding/controller.ts @@ -0,0 +1,16 @@ +import { Controller, Post, Body, Res, UseGuards } from '@nestjs/common'; +import { Response } from 'express'; +import { CreateAdminDto } from '@dto/user.dto'; +import { FirstUserSignupGuard } from 'src/modules/auth/first-user-signup.guard'; +import { OnboardingService } from './service'; + +@Controller('onboarding') +export class OnboardingController { + constructor(private readonly onboardingService: OnboardingService) {} + + @UseGuards(FirstUserSignupGuard) + @Post('setup-first-user') + async setupFirstUser(@Body() userCreateDto: CreateAdminDto, @Res({ passthrough: true }) response: Response) { + return await this.onboardingService.setupFirstUser(response, userCreateDto); + } +} diff --git a/server/ce/onboarding/service.ts b/server/ce/onboarding/service.ts new file mode 100644 index 0000000000..66ba6737c3 --- /dev/null +++ b/server/ce/onboarding/service.ts @@ -0,0 +1,58 @@ +import { Injectable } from '@nestjs/common'; +import { UsersService } from '@services/users.service'; +import { AuthService } from '@services/auth.service'; +import { OrganizationsService } from '@services/organizations.service'; +import { CreateAdminDto } from '@dto/user.dto'; +import { Response } from 'express'; +import { USER_ROLE } from '@module/user_resource_permissions/constants/group-permissions.constant'; +import { generateWorkspaceSlug } from '@helpers/utils.helper'; +import { dbTransactionWrap } from '@helpers/database.helper'; +import { OrganizationUsersService } from '@services/organization_users.service'; +import { MetadataService } from '@services/metadata.service'; +import { USER_STATUS } from '@helpers/user_lifecycle'; + +@Injectable() +export class OnboardingService { + constructor( + private usersService: UsersService, + private authService: AuthService, + private organizationsService: OrganizationsService, + private organizationUsersService: OrganizationUsersService, + private metadataService: MetadataService + ) {} + + async setupFirstUser(response: Response, userCreateDto: CreateAdminDto): Promise { + const { name, workspaceName, password, email } = userCreateDto; + const workspaceSlug = generateWorkspaceSlug(workspaceName || 'My workspace'); + + const result = await dbTransactionWrap(async (manager) => { + const organization = await this.organizationsService.create( + workspaceName || 'My workspace', + workspaceSlug, + null, + manager + ); + const user = await this.usersService.create( + { + email, + password, + firstName: name.split(' ')[0], + lastName: name.split(' ').slice(1).join(' '), + status: USER_STATUS.ACTIVE, + }, + organization.id, + USER_ROLE.ADMIN, + null, + false, + null, + manager + ); + + await this.organizationUsersService.create(user, organization, false, manager); + return this.authService.generateLoginResultPayload(response, user, organization, false, true, null, manager); + }); + + await this.metadataService.finishOnboardingCE(name, email, workspaceName); + return result; + } +} diff --git a/server/src/controllers/organizations.controller.ts b/server/src/controllers/organizations.controller.ts index e8a754697a..26f9f3194d 100644 --- a/server/src/controllers/organizations.controller.ts +++ b/server/src/controllers/organizations.controller.ts @@ -125,4 +125,9 @@ export class OrganizationsController { async checkWorkspaceUnique(@User() user, @Query('name') name: string, @Query('slug') slug: string) { return this.organizationsService.checkWorkspaceUniqueness(name, slug); } + + @Get('/workspace-name/unique') + async checkUniqueWorkspaceName(@User() user, @Query('name') name: string) { + return this.organizationsService.checkWorkspaceNameUniqueness(name); + } } diff --git a/server/src/dto/user.dto.ts b/server/src/dto/user.dto.ts index 80f82b2fb6..ae6006e3b3 100644 --- a/server/src/dto/user.dto.ts +++ b/server/src/dto/user.dto.ts @@ -91,10 +91,15 @@ export class CreateAdminDto { @Transform(({ value }) => sanitizeInput(value)) role: string; - @IsString() + @IsOptional() @IsNotEmpty() @Transform(({ value }) => sanitizeInput(value)) workspace: string; + + @IsString() + @IsNotEmpty() + @Transform(({ value }) => sanitizeInput(value)) + workspaceName: string; } export class UpdateUserDto extends PartialType(CreateUserDto) {} diff --git a/server/src/helpers/utils.helper.ts b/server/src/helpers/utils.helper.ts index 3ef6b79b57..7ef63d16c3 100644 --- a/server/src/helpers/utils.helper.ts +++ b/server/src/helpers/utils.helper.ts @@ -175,6 +175,17 @@ export const generateNextNameAndSlug = (firstWord: string) => { }; }; +export function generateWorkspaceSlug(workspaceName: string): string { + return workspaceName + .toLowerCase() + .trim() + .replace(/\s+/g, '-') + .replace(/[^\w-]+/g, '') + .replace(/--+/g, '-') + .replace(/^-+/, '') + .replace(/-+$/, ''); +} + export const truncateAndReplace = (name) => { const secondsSinceEpoch = Date.now(); if (name.length > 35) { diff --git a/server/src/models/request-context.model.ts b/server/src/models/request-context.model.ts index da25c4864d..894bbb76b4 100644 --- a/server/src/models/request-context.model.ts +++ b/server/src/models/request-context.model.ts @@ -1,5 +1,6 @@ import { AsyncLocalStorage } from 'async_hooks'; import { Request, Response } from 'express'; +import { User } from 'src/entities/user.entity'; export class RequestContext { static cls = new AsyncLocalStorage(); @@ -9,4 +10,8 @@ export class RequestContext { } constructor(public readonly req: Request, public readonly res: Response) {} + + get user() { + return this.req.user as User; + } } diff --git a/server/src/modules/auth/auth.module.ts b/server/src/modules/auth/auth.module.ts index adf87ab787..10babd460a 100644 --- a/server/src/modules/auth/auth.module.ts +++ b/server/src/modules/auth/auth.module.ts @@ -35,6 +35,8 @@ import { SessionScheduler } from 'src/schedulers/session.scheduler'; import { TooljetDbModule } from '../tooljet_db/tooljet_db.module'; import { UserResourcePermissionsModule } from '@modules/user_resource_permissions/user_resource_permissions.module'; import { InstanceSettingsModule } from '@instance-settings/module'; +import { OnboardingService } from 'ce/onboarding/service'; +import { OnboardingController } from 'ce/onboarding/controller'; @Module({ imports: [ @@ -84,8 +86,9 @@ import { InstanceSettingsModule } from '@instance-settings/module'; PluginsHelper, SessionService, SessionScheduler, + OnboardingService, ], - controllers: [OauthController], - exports: [AuthService, SessionService], + controllers: [OauthController, OnboardingController], + exports: [AuthService, SessionService, OnboardingService], }) export class AuthModule {} diff --git a/server/src/services/metadata.service.ts b/server/src/services/metadata.service.ts index f7ab16a731..bf3a6f46ba 100644 --- a/server/src/services/metadata.service.ts +++ b/server/src/services/metadata.service.ts @@ -58,13 +58,24 @@ export class MetadataService { } } + async finishOnboardingCE(name: string, email: string, companyName: string) { + if (process.env.NODE_ENV == 'production') { + const metadata = await this.getMetaData(); + void this.finishInstallation(name, email, companyName, null, null, metadata); + + await this.updateMetaData({ + onboarded: true, + }); + } + } + async finishInstallation( name: string, email: string, org: string, - companySize: string, - role: string, - metadata: Metadata + companySize?: string, + role?: string, + metadata?: Metadata ) { try { return await got('https://hub.tooljet.io/subscribe', { diff --git a/server/src/services/organizations.service.ts b/server/src/services/organizations.service.ts index 907cf63c7d..3f2f7d5889 100644 --- a/server/src/services/organizations.service.ts +++ b/server/src/services/organizations.service.ts @@ -846,6 +846,20 @@ export class OrganizationsService { return; } + async checkWorkspaceNameUniqueness(name: string) { + if (!name) { + throw new NotAcceptableException('Request should contain workspace name'); + } + const manager = this._dataSource.manager; + const result = await manager.count(Organization, { + where: { + ...(name && { name }), + }, + }); + if (result) throw new ConflictException('Workspace name must be unique'); + return; + } + async createSampleDB(organizationId, manager: EntityManager) { const config = { name: 'Sample Data Source', From 22ea1296a2240fc47cc1113b3914befef5fd819a Mon Sep 17 00:00:00 2001 From: Rudhra Deep Biswas <98055396+rudeUltra@users.noreply.github.com> Date: Thu, 19 Sep 2024 14:21:29 +0530 Subject: [PATCH 170/190] Platform-20 Release Bug Fixes (#10780) * EE bug fixes * Remove static module * delete old static module --- .../ee/components/UsersPage/UsersFilter.jsx | 9 +- .../src/ManageOrgUsers/ManageOrgUsers.jsx | 8 +- server/src/app.module.ts | 14 ++- server/src/main.ts | 90 ++++++++++--------- .../static_file_server.module.ts | 29 ------ 5 files changed, 73 insertions(+), 77 deletions(-) delete mode 100644 server/src/modules/static_file_server/static_file_server.module.ts diff --git a/frontend/ee/components/UsersPage/UsersFilter.jsx b/frontend/ee/components/UsersPage/UsersFilter.jsx index 8c872dd354..649c902b1f 100644 --- a/frontend/ee/components/UsersPage/UsersFilter.jsx +++ b/frontend/ee/components/UsersPage/UsersFilter.jsx @@ -9,7 +9,7 @@ const userStatusOptions = [ { name: 'Archived', value: 'archived' }, ]; -const UsersFilter = ({ filterList }) => { +const UsersFilter = ({ filterList, resetSearch }) => { const [options, setOptions] = useState({ searchText: '', status: '' }); const [statusVal, setStatusVal] = useState(''); const [queryVal, setQueryVal] = useState(); @@ -44,6 +44,12 @@ const UsersFilter = ({ filterList }) => { // eslint-disable-next-line react-hooks/exhaustive-deps }, [options.searchText, options.status]); + useEffect(() => { + setOptions({ searchText: '', status: '' }); + setStatusVal(''); + setQueryVal(''); + }, [resetSearch]); + return (
@@ -79,6 +85,7 @@ const UsersFilter = ({ filterList }) => { setQueryVal(e.target.value); queryValuesChanged(e); }} + value={options.searchText} data-cy="input-field-user-filter-search" />
diff --git a/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx b/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx index 7d0c0385b7..a8da21d78c 100644 --- a/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx +++ b/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx @@ -45,6 +45,7 @@ class ManageOrgUsersComponent extends React.Component { errorItemList: [], errorTitle: '', errorIconName: 'usergear', + resetSearch: false, }; } @@ -129,7 +130,7 @@ class ManageOrgUsersComponent extends React.Component { .archive(id) .then(() => { toast.success('The user has been archived'); - this.setState({ archivingUser: null }); + this.setState({ archivingUser: null, resetSearch: !this.state.resetSearch }); this.fetchUsers(this.state.currentPage, this.state.options); }) .catch(({ error }) => { @@ -145,7 +146,7 @@ class ManageOrgUsersComponent extends React.Component { .unarchive(id) .then(() => { toast.success('The user has been unarchived'); - this.setState({ unarchivingUser: null }); + this.setState({ unarchivingUser: null, resetSearch: !this.state.resetSearch }); this.fetchUsers(this.state.currentPage, this.state.options); }) .catch(({ error }) => { @@ -257,6 +258,7 @@ class ManageOrgUsersComponent extends React.Component { isInviteUsersDrawerOpen: false, currentEditingUser: null, userDrawerMode: USER_DRAWER_MODES.CREATE, + resetSearch: !this.state.resetSearch, }); }) .catch(({ error }) => { @@ -355,6 +357,7 @@ class ManageOrgUsersComponent extends React.Component { errorItemList, errorTitle, errorIconName, + resetSearch, } = this.state; return ( @@ -420,6 +423,7 @@ class ManageOrgUsersComponent extends React.Component { filterList={this.filterList} darkMode={this.props.darkMode} clearIconPressed={() => this.fetchUsers()} + resetSearch={resetSearch} /> {users?.length === 0 && ( diff --git a/server/src/app.module.ts b/server/src/app.module.ts index 1289cb0f94..5d2598830b 100644 --- a/server/src/app.module.ts +++ b/server/src/app.module.ts @@ -44,7 +44,8 @@ import { UserResourcePermissionsModule } from '@modules/user_resource_permission import { PermissionsModule } from '@modules/permissions/permissions.module'; import { GetConnection } from '@modules/database/getConnection'; import { InstanceSettingsModule } from '@instance-settings/module'; -import { StaticFileServerModule } from '@modules/static_file_server/static_file_server.module'; +import { ServeStaticModule } from '@nestjs/serve-static'; +import { join } from 'path'; const imports = [ ScheduleModule.forRoot(), @@ -105,9 +106,18 @@ const imports = [ CopilotModule, OrganizationConstantModule, TooljetDbModule, - StaticFileServerModule, ]; +if (process.env.SERVE_CLIENT !== 'false' && process.env.NODE_ENV === 'production') { + imports.unshift( + ServeStaticModule.forRoot({ + // Have to remove trailing slash of SUB_PATH. + serveRoot: process.env.SUB_PATH === undefined ? '' : process.env.SUB_PATH.replace(/\/$/, ''), + rootPath: join(__dirname, '../../../', 'frontend/build'), + }) + ); +} + if (process.env.APM_VENDOR == 'sentry') { imports.unshift( SentryModule.forRoot({ diff --git a/server/src/main.ts b/server/src/main.ts index 0188c250f9..0efcbbfd18 100644 --- a/server/src/main.ts +++ b/server/src/main.ts @@ -12,6 +12,7 @@ import { ConfigService } from '@nestjs/config'; import { bootstrap as globalAgentBootstrap } from 'global-agent'; import { join } from 'path'; import * as helmet from 'helmet'; +import * as express from 'express'; const fs = require('fs'); @@ -50,50 +51,52 @@ function setSecurityHeaders(app, configService) { credentials: true, }); - app.use(helmet({ - contentSecurityPolicy: { - useDefaults: true, - directives: { - upgradeInsecureRequests: null, - 'img-src': ['*', 'data:', 'blob:'], - 'script-src': [ - 'maps.googleapis.com', - 'storage.googleapis.com', - 'apis.google.com', - 'accounts.google.com', - "'self'", - "'unsafe-inline'", - "'unsafe-eval'", - 'blob:', - 'https://unpkg.com/@babel/standalone@7.17.9/babel.min.js', - 'https://unpkg.com/react@16.7.0/umd/react.production.min.js', - 'https://unpkg.com/react-dom@16.7.0/umd/react-dom.production.min.js', - 'cdn.skypack.dev', - 'cdn.jsdelivr.net', - 'https://esm.sh', - 'www.googletagmanager.com', - ], - 'default-src': [ - 'maps.googleapis.com', - 'storage.googleapis.com', - 'apis.google.com', - 'accounts.google.com', - '*.sentry.io', - "'self'", - 'blob:', - 'www.googletagmanager.com', - ], - 'connect-src': ['ws://' + domain, "'self'", '*'], - 'frame-ancestors': ['*'], - 'frame-src': ['*'], + app.use( + helmet({ + contentSecurityPolicy: { + useDefaults: true, + directives: { + upgradeInsecureRequests: null, + 'img-src': ['*', 'data:', 'blob:'], + 'script-src': [ + 'maps.googleapis.com', + 'storage.googleapis.com', + 'apis.google.com', + 'accounts.google.com', + "'self'", + "'unsafe-inline'", + "'unsafe-eval'", + 'blob:', + 'https://unpkg.com/@babel/standalone@7.17.9/babel.min.js', + 'https://unpkg.com/react@16.7.0/umd/react.production.min.js', + 'https://unpkg.com/react-dom@16.7.0/umd/react-dom.production.min.js', + 'cdn.skypack.dev', + 'cdn.jsdelivr.net', + 'https://esm.sh', + 'www.googletagmanager.com', + ], + 'default-src': [ + 'maps.googleapis.com', + 'storage.googleapis.com', + 'apis.google.com', + 'accounts.google.com', + '*.sentry.io', + "'self'", + 'blob:', + 'www.googletagmanager.com', + ], + 'connect-src': ['ws://' + domain, "'self'", '*'], + 'frame-ancestors': ['*'], + 'frame-src': ['*'], + }, }, - }, - frameguard: configService.get('DISABLE_APP_EMBED') !== 'true' ? false : { action: 'deny' }, - hidePoweredBy: true, - referrerPolicy: { - policy: 'no-referrer', - }, - })); + frameguard: configService.get('DISABLE_APP_EMBED') !== 'true' ? false : { action: 'deny' }, + hidePoweredBy: true, + referrerPolicy: { + policy: 'no-referrer', + }, + }) + ); app.use((req, res, next) => { res.setHeader('Permissions-Policy', 'geolocation=(self), camera=(), microphone=()'); @@ -137,6 +140,7 @@ async function bootstrap() { }); setSecurityHeaders(app, configService); + app.use(`${UrlPrefix}/assets`, express.static(join(__dirname, '/assets'))); const listen_addr = process.env.LISTEN_ADDR || '::'; const port = parseInt(process.env.PORT) || 3000; diff --git a/server/src/modules/static_file_server/static_file_server.module.ts b/server/src/modules/static_file_server/static_file_server.module.ts deleted file mode 100644 index 46fccc1ab3..0000000000 --- a/server/src/modules/static_file_server/static_file_server.module.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { Module } from '@nestjs/common'; -import { ServeStaticModule } from '@nestjs/serve-static'; -import { join } from 'path'; - -const hasSubPath = process.env.SUB_PATH !== undefined; -const UrlPrefix = hasSubPath ? process.env.SUB_PATH : ''; - -const imports = [ - ServeStaticModule.forRoot({ - rootPath: join(__dirname, 'assets'), - serveRoot: (UrlPrefix ? UrlPrefix : '/../../../') + 'assets', - }) -] - -if (process.env.SERVE_CLIENT !== 'false' && process.env.NODE_ENV === 'production') { - imports.unshift( - ServeStaticModule.forRoot({ - // Have to remove trailing slash of SUB_PATH. - serveRoot: process.env.SUB_PATH === undefined ? '' : process.env.SUB_PATH.replace(/\/$/, ''), - rootPath: join(__dirname, '../../../../../', 'frontend/build'), - }) - ) -} - -@Module({ - imports -}) - -export class StaticFileServerModule {} From 83735291f312435505ea8bb3976c0beb0d97f9c6 Mon Sep 17 00:00:00 2001 From: Muhsin Shah C P Date: Thu, 19 Sep 2024 15:08:18 +0530 Subject: [PATCH 171/190] fix: release branch syntax errors & onboarding app issue (#10781) --- frontend/src/modules/common/helpers/utils.js | 6 +++++- .../invitationsStore/invitations.store.ce.js | 8 +------- .../onboardingStore/onboarding.store.ce.js | 17 ++++++++++++++++- server/ce/onboarding/service.ts | 2 +- .../utility/group-permissions.utility.ts | 3 +-- 5 files changed, 24 insertions(+), 12 deletions(-) diff --git a/frontend/src/modules/common/helpers/utils.js b/frontend/src/modules/common/helpers/utils.js index 994ed91dba..13188d99d2 100644 --- a/frontend/src/modules/common/helpers/utils.js +++ b/frontend/src/modules/common/helpers/utils.js @@ -7,4 +7,8 @@ const processErrorMessage = (error) => { return error?.error || 'Something went wrong. Please try again.'; }; -export { processErrorMessage }; +function clearPageHistory() { + history.replaceState(null, null, '/'); +} + +export { processErrorMessage, clearPageHistory }; diff --git a/frontend/src/modules/onboarding/stores/invitationsStore/invitations.store.ce.js b/frontend/src/modules/onboarding/stores/invitationsStore/invitations.store.ce.js index 70bfc2dab9..184e2cf45b 100644 --- a/frontend/src/modules/onboarding/stores/invitationsStore/invitations.store.ce.js +++ b/frontend/src/modules/onboarding/stores/invitationsStore/invitations.store.ce.js @@ -37,9 +37,7 @@ const useInvitationsStore = create( }); setAccountCreated(true); } - clearPageHistory(); - // Redirect to home page after onboarding - window.location.href = '/'; + get().createNewOnboardingApp(); }, onboardUserOrCreateAdmin: async () => { @@ -52,8 +50,4 @@ const useInvitationsStore = create( })) ); -function clearPageHistory() { - history.replaceState(null, null, '/'); -} - export default useInvitationsStore; diff --git a/frontend/src/modules/onboarding/stores/onboardingStore/onboarding.store.ce.js b/frontend/src/modules/onboarding/stores/onboardingStore/onboarding.store.ce.js index f900c5ed5c..ef3ebf2186 100644 --- a/frontend/src/modules/onboarding/stores/onboardingStore/onboarding.store.ce.js +++ b/frontend/src/modules/onboarding/stores/onboardingStore/onboarding.store.ce.js @@ -1,6 +1,10 @@ import create from 'zustand'; import { zustandDevTools } from '@/_stores/utils'; import { setupFirstUser } from '@/modules/onboarding/services/onboarding.service'; +import { appsService } from '@/_services/apps.service'; +import { getSubpath } from '@/_helpers/routes'; +import { authenticationService } from '@/_services'; +import { utils } from '@/modules/common/helpers'; const useCEOnboardingStore = create( zustandDevTools((set, get) => ({ @@ -60,7 +64,18 @@ const useCEOnboardingStore = create( await setupFirstUser(data); set({ accountCreated: true }); } - window.location.href = '/'; + get().createNewOnboardingApp(); + }, + + createNewOnboardingApp: async () => { + const session = authenticationService.currentSessionValue; + const app = await appsService.createApp({ name: 'My App' }); + const appId = app?.id; + utils.clearPageHistory(); + const path = getSubpath() + ? `${getSubpath()}/${session?.current_organization_slug}/apps/${appId}` + : `/${session?.current_organization_slug}/apps/${appId}`; + window.location.href = path; }, setAccountCreated: (value) => set({ accountCreated: value }), diff --git a/server/ce/onboarding/service.ts b/server/ce/onboarding/service.ts index 66ba6737c3..c93c5b4a29 100644 --- a/server/ce/onboarding/service.ts +++ b/server/ce/onboarding/service.ts @@ -4,12 +4,12 @@ import { AuthService } from '@services/auth.service'; import { OrganizationsService } from '@services/organizations.service'; import { CreateAdminDto } from '@dto/user.dto'; import { Response } from 'express'; -import { USER_ROLE } from '@module/user_resource_permissions/constants/group-permissions.constant'; import { generateWorkspaceSlug } from '@helpers/utils.helper'; import { dbTransactionWrap } from '@helpers/database.helper'; import { OrganizationUsersService } from '@services/organization_users.service'; import { MetadataService } from '@services/metadata.service'; import { USER_STATUS } from '@helpers/user_lifecycle'; +import { USER_ROLE } from '@modules/user_resource_permissions/constants/group-permissions.constant'; @Injectable() export class OnboardingService { diff --git a/server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts b/server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts index ee2f97a0dd..ef0af68895 100644 --- a/server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts +++ b/server/src/modules/user_resource_permissions/utility/group-permissions.utility.ts @@ -1,10 +1,9 @@ import { Brackets, EntityManager, SelectQueryBuilder } from 'typeorm'; -import { USER_ROLE, GROUP_PERMISSIONS_TYPE } from '../constants/group-permissions.constant'; +import { USER_ROLE, GROUP_PERMISSIONS_TYPE, ERROR_HANDLER } from '../constants/group-permissions.constant'; import { User } from 'src/entities/user.entity'; import { GroupPermissions } from 'src/entities/group_permissions.entity'; import { BadRequestException, MethodNotAllowedException } from '@nestjs/common'; import { CreateGroupPermissionDto, UpdateGroupPermissionDto } from '@dto/group_permissions.dto'; -import { ERROR_HANDLER } from '@modules/user_resource_permissions/constants/group-permissions.constant'; import { GroupUsers } from 'src/entities/group_users.entity'; import { GetGroupUsersObject } from '../interface/group-permissions.interface'; import { USER_STATUS } from '@helpers/user_lifecycle'; From 73818ae0861450ace4895b776dd7d871b7904ec2 Mon Sep 17 00:00:00 2001 From: Rudhra Deep Biswas <98055396+rudeUltra@users.noreply.github.com> Date: Thu, 19 Sep 2024 19:18:29 +0530 Subject: [PATCH 172/190] init (#10784) --- .../index.jsx | 20 +++++--- server/src/entities/folder.entity.ts | 2 +- server/src/helpers/queries.ts | 50 +++++++++++++------ .../granular-permissions.constant.ts | 10 ---- .../constants/group-permissions.constant.ts | 2 + .../utility/granular-permissios.utility.ts | 5 +- server/src/services/folders.service.ts | 23 ++++++--- .../services/granular_permissions.service.ts | 4 +- 8 files changed, 70 insertions(+), 46 deletions(-) diff --git a/frontend/src/ManageGroupPermissionResourcesV2/index.jsx b/frontend/src/ManageGroupPermissionResourcesV2/index.jsx index be47a24752..80e3ff4fec 100644 --- a/frontend/src/ManageGroupPermissionResourcesV2/index.jsx +++ b/frontend/src/ManageGroupPermissionResourcesV2/index.jsx @@ -150,7 +150,8 @@ class ManageGroupPermissionResourcesComponent extends React.Component { toast.success('Group permissions updated'); this.fetchGroupPermission(groupPermissionId); }) - .catch(({ error }) => { + .catch((e) => { + const error = e?.error; if (error?.type) { this.setState({ showAutoRoleChangeModal: true, @@ -160,13 +161,16 @@ class ManageGroupPermissionResourcesComponent extends React.Component { }); return; } - this.setState({ - errorMessage: error?.error, - showEditRoleErrorModal: true, - errorListItems: error?.data, - errorTitle: error?.title ? error?.title : 'Cannot add this permission to the group', - errorIconName: 'lock', - }); + // status code 451 - license error handled on separate modal + if (e?.statusCode !== 451) { + this.setState({ + errorMessage: error?.error, + showEditRoleErrorModal: true, + errorListItems: error?.data, + errorTitle: error?.title ? error?.title : 'Cannot add this permission to the group', + errorIconName: 'lock', + }); + } }); }; diff --git a/server/src/entities/folder.entity.ts b/server/src/entities/folder.entity.ts index 3104656a4f..13ab47c1b4 100644 --- a/server/src/entities/folder.entity.ts +++ b/server/src/entities/folder.entity.ts @@ -53,7 +53,7 @@ export class Folder { @AfterLoad() generateCount(): void { if (this.folderApps) { - this.count = this.folderApps.length; + this.count = this.folderApps?.length || 0; } } } diff --git a/server/src/helpers/queries.ts b/server/src/helpers/queries.ts index c46d76651c..2167821498 100644 --- a/server/src/helpers/queries.ts +++ b/server/src/helpers/queries.ts @@ -22,30 +22,33 @@ export function getFolderQuery( ]) ), ]; - const hiddenApps = userAppPermissions.hiddenAppsId.filter((id) => !userAppPermissions.editableAppsId.includes(id)); + const hiddenApps = [ + ...userAppPermissions.hiddenAppsId.filter((id) => !userAppPermissions.editableAppsId.includes(id)), + ]; const query = manager.createQueryBuilder(Folder, 'folders'); + query.leftJoinAndSelect('folders.folderApps', 'folder_apps'); + query.leftJoin('folder_apps.app', 'app'); if (!isAllEditable) { - if ((isAllViewable && hideAll) || (!isAllViewable && !hideAll) || (!isAllViewable && hideAll)) - query.leftJoinAndSelect('folders.folderApps', 'folder_apps', 'folder_apps.appId IN (:...viewableApps)', { + // Not all apps are editable - filter with view privilege + if (!isAllViewable) { + // Not all apps are viewable + query.andWhere('folder_apps.appId IN (:...viewableApps)', { viewableApps, }); - else if (!userAppPermissions.hideAll && isAllViewable) { - if (hiddenApps.length > 0) - query.leftJoinAndSelect('folders.folderApps', 'folder_apps', 'folder_apps.appId NOT IN (:...hiddenApps)', { - hiddenApps, - }); - else { - query.leftJoinAndSelect('folders.folderApps', 'folder_apps'); - } + } else if (!hideAll && hiddenApps?.length) { + // Not all apps are hidden + query.andWhere('folder_apps.appId NOT IN (:...hiddenApps)', { + hiddenApps, + }); + } else if (hideAll) { + // No need to return any + query.andWhere('1=0'); } - } else { - query.leftJoinAndSelect('folders.folderApps', 'folder_apps'); } - query.leftJoin('folder_apps.app', 'app'); if (searchKey) { - query.where('LOWER(app.name) like :searchKey', { + query.andWhere('LOWER(app.name) like :searchKey', { searchKey: `%${searchKey && searchKey.toLowerCase()}%`, }); } @@ -57,6 +60,23 @@ export function getFolderQuery( return query; } +export function getAllFoldersQuery( + organizationId: string, + manager: EntityManager, + type = 'front-end' +): SelectQueryBuilder { + const query = manager.createQueryBuilder(Folder, 'folders'); + query + .andWhere('folders.organization_id = :organizationId', { + organizationId, + }) + .andWhere('folders.type = :type', { + type, + }) + .orderBy('folders.name', 'ASC'); + + return query; +} export function viewableAppsQueryUsingPermissions( user: User, diff --git a/server/src/modules/user_resource_permissions/constants/granular-permissions.constant.ts b/server/src/modules/user_resource_permissions/constants/granular-permissions.constant.ts index b018090ed1..764eedec20 100644 --- a/server/src/modules/user_resource_permissions/constants/granular-permissions.constant.ts +++ b/server/src/modules/user_resource_permissions/constants/granular-permissions.constant.ts @@ -34,13 +34,3 @@ export const DEFAULT_RESOURCE_PERMISSIONS = { }, }, } as Record>; - -export const ERROR_HANDLER = { - GROUP_DOES_NOT_EXIST: 'Group does not exist', - ADMIN_DEFAULT_GROUP_GRANULAR_PERMISSIONS: 'Cannot create granular permissions of admin group', - EDITOR_LEVEL_PERMISSIONS_NOT_ALLOWED: - 'End-users can only be granted permission to view apps. If you wish to add this permission, kindly change the following users role from end-user to builder', - EDITOR_LEVEL_PERMISSION_NOT_ALLOWED_END_USER: 'Cannot assign builder level permission to end users', - UPDATE_EDITABLE_PERMISSION_END_USER_GROUP: - 'End-users can only be granted permission to view apps. If you wish to add this permission, kindly change the following users role from end-user to builder- ', -}; diff --git a/server/src/modules/user_resource_permissions/constants/group-permissions.constant.ts b/server/src/modules/user_resource_permissions/constants/group-permissions.constant.ts index 8be0d5eb4b..f1ef042616 100644 --- a/server/src/modules/user_resource_permissions/constants/group-permissions.constant.ts +++ b/server/src/modules/user_resource_permissions/constants/group-permissions.constant.ts @@ -125,4 +125,6 @@ export const ERROR_HANDLER = { DELETING_DEFAULT_GROUP_USER: 'Deleting default user from default group is not allowed', EDITING_LAST_ADMIN_ROLE_NOT_ALLOWED: 'Cannot change role of last present admin, please add another admin and change the role', + ADMIN_DEFAULT_GROUP_GRANULAR_PERMISSIONS: 'Cannot create granular permissions of admin group', + EDITOR_LEVEL_PERMISSION_NOT_ALLOWED_END_USER: 'Cannot assign builder level permission to end users', }; diff --git a/server/src/modules/user_resource_permissions/utility/granular-permissios.utility.ts b/server/src/modules/user_resource_permissions/utility/granular-permissios.utility.ts index c7eb0b0a37..afb6684c9e 100644 --- a/server/src/modules/user_resource_permissions/utility/granular-permissios.utility.ts +++ b/server/src/modules/user_resource_permissions/utility/granular-permissios.utility.ts @@ -1,7 +1,6 @@ import { GroupPermissions } from 'src/entities/group_permissions.entity'; -import { USER_ROLE } from '../constants/group-permissions.constant'; +import { USER_ROLE, ERROR_HANDLER } from '../constants/group-permissions.constant'; import { BadRequestException } from '@nestjs/common'; -import { ERROR_HANDLER } from '../constants/granular-permissions.constant'; import { EntityManager, SelectQueryBuilder } from 'typeorm'; import { GranularPermissionQuerySearchParam, ResourceGroupActions } from '../interface/granular-permissions.interface'; import { GranularPermissions } from 'src/entities/granular_permissions.entity'; @@ -12,7 +11,7 @@ export function validateGranularPermissionCreateOperation(group: GroupPermission } export function validateGranularPermissionUpdateOperation(group: GroupPermissions, organizationId: string) { - if (group.organizationId !== organizationId) throw new BadRequestException(ERROR_HANDLER.GROUP_DOES_NOT_EXIST); + if (group.organizationId !== organizationId) throw new BadRequestException(ERROR_HANDLER.GROUP_NOT_EXIST); if (group.name === USER_ROLE.ADMIN) throw new BadRequestException(ERROR_HANDLER.ADMIN_DEFAULT_GROUP_GRANULAR_PERMISSIONS); } diff --git a/server/src/services/folders.service.ts b/server/src/services/folders.service.ts index fd14f484ac..3c66a14425 100644 --- a/server/src/services/folders.service.ts +++ b/server/src/services/folders.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { FolderApp } from 'src/entities/folder_app.entity'; -import { getFolderQuery } from 'src/helpers/queries'; +import { getFolderQuery, getAllFoldersQuery } from 'src/helpers/queries'; import { User } from '../../src/entities/user.entity'; import { Folder } from '../entities/folder.entity'; @@ -42,12 +42,22 @@ export class FoldersService { }, [{ dbConstraint: DataBaseConstraints.FOLDER_NAME_UNIQUE, message: 'This folder name is already taken.' }]); } - async allFolders(user: User, userAppPermissions: UserAppsPermissions, searchKey?: string): Promise { + async allFoldersWithAppCount( + user: User, + userAppPermissions: UserAppsPermissions, + searchKey?: string + ): Promise { return await dbTransactionWrap(async (manager: EntityManager) => { return await getFolderQuery(user.organizationId, manager, userAppPermissions, searchKey).distinct().getMany(); }); } + async allFolders(user: User, type = 'front-end'): Promise { + return await dbTransactionWrap(async (manager: EntityManager) => { + return await getAllFoldersQuery(user.organizationId, manager, type).getMany(); + }); + } + async all(user: User, searchKey: string): Promise { const userAppPermissions = ( await this.abilityService.resourceActionsPermission(user, { @@ -56,18 +66,17 @@ export class FoldersService { }) ).App; - const allFolderList = await this.allFolders(user, userAppPermissions); - if (!searchKey || allFolderList.length === 0) { + const allFolderList = await this.allFolders(user); + if (allFolderList.length === 0) { return allFolderList; } - const folders = await this.allFolders(user, userAppPermissions, searchKey); + const folders = await this.allFoldersWithAppCount(user, userAppPermissions, searchKey); allFolderList.forEach((folder, index) => { const currentFolder = folders.find((f) => f.id === folder.id); if (currentFolder) { - allFolderList[index] = currentFolder; - allFolderList[index].folderApps; + allFolderList[index].folderApps = [...(currentFolder?.folderApps || [])]; allFolderList[index].generateCount(); console.log('folder found'); } else { diff --git a/server/src/services/granular_permissions.service.ts b/server/src/services/granular_permissions.service.ts index f88a9aa5b0..73a454e470 100644 --- a/server/src/services/granular_permissions.service.ts +++ b/server/src/services/granular_permissions.service.ts @@ -21,7 +21,7 @@ import { DATA_BASE_CONSTRAINTS, USER_ROLE, } from '@modules/user_resource_permissions/constants/group-permissions.constant'; -import { ERROR_HANDLER } from '@modules/user_resource_permissions/constants/granular-permissions.constant'; +import { ERROR_HANDLER } from '@modules/user_resource_permissions/constants/group-permissions.constant'; import { getAllGranularPermissionQuery, getGranularPermissionQuery, @@ -144,7 +144,7 @@ export class GranularPermissionsService { if (groupEditors.length && canEdit) throw new BadRequestException({ message: { - error: ERROR_HANDLER.EDITOR_LEVEL_PERMISSIONS_NOT_ALLOWED, + error: ERROR_HANDLER.EDITOR_LEVEL_PERMISSION_NOT_ALLOWED_END_USER, data: groupEditors.map((user) => user.email), title: 'Cannot create permissions', }, From b924ea3e94baa06a2476591932df95f4b3332e72 Mon Sep 17 00:00:00 2001 From: Midhun G S Date: Thu, 19 Sep 2024 21:17:16 +0530 Subject: [PATCH 173/190] added type to folder (#10785) --- .../1675073833444-AddTypeToFolder.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 server/migrations/1675073833444-AddTypeToFolder.ts diff --git a/server/migrations/1675073833444-AddTypeToFolder.ts b/server/migrations/1675073833444-AddTypeToFolder.ts new file mode 100644 index 0000000000..5f5cb38f9e --- /dev/null +++ b/server/migrations/1675073833444-AddTypeToFolder.ts @@ -0,0 +1,19 @@ +import { MigrationInterface, QueryRunner, TableColumn } from 'typeorm'; + +export class AddTypeToFolder1675073833444 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.addColumn( + 'folders', + new TableColumn({ + name: 'type', + type: 'varchar', + isNullable: false, + default: "'front-end'", + }) + ); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.dropColumn('folders', 'type'); + } +} From 4a71d40abd86cfc35fbd785ac0c5d54d80f906be Mon Sep 17 00:00:00 2001 From: Midhun G S Date: Thu, 19 Sep 2024 21:21:06 +0530 Subject: [PATCH 174/190] added type to folder entity (#10786) --- server/src/entities/folder.entity.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/server/src/entities/folder.entity.ts b/server/src/entities/folder.entity.ts index 13ab47c1b4..bd44626934 100644 --- a/server/src/entities/folder.entity.ts +++ b/server/src/entities/folder.entity.ts @@ -19,6 +19,9 @@ export class Folder { @PrimaryGeneratedColumn('uuid') id: string; + @Column() + type: string; + @Column() name: string; From e38eb34470144bc6d314fa03df364b50e8169c1a Mon Sep 17 00:00:00 2001 From: Muhsin Shah C P Date: Thu, 19 Sep 2024 22:01:28 +0530 Subject: [PATCH 175/190] [release-fix] Archived user SSO signup and login (#10787) * fix: release branch syntax errors & onboarding app issue * fix: organization id undefined error --- server/src/modules/auth/jwt.strategy.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/modules/auth/jwt.strategy.ts b/server/src/modules/auth/jwt.strategy.ts index 72180f282f..438429aa63 100644 --- a/server/src/modules/auth/jwt.strategy.ts +++ b/server/src/modules/auth/jwt.strategy.ts @@ -66,7 +66,7 @@ export class JwtStrategy extends PassportStrategy(Strategy) { let user: User; if (payload?.sub && organizationId && !isInviteSession) { user = await this.usersService.findByEmail(payload.sub, organizationId, WORKSPACE_USER_STATUS.ACTIVE); - user.organizationId = organizationId; + if (user) user.organizationId = organizationId; } else if (payload?.sub && isInviteSession) { /* Fetch user details for organization-invite and accept-invite route */ user = await this.usersService.findOne({ email: payload?.sub, status: USER_STATUS.ACTIVE }); From b38971cb01cbd83564599ab3937d39feea4aca6b Mon Sep 17 00:00:00 2001 From: Midhun G S Date: Fri, 20 Sep 2024 13:22:07 +0530 Subject: [PATCH 176/190] fix for change ownership of app (#10791) --- .../group_permissions.controller.v2.ts | 5 ++- .../organization_users.controller.ts | 4 +- .../services/organization_users.service.ts | 7 ++-- server/src/services/user-role.service.ts | 39 ++++++++++++------- server/src/services/users.service.ts | 8 +++- 5 files changed, 41 insertions(+), 22 deletions(-) diff --git a/server/src/controllers/group_permissions.controller.v2.ts b/server/src/controllers/group_permissions.controller.v2.ts index e141005bcc..a3a4caf28c 100644 --- a/server/src/controllers/group_permissions.controller.v2.ts +++ b/server/src/controllers/group_permissions.controller.v2.ts @@ -145,8 +145,9 @@ export class GroupPermissionsControllerV2 { @CheckPolicies((ability: AppAbility) => ability.can(ORGANIZATION_RESOURCE_ACTIONS.ACCESS_PERMISSIONS, UserEntity)) @Put('user-role/edit') async updateUserRole(@User() user, @Body() editRoleDto: EditUserRoleDto) { - const { organizationId } = user; - return await this.userRoleService.editDefaultGroupUserRole(editRoleDto, organizationId); + await this.userRoleService.editDefaultGroupUserRole(editRoleDto, user.organizationId, null, { + updatedAdmin: user.id, + }); } @UseGuards(JwtAuthGuard, PoliciesGuard) diff --git a/server/src/controllers/organization_users.controller.ts b/server/src/controllers/organization_users.controller.ts index 42f0da05ea..9ecd9d954a 100644 --- a/server/src/controllers/organization_users.controller.ts +++ b/server/src/controllers/organization_users.controller.ts @@ -63,8 +63,8 @@ export class OrganizationUsersController { @UseGuards(JwtAuthGuard, PoliciesGuard) @CheckPolicies((ability: AppAbility) => ability.can(ORGANIZATION_RESOURCE_ACTIONS.UPDATE_USERS, UserEntity)) @Put(':id') - async updateUser(@Param('id') id: string, @Body() updateUserDto) { - await this.organizationUsersService.updateOrgUser(id, updateUserDto); + async updateUser(@Param('id') id: string, @Body() updateUserDto, @User() user) { + await this.organizationUsersService.updateOrgUser(id, updateUserDto, user.id); return; } diff --git a/server/src/services/organization_users.service.ts b/server/src/services/organization_users.service.ts index 0560a80e91..db4e5180b5 100644 --- a/server/src/services/organization_users.service.ts +++ b/server/src/services/organization_users.service.ts @@ -114,13 +114,14 @@ export class OrganizationUsersService { }); } - async updateOrgUser(organizationUserId: string, updateUserDto) { + async updateOrgUser(organizationUserId: string, updateUserDto, adminId: string) { const organizationUser = await this.organizationUsersRepository.findOne({ where: { id: organizationUserId } }); - return await this.usersService.update( + await this.usersService.update( organizationUser.userId, updateUserDto, null, - organizationUser.organizationId + organizationUser.organizationId, + adminId ); } diff --git a/server/src/services/user-role.service.ts b/server/src/services/user-role.service.ts index 592d8d3c86..a63a59642d 100644 --- a/server/src/services/user-role.service.ts +++ b/server/src/services/user-role.service.ts @@ -79,7 +79,8 @@ export class UserRoleService { async editDefaultGroupUserRole( editRoleDto: EditUserRoleDto, organizationId: string, - manager?: EntityManager + manager?: EntityManager, + options?: { updatedAdmin?: string } ): Promise { const { newRole, userId } = editRoleDto; return await dbTransactionWrap(async (manager: EntityManager) => { @@ -115,18 +116,30 @@ export class UserRoleService { }, }); if (userCreatedApps.length > 0) { - const user = await manager.findOne(User, { - where: { - id: userGroup.userId, - }, - }); - throw new BadRequestException({ - message: { - error: ERROR_HANDLER.USER_IS_OWNER_OF_APPS(user.email), - data: userCreatedApps.map((app) => app.name), - title: 'Can not change user role', - }, - }); + if (options?.updatedAdmin) { + // Transfer the ownership + await manager.update( + App, + { + userId: userId, + organizationId: organizationId, + }, + { userId: options?.updatedAdmin } + ); + } else { + const user = await manager.findOne(User, { + where: { + id: userGroup.userId, + }, + }); + throw new BadRequestException({ + message: { + error: ERROR_HANDLER.USER_IS_OWNER_OF_APPS(user.email), + data: userCreatedApps.map((app) => app.name), + title: 'Can not change user role', + }, + }); + } } } await this.groupPermissionsService.deleteGroupUser(userGroup.id, manager); diff --git a/server/src/services/users.service.ts b/server/src/services/users.service.ts index 1fbd55ba78..7e9010602d 100644 --- a/server/src/services/users.service.ts +++ b/server/src/services/users.service.ts @@ -160,7 +160,7 @@ export class UsersService { }, manager); } - async update(userId: string, params: any, manager?: EntityManager, organizationId?: string) { + async update(userId: string, params: any, manager?: EntityManager, organizationId?: string, adminId?: string) { const { forgotPasswordToken, password, firstName, lastName, addGroups, removeGroups, source, role } = params; const hashedPassword = password ? bcrypt.hashSync(password, 10) : undefined; @@ -180,7 +180,11 @@ export class UsersService { const user = await manager.findOne(User, { where: { id: userId } }); await this.removeUserGroupPermissionsIfExists(manager, user, removeGroups, organizationId); - if (role) await this.userRoleService.editDefaultGroupUserRole({ userId, newRole: role }, organizationId, manager); + if (role) { + await this.userRoleService.editDefaultGroupUserRole({ userId, newRole: role }, organizationId, manager, { + updatedAdmin: adminId, + }); + } await this.attachUserGroup(addGroups, organizationId, userId, manager); return user; }, manager); From 4011863b9750d21af16494da958c48a945aedbfa Mon Sep 17 00:00:00 2001 From: Rohan Lahori <64496391+rohanlahori@users.noreply.github.com> Date: Fri, 20 Sep 2024 14:49:33 +0530 Subject: [PATCH 177/190] Release branch fixes/platform ce (#10788) * minor fix * css changes * email component changes * signup signIn flow changes * make workspace name based on the company changes * removed white labelling changes from the background wrapper * handled workspace name duplication (slug iso duplication case pending) * used seprate method for workspace slug * handle workspace name duplication case for default workspace name also * minor css patch * css bug * removed duplicate useEffect * removed alert and seprator component * removed not used consoles * reverted white labelling changes --- frontend/src/_helpers/utils.js | 11 ++++ .../ForgotPasswordForm/ForgotPasswordForm.jsx | 12 ---- .../components/LoginForm/LoginForm.jsx | 39 +++++++++-- .../FormTextInput/FormTextInput.jsx | 23 +++++-- .../styles/form-text-input.styles.scss | 7 ++ .../styles/password-input.styles.scss | 14 +++- .../OnboardingFormWrapper.jsx | 36 +++++++---- .../WorkspaceNameFormCE.jsx | 64 +++++++++++++++---- .../SetupAdminForm/SetupAdminForm.jsx | 12 ++-- .../components/SignupForm/SignupForm.jsx | 51 ++++++++++++++- .../WorkspaceInvitationPage.jsx | 7 +- server/ce/onboarding/service.ts | 2 +- server/src/dto/user.dto.ts | 5 ++ server/src/helpers/utils.helper.ts | 3 +- server/src/services/auth.service.ts | 9 +++ 15 files changed, 229 insertions(+), 66 deletions(-) diff --git a/frontend/src/_helpers/utils.js b/frontend/src/_helpers/utils.js index dd34463a1c..817cbb5630 100644 --- a/frontend/src/_helpers/utils.js +++ b/frontend/src/_helpers/utils.js @@ -1405,3 +1405,14 @@ export const removeNestedDoubleCurlyBraces = (str) => { return transformedInput.join(''); }; +export const validatePassword = (value) => { + if (!value.trim()) { + return 'Password is required'; + } + if (value.length < 5) { + return 'Password must be at least 5 characters long'; + } + if (value.length > 100) { + return 'Password can be at max 100 characters long'; + } +}; diff --git a/frontend/src/modules/auth/pages/ForgotPasswordPage/components/ForgotPasswordForm/ForgotPasswordForm.jsx b/frontend/src/modules/auth/pages/ForgotPasswordPage/components/ForgotPasswordForm/ForgotPasswordForm.jsx index 4ff1492f31..5563ea73dd 100644 --- a/frontend/src/modules/auth/pages/ForgotPasswordPage/components/ForgotPasswordForm/ForgotPasswordForm.jsx +++ b/frontend/src/modules/auth/pages/ForgotPasswordPage/components/ForgotPasswordForm/ForgotPasswordForm.jsx @@ -71,18 +71,6 @@ const ForgotPasswordForm = ({ onSubmit }) => { isLoading={isLoading} /> - - -
- {t('forgotPasswordPage.contactSuperAdmin', 'Contact super admin to reset your password')} -
-
diff --git a/frontend/src/modules/auth/pages/LoginPage/components/LoginForm/LoginForm.jsx b/frontend/src/modules/auth/pages/LoginPage/components/LoginForm/LoginForm.jsx index 4acb89ec7a..38e5496ce6 100644 --- a/frontend/src/modules/auth/pages/LoginPage/components/LoginForm/LoginForm.jsx +++ b/frontend/src/modules/auth/pages/LoginPage/components/LoginForm/LoginForm.jsx @@ -1,7 +1,7 @@ import React, { useState, useEffect } from 'react'; import { useTranslation } from 'react-i18next'; import { Link } from 'react-router-dom'; -import { validateEmail } from '@/_helpers/utils'; +import { validateEmail, validatePassword } from '@/_helpers/utils'; import { OnboardingFormWrapper, OnboardingFormInsideWrapper } from '@/modules/onboarding/components'; import { FormTextInput, PasswordInput, SubmitButton, FormHeader, SSOAuthModule } from '@/modules/common/components'; import { redirectToDashboard } from '@/_helpers/routes'; @@ -38,39 +38,68 @@ const LoginForm = ({ const signUpUrl = `/signup${paramOrganizationSlug ? `/${paramOrganizationSlug}` : ''}${ redirectTo ? `?redirectTo=${redirectTo}` : '' }`; + const [isDefaultFormEmail, setisDefaultFormEmail] = useState(true); + const [isDefaultFormPassword, setisDefaultFormPassword] = useState(true); + const defaultfieldStateSetters = { + email: setisDefaultFormEmail, + password: setisDefaultFormPassword, + }; useEffect(() => { checkFormValidity(); + const newErrors = {}; + let isValid = true; + const emailFieldError = !isDefaultFormEmail && validateField('email', email); + newErrors['email'] = emailFieldError; + const passwordFieldError = !isDefaultFormPassword && validateField('password', password); + newErrors['password'] = passwordFieldError; + if (emailFieldError || passwordFieldError) isValid = false; + setErrors(newErrors); + setIsFormValid(isValid && email != '' && password != ''); }, [email, password]); const checkFormValidity = () => { const isValid = validateEmail(email) && password.trim() !== ''; setIsFormValid(isValid); }; - + const validateField = (name, value) => { + switch (name) { + case 'email': + return value.trim() ? (validateEmail(value) ? '' : 'Email is invalid') : 'Email is required'; + case 'password': + return validatePassword(value); + default: + return ''; + } + }; const handleInputChange = (e) => { const { name, value } = e.target; if (name === 'email') setEmail(value); if (name === 'password') setPassword(value); + if (defaultfieldStateSetters[name]) { + defaultfieldStateSetters[name](false); + } setErrors((prev) => ({ ...prev, [name]: '' })); }; const handleSubmit = (e) => { e.preventDefault(); setIsLoading(true); - if (!validateEmail(email)) { setErrors((prev) => ({ ...prev, email: 'Invalid Email' })); setIsLoading(false); return; } - if (!password || !password.trim()) { setErrors((prev) => ({ ...prev, password: 'Password is required' })); setIsLoading(false); return; } - + if (password.length > 100) { + setErrors((prev) => ({ ...prev, password: 'Password can be at max 100 characters long' })); + setIsLoading(false); + return; + } onSubmit(email, password, () => { setIsLoading(false); }); diff --git a/frontend/src/modules/common/components/FormTextInput/FormTextInput.jsx b/frontend/src/modules/common/components/FormTextInput/FormTextInput.jsx index a28a808103..0b3bdbcde7 100644 --- a/frontend/src/modules/common/components/FormTextInput/FormTextInput.jsx +++ b/frontend/src/modules/common/components/FormTextInput/FormTextInput.jsx @@ -14,11 +14,23 @@ const FormTextInput = ({ maxLength, disableStartAdornment = false, }) => { + const handleChange = (event) => { + const { name, value } = event.target; + // Trimming the value from front and back field for email + const trimmedValue = name === 'email' ? value.trim() : value; + onChange({ target: { name, value: trimmedValue } }); + }; return (
- + {!disabled ? ( + + ) : ( + + )} {disabled ? (

@@ -33,17 +45,16 @@ const FormTextInput = ({ name={name} placeholder={placeholder} value={value} - onChange={onChange} + onChange={handleChange} required data-cy={dataCy} autoComplete="off" {...(maxLength ? { maxLength } : {})} /> - {error} + {error} )}

); }; - export default FormTextInput; diff --git a/frontend/src/modules/common/components/FormTextInput/resources/styles/form-text-input.styles.scss b/frontend/src/modules/common/components/FormTextInput/resources/styles/form-text-input.styles.scss index 70f6b606c4..d14e7c5e79 100644 --- a/frontend/src/modules/common/components/FormTextInput/resources/styles/form-text-input.styles.scss +++ b/frontend/src/modules/common/components/FormTextInput/resources/styles/form-text-input.styles.scss @@ -64,6 +64,13 @@ font-size: 10px; margin-top: 2px; height: 14px; + &__error-enabled { + margin-bottom: 4px; + display: block; + font-size: 10px; + margin-top: 2px; + height: 14px; + } } &--disabled { diff --git a/frontend/src/modules/common/components/PasswordInput/resources/styles/password-input.styles.scss b/frontend/src/modules/common/components/PasswordInput/resources/styles/password-input.styles.scss index 97193765ad..5d9ab43df1 100644 --- a/frontend/src/modules/common/components/PasswordInput/resources/styles/password-input.styles.scss +++ b/frontend/src/modules/common/components/PasswordInput/resources/styles/password-input.styles.scss @@ -24,6 +24,7 @@ width: 100%; height: 32px; padding: 7px 6px; + padding-right: 30px; font-family: "IBM Plex Sans"; font-size: 12px; font-style: normal; @@ -36,6 +37,11 @@ background: var(--Background-surface-layer-01, #FFF); transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + // This is done specifically for safari browser + &::-webkit-credentials-auto-fill-button { + opacity: 0; + } + &::placeholder { color: #6c757d; opacity: 1; @@ -47,7 +53,7 @@ border-color: #80bdff; outline: 0; box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); - } + } } &__toggle { @@ -60,7 +66,9 @@ cursor: pointer; font-size: .7rem; color: #6c757d; - padding: 0.25rem; + padding: 0.5rem; + padding-left: 4px; + margin-left: 10px; &:focus { outline: none; @@ -140,4 +148,4 @@ } } } -} +} \ No newline at end of file diff --git a/frontend/src/modules/onboarding/components/OnboardingFormWrapper/OnboardingFormWrapper.jsx b/frontend/src/modules/onboarding/components/OnboardingFormWrapper/OnboardingFormWrapper.jsx index 9fce3586a6..8ecebec394 100644 --- a/frontend/src/modules/onboarding/components/OnboardingFormWrapper/OnboardingFormWrapper.jsx +++ b/frontend/src/modules/onboarding/components/OnboardingFormWrapper/OnboardingFormWrapper.jsx @@ -6,29 +6,39 @@ import { fetchWhiteLabelDetails, defaultWhiteLabellingSettings, } from '@white-label/whiteLabelling'; - +import { getSubpath } from '@/_helpers/routes'; const OnboardingFormWrapper = ({ children: components }) => { - const [whiteLabelLogo, setWhiteLableLogo] = useState(''); - const [imageWidth, setImageWidth] = useState(null); - useEffect(() => { - fetchWhiteLabelDetails(); - setWhiteLableLogo(retrieveWhiteLabelLogo()); - }, []); - const handleImageWidth = (event) => { - const { naturalWidth } = event.target; + const [whiteLabelLogo, setWhiteLableLogo] = useState(null); + const [imageWidth, setImageWidth] = useState(130); + const img = new Image(); + const handleLoad = () => { + const { naturalWidth } = img; setImageWidth(naturalWidth < 130 ? naturalWidth : 130); }; - + useEffect(() => { + fetchWhiteLabelDetails(); + const data = retrieveWhiteLabelLogo(); + setWhiteLableLogo(data); + }, []); + useEffect(() => { + if (!whiteLabelLogo) return; + img.src = whiteLabelLogo; + img.addEventListener('load', handleLoad); + return () => { + img.removeEventListener('load', handleLoad); + }; + }, [whiteLabelLogo]); const redirectToLoginPage = () => { - window.location.href = '/'; + window.location.href = getSubpath() ? `${getSubpath()}` : `'/'`; }; return (
{whiteLabelLogo != '' && window.location.pathname != '/setup' && - whiteLabelLogo != defaultWhiteLabellingSettings.WHITE_LABEL_LOGO ? ( - + whiteLabelLogo != defaultWhiteLabellingSettings.WHITE_LABEL_LOGO && + imageWidth != null ? ( + ) : ( )} diff --git a/frontend/src/modules/onboarding/components/OnboardingQuestions/components/WorkspaceNameFormCE/WorkspaceNameFormCE.jsx b/frontend/src/modules/onboarding/components/OnboardingQuestions/components/WorkspaceNameFormCE/WorkspaceNameFormCE.jsx index 6d392522c5..a1e69cbe53 100644 --- a/frontend/src/modules/onboarding/components/OnboardingQuestions/components/WorkspaceNameFormCE/WorkspaceNameFormCE.jsx +++ b/frontend/src/modules/onboarding/components/OnboardingQuestions/components/WorkspaceNameFormCE/WorkspaceNameFormCE.jsx @@ -9,16 +9,37 @@ import { checkWorkspaceNameUniqueness } from '@/modules/onboarding/services/onbo import { useEnterKeyPress } from '@/modules/common/hooks'; import '@/_styles/theme.scss'; +const generalDomains = [ + 'gmail.com', + 'outlook.com', + 'hotmail.com', + 'live.com', + 'yahoo.com', + 'icloud.com', + 'me.com', + 'mac.com', + 'protonmail.com', + 'pm.me', + 'aol.com', + 'zoho.com', + 'gmx.com', + 'gmx.de', + 'yandex.com', + 'yandex.ru', + 'mail.com', +]; const WorkspaceNameFormCE = () => { - const { onboardUserOrCreateAdmin, initiatedInvitedUserOnboarding } = useInvitationsStore( + const { inviteeEmail, onboardUserOrCreateAdmin, initiatedInvitedUserOnboarding } = useInvitationsStore( (state) => ({ onboardUserOrCreateAdmin: state.onboardUserOrCreateAdmin, initiatedInvitedUserOnboarding: state.initiatedInvitedUserOnboarding, + inviteeEmail: state.inviteeEmail, }), shallow ); - const { setWorkspaceName, workspaceName, accountCreated } = useOnboardingStore( + const { adminDetails, setWorkspaceName, workspaceName, accountCreated } = useOnboardingStore( (state) => ({ + adminDetails: state.adminDetails, setWorkspaceName: state.setWorkspaceName, workspaceName: state.workspaceName, accountCreated: state.accountCreated, @@ -27,28 +48,43 @@ const WorkspaceNameFormCE = () => { ); useEnterKeyPress(() => handleSubmit()); - const [formData, setFormData] = useState({ workspaceName: workspaceName || 'My workspace' }); + const [formData, setFormData] = useState({ workspaceName: workspaceName }); const [error, setError] = useState(''); const [isFormValid, setIsFormValid] = useState(true); const [isSubmitting, setIsSubmitting] = useState(false); const [isTouched, setIsTouched] = useState(false); const TITLE = 'Set up your workspace!'; const description = 'Set up workspaces to manage users, applications & resources across various teams'; - useEffect(() => { - const initializeWorkspaceName = async () => { - if (initiatedInvitedUserOnboarding) { - const isUnique = await isWorkspaceNameUnique(formData.workspaceName); - if (!isUnique) { - const timestamp = new Date().getTime(); - const newName = `My workspace ${timestamp}`; - setFormData({ workspaceName: newName }); - setIsFormValid(true); + const generateDefaultWorkspaceName = async (email) => { + const timestamp = new Date().getTime(); + const isDefaultWorkspaceNameUnique = await isWorkspaceNameUnique('My workspace'); + const [localPart, domain] = email.split('@'); + + if (!email || generalDomains.includes(domain)) { + if (isDefaultWorkspaceNameUnique) { + return 'My workspace'; } + return `My workspace ${timestamp}`; } + const companyName = domain.split('.')[0]; + const trimmedCompanyName = companyName.substring(0, Math.min(companyName.length, 38)); + const isUnique = await isWorkspaceNameUnique( + `${trimmedCompanyName.charAt(0).toUpperCase() + trimmedCompanyName.slice(1)}'s workspace` + ); + if (isUnique) { + return `${trimmedCompanyName.charAt(0).toUpperCase() + trimmedCompanyName.slice(1)}'s workspace`; + } + const trimmedCompanyNamee = companyName.substring(0, 22); + return `${trimmedCompanyNamee.charAt(0).toUpperCase() + trimmedCompanyNamee.slice(1) + timestamp}'s workspace`; }; - initializeWorkspaceName(); - }, [initiatedInvitedUserOnboarding]); + const handleDefaultWorkspaceName = async () => { + const defaultWorkspaceName = await generateDefaultWorkspaceName(adminDetails.email || inviteeEmail); + setFormData({ workspaceName: defaultWorkspaceName }); + setIsFormValid(true); + }; + handleDefaultWorkspaceName(); + }, [adminDetails.email, inviteeEmail]); const isWorkspaceNameUnique = async (value) => { try { diff --git a/frontend/src/modules/onboarding/pages/SetupAdminPage/components/SetupAdminForm/SetupAdminForm.jsx b/frontend/src/modules/onboarding/pages/SetupAdminPage/components/SetupAdminForm/SetupAdminForm.jsx index e3d7bb4783..540704aaad 100644 --- a/frontend/src/modules/onboarding/pages/SetupAdminPage/components/SetupAdminForm/SetupAdminForm.jsx +++ b/frontend/src/modules/onboarding/pages/SetupAdminPage/components/SetupAdminForm/SetupAdminForm.jsx @@ -1,6 +1,6 @@ import React, { useState, useEffect } from 'react'; import { OnboardingFormWrapper } from '@/modules/onboarding/components'; -import { FormTextInput, PasswordInput, SubmitButton, FormHeader, EmailComponent } from '@/modules/common/components'; +import { FormTextInput, PasswordInput, SubmitButton, FormHeader } from '@/modules/common/components'; import useOnboardingStore from '@/modules/onboarding/stores/onboardingStore'; import { shallow } from 'zustand/shallow'; import { validateEmail } from '@/_helpers/utils'; @@ -100,13 +100,13 @@ const SetupAdminForm = () => { name="name" dataCy="name-input" /> - diff --git a/frontend/src/modules/onboarding/pages/SignupPage/components/SignupForm/SignupForm.jsx b/frontend/src/modules/onboarding/pages/SignupPage/components/SignupForm/SignupForm.jsx index 50256d4fd4..3bbe22886e 100644 --- a/frontend/src/modules/onboarding/pages/SignupPage/components/SignupForm/SignupForm.jsx +++ b/frontend/src/modules/onboarding/pages/SignupPage/components/SignupForm/SignupForm.jsx @@ -1,12 +1,12 @@ import React, { useState, useEffect } from 'react'; import { useTranslation } from 'react-i18next'; import { Link } from 'react-router-dom'; -import { validateEmail } from '@/_helpers/utils'; import { OnboardingFormWrapper, OnboardingFormInsideWrapper } from '@/modules/onboarding/components'; import { FormTextInput, PasswordInput, SubmitButton, FormHeader, SSOAuthModule } from '@/modules/common/components'; import SignupStatusCard from './components/SignupStatusCard'; import './resources/styles/sign-up-form.styles.scss'; import SepratorComponent from '@/modules/common/components/SepratorComponent'; +import { validateEmail, validatePassword } from '@/_helpers/utils'; const SignupForm = ({ configs, @@ -30,6 +30,10 @@ const SignupForm = ({ const [errors, setErrors] = useState({}); const [isFormValid, setIsFormValid] = useState(false); + const [isDefaultFormName, setisDefaultFormName] = useState(true); + const [isDefaultFormEmail, setisDefaultFormEmail] = useState(true); + const [isDefaultFormPassword, setisDefaultFormPassword] = useState(true); + const isAnySSOEnabled = configs?.google?.enabled || configs?.git?.enabled; const isFormSignUpEnabled = organizationId ? configs?.form?.enabled : configs?.form?.enable_sign_up; @@ -37,7 +41,11 @@ const SignupForm = ({ const comingFromInviteFlow = !!organizationToken; const shouldShowSignupDisabledCard = !organizationToken && !configs?.enable_sign_up && !configs?.form?.enable_sign_up; const signUpDisabledText = `Signup has been disabled by your ${organizationId ? 'workspace' : 'super'} admin.`; - + const defaultfieldStateSetters = { + name: setisDefaultFormName, + email: setisDefaultFormEmail, + password: setisDefaultFormPassword, + }; useEffect(() => { if (initialData) { setFormData({ ...initialData, password: '' }); @@ -59,14 +67,50 @@ const SignupForm = ({ formData.password.length >= 5 && (comingFromInviteFlow || formData.name.trim() !== ''); setIsFormValid(isValid); + return isValid; }; const handleInputChange = (e) => { const { name, value } = e.target; setFormData((prev) => ({ ...prev, [name]: value })); + if (defaultfieldStateSetters[name]) { + defaultfieldStateSetters[name](false); + } setErrors((prev) => ({ ...prev, [name]: '' })); }; + const validateField = (name, value) => { + switch (name) { + case 'name': + return value.trim() ? '' : 'Name is required'; + case 'email': + return value.trim() ? (validateEmail(value) ? '' : 'Email is invalid') : 'Email is required'; + case 'password': + return validatePassword(value); + default: + return ''; + } + }; + const formInputFields = { + name: isDefaultFormName, + email: isDefaultFormEmail, + password: isDefaultFormPassword, + }; + useEffect(() => { + const newErrors = {}; + let fieldsValid = true; + Object.keys(formData).forEach((fieldName) => { + // only if the field is edited by the user -- after that we show validation error message + const fieldError = !formInputFields[fieldName] && validateField(fieldName, formData[fieldName]); + newErrors[fieldName] = fieldError; + if (fieldError) fieldsValid = false; + }); + setErrors(newErrors); + // form validity -> used for checking all the validation checks in the form + const isFormValid = fieldsValid && checkFormValidity(); + setIsFormValid(isFormValid); + }, [formData]); + const handleSubmit = (e) => { e.preventDefault(); setIsLoading(true); @@ -96,6 +140,9 @@ const SignupForm = ({ if (formData.password.length < 5) { newErrors.password = 'Password must be at least 5 characters long'; } + if (formData.password.length > 100) { + newErrors.password = 'Password can be at max 100 characters long'; + } setErrors(newErrors); return Object.keys(newErrors).length === 0; }; diff --git a/frontend/src/modules/onboarding/pages/WorkspaceInvitationPage/WorkspaceInvitationPage.jsx b/frontend/src/modules/onboarding/pages/WorkspaceInvitationPage/WorkspaceInvitationPage.jsx index 7a68f74256..7dc9736f9a 100644 --- a/frontend/src/modules/onboarding/pages/WorkspaceInvitationPage/WorkspaceInvitationPage.jsx +++ b/frontend/src/modules/onboarding/pages/WorkspaceInvitationPage/WorkspaceInvitationPage.jsx @@ -91,12 +91,13 @@ const WorkspaceInvitationPage = (props) => { readOnly="true" disableStartAdornment={true} /> - acceptInvite(e)} diff --git a/server/ce/onboarding/service.ts b/server/ce/onboarding/service.ts index c93c5b4a29..2636c281dc 100644 --- a/server/ce/onboarding/service.ts +++ b/server/ce/onboarding/service.ts @@ -19,7 +19,7 @@ export class OnboardingService { private organizationsService: OrganizationsService, private organizationUsersService: OrganizationUsersService, private metadataService: MetadataService - ) {} + ) { } async setupFirstUser(response: Response, userCreateDto: CreateAdminDto): Promise { const { name, workspaceName, password, email } = userCreateDto; diff --git a/server/src/dto/user.dto.ts b/server/src/dto/user.dto.ts index ae6006e3b3..9de776368c 100644 --- a/server/src/dto/user.dto.ts +++ b/server/src/dto/user.dto.ts @@ -54,6 +54,11 @@ export class CreateUserDto { @IsOptional() @Transform(({ value }) => sanitizeInput(value)) source: string; + + @IsString() + @IsNotEmpty() + @Transform(({ value }) => sanitizeInput(value)) + workspaceName: string; } export class CreateAdminDto { diff --git a/server/src/helpers/utils.helper.ts b/server/src/helpers/utils.helper.ts index 7ef63d16c3..fa45d618b8 100644 --- a/server/src/helpers/utils.helper.ts +++ b/server/src/helpers/utils.helper.ts @@ -167,8 +167,9 @@ export const processDataInBatches = async ( }; export const generateNextNameAndSlug = (firstWord: string) => { + firstWord = firstWord.length > 35 ? firstWord.slice(0, 35) : firstWord; const name = `${firstWord} ${Date.now()}`; - const slug = name.replace(/\s+/g, '-').toLowerCase(); + const slug = generateWorkspaceSlug(name); return { name, slug, diff --git a/server/src/services/auth.service.ts b/server/src/services/auth.service.ts index e620938efc..c090670bf5 100644 --- a/server/src/services/auth.service.ts +++ b/server/src/services/auth.service.ts @@ -823,6 +823,7 @@ export class AuthService { password: userPassword, source, phoneNumber, + workspaceName, } = userCreateDto; let password = userPassword; @@ -883,6 +884,14 @@ export class AuthService { // Activate default workspace await this.organizationUsersService.activateOrganization(defaultOrganizationUser, manager); + if (workspaceName) { + //TODO: Check if the workspace name is already taken from frontend + const { slug } = generateNextNameAndSlug(workspaceName); + await this.organizationsService.updateOrganization(defaultOrganizationUser.organizationId, { + name: workspaceName, + slug: slug, + }); + } } else { throw new BadRequestException('Invalid invitation link'); } From 372cf41fb1c54586ef9563c6d618b2c96ccf8fd6 Mon Sep 17 00:00:00 2001 From: Rudhra Deep Biswas <98055396+rudeUltra@users.noreply.github.com> Date: Fri, 20 Sep 2024 15:37:32 +0530 Subject: [PATCH 178/190] Platform Release 19.2 Bugs (#10794) * init * slug changes --- .../OrganizationManager/CreateOrganization.jsx | 14 +++++++++++++- frontend/src/_stores/currentStateStore.js | 7 +++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/frontend/src/_components/OrganizationManager/CreateOrganization.jsx b/frontend/src/_components/OrganizationManager/CreateOrganization.jsx index 6357b000bb..748fbb3f39 100644 --- a/frontend/src/_components/OrganizationManager/CreateOrganization.jsx +++ b/frontend/src/_components/OrganizationManager/CreateOrganization.jsx @@ -20,6 +20,7 @@ export const CreateOrganization = ({ showCreateOrg, setShowCreateOrg }) => { const { t } = useTranslation(); const isSlugSet = useRef(false); // Flag to track if slug has been initially set const sluginput = useRef(''); + const [isDisabled, setIsDisabled] = useState(true); const createOrganization = () => { let emptyError = false; @@ -155,6 +156,7 @@ export const CreateOrganization = ({ showCreateOrg, setShowCreateOrg }) => { errorMsg: errResponse?.error, }; setSlug({ value: defaultValue, error: error?.errorMsg }); + sluginput.current.value = defaultValue; } }; checkWorkspaceUniqueness(); @@ -167,7 +169,17 @@ export const CreateOrganization = ({ showCreateOrg, setShowCreateOrg }) => { } }, [name.value, slug.value, slugProgress, workspaceNameProgress, isSlugSet]); - const isDisabled = isCreating || isNameDisabled || isSlugDisabled || slugProgress || workspaceNameProgress; + useEffect(() => { + const isDisabled = + isCreating || + isNameDisabled || + isSlugDisabled || + slugProgress || + workspaceNameProgress || + slug?.error || + name?.error; + setIsDisabled(isDisabled); + }, [isCreating, isNameDisabled, isSlugDisabled, slugProgress, workspaceNameProgress, name, slug]); return ( set({ isEditorReady }), initializeCurrentStateOnVersionSwitch: () => { //fetch user for current app + const currentSession = authenticationService.currentSessionValue; const currentUser = useAppDataStore.getState().currentUser; const userVars = { email: currentUser?.email, firstName: currentUser?.first_name, lastName: currentUser?.last_name, - groups: authenticationService.currentSessionValue.group_permissions?.map((group) => group.group), - ssoUserInfo: currentUser?.sso_user_info, + groups: currentSession?.group_permissions + ? ['all_users', ...currentSession.group_permissions.map((group) => group.name)] + : ['all_users'], + role: currentSession?.role?.name, }; const newInitialState = { ...initialState, From 34510591b279c28ee4a7e143d62e6dc1ab748598 Mon Sep 17 00:00:00 2001 From: Anantshree Chandola Date: Mon, 23 Sep 2024 11:00:36 +0530 Subject: [PATCH 179/190] Feature: Secret constants + Bug fixes for resolution of constants and secrets (#10551) * Feature: Secret constants * updates * use constants * name length validation * update checks * styling updates + unique constraint checks * editor state updates * update * correct state * ui updates * added encrypted tag * styling updates * style update * update * fix for existing bugs * styling updates * styles * update --- frontend/src/Editor/CodeEditor/PreviewBox.jsx | 53 ++- frontend/src/Editor/CodeEditor/utils.js | 6 +- frontend/src/Editor/Editor.jsx | 26 +- .../QueryManager/Components/ParameterForm.jsx | 10 +- frontend/src/Editor/Viewer.jsx | 5 +- .../src/ManageOrgConstants/ConstantForm.jsx | 80 ++++- .../ManageOrgConstants/ConstantFormStyle.scss | 315 ++++++++++++++++++ .../src/ManageOrgConstants/ConstantTable.jsx | 26 +- .../src/ManageOrgConstants/EmptyState.jsx | 2 +- .../ManageOrgConstants/ManageOrgConstants.jsx | 295 ++++++++++++---- frontend/src/_components/DynamicForm.jsx | 17 +- .../OrgConstantsVariablesPreviewBox.jsx | 58 ++-- frontend/src/_helpers/utils.js | 39 ++- .../organization_constants.service.js | 39 ++- frontend/src/_stores/dataQueriesStore.js | 10 +- frontend/src/_styles/theme.scss | 28 +- frontend/src/_ui/HttpHeaders/index.js | 5 +- frontend/src/_ui/Icon/bulkIcons/CloseIcon.jsx | 14 + ...7-AddTypeAsConstantForExistingOrgConsts.ts | 12 + ...57506889-AddTypeInOrganizationConstants.ts | 39 +++ .../organization_constants.controller.ts | 51 ++- server/src/dto/organization-constant.dto.ts | 9 +- .../entities/organization_constants.entity.ts | 14 + server/src/services/data_queries.service.ts | 234 +++++++------ server/src/services/data_sources.service.ts | 56 +++- .../org_environment_variables.service.ts | 3 + .../organization_constants.service.ts | 93 ++++-- 27 files changed, 1222 insertions(+), 317 deletions(-) create mode 100644 frontend/src/ManageOrgConstants/ConstantFormStyle.scss create mode 100644 frontend/src/_ui/Icon/bulkIcons/CloseIcon.jsx create mode 100644 server/data-migrations/1722357931487-AddTypeAsConstantForExistingOrgConsts.ts create mode 100644 server/migrations/1722357506889-AddTypeInOrganizationConstants.ts diff --git a/frontend/src/Editor/CodeEditor/PreviewBox.jsx b/frontend/src/Editor/CodeEditor/PreviewBox.jsx index f638c9ad74..e013a6f2b7 100644 --- a/frontend/src/Editor/CodeEditor/PreviewBox.jsx +++ b/frontend/src/Editor/CodeEditor/PreviewBox.jsx @@ -4,12 +4,14 @@ import CodeHinter from '.'; import { copyToClipboard } from '@/_helpers/appUtils'; import { Alert } from '@/_ui/Alert/Alert'; import _, { isEmpty } from 'lodash'; -import { handleCircularStructureToJSON, hasCircularDependency } from '@/_helpers/utils'; +import { handleCircularStructureToJSON, hasCircularDependency, verifyConstant } from '@/_helpers/utils'; import OverlayTrigger from 'react-bootstrap/OverlayTrigger'; import Popover from 'react-bootstrap/Popover'; import Card from 'react-bootstrap/Card'; // eslint-disable-next-line import/no-unresolved import { JsonViewer } from '@textea/json-viewer'; +import { useCurrentStateStore } from '@/_stores/currentStateStore'; +import { useDataQueriesStore } from '@/_stores/dataQueriesStore'; import { reservedKeywordReplacer } from '@/_lib/reserved-keyword-replacer'; const sanitizeLargeDataset = (data, callback) => { @@ -111,6 +113,19 @@ export const PreviewBox = ({ let previewType = getCurrentNodeType(resolvedValue); let previewContent = resolvedValue; + let isGlobalConstant = currentValue && currentValue.includes('{{constants.'); + let isSecretConstant = currentValue && currentValue.includes('{{secrets.'); + let invalidConstants = null; + let undefinedError = null; + if (isGlobalConstant || isSecretConstant) { + const secrets = useDataQueriesStore.getState().secrets; + const globals = useCurrentStateStore.getState().constants; + + invalidConstants = verifyConstant(currentValue, globals, secrets); + } + if (invalidConstants?.length) { + undefinedError = { type: 'Invalid constants' }; + } const ifCoersionErrorHasCircularDependency = (value) => { if (hasCircularDependency(value)) { @@ -133,7 +148,17 @@ export const PreviewBox = ({ }, [error]); useEffect(() => { - const [valid, _error, newValue, resolvedValue] = resolveReferences(currentValue, validationSchema, customVariables); + const [valid, _error, rawNewValue, rawResolvedValue] = resolveReferences( + currentValue, + validationSchema, + customVariables + ); + + const resolvedValue = typeof rawResolvedValue === 'function' ? undefined : rawResolvedValue; + + const newValue = typeof rawNewValue === 'function' ? undefined : rawNewValue; + const isSecretError = + currentValue?.includes('secrets.') || _error?.includes('ReferenceError: secrets is not defined'); if (isWorkspaceVariable || !validationSchema || isEmpty(validationSchema)) { return setResolvedValue(newValue); @@ -142,7 +167,7 @@ export const PreviewBox = ({ // we dont need to add or update the resolved value if the value has deep children const _resolveValue = sanitizeLargeDataset(resolvedValue, setLargeDataset); - if (valid) { + if (valid && !isSecretError) { const [coercionPreview, typeAfterCoercion, typeBeforeCoercion] = computeCoercion(resolvedValue, newValue); setResolvedValue(_resolveValue); @@ -153,11 +178,13 @@ export const PreviewBox = ({ typeBeforeCoercion, }); setError(null); - } else if (!valid && !newValue && !resolvedValue) { + } else if (!valid && !newValue && !resolvedValue && !isSecretError) { const err = !error ? `Invalid value for ${validationSchema?.schema?.type}` : `${_error}`; setError({ message: err, value: resolvedValue, type: 'Invalid' }); } else { - const jsErrorType = _error?.includes('ReferenceError') + const jsErrorType = isSecretError + ? 'Error' + : _error?.includes('ReferenceError') ? 'ReferenceError' : _error?.includes('TypeError') ? 'TypeError' @@ -168,9 +195,9 @@ export const PreviewBox = ({ const errValue = ifCoersionErrorHasCircularDependency(_resolveValue); setError({ - message: _error, - value: jsErrorType === 'Invalid' ? JSON.stringify(errValue, reservedKeywordReplacer) : resolvedValue, - type: jsErrorType, + message: isSecretError ? 'secrets cannot be used in apps' : _error, + value: isSecretError ? 'Undefined' : jsErrorType === 'Invalid' ? JSON.stringify(errValue) : resolvedValue, + type: isSecretError ? 'Error' : jsErrorType, }); setCoersionData(null); } @@ -180,13 +207,14 @@ export const PreviewBox = ({ return ( <> { const computeCoersionPreview = (resolvedValue, coersionData) => { @@ -229,7 +258,11 @@ const RenderResolvedValue = ({ }` : previewType; - const previewContent = !withValidation ? resolvedValue : computeCoersionPreview(resolvedValue, coersionData); + const previewContent = isSecretConstant + ? 'Values of secret constants are hidden' + : !withValidation + ? resolvedValue + : computeCoersionPreview(resolvedValue, coersionData); const cls = error ? 'codehinter-error-banner' : 'codehinter-success-banner'; diff --git a/frontend/src/Editor/CodeEditor/utils.js b/frontend/src/Editor/CodeEditor/utils.js index 85edb26a68..8f317517c6 100644 --- a/frontend/src/Editor/CodeEditor/utils.js +++ b/frontend/src/Editor/CodeEditor/utils.js @@ -281,7 +281,11 @@ export const resolveReferences = (query, validationSchema, customResolvers = {}) const queryHasJSCode = queryHasStringOtherThanVariable(query); let useJSResolvers = queryHasJSCode || getDynamicVariables(query)?.length > 1; - if (!queryHasJSCode && getDynamicVariables(query)?.length === 1 && !query.startsWith('{{') && query.includes('{{')) { + if ( + !queryHasJSCode && + getDynamicVariables(query)?.length === 1 && + ((!query.startsWith('{{') && query.includes('{{')) || (query.startsWith('{{') && !query.endsWith('}}'))) + ) { useJSResolvers = true; } diff --git a/frontend/src/Editor/Editor.jsx b/frontend/src/Editor/Editor.jsx index c97ace14e1..ef7d69c201 100644 --- a/frontend/src/Editor/Editor.jsx +++ b/frontend/src/Editor/Editor.jsx @@ -47,7 +47,7 @@ import { withTranslation } from 'react-i18next'; import { v4 as uuid } from 'uuid'; import Skeleton from 'react-loading-skeleton'; import EditorHeader from './Header'; -import { getWorkspaceId, isValidUUID } from '@/_helpers/utils'; +import { getWorkspaceId, isValidUUID, Constants } from '@/_helpers/utils'; import { fetchAndSetWindowTitle, pageTitles, defaultWhiteLabellingSettings } from '@white-label/whiteLabelling'; import '@/_styles/editor/react-select-search.scss'; import { withRouter } from '@/_hoc/withRouter'; @@ -403,19 +403,26 @@ const EditorComponent = (props) => { }); }; - const fetchOrgEnvironmentConstants = () => { - //! for @ee: get the constants from `getConstantsFromEnvironment ` -- '/organization-constants/:environmentId' - orgEnvironmentConstantService.getAll().then(({ constants }) => { + const fetchOrgEnvironmentConstants = async (environmentId) => { + try { + const { constants } = await orgEnvironmentConstantService.getConstantsFromEnvironment( + environmentId, + Constants.Global + ); const orgConstants = {}; - constants.map((constant) => { - const constantValue = constant.values.find((value) => value.environmentName === 'production')['value']; - orgConstants[constant.name] = constantValue; + + constants.forEach((constant) => { + orgConstants[constant.name] = constant.value; }); useCurrentStateStore.getState().actions.setCurrentState({ constants: orgConstants, }); - }); + } catch (error) { + toast.error('Failed to fetch organization environment constants', { + position: 'top-center', + }); + } }; const initComponentVersioning = () => { @@ -720,7 +727,8 @@ const EditorComponent = (props) => { fetchAndSetWindowTitle({ page: pageTitles.EDITOR, appName }); useAppVersionStore.getState().actions.updateEditingVersion(editing_version); current_version_id && useAppVersionStore.getState().actions.updateReleasedVersionId(current_version_id); - await fetchOrgEnvironmentConstants(); + const environmentId = editing_version?.current_environment_id; + await fetchOrgEnvironmentConstants(environmentId); updateState({ slug, isMaintenanceOn, diff --git a/frontend/src/Editor/QueryManager/Components/ParameterForm.jsx b/frontend/src/Editor/QueryManager/Components/ParameterForm.jsx index 610ede889c..3d6c94dc35 100644 --- a/frontend/src/Editor/QueryManager/Components/ParameterForm.jsx +++ b/frontend/src/Editor/QueryManager/Components/ParameterForm.jsx @@ -4,6 +4,12 @@ import Information from '@/_ui/Icon/solidIcons/Information'; import CodeHinter from '@/Editor/CodeEditor'; const isValidVariableName = (str) => /^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(str); +const isConstant = (str) => { + if (typeof str !== 'string') { + return false; + } + return str.includes('secrets.') || str.includes('constants.'); +}; const ParameterForm = ({ darkMode, @@ -38,7 +44,9 @@ const ParameterForm = ({ }; useEffect(() => { - if (!isValidVariableName(name)) { + if (isConstant(name)) { + setError('Constants cannot be used in params'); + } else if (!isValidVariableName(name)) { setError('Variable name invalid'); } else if (name && otherParams.some((param) => param.name === name.trim())) { setError('Variable name exists'); diff --git a/frontend/src/Editor/Viewer.jsx b/frontend/src/Editor/Viewer.jsx index 9dcf5e57ae..705d7e7429 100644 --- a/frontend/src/Editor/Viewer.jsx +++ b/frontend/src/Editor/Viewer.jsx @@ -26,7 +26,7 @@ import { import queryString from 'query-string'; import ViewerLogoIcon from './Icons/viewer-logo.svg'; import { DataSourceTypes } from './DataSourceManager/SourceComponents'; -import { resolveReferences, isQueryRunnable, isValidUUID } from '@/_helpers/utils'; +import { resolveReferences, isQueryRunnable, isValidUUID, Constants } from '@/_helpers/utils'; import { withTranslation } from 'react-i18next'; import _ from 'lodash'; import { Navigate } from 'react-router-dom'; @@ -441,11 +441,10 @@ class ViewerComponent extends React.Component { let variablesResult; if (!isPublic) { - const { constants } = await orgEnvironmentConstantService.getAll(); + const { constants } = await orgEnvironmentConstantService.getConstantsFromApp(slug); variablesResult = constants; } else { const { constants } = await orgEnvironmentConstantService.getConstantsFromPublicApp(slug); - variablesResult = constants; } diff --git a/frontend/src/ManageOrgConstants/ConstantForm.jsx b/frontend/src/ManageOrgConstants/ConstantForm.jsx index 2dff9e4780..1eecc5fbbf 100644 --- a/frontend/src/ManageOrgConstants/ConstantForm.jsx +++ b/frontend/src/ManageOrgConstants/ConstantForm.jsx @@ -6,6 +6,9 @@ import { Tooltip } from 'react-tooltip'; import { FormWrapper, textAreaEnterOnSave } from '@/_components/FormWrapper'; import EyeHide from '../../assets/images/onboardingassets/Icons/EyeHide'; import EyeShow from '../../assets/images/onboardingassets/Icons/EyeShow'; +import './ConstantFormStyle.scss'; +import { Constants } from '@/_helpers/utils'; +import CloseIcon from '@/_ui/Icon/bulkIcons/CloseIcon'; const ConstantForm = ({ selectedConstant, @@ -13,11 +16,12 @@ const ConstantForm = ({ onCancelBtnClicked, isLoading, currentEnvironment, - checkIfConstantNameExists, mode, }) => { + console.log(isLoading); const [fields, setFields] = useState(() => ({ ...selectedConstant, + type: selectedConstant?.type, environments: [{ label: currentEnvironment?.name, value: currentEnvironment?.id }], })); @@ -47,7 +51,7 @@ const ConstantForm = ({ name_already_exists: `Constant with this name already exists in ${capitalize( currentEnvironment?.name )} environment`, - invalid_name_length: 'Constant name should be between 1 and 32 characters', + invalid_name_length: 'Constant name has exceeded 50 characters', max_name_length_reached: 'Maximum length has been reached', invalid_name: 'Constant name should start with a letter or underscore and can only contain letters, numbers and underscores', @@ -60,16 +64,10 @@ const ConstantForm = ({ if (name !== 'name') return; - const isNameAlreadyExists = checkIfConstantNameExists(value, currentEnvironment?.id); - const invalidNameLength = value.length > 32; - const maxNameLengthReached = value.length === 32; + const invalidNameLength = value.length > 50; + const maxNameLengthReached = value.length === 50; const invalidName = !isValidPropertyName(value); - if (isNameAlreadyExists) { - return setError({ - name: ERROR_MESSAGES.name_already_exists, - }); - } if (invalidNameLength) { return setError({ name: ERROR_MESSAGES.invalid_name_length, @@ -133,6 +131,7 @@ const ConstantForm = ({ !isActiveErrorState(error) && fields['name'] && fields['value'] && + fields['type'] && (fields['name'].length > 0 || fields['value'].length > 0) ? false : true; @@ -160,6 +159,9 @@ const ConstantForm = ({

{!selectedConstant ? 'Add new constant' : 'Update constant'} in {currentEnvironment?.name}{' '}

+
+ +
@@ -167,9 +169,6 @@ const ConstantForm = ({
setIsOpen(true)} onMouseLeave={() => setIsOpen(false)} > @@ -179,7 +178,7 @@ const ConstantForm = ({ {error['name']} + {!error['name'] && ( + Name must be unique and max 50 characters + )}
+
+ +
+
+ + + The values can be used anywhere in the product + +
+
+ + + The values are hidden and can only be used in data sources and queries + +
+
+ {mode === 'edit' && ( + + Cannot edit constant type + + )} +