diff --git a/.gitignore b/.gitignore index d7d338e6..46fc939f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ +# Redwood +.redwood/* + # Logs logs *.log @@ -124,6 +127,7 @@ dist # yarn (see https://yarnpkg.com/getting-started/qa#which-files-should-be-gitignored) .pnp.* +.idea .yarn/* !.yarn/patches !.yarn/plugins diff --git a/.nvmrc b/.nvmrc index 3f430af8..bb52a169 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -v18 +v18.18.2 diff --git a/api/db/migrations/20231128040217_basic_agency/migration.sql b/api/db/migrations/20231128040217_basic_agency/migration.sql new file mode 100644 index 00000000..7496a79a --- /dev/null +++ b/api/db/migrations/20231128040217_basic_agency/migration.sql @@ -0,0 +1,9 @@ +-- CreateTable +CREATE TABLE "agency" ( + "id" SERIAL NOT NULL, + "name" TEXT NOT NULL, + "abbreviation" TEXT, + "code" TEXT NOT NULL, + + CONSTRAINT "agency_pkey" PRIMARY KEY ("id") +); diff --git a/api/db/migrations/20231201164202_added_tenant/migration.sql b/api/db/migrations/20231201164202_added_tenant/migration.sql new file mode 100644 index 00000000..9cbf40e9 --- /dev/null +++ b/api/db/migrations/20231201164202_added_tenant/migration.sql @@ -0,0 +1,30 @@ +/* + Warnings: + + - You are about to drop the `agency` table. If the table is not empty, all the data it contains will be lost. + +*/ +-- DropTable +DROP TABLE "agency"; + +-- CreateTable +CREATE TABLE "Agency" ( + "id" SERIAL NOT NULL, + "name" TEXT NOT NULL, + "abbreviation" TEXT, + "code" TEXT NOT NULL, + "tenantId" INTEGER, + + CONSTRAINT "Agency_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Tenant" ( + "id" SERIAL NOT NULL, + "name" TEXT NOT NULL, + + CONSTRAINT "Tenant_pkey" PRIMARY KEY ("id") +); + +-- AddForeignKey +ALTER TABLE "Agency" ADD CONSTRAINT "Agency_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES "Tenant"("id") ON DELETE SET NULL ON UPDATE CASCADE; diff --git a/api/db/migrations/20231201204518_changed_tenant_to_organization/migration.sql b/api/db/migrations/20231201204518_changed_tenant_to_organization/migration.sql new file mode 100644 index 00000000..912e1f26 --- /dev/null +++ b/api/db/migrations/20231201204518_changed_tenant_to_organization/migration.sql @@ -0,0 +1,27 @@ +/* + Warnings: + + - You are about to drop the column `tenantId` on the `Agency` table. All the data in the column will be lost. + - You are about to drop the `Tenant` table. If the table is not empty, all the data it contains will be lost. + +*/ +-- DropForeignKey +ALTER TABLE "Agency" DROP CONSTRAINT "Agency_tenantId_fkey"; + +-- AlterTable +ALTER TABLE "Agency" DROP COLUMN "tenantId", +ADD COLUMN "organizationId" INTEGER; + +-- DropTable +DROP TABLE "Tenant"; + +-- CreateTable +CREATE TABLE "Organization" ( + "id" SERIAL NOT NULL, + "name" TEXT NOT NULL, + + CONSTRAINT "Organization_pkey" PRIMARY KEY ("id") +); + +-- AddForeignKey +ALTER TABLE "Agency" ADD CONSTRAINT "Agency_organizationId_fkey" FOREIGN KEY ("organizationId") REFERENCES "Organization"("id") ON DELETE SET NULL ON UPDATE CASCADE; diff --git a/api/db/migrations/migration_lock.toml b/api/db/migrations/migration_lock.toml new file mode 100644 index 00000000..fbffa92c --- /dev/null +++ b/api/db/migrations/migration_lock.toml @@ -0,0 +1,3 @@ +# Please do not edit this file manually +# It should be added in your version-control system (i.e. Git) +provider = "postgresql" \ No newline at end of file diff --git a/api/db/schema.prisma b/api/db/schema.prisma index 56f33f1b..e1257293 100644 --- a/api/db/schema.prisma +++ b/api/db/schema.prisma @@ -8,187 +8,17 @@ datasource db { url = env("DATABASE_URL") } -model access_tokens { - id Int @id @default(autoincrement()) - user_id Int? - passcode String @unique(map: "access_tokens_passcode_unique") @db.VarChar(200) - created_at DateTime @default(now()) @db.Timestamptz(6) - expires DateTime @db.Timestamptz(6) - used Boolean - uses Int @default(0) - users users? @relation(fields: [user_id], references: [id], onDelete: Cascade, onUpdate: NoAction, map: "access_tokens_user_id_foreign") -} - -model agencies { - id Int @id @default(autoincrement()) - name String - abbreviation String? @db.VarChar(255) - parent Int? - warning_threshold Int? @default(30) - danger_threshold Int? @default(15) - main_agency_id Int - tenant_id Int - code String - agencies_agencies_main_agency_idToagencies agencies @relation("agencies_main_agency_idToagencies", fields: [main_agency_id], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "agencies_main_agency_id_foreign") - other_agencies_agencies_main_agency_idToagencies agencies[] @relation("agencies_main_agency_idToagencies") - agencies_agencies_parentToagencies agencies? @relation("agencies_parentToagencies", fields: [parent], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "agencies_parent_foreign") - other_agencies_agencies_parentToagencies agencies[] @relation("agencies_parentToagencies") - tenants_agencies_tenant_idTotenants tenants @relation("agencies_tenant_idTotenants", fields: [tenant_id], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "agencies_tenant_id_foreign") - projects projects[] - tenants_tenants_main_agency_idToagencies tenants[] @relation("tenants_main_agency_idToagencies") - uploads uploads[] - users users[] - - @@unique([tenant_id, code], map: "agencies_tenant_id_code_unique") - @@unique([tenant_id, name], map: "agencies_tenant_id_name_unique") -} - -/// The underlying table does not contain a valid unique identifier and can therefore currently not be handled by Prisma Client. -model application_settings { - id Int @id @default(autoincrement()) - title String? - current_reporting_period_id Int? - duns_number String? - validation_rule_tags String[] - tenant_id Int - reporting_periods reporting_periods? @relation(fields: [current_reporting_period_id], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "application_settings_current_reporting_period_id_foreign") - tenants tenants @relation(fields: [tenant_id], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "application_settings_tenant_id_foreign") - - @@ignore -} - -model arpa_subrecipients { - id Int @id @default(autoincrement()) - tenant_id Int - created_at DateTime @default(now()) @db.Timestamptz(6) - updated_at DateTime? @db.Timestamptz(6) - updated_by Int? - uei String? @db.VarChar(255) - tin String? @db.VarChar(255) - record String? - upload_id String? @db.Uuid - tenants tenants @relation(fields: [tenant_id], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "arpa_subrecipients_tenant_id_foreign") - users users? @relation(fields: [updated_by], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "arpa_subrecipients_updated_by_foreign") - uploads uploads? @relation(fields: [upload_id], references: [id], onDelete: Cascade, onUpdate: NoAction, map: "arpa_subrecipients_upload_id_foreign") - - @@unique([tenant_id, tin], map: "arpa_subrecipients_tenant_id_tin_unique") - @@unique([tenant_id, uei], map: "arpa_subrecipients_tenant_id_uei_unique") -} - -model period_summaries { - id Int @id @default(autoincrement()) - reporting_period_id Int - project_code String - award_type String - award_number String - current_obligation Decimal @db.Decimal(19, 2) - current_expenditure Decimal @db.Decimal(19, 2) - award_amount Decimal? @db.Decimal(19, 2) - tenant_id Int - reporting_periods reporting_periods @relation(fields: [reporting_period_id], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "period_summaries_reporting_period_id_foreign") - tenants tenants @relation(fields: [tenant_id], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "period_summaries_tenant_id_foreign") - projects projects @relation(fields: [tenant_id, project_code], references: [tenant_id, code], onDelete: NoAction, onUpdate: NoAction, map: "period_summaries_tenant_id_project_code_foreign") -} - -model projects { - id Int @id @default(autoincrement()) - code String - name String - agency_id Int? - status String? - description String? - created_at DateTime @default(now()) @db.Timestamptz(6) - created_by String? - updated_at DateTime? @db.Timestamptz(6) - updated_by String? - created_in_period Int? - tenant_id Int - period_summaries period_summaries[] - agencies agencies? @relation(fields: [agency_id], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "projects_agency_id_foreign") - reporting_periods reporting_periods? @relation(fields: [created_in_period], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "projects_created_in_period_foreign") - tenants tenants @relation(fields: [tenant_id], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "projects_tenant_id_foreign") - - @@unique([tenant_id, code], map: "projects_tenant_id_code_unique") - @@unique([tenant_id, name], map: "projects_tenant_id_name_unique") -} - -model reporting_periods { - id Int @id @default(autoincrement()) - name String - start_date DateTime @db.Date - end_date DateTime @db.Date - certified_at DateTime? @db.Timestamptz(6) - certified_by Int? - tenant_id Int - template_filename String? @db.VarChar(255) - application_settings application_settings[] @ignore - period_summaries period_summaries[] - projects projects[] - users users? @relation(fields: [certified_by], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "reporting_periods_certified_by_foreign") - tenants tenants @relation(fields: [tenant_id], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "reporting_periods_tenant_id_foreign") - uploads uploads[] - - @@unique([tenant_id, name], map: "reporting_periods_tenant_id_name_unique") -} - -model roles { - id Int @id @default(autoincrement()) - name String @unique(map: "roles_name_unique") @db.VarChar(255) - rules Json @db.Json - created_at DateTime @default(now()) @db.Timestamptz(6) - users users[] -} - -model tenants { - id Int @id @default(autoincrement()) - display_name String? @db.VarChar(255) - main_agency_id Int? - created_at DateTime @default(now()) @db.Timestamptz(6) - updated_at DateTime? @db.Timestamptz(6) - agencies_agencies_tenant_idTotenants agencies[] @relation("agencies_tenant_idTotenants") - application_settings application_settings[] @ignore - arpa_subrecipients arpa_subrecipients[] - period_summaries period_summaries[] - projects projects[] - reporting_periods reporting_periods[] - agencies_tenants_main_agency_idToagencies agencies? @relation("tenants_main_agency_idToagencies", fields: [main_agency_id], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "tenants_main_agency_id_foreign") - uploads uploads[] - users users[] -} - -model uploads { - filename String - created_at DateTime @default(now()) @db.Timestamptz(6) - reporting_period_id Int? - user_id Int? - agency_id Int? - validated_at DateTime? @db.Timestamptz(6) - validated_by Int? - ec_code String? @db.VarChar(255) - tenant_id Int - id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid - arpa_subrecipients arpa_subrecipients[] - agencies agencies? @relation(fields: [agency_id], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "uploads_agency_id_foreign") - reporting_periods reporting_periods? @relation(fields: [reporting_period_id], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "uploads_reporting_period_id_foreign") - tenants tenants @relation(fields: [tenant_id], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "uploads_tenant_id_foreign") - users_uploads_user_idTousers users? @relation("uploads_user_idTousers", fields: [user_id], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "uploads_user_id_foreign") - users_uploads_validated_byTousers users? @relation("uploads_validated_byTousers", fields: [validated_by], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "uploads_validated_by_foreign") -} - -model users { - id Int @id @default(autoincrement()) - email String @unique(map: "users_email_unique") @db.VarChar(255) - name String? @db.VarChar(255) - role_id Int? - created_at DateTime @default(now()) @db.Timestamptz(6) - agency_id Int? - tenant_id Int - access_tokens access_tokens[] - arpa_subrecipients arpa_subrecipients[] - reporting_periods reporting_periods[] - uploads_uploads_user_idTousers uploads[] @relation("uploads_user_idTousers") - uploads_uploads_validated_byTousers uploads[] @relation("uploads_validated_byTousers") - agencies agencies? @relation(fields: [agency_id], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "users_agency_id_foreign") - roles roles? @relation(fields: [role_id], references: [id], onUpdate: NoAction, map: "users_role_id_foreign") - tenants tenants @relation(fields: [tenant_id], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "users_tenant_id_foreign") +model Agency { + id Int @id @default(autoincrement()) + name String + abbreviation String? + code String + tenant Organization? @relation(fields: [organizationId], references: [id]) + organizationId Int? +} + +model Organization { + id Int @id @default(autoincrement()) + agencies Agency[] + name String } diff --git a/api/src/graphql/agencies.sdl.ts b/api/src/graphql/agencies.sdl.ts new file mode 100644 index 00000000..391d9512 --- /dev/null +++ b/api/src/graphql/agencies.sdl.ts @@ -0,0 +1,33 @@ +export const schema = gql` + type Agency { + id: Int! + name: String! + abbreviation: String + code: String! + organizationId: Int! + } + + type Query { + agencies: [Agency!]! @requireAuth + agency(id: Int!): Agency @requireAuth + agenciesByOrganization(organizationId: Int!): [Agency!]! @requireAuth + } + + input CreateAgencyInput { + name: String! + abbreviation: String + code: String! + } + + input UpdateAgencyInput { + name: String + abbreviation: String + code: String + } + + type Mutation { + createAgency(input: CreateAgencyInput!): Agency! @requireAuth + updateAgency(id: Int!, input: UpdateAgencyInput!): Agency! @requireAuth + deleteAgency(id: Int!): Agency! @requireAuth + } +` diff --git a/api/src/graphql/organizations.sdl.ts b/api/src/graphql/organizations.sdl.ts new file mode 100644 index 00000000..b26950cb --- /dev/null +++ b/api/src/graphql/organizations.sdl.ts @@ -0,0 +1,30 @@ +export const schema = gql` + type Organization { + id: Int! + agencies: [Agency]! + name: String! + } + + type Query { + organizations: [Organization!]! @requireAuth + organization(id: Int!): Organization @requireAuth + } + + input CreateOrganizationInput { + name: String! + } + + input UpdateOrganizationInput { + name: String + } + + type Mutation { + createOrganization(input: CreateOrganizationInput!): Organization! + @requireAuth + updateOrganization( + id: Int! + input: UpdateOrganizationInput! + ): Organization! @requireAuth + deleteOrganization(id: Int!): Organization! @requireAuth + } +` diff --git a/api/src/services/agencies/agencies.scenarios.ts b/api/src/services/agencies/agencies.scenarios.ts new file mode 100644 index 00000000..70f989a2 --- /dev/null +++ b/api/src/services/agencies/agencies.scenarios.ts @@ -0,0 +1,11 @@ +import type { Prisma, agency } from '@prisma/client' +import type { ScenarioData } from '@redwoodjs/testing/api' + +export const standard = defineScenario({ + agency: { + one: { data: { name: 'String', code: 'String' } }, + two: { data: { name: 'String', code: 'String' } }, + }, +}) + +export type StandardScenario = ScenarioData diff --git a/api/src/services/agencies/agencies.test.ts b/api/src/services/agencies/agencies.test.ts new file mode 100644 index 00000000..ce2b6114 --- /dev/null +++ b/api/src/services/agencies/agencies.test.ts @@ -0,0 +1,58 @@ +import type { Agency } from '@prisma/client' + +import { + agencies, + agency, + createAgency, + updateAgency, + deleteAgency, +} from './agencies' +import type { StandardScenario } from './agencies.scenarios' + +// Generated boilerplate tests do not account for all circumstances +// and can fail without adjustments, e.g. Float. +// Please refer to the RedwoodJS Testing Docs: +// https://redwoodjs.com/docs/testing#testing-services +// https://redwoodjs.com/docs/testing#jest-expect-type-considerations + +describe('agencies', () => { + scenario('returns all agencies', async (scenario: StandardScenario) => { + const result = await agencies() + + expect(result.length).toEqual(Object.keys(scenario.agency).length) + }) + + scenario('returns a single agency', async (scenario: StandardScenario) => { + const result = await agency({ id: scenario.agency.one.id }) + + expect(result).toEqual(scenario.agency.one) + }) + + scenario('creates a agency', async () => { + const result = await createAgency({ + input: { name: 'String', code: 'String' }, + }) + + expect(result.name).toEqual('String') + expect(result.code).toEqual('String') + }) + + scenario('updates a agency', async (scenario: StandardScenario) => { + const original = (await agency({ id: scenario.agency.one.id })) as Agency + const result = await updateAgency({ + id: original.id, + input: { name: 'String2' }, + }) + + expect(result.name).toEqual('String2') + }) + + scenario('deletes a agency', async (scenario: StandardScenario) => { + const original = (await deleteAgency({ + id: scenario.agency.one.id, + })) as Agency + const result = await agency({ id: original.id }) + + expect(result).toEqual(null) + }) +}) diff --git a/api/src/services/agencies/agencies.ts b/api/src/services/agencies/agencies.ts new file mode 100644 index 00000000..55002964 --- /dev/null +++ b/api/src/services/agencies/agencies.ts @@ -0,0 +1,50 @@ +import type { QueryResolvers, MutationResolvers } from 'types/graphql' + +import { db } from 'src/lib/db' + +export const agencies: QueryResolvers['agencies'] = () => { + return db.agency.findMany() +} + +export const agency: QueryResolvers['agency'] = ({ id }) => { + return db.agency.findUnique({ + where: { id }, + }) +} + +export const createAgency: MutationResolvers['createAgency'] = ({ input }) => { + return db.agency.create({ + data: input, + }) +} + +export const updateAgency: MutationResolvers['updateAgency'] = ({ + id, + input, +}) => { + return db.agency.update({ + data: input, + where: { id }, + }) +} + +export const deleteAgency: MutationResolvers['deleteAgency'] = ({ id }) => { + return db.agency.delete({ + where: { id }, + }) +} + +export const agenciesByOrganization: QueryResolvers['agenciesByOrganization'] = async ({ + organizationId, +}) => { + try { + const agencies = await db.agency.findMany({ + where: { organizationId }, + }) + return agencies || [] // Return an empty array if null is received + } catch (error) { + console.error(error) + // Handle the error appropriately; maybe log it and return an empty array + return [] + } +} diff --git a/api/src/services/organizations/organizations.scenarios.ts b/api/src/services/organizations/organizations.scenarios.ts new file mode 100644 index 00000000..14eecf1c --- /dev/null +++ b/api/src/services/organizations/organizations.scenarios.ts @@ -0,0 +1,11 @@ +import type { Prisma, Organization } from '@prisma/client' +import type { ScenarioData } from '@redwoodjs/testing/api' + +export const standard = defineScenario({ + organization: { + one: { data: { name: 'String' } }, + two: { data: { name: 'String' } }, + }, +}) + +export type StandardScenario = ScenarioData diff --git a/api/src/services/organizations/organizations.test.ts b/api/src/services/organizations/organizations.test.ts new file mode 100644 index 00000000..8c5757c1 --- /dev/null +++ b/api/src/services/organizations/organizations.test.ts @@ -0,0 +1,62 @@ +import type { Organization } from '@prisma/client' + +import { + organizations, + organization, + createOrganization, + updateOrganization, + deleteOrganization, +} from './organizations' +import type { StandardScenario } from './organizations.scenarios' + +// Generated boilerplate tests do not account for all circumstances +// and can fail without adjustments, e.g. Float. +// Please refer to the RedwoodJS Testing Docs: +// https://redwoodjs.com/docs/testing#testing-services +// https://redwoodjs.com/docs/testing#jest-expect-type-considerations + +describe('organizations', () => { + scenario('returns all organizations', async (scenario: StandardScenario) => { + const result = await organizations() + + expect(result.length).toEqual(Object.keys(scenario.organization).length) + }) + + scenario( + 'returns a single organization', + async (scenario: StandardScenario) => { + const result = await organization({ id: scenario.organization.one.id }) + + expect(result).toEqual(scenario.organization.one) + } + ) + + scenario('creates a organization', async () => { + const result = await createOrganization({ + input: { name: 'String' }, + }) + + expect(result.name).toEqual('String') + }) + + scenario('updates a organization', async (scenario: StandardScenario) => { + const original = (await organization({ + id: scenario.organization.one.id, + })) as Organization + const result = await updateOrganization({ + id: original.id, + input: { name: 'String2' }, + }) + + expect(result.name).toEqual('String2') + }) + + scenario('deletes a organization', async (scenario: StandardScenario) => { + const original = (await deleteOrganization({ + id: scenario.organization.one.id, + })) as Organization + const result = await organization({ id: original.id }) + + expect(result).toEqual(null) + }) +}) diff --git a/api/src/services/organizations/organizations.ts b/api/src/services/organizations/organizations.ts new file mode 100644 index 00000000..fddcc571 --- /dev/null +++ b/api/src/services/organizations/organizations.ts @@ -0,0 +1,49 @@ +import type { + QueryResolvers, + MutationResolvers, + OrganizationRelationResolvers, +} from 'types/graphql' + +import { db } from 'src/lib/db' + +export const organizations: QueryResolvers['organizations'] = () => { + return db.organization.findMany() +} + +export const organization: QueryResolvers['organization'] = ({ id }) => { + return db.organization.findUnique({ + where: { id }, + }) +} + +export const createOrganization: MutationResolvers['createOrganization'] = ({ + input, +}) => { + return db.organization.create({ + data: input, + }) +} + +export const updateOrganization: MutationResolvers['updateOrganization'] = ({ + id, + input, +}) => { + return db.organization.update({ + data: input, + where: { id }, + }) +} + +export const deleteOrganization: MutationResolvers['deleteOrganization'] = ({ + id, +}) => { + return db.organization.delete({ + where: { id }, + }) +} + +export const Organization: OrganizationRelationResolvers = { + agencies: (_obj, { root }) => { + return db.organization.findUnique({ where: { id: root?.id } }).agencies() + }, +} diff --git a/api/types/graphql.d.ts b/api/types/graphql.d.ts index d4efc63b..067831f0 100644 --- a/api/types/graphql.d.ts +++ b/api/types/graphql.d.ts @@ -1,6 +1,6 @@ import { Prisma } from "@prisma/client" import { MergePrismaWithSdlTypes, MakeRelationsOptional } from '@redwoodjs/api' -import { access_tokens as Prismaaccess_tokens, agencies as Prismaagencies, arpa_subrecipients as Prismaarpa_subrecipients, period_summaries as Prismaperiod_summaries, projects as Prismaprojects, reporting_periods as Prismareporting_periods, roles as Prismaroles, tenants as Prismatenants, uploads as Prismauploads, users as Prismausers } from '@prisma/client' +import { Agency as PrismaAgency, Organization as PrismaOrganization } from '@prisma/client' import { GraphQLResolveInfo, GraphQLScalarType, GraphQLScalarTypeConfig } from 'graphql'; import { RedwoodGraphQLContext } from '@redwoodjs/graphql-server/dist/types'; export type Maybe = T | null; @@ -12,6 +12,7 @@ export type ResolverFn = ( args?: TArgs, obj?: { root: TParent; context: TContext; info: GraphQLResolveInfo } ) => TResult | Promise +export type RequireFields = Omit & { [P in K]-?: NonNullable }; export type OptArgsResolverFn = ( args?: TArgs, obj?: { root: TParent; context: TContext; info: GraphQLResolveInfo } @@ -36,13 +37,104 @@ export type Scalars = { Time: Date | string; }; +export type Agency = { + __typename?: 'Agency'; + abbreviation?: Maybe; + code: Scalars['String']; + id: Scalars['Int']; + name: Scalars['String']; + organizationId: Scalars['Int']; +}; + +export type CreateAgencyInput = { + abbreviation?: InputMaybe; + code: Scalars['String']; + name: Scalars['String']; +}; + +export type CreateOrganizationInput = { + name: Scalars['String']; +}; + +export type Mutation = { + __typename?: 'Mutation'; + createAgency: Agency; + createOrganization: Organization; + deleteAgency: Agency; + deleteOrganization: Organization; + updateAgency: Agency; + updateOrganization: Organization; +}; + + +export type MutationcreateAgencyArgs = { + input: CreateAgencyInput; +}; + + +export type MutationcreateOrganizationArgs = { + input: CreateOrganizationInput; +}; + + +export type MutationdeleteAgencyArgs = { + id: Scalars['Int']; +}; + + +export type MutationdeleteOrganizationArgs = { + id: Scalars['Int']; +}; + + +export type MutationupdateAgencyArgs = { + id: Scalars['Int']; + input: UpdateAgencyInput; +}; + + +export type MutationupdateOrganizationArgs = { + id: Scalars['Int']; + input: UpdateOrganizationInput; +}; + +export type Organization = { + __typename?: 'Organization'; + agencies: Array>; + id: Scalars['Int']; + name: Scalars['String']; +}; + /** About the Redwood queries. */ export type Query = { __typename?: 'Query'; + agencies: Array; + agenciesByOrganization: Array; + agency?: Maybe; + organization?: Maybe; + organizations: Array; /** Fetches the Redwood root schema. */ redwood?: Maybe; }; + +/** About the Redwood queries. */ +export type QueryagenciesByOrganizationArgs = { + organizationId: Scalars['Int']; +}; + + +/** About the Redwood queries. */ +export type QueryagencyArgs = { + id: Scalars['Int']; +}; + + +/** About the Redwood queries. */ +export type QueryorganizationArgs = { + id: Scalars['Int']; +}; + /** * The RedwoodJS Root Schema * @@ -58,8 +150,18 @@ export type Redwood = { version?: Maybe; }; +export type UpdateAgencyInput = { + abbreviation?: InputMaybe; + code?: InputMaybe; + name?: InputMaybe; +}; + +export type UpdateOrganizationInput = { + name?: InputMaybe; +}; + type MaybeOrArrayOfMaybe = T | Maybe | Maybe[]; -type AllMappedModels = MaybeOrArrayOfMaybe<> +type AllMappedModels = MaybeOrArrayOfMaybe export type ResolverTypeWrapper = Promise | T; @@ -120,30 +222,46 @@ export type DirectiveResolverFn, AllMappedModels>>; BigInt: ResolverTypeWrapper; Boolean: ResolverTypeWrapper; + CreateAgencyInput: CreateAgencyInput; + CreateOrganizationInput: CreateOrganizationInput; Date: ResolverTypeWrapper; DateTime: ResolverTypeWrapper; + Int: ResolverTypeWrapper; JSON: ResolverTypeWrapper; JSONObject: ResolverTypeWrapper; + Mutation: ResolverTypeWrapper<{}>; + Organization: ResolverTypeWrapper, AllMappedModels>>; Query: ResolverTypeWrapper<{}>; Redwood: ResolverTypeWrapper; String: ResolverTypeWrapper; Time: ResolverTypeWrapper; + UpdateAgencyInput: UpdateAgencyInput; + UpdateOrganizationInput: UpdateOrganizationInput; }; /** Mapping between all available schema types and the resolvers parents */ export type ResolversParentTypes = { + Agency: MergePrismaWithSdlTypes, AllMappedModels>; BigInt: Scalars['BigInt']; Boolean: Scalars['Boolean']; + CreateAgencyInput: CreateAgencyInput; + CreateOrganizationInput: CreateOrganizationInput; Date: Scalars['Date']; DateTime: Scalars['DateTime']; + Int: Scalars['Int']; JSON: Scalars['JSON']; JSONObject: Scalars['JSONObject']; + Mutation: {}; + Organization: MergePrismaWithSdlTypes, AllMappedModels>; Query: {}; Redwood: Redwood; String: Scalars['String']; Time: Scalars['Time']; + UpdateAgencyInput: UpdateAgencyInput; + UpdateOrganizationInput: UpdateOrganizationInput; }; export type requireAuthDirectiveArgs = { @@ -156,6 +274,24 @@ export type skipAuthDirectiveArgs = { }; export type skipAuthDirectiveResolver = DirectiveResolverFn; +export type AgencyResolvers = { + abbreviation: OptArgsResolverFn, ParentType, ContextType>; + code: OptArgsResolverFn; + id: OptArgsResolverFn; + name: OptArgsResolverFn; + organizationId: OptArgsResolverFn; + __isTypeOf?: IsTypeOfResolverFn; +}; + +export type AgencyRelationResolvers = { + abbreviation?: RequiredResolverFn, ParentType, ContextType>; + code?: RequiredResolverFn; + id?: RequiredResolverFn; + name?: RequiredResolverFn; + organizationId?: RequiredResolverFn; + __isTypeOf?: IsTypeOfResolverFn; +}; + export interface BigIntScalarConfig extends GraphQLScalarTypeConfig { name: 'BigInt'; } @@ -176,11 +312,53 @@ export interface JSONObjectScalarConfig extends GraphQLScalarTypeConfig = { + createAgency: Resolver>; + createOrganization: Resolver>; + deleteAgency: Resolver>; + deleteOrganization: Resolver>; + updateAgency: Resolver>; + updateOrganization: Resolver>; +}; + +export type MutationRelationResolvers = { + createAgency?: RequiredResolverFn>; + createOrganization?: RequiredResolverFn>; + deleteAgency?: RequiredResolverFn>; + deleteOrganization?: RequiredResolverFn>; + updateAgency?: RequiredResolverFn>; + updateOrganization?: RequiredResolverFn>; +}; + +export type OrganizationResolvers = { + agencies: OptArgsResolverFn>, ParentType, ContextType>; + id: OptArgsResolverFn; + name: OptArgsResolverFn; + __isTypeOf?: IsTypeOfResolverFn; +}; + +export type OrganizationRelationResolvers = { + agencies?: RequiredResolverFn>, ParentType, ContextType>; + id?: RequiredResolverFn; + name?: RequiredResolverFn; + __isTypeOf?: IsTypeOfResolverFn; +}; + export type QueryResolvers = { + agencies: OptArgsResolverFn, ParentType, ContextType>; + agenciesByOrganization: Resolver, ParentType, ContextType, RequireFields>; + agency: Resolver, ParentType, ContextType, RequireFields>; + organization: Resolver, ParentType, ContextType, RequireFields>; + organizations: OptArgsResolverFn, ParentType, ContextType>; redwood: OptArgsResolverFn, ParentType, ContextType>; }; export type QueryRelationResolvers = { + agencies?: RequiredResolverFn, ParentType, ContextType>; + agenciesByOrganization?: RequiredResolverFn, ParentType, ContextType, RequireFields>; + agency?: RequiredResolverFn, ParentType, ContextType, RequireFields>; + organization?: RequiredResolverFn, ParentType, ContextType, RequireFields>; + organizations?: RequiredResolverFn, ParentType, ContextType>; redwood?: RequiredResolverFn, ParentType, ContextType>; }; @@ -203,11 +381,14 @@ export interface TimeScalarConfig extends GraphQLScalarTypeConfig = { + Agency: AgencyResolvers; BigInt: GraphQLScalarType; Date: GraphQLScalarType; DateTime: GraphQLScalarType; JSON: GraphQLScalarType; JSONObject: GraphQLScalarType; + Mutation: MutationResolvers; + Organization: OrganizationResolvers; Query: QueryResolvers; Redwood: RedwoodResolvers; Time: GraphQLScalarType; diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 00000000..08f58865 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,122 @@ +# README + +Welcome to [RedwoodJS](https://redwoodjs.com)! + +> **Prerequisites** +> +> - Redwood requires [Node.js](https://nodejs.org/en/) (=18.x) and [Yarn](https://yarnpkg.com/) (>=1.15) +> - Are you on Windows? For best results, follow our [Windows development setup](https://redwoodjs.com/docs/how-to/windows-development-setup) guide + +Start by installing dependencies: + +``` +yarn install +``` + +Then start the development server: + +``` +yarn redwood dev +``` + +Your browser should automatically open to [http://localhost:8910](http://localhost:8910) where you'll see the Welcome Page, which links out to many great resources. + +> **The Redwood CLI** +> +> Congratulations on running your first Redwood CLI command! From dev to deploy, the CLI is with you the whole way. And there's quite a few commands at your disposal: +> +> ``` +> yarn redwood --help +> ``` +> +> For all the details, see the [CLI reference](https://redwoodjs.com/docs/cli-commands). + +## Prisma and the database + +Redwood wouldn't be a full-stack framework without a database. It all starts with the schema. Open the [`schema.prisma`](api/db/schema.prisma) file in `api/db` and replace the `UserExample` model with the following `Post` model: + +```prisma +model Post { + id Int @id @default(autoincrement()) + title String + body String + createdAt DateTime @default(now()) +} +``` + +Redwood uses [Prisma](https://www.prisma.io/), a next-gen Node.js and TypeScript ORM, to talk to the database. Prisma's schema offers a declarative way of defining your app's data models. And Prisma [Migrate](https://www.prisma.io/migrate) uses that schema to make database migrations hassle-free: + +``` +yarn rw prisma migrate dev + +# ... + +? Enter a name for the new migration: › create posts +``` + +> `rw` is short for `redwood` + +You'll be prompted for the name of your migration. `create posts` will do. + +Now let's generate everything we need to perform all the CRUD (Create, Retrieve, Update, Delete) actions on our `Post` model: + +``` +yarn redwood generate scaffold post +``` + +Navigate to [http://localhost:8910/posts/new](http://localhost:8910/posts/new), fill in the title and body, and click "Save". + +Did we just create a post in the database? Yup! With `yarn rw generate scaffold `, Redwood created all the pages, components, and services necessary to perform all CRUD actions on our posts table. + +## Frontend first with Storybook + +Don't know what your data models look like? That's more than ok—Redwood integrates Storybook so that you can work on design without worrying about data. Mockup, build, and verify your React components, even in complete isolation from the backend: + +``` +yarn rw storybook +``` + +Seeing "Couldn't find any stories"? That's because you need a `*.stories.{tsx,jsx}` file. The Redwood CLI makes getting one easy enough—try generating a [Cell](https://redwoodjs.com/docs/cells), Redwood's data-fetching abstraction: + +``` +yarn rw generate cell examplePosts +``` + +The Storybook server should hot reload and now you'll have four stories to work with. They'll probably look a little bland since there's no styling. See if the Redwood CLI's `setup ui` command has your favorite styling library: + +``` +yarn rw setup ui --help +``` + +## Testing with Jest + +It'd be hard to scale from side project to startup without a few tests. Redwood fully integrates Jest with both the front- and back-ends, and makes it easy to keep your whole app covered by generating test files with all your components and services: + +``` +yarn rw test +``` + +To make the integration even more seamless, Redwood augments Jest with database [scenarios](https://redwoodjs.com/docs/testing#scenarios) and [GraphQL mocking](https://redwoodjs.com/docs/testing#mocking-graphql-calls). + +## Ship it + +Redwood is designed for both serverless deploy targets like Netlify and Vercel and serverful deploy targets like Render and AWS: + +``` +yarn rw setup deploy --help +``` + +Don't go live without auth! Lock down your app with Redwood's built-in, database-backed authentication system ([dbAuth](https://redwoodjs.com/docs/authentication#self-hosted-auth-installation-and-setup)), or integrate with nearly a dozen third-party auth providers: + +``` +yarn rw setup auth --help +``` + +## Next Steps + +The best way to learn Redwood is by going through the comprehensive [tutorial](https://redwoodjs.com/docs/tutorial/foreword) and joining the community (via the [Discourse forum](https://community.redwoodjs.com) or the [Discord server](https://discord.gg/redwoodjs)). + +## Quick Links + +- Stay updated: read [Forum announcements](https://community.redwoodjs.com/c/announcements/5), follow us on [Twitter](https://twitter.com/redwoodjs), and subscribe to the [newsletter](https://redwoodjs.com/newsletter) +- [Learn how to contribute](https://redwoodjs.com/docs/contributing) diff --git a/package.json b/package.json index 1fae123f..0950844c 100644 --- a/package.json +++ b/package.json @@ -15,12 +15,15 @@ "root": true }, "engines": { - "node": "=18.x", - "yarn": ">=1.15" + "node": "18.18.2", + "yarn": "1.22.19" }, "prisma": { "seed": "yarn rw exec seed" }, + "dependencies": { + "fsevents": "^2.3.3" + }, "packageManager": "yarn@3.7.0", "version": "3.7.0" } diff --git a/prettier.config.js b/prettier.config.js index 45058f7a..83e7c0c4 100644 --- a/prettier.config.js +++ b/prettier.config.js @@ -15,4 +15,5 @@ module.exports = { }, }, ], + plugins: [], } diff --git a/redwood.toml b/redwood.toml index 654f4361..06e02d74 100644 --- a/redwood.toml +++ b/redwood.toml @@ -9,8 +9,11 @@ bundler = "webpack" title = "Redwood App" port = 8910 - apiUrl = "${API_URL:/.redwood/functions}" - includeEnvironmentVariables = [] + apiUrl = "/.redwood/functions" # You can customize graphql and dbauth urls individually too: see https://redwoodjs.com/docs/app-configuration-redwood-toml#api-paths + includeEnvironmentVariables = [ + # Add any ENV vars that should be available to the web side to this array + # See https://redwoodjs.com/docs/environment-variables#web + ] [api] port = 8911 diff --git a/web/config/postcss.config.js b/web/config/postcss.config.js new file mode 100644 index 00000000..04d4dd20 --- /dev/null +++ b/web/config/postcss.config.js @@ -0,0 +1,5 @@ +const path = require('path') + +module.exports = { + plugins: [], +} diff --git a/web/package.json b/web/package.json index 3ad72cf0..666da2e9 100644 --- a/web/package.json +++ b/web/package.json @@ -14,13 +14,21 @@ "@redwoodjs/forms": "6.4.2", "@redwoodjs/router": "6.4.2", "@redwoodjs/web": "6.4.2", + "bootstrap": "^5.3.2", + "humanize-string": "2.1.0", "prop-types": "15.8.1", "react": "18.2.0", + "react-bootstrap": "^2.9.1", "react-dom": "18.2.0" }, "devDependencies": { "@redwoodjs/vite": "6.4.2", "@types/react": "18.2.39", - "@types/react-dom": "18.2.17" + "@types/react-dom": "18.2.17", + "autoprefixer": "^10.4.16", + "postcss": "^8.4.31", + "postcss-loader": "^7.3.3", + "sass": "^1.69.5", + "sass-loader": "^13.3.2" } } diff --git a/web/src/App.tsx b/web/src/App.tsx index 97fb5e02..54dc7e38 100644 --- a/web/src/App.tsx +++ b/web/src/App.tsx @@ -4,7 +4,7 @@ import { RedwoodApolloProvider } from '@redwoodjs/web/apollo' import FatalErrorPage from 'src/pages/FatalErrorPage' import Routes from 'src/Routes' -import './index.css' +import './scss/custom.scss' const App = () => ( diff --git a/web/src/Routes.tsx b/web/src/Routes.tsx index 2c8f02ab..2aa4d0df 100644 --- a/web/src/Routes.tsx +++ b/web/src/Routes.tsx @@ -7,11 +7,29 @@ // 'src/pages/HomePage/HomePage.js' -> HomePage // 'src/pages/Admin/BooksPage/BooksPage.js' -> AdminBooksPage -import { Router, Route } from '@redwoodjs/router' +import { Set, Router, Route } from '@redwoodjs/router' + +import ScaffoldLayout from 'src/layouts/ScaffoldLayout' const Routes = () => { return ( + + + + + + + {/* TODO: change to this Set after implementing user authentication */} + {/* */} + {/* */} + + + + + + + ) diff --git a/web/src/components/Agency/Agencies/Agencies.tsx b/web/src/components/Agency/Agencies/Agencies.tsx new file mode 100644 index 00000000..3fba17e0 --- /dev/null +++ b/web/src/components/Agency/Agencies/Agencies.tsx @@ -0,0 +1,43 @@ +import Button from 'react-bootstrap/Button' +import Table from 'react-bootstrap/Table' +import type { FindAgencies } from 'types/graphql' + +import { Link, routes } from '@redwoodjs/router' + +import { truncate } from 'src/lib/formatters' + +const AgenciesList = ({ agencies }: FindAgencies) => { + return ( + + + + + + + + + + {agencies.map((agency) => ( + + + + + + ))} + +
Agency CodeNameActions
{truncate(agency.code)}{truncate(agency.name)} + +
+ ) +} + +export default AgenciesList diff --git a/web/src/components/Agency/AgenciesCell/AgenciesCell.tsx b/web/src/components/Agency/AgenciesCell/AgenciesCell.tsx new file mode 100644 index 00000000..1df45b4c --- /dev/null +++ b/web/src/components/Agency/AgenciesCell/AgenciesCell.tsx @@ -0,0 +1,40 @@ +import type { FindAgenciesByOrganizationId } from 'types/graphql' + +import { Link, routes } from '@redwoodjs/router' +import type { CellSuccessProps, CellFailureProps } from '@redwoodjs/web' + +import Agencies from 'src/components/Agency/Agencies' + +export const QUERY = gql` + query FindAgenciesByOrganizationId($organizationId: Int!) { + agenciesByOrganization(organizationId: $organizationId) { + id + name + abbreviation + code + } + } +` + +export const Loading = () =>
Loading...
+ +export const Empty = () => { + return ( +
+ {'No agencies yet. '} + + {'Create one?'} + +
+ ) +} + +export const Failure = ({ error }: CellFailureProps) => ( +
{error?.message}
+) + +export const Success = ({ + agenciesByOrganization, +}: CellSuccessProps) => { + return +} diff --git a/web/src/components/Agency/Agency/Agency.tsx b/web/src/components/Agency/Agency/Agency.tsx new file mode 100644 index 00000000..20787083 --- /dev/null +++ b/web/src/components/Agency/Agency/Agency.tsx @@ -0,0 +1,87 @@ +import type { + DeleteAgencyMutationVariables, + FindAgencyById, +} from 'types/graphql' + +import { Link, routes, navigate } from '@redwoodjs/router' +import { useMutation } from '@redwoodjs/web' +import { toast } from '@redwoodjs/web/toast' + +const DELETE_AGENCY_MUTATION = gql` + mutation DeleteAgencyMutation($id: Int!) { + deleteAgency(id: $id) { + id + } + } +` + +interface Props { + agency: NonNullable +} + +const Agency = ({ agency }: Props) => { + const [deleteAgency] = useMutation(DELETE_AGENCY_MUTATION, { + onCompleted: () => { + toast.success('Agency deleted') + navigate(routes.agencies()) + }, + onError: (error) => { + toast.error(error.message) + }, + }) + + const onDeleteClick = (id: DeleteAgencyMutationVariables['id']) => { + if (confirm('Are you sure you want to delete agency ' + id + '?')) { + deleteAgency({ variables: { id } }) + } + } + + return ( + <> +
+
+

+ Agency {agency.id} Detail +

+
+ + + + + + + + + + + + + + + + + + + +
Id{agency.id}
Name{agency.name}
Abbreviation{agency.abbreviation}
Code{agency.code}
+
+ + + ) +} + +export default Agency diff --git a/web/src/components/Agency/AgencyCell/AgencyCell.tsx b/web/src/components/Agency/AgencyCell/AgencyCell.tsx new file mode 100644 index 00000000..08d0254d --- /dev/null +++ b/web/src/components/Agency/AgencyCell/AgencyCell.tsx @@ -0,0 +1,28 @@ +import type { FindAgencyById } from 'types/graphql' + +import type { CellSuccessProps, CellFailureProps } from '@redwoodjs/web' + +import Agency from 'src/components/Agency/Agency' + +export const QUERY = gql` + query FindAgencyById($id: Int!) { + agency: agency(id: $id) { + id + name + abbreviation + code + } + } +` + +export const Loading = () =>
Loading...
+ +export const Empty = () =>
Agency not found
+ +export const Failure = ({ error }: CellFailureProps) => ( +
{error?.message}
+) + +export const Success = ({ agency }: CellSuccessProps) => { + return +} diff --git a/web/src/components/Agency/AgencyForm/AgencyForm.tsx b/web/src/components/Agency/AgencyForm/AgencyForm.tsx new file mode 100644 index 00000000..75fb30bd --- /dev/null +++ b/web/src/components/Agency/AgencyForm/AgencyForm.tsx @@ -0,0 +1,124 @@ +import { Button } from 'react-bootstrap' +import { useForm, UseFormReturn } from 'react-hook-form' +import type { EditAgencyById, UpdateAgencyInput } from 'types/graphql' + +import { + Form, + FormError, + FieldError, + Label, + TextField, + Submit, +} from '@redwoodjs/forms' +import type { RWGqlError } from '@redwoodjs/forms' + +type FormAgency = NonNullable + +interface AgencyFormProps { + agency?: EditAgencyById['agency'] + onSave: (data: UpdateAgencyInput, id?: FormAgency['id']) => void + error: RWGqlError + loading: boolean +} + +const AgencyForm = (props: AgencyFormProps) => { + const { agency, onSave, error, loading } = props + const formMethods: UseFormReturn = useForm() + const hasErrors = Object.keys(formMethods.formState.errors).length > 0 + + // Resets the form to the previous values when editing the existing agency + // Clears out the form when creating a new agency + const onReset = () => { + formMethods.reset() + } + + const onSubmit = (data: FormAgency) => { + onSave(data, props?.agency?.id) + } + + return ( + + onSubmit={onSubmit} + formMethods={formMethods} + error={error} + className={hasErrors ? 'was-validated' : ''} + > + {agency && ( +
+ +
+ +
+
+ )} + + + +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ +
+
+ + Save + + +
+
+ + ) +} + +export default AgencyForm diff --git a/web/src/components/Agency/EditAgencyCell/EditAgencyCell.tsx b/web/src/components/Agency/EditAgencyCell/EditAgencyCell.tsx new file mode 100644 index 00000000..89e14185 --- /dev/null +++ b/web/src/components/Agency/EditAgencyCell/EditAgencyCell.tsx @@ -0,0 +1,73 @@ +import type { EditAgencyById, UpdateAgencyInput } from 'types/graphql' + +import { navigate, routes } from '@redwoodjs/router' +import type { CellSuccessProps, CellFailureProps } from '@redwoodjs/web' +import { useMutation } from '@redwoodjs/web' +import { toast } from '@redwoodjs/web/toast' + +import AgencyForm from 'src/components/Agency/AgencyForm' + +export const QUERY = gql` + query EditAgencyById($id: Int!) { + agency: agency(id: $id) { + id + name + abbreviation + code + } + } +` +const UPDATE_AGENCY_MUTATION = gql` + mutation UpdateAgencyMutation($id: Int!, $input: UpdateAgencyInput!) { + updateAgency(id: $id, input: $input) { + id + name + abbreviation + code + } + } +` + +export const Loading = () =>
Loading...
+ +export const Failure = ({ error }: CellFailureProps) => ( +
{error?.message}
+) + +export const Success = ({ agency }: CellSuccessProps) => { + const [updateAgency, { loading, error }] = useMutation( + UPDATE_AGENCY_MUTATION, + { + onCompleted: () => { + toast.success('Agency updated') + navigate(routes.agencies()) + }, + onError: (error) => { + toast.error(error.message) + }, + } + ) + + const onSave = ( + input: UpdateAgencyInput, + id: EditAgencyById['agency']['id'] + ) => { + updateAgency({ variables: { id, input } }) + } + + return ( +
+
+

{agency?.name}

+
+
+ +
+
+ ) +} diff --git a/web/src/components/Agency/NewAgency/NewAgency.tsx b/web/src/components/Agency/NewAgency/NewAgency.tsx new file mode 100644 index 00000000..c99029ae --- /dev/null +++ b/web/src/components/Agency/NewAgency/NewAgency.tsx @@ -0,0 +1,47 @@ +import type { CreateAgencyInput } from 'types/graphql' + +import { navigate, routes } from '@redwoodjs/router' +import { useMutation } from '@redwoodjs/web' +import { toast } from '@redwoodjs/web/toast' + +import AgencyForm from 'src/components/Agency/AgencyForm' + +const CREATE_AGENCY_MUTATION = gql` + mutation CreateAgencyMutation($input: CreateAgencyInput!) { + createAgency(input: $input) { + id + } + } +` + +const NewAgency = () => { + const [createAgency, { loading, error }] = useMutation( + CREATE_AGENCY_MUTATION, + { + onCompleted: () => { + toast.success('Agency created') + navigate(routes.agencies()) + }, + onError: (error) => { + toast.error(error.message) + }, + } + ) + + const onSave = (input: CreateAgencyInput) => { + createAgency({ variables: { input } }) + } + + return ( +
+
+

Agency

+
+
+ +
+
+ ) +} + +export default NewAgency diff --git a/web/src/components/Organization/EditOrganizationCell/EditOrganizationCell.tsx b/web/src/components/Organization/EditOrganizationCell/EditOrganizationCell.tsx new file mode 100644 index 00000000..48e87cb4 --- /dev/null +++ b/web/src/components/Organization/EditOrganizationCell/EditOrganizationCell.tsx @@ -0,0 +1,79 @@ +import type { + EditOrganizationById, + UpdateOrganizationInput, +} from 'types/graphql' + +import { navigate, routes } from '@redwoodjs/router' +import type { CellSuccessProps, CellFailureProps } from '@redwoodjs/web' +import { useMutation } from '@redwoodjs/web' +import { toast } from '@redwoodjs/web/toast' + +import OrganizationForm from 'src/components/Organization/OrganizationForm' + +export const QUERY = gql` + query EditOrganizationById($id: Int!) { + organization: organization(id: $id) { + id + name + } + } +` +const UPDATE_ORGANIZATION_MUTATION = gql` + mutation UpdateOrganizationMutation( + $id: Int! + $input: UpdateOrganizationInput! + ) { + updateOrganization(id: $id, input: $input) { + id + name + } + } +` + +export const Loading = () =>
Loading...
+ +export const Failure = ({ error }: CellFailureProps) => ( +
{error?.message}
+) + +export const Success = ({ + organization, +}: CellSuccessProps) => { + const [updateOrganization, { loading, error }] = useMutation( + UPDATE_ORGANIZATION_MUTATION, + { + onCompleted: () => { + toast.success('Organization updated') + navigate(routes.organizations()) + }, + onError: (error) => { + toast.error(error.message) + }, + } + ) + + const onSave = ( + input: UpdateOrganizationInput, + id: EditOrganizationById['organization']['id'] + ) => { + updateOrganization({ variables: { id, input } }) + } + + return ( +
+
+

+ {organization?.name} +

+
+
+ +
+
+ ) +} diff --git a/web/src/components/Organization/NewOrganization/NewOrganization.tsx b/web/src/components/Organization/NewOrganization/NewOrganization.tsx new file mode 100644 index 00000000..46b093c9 --- /dev/null +++ b/web/src/components/Organization/NewOrganization/NewOrganization.tsx @@ -0,0 +1,47 @@ +import type { CreateOrganizationInput } from 'types/graphql' + +import { navigate, routes } from '@redwoodjs/router' +import { useMutation } from '@redwoodjs/web' +import { toast } from '@redwoodjs/web/toast' + +import OrganizationForm from 'src/components/Organization/OrganizationForm' + +const CREATE_ORGANIZATION_MUTATION = gql` + mutation CreateOrganizationMutation($input: CreateOrganizationInput!) { + createOrganization(input: $input) { + id + } + } +` + +const NewOrganization = () => { + const [createOrganization, { loading, error }] = useMutation( + CREATE_ORGANIZATION_MUTATION, + { + onCompleted: () => { + toast.success('Organization created') + navigate(routes.organizations()) + }, + onError: (error) => { + toast.error(error.message) + }, + } + ) + + const onSave = (input: CreateOrganizationInput) => { + createOrganization({ variables: { input } }) + } + + return ( +
+
+

Organization

+
+
+ +
+
+ ) +} + +export default NewOrganization diff --git a/web/src/components/Organization/Organization/Organization.tsx b/web/src/components/Organization/Organization/Organization.tsx new file mode 100644 index 00000000..b243ca90 --- /dev/null +++ b/web/src/components/Organization/Organization/Organization.tsx @@ -0,0 +1,79 @@ +import type { + DeleteOrganizationMutationVariables, + FindOrganizationById, +} from 'types/graphql' + +import { Link, routes, navigate } from '@redwoodjs/router' +import { useMutation } from '@redwoodjs/web' +import { toast } from '@redwoodjs/web/toast' + +const DELETE_ORGANIZATION_MUTATION = gql` + mutation DeleteOrganizationMutation($id: Int!) { + deleteOrganization(id: $id) { + id + } + } +` + +interface Props { + organization: NonNullable +} + +const Organization = ({ organization }: Props) => { + const [deleteOrganization] = useMutation(DELETE_ORGANIZATION_MUTATION, { + onCompleted: () => { + toast.success('Organization deleted') + navigate(routes.organizations()) + }, + onError: (error) => { + toast.error(error.message) + }, + }) + + const onDeleteClick = (id: DeleteOrganizationMutationVariables['id']) => { + if (confirm('Are you sure you want to delete organization ' + id + '?')) { + deleteOrganization({ variables: { id } }) + } + } + + return ( + <> +
+
+

+ Organization {organization.id} Detail +

+
+ + + + + + + + + + + +
Id{organization.id}
Name{organization.name}
+
+ + + ) +} + +export default Organization diff --git a/web/src/components/Organization/OrganizationCell/OrganizationCell.tsx b/web/src/components/Organization/OrganizationCell/OrganizationCell.tsx new file mode 100644 index 00000000..fd9f9771 --- /dev/null +++ b/web/src/components/Organization/OrganizationCell/OrganizationCell.tsx @@ -0,0 +1,28 @@ +import type { FindOrganizationById } from 'types/graphql' + +import type { CellSuccessProps, CellFailureProps } from '@redwoodjs/web' + +import Organization from 'src/components/Organization/Organization' + +export const QUERY = gql` + query FindOrganizationById($id: Int!) { + organization: organization(id: $id) { + id + name + } + } +` + +export const Loading = () =>
Loading...
+ +export const Empty = () =>
Organization not found
+ +export const Failure = ({ error }: CellFailureProps) => ( +
{error?.message}
+) + +export const Success = ({ + organization, +}: CellSuccessProps) => { + return +} diff --git a/web/src/components/Organization/OrganizationForm/OrganizationForm.tsx b/web/src/components/Organization/OrganizationForm/OrganizationForm.tsx new file mode 100644 index 00000000..0c07c233 --- /dev/null +++ b/web/src/components/Organization/OrganizationForm/OrganizationForm.tsx @@ -0,0 +1,101 @@ +import { Button } from 'react-bootstrap' +import { useForm, UseFormReturn } from 'react-hook-form' +import type { + EditOrganizationById, + UpdateOrganizationInput, +} from 'types/graphql' + +import { + Form, + FormError, + FieldError, + Label, + TextField, + Submit, +} from '@redwoodjs/forms' +import type { RWGqlError } from '@redwoodjs/forms' + +type FormOrganization = NonNullable + +interface OrganizationFormProps { + organization?: EditOrganizationById['organization'] + onSave: (data: UpdateOrganizationInput, id?: FormOrganization['id']) => void + error: RWGqlError + loading: boolean +} + +const OrganizationForm = (props: OrganizationFormProps) => { + const { organization, error, loading } = props + const formMethods: UseFormReturn = + useForm() + const hasErrors = Object.keys(formMethods.formState.errors).length > 0 + + const onReset = () => { + formMethods.reset() + } + + const onSubmit = (data: FormOrganization) => { + props.onSave(data, props?.organization?.id) + } + + return ( + + onSubmit={onSubmit} + formMethods={formMethods} + error={error} + className={hasErrors ? 'was-validated' : ''} + > + {organization && ( +
+ +
+ +
+
+ )} + +
+ +
+ +
+ +
+
+
+ + Save + + +
+
+ + ) +} + +export default OrganizationForm diff --git a/web/src/components/Organization/Organizations/Organizations.tsx b/web/src/components/Organization/Organizations/Organizations.tsx new file mode 100644 index 00000000..2c1e0731 --- /dev/null +++ b/web/src/components/Organization/Organizations/Organizations.tsx @@ -0,0 +1,47 @@ +import Button from 'react-bootstrap/Button' +import Table from 'react-bootstrap/Table' +import type { FindOrganizations } from 'types/graphql' + +import { Link, routes } from '@redwoodjs/router' + +import { truncate } from 'src/lib/formatters' + +const OrganizationsList = ({ organizations }: FindOrganizations) => { + return ( + + + + + + + + + + {organizations.map((organization) => ( + + + + + + ))} + +
IdNameActions
+ {truncate(organization.id)} + + {truncate(organization.name)} + + +
+ ) +} + +export default OrganizationsList diff --git a/web/src/components/Organization/OrganizationsCell/OrganizationsCell.tsx b/web/src/components/Organization/OrganizationsCell/OrganizationsCell.tsx new file mode 100644 index 00000000..8823ff91 --- /dev/null +++ b/web/src/components/Organization/OrganizationsCell/OrganizationsCell.tsx @@ -0,0 +1,38 @@ +import type { FindOrganizations } from 'types/graphql' + +import { Link, routes } from '@redwoodjs/router' +import type { CellSuccessProps, CellFailureProps } from '@redwoodjs/web' + +import Organizations from 'src/components/Organization/Organizations' + +export const QUERY = gql` + query FindOrganizations { + organizations { + id + name + } + } +` + +export const Loading = () =>
Loading...
+ +export const Empty = () => { + return ( +
+ {'No organizations yet. '} + + {'Create one?'} + +
+ ) +} + +export const Failure = ({ error }: CellFailureProps) => ( +
{error?.message}
+) + +export const Success = ({ + organizations, +}: CellSuccessProps) => { + return +} diff --git a/web/src/index.css b/web/src/index.css index e69de29b..e2db4301 100644 --- a/web/src/index.css +++ b/web/src/index.css @@ -0,0 +1,14 @@ +/** + * START --- SETUP TAILWINDCSS EDIT + * + * `yarn rw setup ui tailwindcss` placed these directives here + * to inject Tailwind's styles into your CSS. + * For more information, see: https://tailwindcss.com/docs/installation + */ +/* @tailwind base; +@tailwind components; +@tailwind utilities; */ +/** + * END --- SETUP TAILWINDCSS EDIT + */ + diff --git a/web/src/layouts/ScaffoldLayout/ScaffoldLayout.tsx b/web/src/layouts/ScaffoldLayout/ScaffoldLayout.tsx new file mode 100644 index 00000000..b27fb869 --- /dev/null +++ b/web/src/layouts/ScaffoldLayout/ScaffoldLayout.tsx @@ -0,0 +1,17 @@ +import Container from 'react-bootstrap/Container' + +type LayoutProps = { + title: string + titleTo: string + children: React.ReactNode +} + +const ScaffoldLayout = ({ children }: LayoutProps) => { + return ( + +
{children}
+
+ ) +} + +export default ScaffoldLayout diff --git a/web/src/lib/formatters.test.tsx b/web/src/lib/formatters.test.tsx new file mode 100644 index 00000000..56593386 --- /dev/null +++ b/web/src/lib/formatters.test.tsx @@ -0,0 +1,192 @@ +import { render, waitFor, screen } from '@redwoodjs/testing/web' + +import { + formatEnum, + jsonTruncate, + truncate, + timeTag, + jsonDisplay, + checkboxInputTag, +} from './formatters' + +describe('formatEnum', () => { + it('handles nullish values', () => { + expect(formatEnum(null)).toEqual('') + expect(formatEnum('')).toEqual('') + expect(formatEnum(undefined)).toEqual('') + }) + + it('formats a list of values', () => { + expect( + formatEnum(['RED', 'ORANGE', 'YELLOW', 'GREEN', 'BLUE', 'VIOLET']) + ).toEqual('Red, Orange, Yellow, Green, Blue, Violet') + }) + + it('formats a single value', () => { + expect(formatEnum('DARK_BLUE')).toEqual('Dark blue') + }) + + it('returns an empty string for values of the wrong type (for JS projects)', () => { + // @ts-expect-error - Testing JS scenario + expect(formatEnum(5)).toEqual('') + }) +}) + +describe('truncate', () => { + it('truncates really long strings', () => { + expect(truncate('na '.repeat(1000) + 'batman').length).toBeLessThan(1000) + expect(truncate('na '.repeat(1000) + 'batman')).not.toMatch(/batman/) + }) + + it('does not modify short strings', () => { + expect(truncate('Short strinG')).toEqual('Short strinG') + }) + + it('adds ... to the end of truncated strings', () => { + expect(truncate('repeat'.repeat(1000))).toMatch(/\w\.\.\.$/) + }) + + it('accepts numbers', () => { + expect(truncate(123)).toEqual('123') + expect(truncate(0)).toEqual('0') + expect(truncate(0o000)).toEqual('0') + }) + + it('handles arguments of invalid type', () => { + // @ts-expect-error - Testing JS scenario + expect(truncate(false)).toEqual('false') + + expect(truncate(undefined)).toEqual('') + expect(truncate(null)).toEqual('') + }) +}) + +describe('jsonTruncate', () => { + it('truncates large json structures', () => { + expect( + jsonTruncate({ + foo: 'foo', + bar: 'bar', + baz: 'baz', + kittens: 'kittens meow', + bazinga: 'Sheldon', + nested: { + foobar: 'I have no imagination', + two: 'Second nested item', + }, + five: 5, + bool: false, + }) + ).toMatch(/.+\n.+\w\.\.\.$/s) + }) +}) + +describe('timeTag', () => { + it('renders a date', async () => { + render(
{timeTag(new Date('1970-08-20').toUTCString())}
) + + await waitFor(() => screen.getByText(/1970.*00:00:00/)) + }) + + it('can take an empty input string', async () => { + expect(timeTag('')).toEqual('') + }) +}) + +describe('jsonDisplay', () => { + it('produces the correct output', () => { + expect( + jsonDisplay({ + title: 'TOML Example (but in JSON)', + database: { + data: [['delta', 'phi'], [3.14]], + enabled: true, + ports: [8000, 8001, 8002], + temp_targets: { + case: 72.0, + cpu: 79.5, + }, + }, + owner: { + dob: '1979-05-27T07:32:00-08:00', + name: 'Tom Preston-Werner', + }, + servers: { + alpha: { + ip: '10.0.0.1', + role: 'frontend', + }, + beta: { + ip: '10.0.0.2', + role: 'backend', + }, + }, + }) + ).toMatchInlineSnapshot(` +
+        
+          {
+        "title": "TOML Example (but in JSON)",
+        "database": {
+          "data": [
+            [
+              "delta",
+              "phi"
+            ],
+            [
+              3.14
+            ]
+          ],
+          "enabled": true,
+          "ports": [
+            8000,
+            8001,
+            8002
+          ],
+          "temp_targets": {
+            "case": 72,
+            "cpu": 79.5
+          }
+        },
+        "owner": {
+          "dob": "1979-05-27T07:32:00-08:00",
+          "name": "Tom Preston-Werner"
+        },
+        "servers": {
+          "alpha": {
+            "ip": "10.0.0.1",
+            "role": "frontend"
+          },
+          "beta": {
+            "ip": "10.0.0.2",
+            "role": "backend"
+          }
+        }
+      }
+        
+      
+ `) + }) +}) + +describe('checkboxInputTag', () => { + it('can be checked', () => { + render(checkboxInputTag(true)) + expect(screen.getByRole('checkbox')).toBeChecked() + }) + + it('can be unchecked', () => { + render(checkboxInputTag(false)) + expect(screen.getByRole('checkbox')).not.toBeChecked() + }) + + it('is disabled when checked', () => { + render(checkboxInputTag(true)) + expect(screen.getByRole('checkbox')).toBeDisabled() + }) + + it('is disabled when unchecked', () => { + render(checkboxInputTag(false)) + expect(screen.getByRole('checkbox')).toBeDisabled() + }) +}) diff --git a/web/src/lib/formatters.tsx b/web/src/lib/formatters.tsx new file mode 100644 index 00000000..8ab9e806 --- /dev/null +++ b/web/src/lib/formatters.tsx @@ -0,0 +1,58 @@ +import React from 'react' + +import humanize from 'humanize-string' + +const MAX_STRING_LENGTH = 150 + +export const formatEnum = (values: string | string[] | null | undefined) => { + let output = '' + + if (Array.isArray(values)) { + const humanizedValues = values.map((value) => humanize(value)) + output = humanizedValues.join(', ') + } else if (typeof values === 'string') { + output = humanize(values) + } + + return output +} + +export const jsonDisplay = (obj: unknown) => { + return ( +
+      {JSON.stringify(obj, null, 2)}
+    
+ ) +} + +export const truncate = (value: string | number) => { + let output = value?.toString() ?? '' + + if (output.length > MAX_STRING_LENGTH) { + output = output.substring(0, MAX_STRING_LENGTH) + '...' + } + + return output +} + +export const jsonTruncate = (obj: unknown) => { + return truncate(JSON.stringify(obj, null, 2)) +} + +export const timeTag = (dateTime?: string) => { + let output: string | JSX.Element = '' + + if (dateTime) { + output = ( + + ) + } + + return output +} + +export const checkboxInputTag = (checked: boolean) => { + return +} diff --git a/web/src/pages/Agency/AgenciesPage/AgenciesPage.tsx b/web/src/pages/Agency/AgenciesPage/AgenciesPage.tsx new file mode 100644 index 00000000..0f1bdcdd --- /dev/null +++ b/web/src/pages/Agency/AgenciesPage/AgenciesPage.tsx @@ -0,0 +1,24 @@ +import Button from 'react-bootstrap/Button' + +import { Link, routes } from '@redwoodjs/router' + +import AgenciesCell from 'src/components/Agency/AgenciesCell' + +const AgenciesPage = () => { + // temporarily hardcode organizationId to 2 + const organizationIdOfUser = 2 + + return ( +
+

Agencies

+ + + + +
+ ) +} + +export default AgenciesPage diff --git a/web/src/pages/Agency/AgencyPage/AgencyPage.tsx b/web/src/pages/Agency/AgencyPage/AgencyPage.tsx new file mode 100644 index 00000000..294f9a2f --- /dev/null +++ b/web/src/pages/Agency/AgencyPage/AgencyPage.tsx @@ -0,0 +1,11 @@ +import AgencyCell from 'src/components/Agency/AgencyCell' + +type AgencyPageProps = { + id: number +} + +const AgencyPage = ({ id }: AgencyPageProps) => { + return +} + +export default AgencyPage diff --git a/web/src/pages/Agency/EditAgencyPage/EditAgencyPage.tsx b/web/src/pages/Agency/EditAgencyPage/EditAgencyPage.tsx new file mode 100644 index 00000000..46b597df --- /dev/null +++ b/web/src/pages/Agency/EditAgencyPage/EditAgencyPage.tsx @@ -0,0 +1,11 @@ +import EditAgencyCell from 'src/components/Agency/EditAgencyCell' + +type AgencyPageProps = { + id: number +} + +const EditAgencyPage = ({ id }: AgencyPageProps) => { + return +} + +export default EditAgencyPage diff --git a/web/src/pages/Agency/NewAgencyPage/NewAgencyPage.tsx b/web/src/pages/Agency/NewAgencyPage/NewAgencyPage.tsx new file mode 100644 index 00000000..8ce17c8b --- /dev/null +++ b/web/src/pages/Agency/NewAgencyPage/NewAgencyPage.tsx @@ -0,0 +1,7 @@ +import NewAgency from 'src/components/Agency/NewAgency' + +const NewAgencyPage = () => { + return +} + +export default NewAgencyPage diff --git a/web/src/pages/Organization/EditOrganizationPage/EditOrganizationPage.tsx b/web/src/pages/Organization/EditOrganizationPage/EditOrganizationPage.tsx new file mode 100644 index 00000000..8c7e8117 --- /dev/null +++ b/web/src/pages/Organization/EditOrganizationPage/EditOrganizationPage.tsx @@ -0,0 +1,11 @@ +import EditOrganizationCell from 'src/components/Organization/EditOrganizationCell' + +type OrganizationPageProps = { + id: number +} + +const EditOrganizationPage = ({ id }: OrganizationPageProps) => { + return +} + +export default EditOrganizationPage diff --git a/web/src/pages/Organization/NewOrganizationPage/NewOrganizationPage.tsx b/web/src/pages/Organization/NewOrganizationPage/NewOrganizationPage.tsx new file mode 100644 index 00000000..5a7798e5 --- /dev/null +++ b/web/src/pages/Organization/NewOrganizationPage/NewOrganizationPage.tsx @@ -0,0 +1,7 @@ +import NewOrganization from 'src/components/Organization/NewOrganization' + +const NewOrganizationPage = () => { + return +} + +export default NewOrganizationPage diff --git a/web/src/pages/Organization/OrganizationPage/OrganizationPage.tsx b/web/src/pages/Organization/OrganizationPage/OrganizationPage.tsx new file mode 100644 index 00000000..f0fa4d78 --- /dev/null +++ b/web/src/pages/Organization/OrganizationPage/OrganizationPage.tsx @@ -0,0 +1,11 @@ +import OrganizationCell from 'src/components/Organization/OrganizationCell' + +type OrganizationPageProps = { + id: number +} + +const OrganizationPage = ({ id }: OrganizationPageProps) => { + return +} + +export default OrganizationPage diff --git a/web/src/pages/Organization/OrganizationsPage/OrganizationsPage.tsx b/web/src/pages/Organization/OrganizationsPage/OrganizationsPage.tsx new file mode 100644 index 00000000..f9b02882 --- /dev/null +++ b/web/src/pages/Organization/OrganizationsPage/OrganizationsPage.tsx @@ -0,0 +1,21 @@ +import Button from 'react-bootstrap/Button' + +import { Link, routes } from '@redwoodjs/router' + +import OrganizationsCell from 'src/components/Organization/OrganizationsCell' + +const OrganizationsPage = () => { + return ( +
+

Organizations

+ + + + +
+ ) +} + +export default OrganizationsPage diff --git a/web/src/scss/colors-base-tokens.scss b/web/src/scss/colors-base-tokens.scss new file mode 100644 index 00000000..8c9b09fd --- /dev/null +++ b/web/src/scss/colors-base-tokens.scss @@ -0,0 +1,77 @@ +/** + * colors-base-tokens.scss + * + * Color base token definition file, based on USDR style guide. + * + * Please refer to USDR style guide definition in Figma: + * https://www.figma.com/file/HWu4iIjcoX2txuN543qzIB/USDR-Design-System?type=design&node-id=8%3A2&mode=design&t=8mml86X91f9FzVAE-1 + */ + +// USDR BRAND +$usdr-brand-primary: #305CE0; +$usdr-brand-secondary: #071A51; + +// BLUE +$raw-blue-50: #EAF5FE; +$raw-blue-100: #D8ECFE; +$raw-blue-200: #B3DAFF; +$raw-blue-300: #8EC5FF; +$raw-blue-400: #61A6FF; +$raw-blue-500: #3D80FB; +$raw-blue-600: #305CE0; +$raw-blue-700: #2348C2; +$raw-blue-800: #0D2F81; +$raw-blue-900: #0D2F81; + +// GRAY +$raw-gray-50: #F4F7F9; +$raw-gray-100: #ECF0F3; +$raw-gray-200: #DAE0E5; +$raw-gray-300: #B1B8BE; +$raw-gray-400: #879097; +$raw-gray-500: #6D7278; +$raw-gray-600: #43464A; +$raw-gray-700: #1F2123; +$raw-gray-800: #121212; +$raw-gray-900: #0A0A0A; +$raw-black-alpha-600: rgba(0, 0, 0, 48); + +// GREEN +$raw-green-50: #DAFCE4; +$raw-green-100: #C5F6D4; +$raw-green-200: #9FE6B7; +$raw-green-300: #77D498; +$raw-green-400: #43B874; +$raw-green-500: #20975A; +$raw-green-600: #107747; +$raw-green-700: #15603F; +$raw-green-800: #173D2B; +$raw-green-900: #142B20; + +// YELLOW +$raw-yellow-50: #FEF5CD; +$raw-yellow-100: #FBEBA7; +$raw-yellow-200: #F2D564; +$raw-yellow-300: #E2BE3C; +$raw-yellow-400: #C69F20; +$raw-yellow-500: #A67F12; +$raw-yellow-550: #956F0D; +$raw-yellow-600: #85620B; +$raw-yellow-700: #6F4F0B; +$raw-yellow-800: #493109; +$raw-yellow-900: #362305; + +// RED +$raw-red-50: #FEF0EF; +$raw-red-100: #FDE5E3; +$raw-red-200: #FCCAC7; +$raw-red-300: #F8AFA9; +$raw-red-400: #ED8780; +$raw-red-500: #DC5B56; +$raw-red-600: #C22E31; +$raw-red-700: #A8161E; +$raw-red-800: #6D1210; +$raw-red-900: #4C110B; + +// WHITE +$raw-white: #FFFFFF; diff --git a/web/src/scss/colors-semantic-tokens.scss b/web/src/scss/colors-semantic-tokens.scss new file mode 100644 index 00000000..361d3ce2 --- /dev/null +++ b/web/src/scss/colors-semantic-tokens.scss @@ -0,0 +1,73 @@ +/** + * colors-semantic-tokens.scss + * + * Semantic token definition for USDR style guide. + * + * Please refer to USDR style guide definition in Figma: + * https://www.figma.com/file/HWu4iIjcoX2txuN543qzIB/USDR-Design-System?type=design&node-id=8%3A2&mode=design&t=8mml86X91f9FzVAE-1 + */ + +@import './colors-base-tokens.scss'; + +// USDR BRAND +$brand-primary: $usdr-brand-primary; +// $brand-default: $raw-blue-600; +$brand-hover: $raw-blue-700; +$brand-active: $raw-blue-800; +$brand-content: $raw-white; +$brand-accent: $raw-blue-100; +$brand-accentContent: $raw-gray-700; + +// POSITIVE +$positive-default: $raw-green-600; +$positive-hover: $raw-green-700; +$positive-active: $raw-green-800; +$positive-content: $raw-white; +$positive-accent: $raw-green-100; +$positive-accentContent: $raw-gray-700; + +// NEGATIVE +$negative-default: $raw-red-600; +$negative-hover: $raw-red-700; +$negative-active: $raw-red-800; +$negative-content: $raw-white; +$negative-accent: $raw-red-100; +$negative-accentContent: $raw-gray-700; + +// WARNING +$warning-default: $raw-yellow-550; +$warning-hover: $raw-yellow-600; +$warning-active: $raw-yellow-700; +$warning-content: $raw-white; +$warning-accent: $raw-yellow-50; +$warning-accentContent: $raw-gray-700; + +// INFO +$info-default: $raw-blue-600; +$info-hover: $raw-blue-700; +$info-active: $raw-blue-800; +$info-content: $raw-white; +$info-accent: $raw-blue-100; +$info-accentContent: $raw-gray-700; + +// SURFACE +$surface-foreground: $raw-white; +$surface-background: $raw-white; +$surface-accent: $raw-gray-50; +$surface-canvas: $raw-gray-50; +$surface-overlay: $raw-black-alpha-600; + +// BORDER +$border: $raw-gray-300; +$border-hover: $raw-gray-400; + +// ICON +$icon-default: $raw-gray-600; + +// INTERACTIVE +$interactive-active: $raw-blue-50; + +// TEXT +$text-primary: $raw-gray-700; +$text-secondary: $raw-gray-600; +$text-placeholder: $raw-gray-500; \ No newline at end of file diff --git a/web/src/scss/custom.scss b/web/src/scss/custom.scss new file mode 100644 index 00000000..bc65fc96 --- /dev/null +++ b/web/src/scss/custom.scss @@ -0,0 +1,71 @@ +/** + * custom.scss + * + * Theme definition file, based on USDR style guide. + * Imports sub-files: + * - ./fonts.scss + * - ./colors-semantic-tokens.scss + * - ./colors-base-tokens.scss + * + * Please refer to USDR style guide definition in Figma: + * https://www.figma.com/file/HWu4iIjcoX2txuN543qzIB/USDR-Design-System?type=design&node-id=8%3A2&mode=design&t=8mml86X91f9FzVAE-1 + */ + +// IMPORT USDR DESIGN SYSTEM SEMANTIC TOKENS +@import './colors-semantic-tokens.scss'; + +// LIGHT THEME (SEMANTIC TOKEN) DEFINITION - SASS MAP +$theme-colors: () !default; +$theme-colors: map-merge( + ( + // DEFAULT BOOTSTRAP COLORS + "blue": #007bff, + "indigo": #6610f2, + "purple": #6f42c1, + "pink": #e83e8c, + "red": #dc3545, + "orange": #fd7e14, + "yellow": #ffc107, + "green": #28a745, + "teal": #20c997, + "cyan": #17a2b8, + "white": #fff, + "gray": #6c757d, + "gray-dark": #343a40, + + // USDR BRAND COLORS + "primary": $usdr-brand-primary, + "secondary": $usdr-brand-secondary, + "success": $positive-default, + "info": $info-default, + "warning": $warning-default, + "danger": $negative-default, + "light": $raw-gray-100, + "dark": $raw-gray-800, + ), + $theme-colors +); + +$form-feedback-invalid-color: theme-color("danger") !default; + +// OVERRIDE BOOTSTRAP FORM VALIDATION STATES +$form-validation-states: () !default; +$form-validation-states: map-merge( + ( + "invalid": ( + "color": $negative-default, + "icon": inherit + ), + ), + $form-validation-states +); + +// OVERRIDE BOOTSTRAP FORM ERROR STYLING +span.invalid-feedback { + display: block; +} + +@import '~bootstrap/scss/bootstrap'; + +// SET USDR FONTS +@import './fonts.scss'; \ No newline at end of file diff --git a/web/src/scss/fonts.scss b/web/src/scss/fonts.scss new file mode 100644 index 00000000..4b266446 --- /dev/null +++ b/web/src/scss/fonts.scss @@ -0,0 +1,61 @@ +/** + * fonts.scss + * + * Set font styles across GOST frontend. + */ + +// IMPORT FONTS FROM GOOGLE FONTS: +// INTER MEDIUM 500 (BODY FONT) +@import url('https://fonts.googleapis.com/css2?family=Inter:wght@500;700&display=swap'); + +// SET BODY FONTS TO INTER +body { + font-family: Inter, Helvetica, Arial, sans-serif; + font-size: 16px; + line-height: 150%; + font-weight: 500; + color: $text-primary; +} + +// Setting the same styles for heading elements and heading classes so there's flexibility in separating semantic headings from visual heading style +h1, .h1, h2, .h2, h3, .h3, h4, .h4, h5, .h5, h6, .h6 { + font-weight: 700; + line-height: 120%; +} + +h1, .h1 { // called 'headingXL' in USDR Design System + font-size: 2.375rem; // 38px +} + +h2, .h2 { // 'headingLarge' + font-size: 1.875rem; // 30px +} + +h3, .h3 { // 'headingMedium' + font-size: 1.25rem; +} + +h4, .h4 { // 'headingSmall' + font-size: 1rem; +} + +h5, .h5, p { // 'headingXS' and 'body' + font-size: 0.875rem; // 14px +} + +h6, .h6, .caption { // 'caption' + font-size: 0.8125rem; // 13px +} + +// SET BODY FONTS TO INTER +body { + font-family: Inter, Helvetica, Arial, sans-serif; + font-size: 16px; + line-height: 150%; + font-weight: 500; +} + +/* Bold text of active tabs and grant detail labels */ +.nav-tabs .nav-link.active, .data-label { + font-weight: 700; +} \ No newline at end of file diff --git a/web/types/graphql.d.ts b/web/types/graphql.d.ts new file mode 100644 index 00000000..eb4eb5fb --- /dev/null +++ b/web/types/graphql.d.ts @@ -0,0 +1,227 @@ +import { Prisma } from "@prisma/client" +export type Maybe = T | null; +export type InputMaybe = Maybe; +export type Exact = { [K in keyof T]: T[K] }; +export type MakeOptional = Omit & { [SubKey in K]?: Maybe }; +export type MakeMaybe = Omit & { [SubKey in K]: Maybe }; +/** All built-in and custom scalars, mapped to their actual values */ +export type Scalars = { + ID: string; + String: string; + Boolean: boolean; + Int: number; + Float: number; + BigInt: number; + Date: string; + DateTime: string; + JSON: Prisma.JsonValue; + JSONObject: Prisma.JsonObject; + Time: string; +}; + +export type Agency = { + __typename?: 'Agency'; + abbreviation?: Maybe; + code: Scalars['String']; + id: Scalars['Int']; + name: Scalars['String']; + organizationId: Scalars['Int']; +}; + +export type CreateAgencyInput = { + abbreviation?: InputMaybe; + code: Scalars['String']; + name: Scalars['String']; +}; + +export type CreateOrganizationInput = { + name: Scalars['String']; +}; + +export type Mutation = { + __typename?: 'Mutation'; + createAgency: Agency; + createOrganization: Organization; + deleteAgency: Agency; + deleteOrganization: Organization; + updateAgency: Agency; + updateOrganization: Organization; +}; + + +export type MutationcreateAgencyArgs = { + input: CreateAgencyInput; +}; + + +export type MutationcreateOrganizationArgs = { + input: CreateOrganizationInput; +}; + + +export type MutationdeleteAgencyArgs = { + id: Scalars['Int']; +}; + + +export type MutationdeleteOrganizationArgs = { + id: Scalars['Int']; +}; + + +export type MutationupdateAgencyArgs = { + id: Scalars['Int']; + input: UpdateAgencyInput; +}; + + +export type MutationupdateOrganizationArgs = { + id: Scalars['Int']; + input: UpdateOrganizationInput; +}; + +export type Organization = { + __typename?: 'Organization'; + agencies: Array>; + id: Scalars['Int']; + name: Scalars['String']; +}; + +/** About the Redwood queries. */ +export type Query = { + __typename?: 'Query'; + agencies: Array; + agenciesByOrganization: Array; + agency?: Maybe; + organization?: Maybe; + organizations: Array; + /** Fetches the Redwood root schema. */ + redwood?: Maybe; +}; + + +/** About the Redwood queries. */ +export type QueryagenciesByOrganizationArgs = { + organizationId: Scalars['Int']; +}; + + +/** About the Redwood queries. */ +export type QueryagencyArgs = { + id: Scalars['Int']; +}; + + +/** About the Redwood queries. */ +export type QueryorganizationArgs = { + id: Scalars['Int']; +}; + +/** + * The RedwoodJS Root Schema + * + * Defines details about RedwoodJS such as the current user and version information. + */ +export type Redwood = { + __typename?: 'Redwood'; + /** The current user. */ + currentUser?: Maybe; + /** The version of Prisma. */ + prismaVersion?: Maybe; + /** The version of Redwood. */ + version?: Maybe; +}; + +export type UpdateAgencyInput = { + abbreviation?: InputMaybe; + code?: InputMaybe; + name?: InputMaybe; +}; + +export type UpdateOrganizationInput = { + name?: InputMaybe; +}; + +export type FindAgenciesByOrganizationIdVariables = Exact<{ + organizationId: Scalars['Int']; +}>; + + +export type FindAgenciesByOrganizationId = { __typename?: 'Query', agenciesByOrganization: Array<{ __typename?: 'Agency', id: number, name: string, abbreviation?: string | null, code: string }> }; + +export type DeleteAgencyMutationVariables = Exact<{ + id: Scalars['Int']; +}>; + + +export type DeleteAgencyMutation = { __typename?: 'Mutation', deleteAgency: { __typename?: 'Agency', id: number } }; + +export type FindAgencyByIdVariables = Exact<{ + id: Scalars['Int']; +}>; + + +export type FindAgencyById = { __typename?: 'Query', agency?: { __typename?: 'Agency', id: number, name: string, abbreviation?: string | null, code: string } | null }; + +export type EditAgencyByIdVariables = Exact<{ + id: Scalars['Int']; +}>; + + +export type EditAgencyById = { __typename?: 'Query', agency?: { __typename?: 'Agency', id: number, name: string, abbreviation?: string | null, code: string } | null }; + +export type UpdateAgencyMutationVariables = Exact<{ + id: Scalars['Int']; + input: UpdateAgencyInput; +}>; + + +export type UpdateAgencyMutation = { __typename?: 'Mutation', updateAgency: { __typename?: 'Agency', id: number, name: string, abbreviation?: string | null, code: string } }; + +export type CreateAgencyMutationVariables = Exact<{ + input: CreateAgencyInput; +}>; + + +export type CreateAgencyMutation = { __typename?: 'Mutation', createAgency: { __typename?: 'Agency', id: number } }; + +export type EditOrganizationByIdVariables = Exact<{ + id: Scalars['Int']; +}>; + + +export type EditOrganizationById = { __typename?: 'Query', organization?: { __typename?: 'Organization', id: number, name: string } | null }; + +export type UpdateOrganizationMutationVariables = Exact<{ + id: Scalars['Int']; + input: UpdateOrganizationInput; +}>; + + +export type UpdateOrganizationMutation = { __typename?: 'Mutation', updateOrganization: { __typename?: 'Organization', id: number, name: string } }; + +export type CreateOrganizationMutationVariables = Exact<{ + input: CreateOrganizationInput; +}>; + + +export type CreateOrganizationMutation = { __typename?: 'Mutation', createOrganization: { __typename?: 'Organization', id: number } }; + +export type DeleteOrganizationMutationVariables = Exact<{ + id: Scalars['Int']; +}>; + + +export type DeleteOrganizationMutation = { __typename?: 'Mutation', deleteOrganization: { __typename?: 'Organization', id: number } }; + +export type FindOrganizationByIdVariables = Exact<{ + id: Scalars['Int']; +}>; + + +export type FindOrganizationById = { __typename?: 'Query', organization?: { __typename?: 'Organization', id: number, name: string } | null }; + +export type FindOrganizationsVariables = Exact<{ [key: string]: never; }>; + + +export type FindOrganizations = { __typename?: 'Query', organizations: Array<{ __typename?: 'Organization', id: number, name: string }> }; diff --git a/yarn.lock b/yarn.lock index f3b8553f..320bcb94 100644 --- a/yarn.lock +++ b/yarn.lock @@ -185,568 +185,568 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/client-cognito-identity@npm:3.462.0": - version: 3.462.0 - resolution: "@aws-sdk/client-cognito-identity@npm:3.462.0" +"@aws-sdk/client-cognito-identity@npm:3.468.0": + version: 3.468.0 + resolution: "@aws-sdk/client-cognito-identity@npm:3.468.0" dependencies: "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/client-sts": 3.462.0 - "@aws-sdk/core": 3.451.0 - "@aws-sdk/credential-provider-node": 3.460.0 - "@aws-sdk/middleware-host-header": 3.460.0 - "@aws-sdk/middleware-logger": 3.460.0 - "@aws-sdk/middleware-recursion-detection": 3.460.0 - "@aws-sdk/middleware-signing": 3.461.0 - "@aws-sdk/middleware-user-agent": 3.460.0 - "@aws-sdk/region-config-resolver": 3.451.0 - "@aws-sdk/types": 3.460.0 - "@aws-sdk/util-endpoints": 3.460.0 - "@aws-sdk/util-user-agent-browser": 3.460.0 - "@aws-sdk/util-user-agent-node": 3.460.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 + "@aws-sdk/client-sts": 3.468.0 + "@aws-sdk/core": 3.468.0 + "@aws-sdk/credential-provider-node": 3.468.0 + "@aws-sdk/middleware-host-header": 3.468.0 + "@aws-sdk/middleware-logger": 3.468.0 + "@aws-sdk/middleware-recursion-detection": 3.468.0 + "@aws-sdk/middleware-signing": 3.468.0 + "@aws-sdk/middleware-user-agent": 3.468.0 + "@aws-sdk/region-config-resolver": 3.468.0 + "@aws-sdk/types": 3.468.0 + "@aws-sdk/util-endpoints": 3.468.0 + "@aws-sdk/util-user-agent-browser": 3.468.0 + "@aws-sdk/util-user-agent-node": 3.468.0 + "@smithy/config-resolver": ^2.0.20 + "@smithy/fetch-http-handler": ^2.3.1 + "@smithy/hash-node": ^2.0.17 + "@smithy/invalid-dependency": ^2.0.15 + "@smithy/middleware-content-length": ^2.0.17 + "@smithy/middleware-endpoint": ^2.2.2 + "@smithy/middleware-retry": ^2.0.23 + "@smithy/middleware-serde": ^2.0.15 + "@smithy/middleware-stack": ^2.0.9 + "@smithy/node-config-provider": ^2.1.7 + "@smithy/node-http-handler": ^2.2.1 + "@smithy/protocol-http": ^3.0.11 + "@smithy/smithy-client": ^2.1.18 + "@smithy/types": ^2.7.0 + "@smithy/url-parser": ^2.0.15 "@smithy/util-base64": ^2.0.1 - "@smithy/util-body-length-browser": ^2.0.0 + "@smithy/util-body-length-browser": ^2.0.1 "@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-defaults-mode-browser": ^2.0.22 + "@smithy/util-defaults-mode-node": ^2.0.28 + "@smithy/util-endpoints": ^1.0.6 + "@smithy/util-retry": ^2.0.8 "@smithy/util-utf8": ^2.0.2 tslib: ^2.5.0 - checksum: e1f7839e977dfafb1d99df9fd781c6fe0830f3e8383ca975dc06cda5a31b25e5dcd95da37f524ed3665b2d46616f7660085bec31dfb79f73471170fa960b0aa2 + checksum: de0748c26267454fd3b405408b402fd40ef0dfc1bfeed0315956f21bf625b3f3d70780fe2a1acc280205f639351d8990185c6fc744f30e38aa1acd400ac48748 languageName: node linkType: hard "@aws-sdk/client-ssm@npm:^3.462.0": - version: 3.462.0 - resolution: "@aws-sdk/client-ssm@npm:3.462.0" + version: 3.468.0 + resolution: "@aws-sdk/client-ssm@npm:3.468.0" dependencies: "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/client-sts": 3.462.0 - "@aws-sdk/core": 3.451.0 - "@aws-sdk/credential-provider-node": 3.460.0 - "@aws-sdk/middleware-host-header": 3.460.0 - "@aws-sdk/middleware-logger": 3.460.0 - "@aws-sdk/middleware-recursion-detection": 3.460.0 - "@aws-sdk/middleware-signing": 3.461.0 - "@aws-sdk/middleware-user-agent": 3.460.0 - "@aws-sdk/region-config-resolver": 3.451.0 - "@aws-sdk/types": 3.460.0 - "@aws-sdk/util-endpoints": 3.460.0 - "@aws-sdk/util-user-agent-browser": 3.460.0 - "@aws-sdk/util-user-agent-node": 3.460.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 + "@aws-sdk/client-sts": 3.468.0 + "@aws-sdk/core": 3.468.0 + "@aws-sdk/credential-provider-node": 3.468.0 + "@aws-sdk/middleware-host-header": 3.468.0 + "@aws-sdk/middleware-logger": 3.468.0 + "@aws-sdk/middleware-recursion-detection": 3.468.0 + "@aws-sdk/middleware-signing": 3.468.0 + "@aws-sdk/middleware-user-agent": 3.468.0 + "@aws-sdk/region-config-resolver": 3.468.0 + "@aws-sdk/types": 3.468.0 + "@aws-sdk/util-endpoints": 3.468.0 + "@aws-sdk/util-user-agent-browser": 3.468.0 + "@aws-sdk/util-user-agent-node": 3.468.0 + "@smithy/config-resolver": ^2.0.20 + "@smithy/fetch-http-handler": ^2.3.1 + "@smithy/hash-node": ^2.0.17 + "@smithy/invalid-dependency": ^2.0.15 + "@smithy/middleware-content-length": ^2.0.17 + "@smithy/middleware-endpoint": ^2.2.2 + "@smithy/middleware-retry": ^2.0.23 + "@smithy/middleware-serde": ^2.0.15 + "@smithy/middleware-stack": ^2.0.9 + "@smithy/node-config-provider": ^2.1.7 + "@smithy/node-http-handler": ^2.2.1 + "@smithy/protocol-http": ^3.0.11 + "@smithy/smithy-client": ^2.1.18 + "@smithy/types": ^2.7.0 + "@smithy/url-parser": ^2.0.15 "@smithy/util-base64": ^2.0.1 - "@smithy/util-body-length-browser": ^2.0.0 + "@smithy/util-body-length-browser": ^2.0.1 "@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-defaults-mode-browser": ^2.0.22 + "@smithy/util-defaults-mode-node": ^2.0.28 + "@smithy/util-endpoints": ^1.0.6 + "@smithy/util-retry": ^2.0.8 "@smithy/util-utf8": ^2.0.2 - "@smithy/util-waiter": ^2.0.13 + "@smithy/util-waiter": ^2.0.15 tslib: ^2.5.0 uuid: ^8.3.2 - checksum: 9dc0225f60aed7bb6f007eda5e8fb42f0f899275fd28b8993ecc3623837e9768d9f04da4682e733f96e5384e289636953d377eeb1eec9ae3abbadef8af1b2b6e + checksum: 6e64dc74757769f6cc1e52b7eeed0787ae1fadd531c5b578fff4bb102f8e4e60fd62f70df88e84647b0ea78feb3a13cf4afd96f0d07d506cc84858ea7e2cc7b6 languageName: node linkType: hard -"@aws-sdk/client-sso@npm:3.460.0": - version: 3.460.0 - resolution: "@aws-sdk/client-sso@npm:3.460.0" +"@aws-sdk/client-sso@npm:3.468.0": + version: 3.468.0 + resolution: "@aws-sdk/client-sso@npm:3.468.0" dependencies: "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/core": 3.451.0 - "@aws-sdk/middleware-host-header": 3.460.0 - "@aws-sdk/middleware-logger": 3.460.0 - "@aws-sdk/middleware-recursion-detection": 3.460.0 - "@aws-sdk/middleware-user-agent": 3.460.0 - "@aws-sdk/region-config-resolver": 3.451.0 - "@aws-sdk/types": 3.460.0 - "@aws-sdk/util-endpoints": 3.460.0 - "@aws-sdk/util-user-agent-browser": 3.460.0 - "@aws-sdk/util-user-agent-node": 3.460.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 + "@aws-sdk/core": 3.468.0 + "@aws-sdk/middleware-host-header": 3.468.0 + "@aws-sdk/middleware-logger": 3.468.0 + "@aws-sdk/middleware-recursion-detection": 3.468.0 + "@aws-sdk/middleware-user-agent": 3.468.0 + "@aws-sdk/region-config-resolver": 3.468.0 + "@aws-sdk/types": 3.468.0 + "@aws-sdk/util-endpoints": 3.468.0 + "@aws-sdk/util-user-agent-browser": 3.468.0 + "@aws-sdk/util-user-agent-node": 3.468.0 + "@smithy/config-resolver": ^2.0.20 + "@smithy/fetch-http-handler": ^2.3.1 + "@smithy/hash-node": ^2.0.17 + "@smithy/invalid-dependency": ^2.0.15 + "@smithy/middleware-content-length": ^2.0.17 + "@smithy/middleware-endpoint": ^2.2.2 + "@smithy/middleware-retry": ^2.0.23 + "@smithy/middleware-serde": ^2.0.15 + "@smithy/middleware-stack": ^2.0.9 + "@smithy/node-config-provider": ^2.1.7 + "@smithy/node-http-handler": ^2.2.1 + "@smithy/protocol-http": ^3.0.11 + "@smithy/smithy-client": ^2.1.18 + "@smithy/types": ^2.7.0 + "@smithy/url-parser": ^2.0.15 "@smithy/util-base64": ^2.0.1 - "@smithy/util-body-length-browser": ^2.0.0 + "@smithy/util-body-length-browser": ^2.0.1 "@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-defaults-mode-browser": ^2.0.22 + "@smithy/util-defaults-mode-node": ^2.0.28 + "@smithy/util-endpoints": ^1.0.6 + "@smithy/util-retry": ^2.0.8 "@smithy/util-utf8": ^2.0.2 tslib: ^2.5.0 - checksum: 902edb7c8ff29c68a6e179473b3a5431b73182d2492d2b9d69617717d9ef365aad9286ae33a57fc8c42206bea29da29e63d7a36c5969f5b6039e49e535f2d2f3 + checksum: 42c7df0a1ce24b8cd8564e3dd038d474334c67f2655fcfb9bb357bdd1af3fe80d71ca7e27efb098afab32af86ea70e61395f751aa6f843ae527b884ed20ca55c languageName: node linkType: hard -"@aws-sdk/client-sts@npm:3.462.0": - version: 3.462.0 - resolution: "@aws-sdk/client-sts@npm:3.462.0" +"@aws-sdk/client-sts@npm:3.468.0": + version: 3.468.0 + resolution: "@aws-sdk/client-sts@npm:3.468.0" dependencies: "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/core": 3.451.0 - "@aws-sdk/credential-provider-node": 3.460.0 - "@aws-sdk/middleware-host-header": 3.460.0 - "@aws-sdk/middleware-logger": 3.460.0 - "@aws-sdk/middleware-recursion-detection": 3.460.0 - "@aws-sdk/middleware-sdk-sts": 3.461.0 - "@aws-sdk/middleware-signing": 3.461.0 - "@aws-sdk/middleware-user-agent": 3.460.0 - "@aws-sdk/region-config-resolver": 3.451.0 - "@aws-sdk/types": 3.460.0 - "@aws-sdk/util-endpoints": 3.460.0 - "@aws-sdk/util-user-agent-browser": 3.460.0 - "@aws-sdk/util-user-agent-node": 3.460.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 + "@aws-sdk/core": 3.468.0 + "@aws-sdk/credential-provider-node": 3.468.0 + "@aws-sdk/middleware-host-header": 3.468.0 + "@aws-sdk/middleware-logger": 3.468.0 + "@aws-sdk/middleware-recursion-detection": 3.468.0 + "@aws-sdk/middleware-sdk-sts": 3.468.0 + "@aws-sdk/middleware-signing": 3.468.0 + "@aws-sdk/middleware-user-agent": 3.468.0 + "@aws-sdk/region-config-resolver": 3.468.0 + "@aws-sdk/types": 3.468.0 + "@aws-sdk/util-endpoints": 3.468.0 + "@aws-sdk/util-user-agent-browser": 3.468.0 + "@aws-sdk/util-user-agent-node": 3.468.0 + "@smithy/config-resolver": ^2.0.20 + "@smithy/fetch-http-handler": ^2.3.1 + "@smithy/hash-node": ^2.0.17 + "@smithy/invalid-dependency": ^2.0.15 + "@smithy/middleware-content-length": ^2.0.17 + "@smithy/middleware-endpoint": ^2.2.2 + "@smithy/middleware-retry": ^2.0.23 + "@smithy/middleware-serde": ^2.0.15 + "@smithy/middleware-stack": ^2.0.9 + "@smithy/node-config-provider": ^2.1.7 + "@smithy/node-http-handler": ^2.2.1 + "@smithy/protocol-http": ^3.0.11 + "@smithy/smithy-client": ^2.1.18 + "@smithy/types": ^2.7.0 + "@smithy/url-parser": ^2.0.15 "@smithy/util-base64": ^2.0.1 - "@smithy/util-body-length-browser": ^2.0.0 + "@smithy/util-body-length-browser": ^2.0.1 "@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-defaults-mode-browser": ^2.0.22 + "@smithy/util-defaults-mode-node": ^2.0.28 + "@smithy/util-endpoints": ^1.0.6 + "@smithy/util-retry": ^2.0.8 "@smithy/util-utf8": ^2.0.2 fast-xml-parser: 4.2.5 tslib: ^2.5.0 - checksum: 7e1882a815b90c406b5104cb9f38edffd215af1bf092848531a9bf0b623461e53da36736b04de35e8582a68cb3641ec8f7dbecd364a699426bf32f235a08b5b0 + checksum: 4355c8fed2d0dfd99f03b4cddc275bcc13bc7bf2869a23aa32c26c17227181003fcc496a82e233984715f8d2a1582d34f8c0244450cc4b742e99e4d266733a03 languageName: node linkType: hard -"@aws-sdk/core@npm:3.451.0": - version: 3.451.0 - resolution: "@aws-sdk/core@npm:3.451.0" +"@aws-sdk/core@npm:3.468.0": + version: 3.468.0 + resolution: "@aws-sdk/core@npm:3.468.0" dependencies: - "@smithy/smithy-client": ^2.1.15 + "@smithy/smithy-client": ^2.1.18 tslib: ^2.5.0 - checksum: 20e36a0280ba6848222099eb30d3a09683563edf8eca48746529c9c2ae89dd7ab5d6a01ab05cd21b4bdd4f16117d41dc89e07d4d71f0abbcf50dcc5e85ef992d + checksum: 4ae2f8f069a49bd36d01e0d3b8fc8063139ad6883db971ce7c02a45b3535075c91da0a2c7d7e37b1bd6c7789c94021ab1278ab59d29cf485e618e7989505ff4c languageName: node linkType: hard -"@aws-sdk/credential-provider-cognito-identity@npm:3.462.0": - version: 3.462.0 - resolution: "@aws-sdk/credential-provider-cognito-identity@npm:3.462.0" +"@aws-sdk/credential-provider-cognito-identity@npm:3.468.0": + version: 3.468.0 + resolution: "@aws-sdk/credential-provider-cognito-identity@npm:3.468.0" dependencies: - "@aws-sdk/client-cognito-identity": 3.462.0 - "@aws-sdk/types": 3.460.0 + "@aws-sdk/client-cognito-identity": 3.468.0 + "@aws-sdk/types": 3.468.0 "@smithy/property-provider": ^2.0.0 - "@smithy/types": ^2.5.0 + "@smithy/types": ^2.7.0 tslib: ^2.5.0 - checksum: 02afd72dc4addc86c33120f574a2e1b97d91f387535406af26ee5bea10aa74da005dae4eac0b6632d9d21d368d42587ff117f20da269669e9b7bb2c56c5fbc05 + checksum: 54e7485ab25eca613739183999b46e2e871a075822d98e3e66f28175056467173e2ee167ae67720b6926d01a2700b9a32325bd3e5f2a36bf05fbf3703be41f92 languageName: node linkType: hard -"@aws-sdk/credential-provider-env@npm:3.460.0": - version: 3.460.0 - resolution: "@aws-sdk/credential-provider-env@npm:3.460.0" +"@aws-sdk/credential-provider-env@npm:3.468.0": + version: 3.468.0 + resolution: "@aws-sdk/credential-provider-env@npm:3.468.0" dependencies: - "@aws-sdk/types": 3.460.0 + "@aws-sdk/types": 3.468.0 "@smithy/property-provider": ^2.0.0 - "@smithy/types": ^2.5.0 + "@smithy/types": ^2.7.0 tslib: ^2.5.0 - checksum: a5b3bb0c9d9b05f9b55738b99db33bc894b6b1e30c1ec62b9124f5a3878b24f23b1f26d38fb0ade06bf12c0ea1c4a0d67d197e43f45bb4fd88bdb19249078e72 + checksum: dd378030e6268caad7b7523dd63dafe223b1482c6744f7320ec737eb308eb46111deb5d28c6e5450a93c79cccccb5223b8debc3eccfcc3e012c39ebc78123fe8 languageName: node linkType: hard -"@aws-sdk/credential-provider-http@npm:3.460.0": - version: 3.460.0 - resolution: "@aws-sdk/credential-provider-http@npm:3.460.0" +"@aws-sdk/credential-provider-http@npm:3.468.0": + version: 3.468.0 + resolution: "@aws-sdk/credential-provider-http@npm:3.468.0" dependencies: - "@aws-sdk/types": 3.460.0 - "@smithy/fetch-http-handler": ^2.2.6 - "@smithy/node-http-handler": ^2.1.9 + "@aws-sdk/types": 3.468.0 + "@smithy/fetch-http-handler": ^2.3.1 + "@smithy/node-http-handler": ^2.2.1 "@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 + "@smithy/protocol-http": ^3.0.11 + "@smithy/smithy-client": ^2.1.18 + "@smithy/types": ^2.7.0 + "@smithy/util-stream": ^2.0.23 tslib: ^2.5.0 - checksum: 3e43978179dc869920ce2cc7b4e075bde4e5e948b6c0533ac58393790bed49be38c336233cadc4b52c13aa2df442693a29f0067026f178f2d0ba8034c4de14d9 + checksum: ecb87d055ea694e36d183717ec3a5c9dde6b23018cad5cfaef9f9484ed3ee71122f0556f37e1ec9762160719441ccd347a02c6d2fbcb5385e70e83a4ba0772b9 languageName: node linkType: hard -"@aws-sdk/credential-provider-ini@npm:3.460.0": - version: 3.460.0 - resolution: "@aws-sdk/credential-provider-ini@npm:3.460.0" +"@aws-sdk/credential-provider-ini@npm:3.468.0": + version: 3.468.0 + resolution: "@aws-sdk/credential-provider-ini@npm:3.468.0" dependencies: - "@aws-sdk/credential-provider-env": 3.460.0 - "@aws-sdk/credential-provider-process": 3.460.0 - "@aws-sdk/credential-provider-sso": 3.460.0 - "@aws-sdk/credential-provider-web-identity": 3.460.0 - "@aws-sdk/types": 3.460.0 + "@aws-sdk/credential-provider-env": 3.468.0 + "@aws-sdk/credential-provider-process": 3.468.0 + "@aws-sdk/credential-provider-sso": 3.468.0 + "@aws-sdk/credential-provider-web-identity": 3.468.0 + "@aws-sdk/types": 3.468.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 + "@smithy/types": ^2.7.0 tslib: ^2.5.0 - checksum: dcb6d94dfaa98971188102ac277746b8226cba4d76d589b47dbd17af271cba52d97606863912699c123d9671ae2b32a92d05a2306b749c909ebeaf1f95a566fb + checksum: 888c4aa6ea41c965b64715c53dd7b322011b0ebd788bbc5125fb3c06d4efe7e847058ce5215517dbaf3b4cc6749f269aec21fb7af21335abbef51d1632a1a3a0 languageName: node linkType: hard -"@aws-sdk/credential-provider-node@npm:3.460.0": - version: 3.460.0 - resolution: "@aws-sdk/credential-provider-node@npm:3.460.0" +"@aws-sdk/credential-provider-node@npm:3.468.0": + version: 3.468.0 + resolution: "@aws-sdk/credential-provider-node@npm:3.468.0" dependencies: - "@aws-sdk/credential-provider-env": 3.460.0 - "@aws-sdk/credential-provider-ini": 3.460.0 - "@aws-sdk/credential-provider-process": 3.460.0 - "@aws-sdk/credential-provider-sso": 3.460.0 - "@aws-sdk/credential-provider-web-identity": 3.460.0 - "@aws-sdk/types": 3.460.0 + "@aws-sdk/credential-provider-env": 3.468.0 + "@aws-sdk/credential-provider-ini": 3.468.0 + "@aws-sdk/credential-provider-process": 3.468.0 + "@aws-sdk/credential-provider-sso": 3.468.0 + "@aws-sdk/credential-provider-web-identity": 3.468.0 + "@aws-sdk/types": 3.468.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 + "@smithy/types": ^2.7.0 tslib: ^2.5.0 - checksum: e8ba989a219c75abfcdb9447622a933fd7c601bcbc41e535627d0bee514773c970dd86342baf23e0d241695c96d3e90d19bc028c598b87fdad6a025c16690bf5 + checksum: 59203e103fcd6610554692b4e57723ab84038b61fd32c22a848c297fa45991e66abd3d080108ecca94c386d0c76019c8da652ed298e3829212cb39041b00f63f languageName: node linkType: hard -"@aws-sdk/credential-provider-process@npm:3.460.0": - version: 3.460.0 - resolution: "@aws-sdk/credential-provider-process@npm:3.460.0" +"@aws-sdk/credential-provider-process@npm:3.468.0": + version: 3.468.0 + resolution: "@aws-sdk/credential-provider-process@npm:3.468.0" dependencies: - "@aws-sdk/types": 3.460.0 + "@aws-sdk/types": 3.468.0 "@smithy/property-provider": ^2.0.0 "@smithy/shared-ini-file-loader": ^2.0.6 - "@smithy/types": ^2.5.0 + "@smithy/types": ^2.7.0 tslib: ^2.5.0 - checksum: 67115399ef754dd46138ce086936f0bf680cc701ed12939a059c9fae7dda870829247e6f73c0f5e0d07353d151b77fe070ff50d5946cd21583b78dcbf25b2aab + checksum: 8226e35a2a829d2278f7064174f99e0bf1747992b6f55393be5d6e0be84bedb075528a0d28213457f9d360aaa7cbded93e6ea37fc3160fc5abf408b089f878cb languageName: node linkType: hard -"@aws-sdk/credential-provider-sso@npm:3.460.0": - version: 3.460.0 - resolution: "@aws-sdk/credential-provider-sso@npm:3.460.0" +"@aws-sdk/credential-provider-sso@npm:3.468.0": + version: 3.468.0 + resolution: "@aws-sdk/credential-provider-sso@npm:3.468.0" dependencies: - "@aws-sdk/client-sso": 3.460.0 - "@aws-sdk/token-providers": 3.460.0 - "@aws-sdk/types": 3.460.0 + "@aws-sdk/client-sso": 3.468.0 + "@aws-sdk/token-providers": 3.468.0 + "@aws-sdk/types": 3.468.0 "@smithy/property-provider": ^2.0.0 "@smithy/shared-ini-file-loader": ^2.0.6 - "@smithy/types": ^2.5.0 + "@smithy/types": ^2.7.0 tslib: ^2.5.0 - checksum: 5536ef6c8c5f2792e26f19e1d9a3a3503b5c38bc02da65372be805eb1ea69498a81759b3701fd9e0714c628a054d6a52de3d9b98430b23d8b1402f25760b3c54 + checksum: 2582bfab641f608d9598f5bc6bd685a80ff51d199952f5843d2ea417554376ad69d533145b01b8726ce991fb0c4f9264252e7c0cea9fa7e61e0df0a98d426ede languageName: node linkType: hard -"@aws-sdk/credential-provider-web-identity@npm:3.460.0": - version: 3.460.0 - resolution: "@aws-sdk/credential-provider-web-identity@npm:3.460.0" +"@aws-sdk/credential-provider-web-identity@npm:3.468.0": + version: 3.468.0 + resolution: "@aws-sdk/credential-provider-web-identity@npm:3.468.0" dependencies: - "@aws-sdk/types": 3.460.0 + "@aws-sdk/types": 3.468.0 "@smithy/property-provider": ^2.0.0 - "@smithy/types": ^2.5.0 + "@smithy/types": ^2.7.0 tslib: ^2.5.0 - checksum: 76a069b1f0dce14234afed3bab3ed6c3d63f0fcfb7a2d63343d2b2c63526fb7c14de5e8943eafec451b89ff9899f5b0d327b36409bc4661165f5e429b495fc85 - languageName: node - linkType: hard - -"@aws-sdk/credential-providers@npm:3.462.0": - version: 3.462.0 - resolution: "@aws-sdk/credential-providers@npm:3.462.0" - dependencies: - "@aws-sdk/client-cognito-identity": 3.462.0 - "@aws-sdk/client-sso": 3.460.0 - "@aws-sdk/client-sts": 3.462.0 - "@aws-sdk/credential-provider-cognito-identity": 3.462.0 - "@aws-sdk/credential-provider-env": 3.460.0 - "@aws-sdk/credential-provider-http": 3.460.0 - "@aws-sdk/credential-provider-ini": 3.460.0 - "@aws-sdk/credential-provider-node": 3.460.0 - "@aws-sdk/credential-provider-process": 3.460.0 - "@aws-sdk/credential-provider-sso": 3.460.0 - "@aws-sdk/credential-provider-web-identity": 3.460.0 - "@aws-sdk/types": 3.460.0 + checksum: 388ad2093341916750b02cb5617ff288d670c706582c23e80be1547f7bfe4fb28de011bc14bae931901ecfa91e0a39a54b5ef3130f29f739cc3d4d64aca9bb70 + languageName: node + linkType: hard + +"@aws-sdk/credential-providers@npm:3.468.0": + version: 3.468.0 + resolution: "@aws-sdk/credential-providers@npm:3.468.0" + dependencies: + "@aws-sdk/client-cognito-identity": 3.468.0 + "@aws-sdk/client-sso": 3.468.0 + "@aws-sdk/client-sts": 3.468.0 + "@aws-sdk/credential-provider-cognito-identity": 3.468.0 + "@aws-sdk/credential-provider-env": 3.468.0 + "@aws-sdk/credential-provider-http": 3.468.0 + "@aws-sdk/credential-provider-ini": 3.468.0 + "@aws-sdk/credential-provider-node": 3.468.0 + "@aws-sdk/credential-provider-process": 3.468.0 + "@aws-sdk/credential-provider-sso": 3.468.0 + "@aws-sdk/credential-provider-web-identity": 3.468.0 + "@aws-sdk/types": 3.468.0 "@smithy/credential-provider-imds": ^2.0.0 "@smithy/property-provider": ^2.0.0 - "@smithy/types": ^2.5.0 + "@smithy/types": ^2.7.0 tslib: ^2.5.0 - checksum: 5b552c761baf459c502afba5b7e600d9f70a155d8a3892c17559db06b6cb653363c88f4ad581d896b9bfb33d3e233d08e0ede69883cf3bc910157059c8ac5ce0 + checksum: ab2b5659ac295bed016911cd275c8605b16fe3a7faa0fe6019526727d288e51e058b46343cf4c07d4abed6088ba64bc99618efcd909954978eb159cea36d8c6a languageName: node linkType: hard -"@aws-sdk/middleware-host-header@npm:3.460.0": - version: 3.460.0 - resolution: "@aws-sdk/middleware-host-header@npm:3.460.0" +"@aws-sdk/middleware-host-header@npm:3.468.0": + version: 3.468.0 + resolution: "@aws-sdk/middleware-host-header@npm:3.468.0" dependencies: - "@aws-sdk/types": 3.460.0 - "@smithy/protocol-http": ^3.0.9 - "@smithy/types": ^2.5.0 + "@aws-sdk/types": 3.468.0 + "@smithy/protocol-http": ^3.0.11 + "@smithy/types": ^2.7.0 tslib: ^2.5.0 - checksum: ff3f3bf367a6db742e4f3dc05a100e51f49eadbc19602b3f44ab97dad6002baa2e905d7575fe87a86dc32da4063395098e282336f7c56aad61cc04592d4fb61e + checksum: de2836c970c8345175a9b6f07bf81fe65dfc0bbb39e81cb67112309a2e3536605cd442e6a6ea68ef171392b931fff12a16aa2c7fb0ab04a1e5144ddc4796f485 languageName: node linkType: hard -"@aws-sdk/middleware-logger@npm:3.460.0": - version: 3.460.0 - resolution: "@aws-sdk/middleware-logger@npm:3.460.0" +"@aws-sdk/middleware-logger@npm:3.468.0": + version: 3.468.0 + resolution: "@aws-sdk/middleware-logger@npm:3.468.0" dependencies: - "@aws-sdk/types": 3.460.0 - "@smithy/types": ^2.5.0 + "@aws-sdk/types": 3.468.0 + "@smithy/types": ^2.7.0 tslib: ^2.5.0 - checksum: 21b5835cb19d9dade6a1a07ac9566b8c0519cd5b1c632f36a707345292fbbfe6f5914bf0a37c7384ecdde469b01996cb42efe77dfa6f7b63ac7c131383001660 + checksum: 22b8d8ed7bccec202a902218041d46a24c384b81f5c73c6674355c7a1e2c69e46161b2c28ac77eee38a072b402036fb249eed4840a3badede3a50983db5a6ac4 languageName: node linkType: hard -"@aws-sdk/middleware-recursion-detection@npm:3.460.0": - version: 3.460.0 - resolution: "@aws-sdk/middleware-recursion-detection@npm:3.460.0" +"@aws-sdk/middleware-recursion-detection@npm:3.468.0": + version: 3.468.0 + resolution: "@aws-sdk/middleware-recursion-detection@npm:3.468.0" dependencies: - "@aws-sdk/types": 3.460.0 - "@smithy/protocol-http": ^3.0.9 - "@smithy/types": ^2.5.0 + "@aws-sdk/types": 3.468.0 + "@smithy/protocol-http": ^3.0.11 + "@smithy/types": ^2.7.0 tslib: ^2.5.0 - checksum: 45786cb548d8e5f823a911bc443f596ddf16db1bfd2a5e017fd4c6c098021ed2ba21e4b505df3a1839f5ffd9976f3a01b2743d02fbdaacfbc7fd94dd65fdc6da + checksum: 209b2e59447f2658a90a33b60a1b0dfd37c48f54c67f2f2946bcba6ab87cd29af8edf52b71c5ee7324931aece7b53d42e58ccd51a146d32d01e1c9c47c1b45d4 languageName: node linkType: hard -"@aws-sdk/middleware-sdk-sts@npm:3.461.0": - version: 3.461.0 - resolution: "@aws-sdk/middleware-sdk-sts@npm:3.461.0" +"@aws-sdk/middleware-sdk-sts@npm:3.468.0": + version: 3.468.0 + resolution: "@aws-sdk/middleware-sdk-sts@npm:3.468.0" dependencies: - "@aws-sdk/middleware-signing": 3.461.0 - "@aws-sdk/types": 3.460.0 - "@smithy/types": ^2.5.0 + "@aws-sdk/middleware-signing": 3.468.0 + "@aws-sdk/types": 3.468.0 + "@smithy/types": ^2.7.0 tslib: ^2.5.0 - checksum: c9b04d9be26357d493475564134a9d3e03bb9291ccc5ff3209b143c6e5495123fcaa4af92ec030bd8959ede9c45182f8bf9aa1d6502a1603f9d4a08d5e6e27b5 + checksum: cba45f8c3f1650ed0cab2c2fa3829122a336ddf3ca1525393f8729755b044e9849b0f549851899223de0912f03c1ca6d30ea46c65ce7332fa8ea9de9e75dff30 languageName: node linkType: hard -"@aws-sdk/middleware-signing@npm:3.461.0": - version: 3.461.0 - resolution: "@aws-sdk/middleware-signing@npm:3.461.0" +"@aws-sdk/middleware-signing@npm:3.468.0": + version: 3.468.0 + resolution: "@aws-sdk/middleware-signing@npm:3.468.0" dependencies: - "@aws-sdk/types": 3.460.0 + "@aws-sdk/types": 3.468.0 "@smithy/property-provider": ^2.0.0 - "@smithy/protocol-http": ^3.0.9 + "@smithy/protocol-http": ^3.0.11 "@smithy/signature-v4": ^2.0.0 - "@smithy/types": ^2.5.0 - "@smithy/util-middleware": ^2.0.6 + "@smithy/types": ^2.7.0 + "@smithy/util-middleware": ^2.0.8 tslib: ^2.5.0 - checksum: 5a202e6fe8f9482aecc455843d5b97d42198cb6e98d6b739eff6a769742220f925876981b67c0d15963fd59b9a4a79d374505d28ac4f33be8ac9599908dbe528 + checksum: fa913c7cb5f669fae12cc76c4ff115d7d20b1c63af6295df0f5f0fb1a8ecfc4038ee3bddbc5844deeb9c255f690ba6c756a288d086cbbd6136b3d749ff97a65c languageName: node linkType: hard -"@aws-sdk/middleware-user-agent@npm:3.460.0": - version: 3.460.0 - resolution: "@aws-sdk/middleware-user-agent@npm:3.460.0" +"@aws-sdk/middleware-user-agent@npm:3.468.0": + version: 3.468.0 + resolution: "@aws-sdk/middleware-user-agent@npm:3.468.0" dependencies: - "@aws-sdk/types": 3.460.0 - "@aws-sdk/util-endpoints": 3.460.0 - "@smithy/protocol-http": ^3.0.9 - "@smithy/types": ^2.5.0 + "@aws-sdk/types": 3.468.0 + "@aws-sdk/util-endpoints": 3.468.0 + "@smithy/protocol-http": ^3.0.11 + "@smithy/types": ^2.7.0 tslib: ^2.5.0 - checksum: a65daeece1071de6fe6e3ce3b9426905febda16906236f982bfc09b57d0e1837e1b47a7467b9b9f69fcf900938d29b030380a38fc76d4dde4147dca4b571f54c + checksum: 87ccf4bb8a1bfcb9f90e9efbc27993d284aa9b950ef27efdb4a7df24403c3e91a6bae4aff15ff65027b2b84fb3fa75358d492ab7d894ec83a5c2b0597c275f71 languageName: node linkType: hard "@aws-sdk/rds-signer@npm:^3.462.0": - version: 3.462.0 - resolution: "@aws-sdk/rds-signer@npm:3.462.0" + version: 3.468.0 + resolution: "@aws-sdk/rds-signer@npm:3.468.0" dependencies: "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/credential-providers": 3.462.0 - "@aws-sdk/util-format-url": 3.460.0 - "@smithy/config-resolver": ^2.0.18 - "@smithy/hash-node": ^2.0.15 - "@smithy/invalid-dependency": ^2.0.13 - "@smithy/node-config-provider": ^2.1.5 - "@smithy/protocol-http": ^3.0.9 + "@aws-sdk/credential-providers": 3.468.0 + "@aws-sdk/util-format-url": 3.468.0 + "@smithy/config-resolver": ^2.0.20 + "@smithy/hash-node": ^2.0.17 + "@smithy/invalid-dependency": ^2.0.15 + "@smithy/node-config-provider": ^2.1.7 + "@smithy/protocol-http": ^3.0.11 "@smithy/signature-v4": ^2.0.0 - "@smithy/types": ^2.5.0 + "@smithy/types": ^2.7.0 tslib: ^2.5.0 - checksum: ef4bc7a521bdde2f98f4e04bd9a7cf02a4fcd2d5907f99f88e760cd267b0f54fcfcd4e23c581fd73c61f95a787522d74884086f3bb4f77ea046bbfe966338b4e + checksum: 3f2ea49e5f896977fef9c6a165c166c5581d8f13605034c5ab9bbe978632b394413ece765db337fffa0a6e5e38d2f868a13002a4270209e32fd1e75b7fddff8a languageName: node linkType: hard -"@aws-sdk/region-config-resolver@npm:3.451.0": - version: 3.451.0 - resolution: "@aws-sdk/region-config-resolver@npm:3.451.0" +"@aws-sdk/region-config-resolver@npm:3.468.0": + version: 3.468.0 + resolution: "@aws-sdk/region-config-resolver@npm:3.468.0" dependencies: - "@smithy/node-config-provider": ^2.1.5 - "@smithy/types": ^2.5.0 + "@smithy/node-config-provider": ^2.1.7 + "@smithy/types": ^2.7.0 "@smithy/util-config-provider": ^2.0.0 - "@smithy/util-middleware": ^2.0.6 + "@smithy/util-middleware": ^2.0.8 tslib: ^2.5.0 - checksum: df1e324d873399ff022b29a0a7d03e840aadbb0a42fad0f7f1a11f041d5f37319ecefc58038d62eff998e627b07752c96ab5879b2a34ebd088e45fc9c7a12303 + checksum: 16a178fd20dc389f9d09494d477aae12da93d82b272a6f6ea02ece540b16407ae648f561c8063ba5ecc6ec0c8b0dab996a6acab1f7a8419777c62a588f000182 languageName: node linkType: hard -"@aws-sdk/token-providers@npm:3.460.0": - version: 3.460.0 - resolution: "@aws-sdk/token-providers@npm:3.460.0" +"@aws-sdk/token-providers@npm:3.468.0": + version: 3.468.0 + resolution: "@aws-sdk/token-providers@npm:3.468.0" dependencies: "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/middleware-host-header": 3.460.0 - "@aws-sdk/middleware-logger": 3.460.0 - "@aws-sdk/middleware-recursion-detection": 3.460.0 - "@aws-sdk/middleware-user-agent": 3.460.0 - "@aws-sdk/region-config-resolver": 3.451.0 - "@aws-sdk/types": 3.460.0 - "@aws-sdk/util-endpoints": 3.460.0 - "@aws-sdk/util-user-agent-browser": 3.460.0 - "@aws-sdk/util-user-agent-node": 3.460.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 + "@aws-sdk/middleware-host-header": 3.468.0 + "@aws-sdk/middleware-logger": 3.468.0 + "@aws-sdk/middleware-recursion-detection": 3.468.0 + "@aws-sdk/middleware-user-agent": 3.468.0 + "@aws-sdk/region-config-resolver": 3.468.0 + "@aws-sdk/types": 3.468.0 + "@aws-sdk/util-endpoints": 3.468.0 + "@aws-sdk/util-user-agent-browser": 3.468.0 + "@aws-sdk/util-user-agent-node": 3.468.0 + "@smithy/config-resolver": ^2.0.20 + "@smithy/fetch-http-handler": ^2.3.1 + "@smithy/hash-node": ^2.0.17 + "@smithy/invalid-dependency": ^2.0.15 + "@smithy/middleware-content-length": ^2.0.17 + "@smithy/middleware-endpoint": ^2.2.2 + "@smithy/middleware-retry": ^2.0.23 + "@smithy/middleware-serde": ^2.0.15 + "@smithy/middleware-stack": ^2.0.9 + "@smithy/node-config-provider": ^2.1.7 + "@smithy/node-http-handler": ^2.2.1 "@smithy/property-provider": ^2.0.0 - "@smithy/protocol-http": ^3.0.9 + "@smithy/protocol-http": ^3.0.11 "@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/smithy-client": ^2.1.18 + "@smithy/types": ^2.7.0 + "@smithy/url-parser": ^2.0.15 "@smithy/util-base64": ^2.0.1 - "@smithy/util-body-length-browser": ^2.0.0 + "@smithy/util-body-length-browser": ^2.0.1 "@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-defaults-mode-browser": ^2.0.22 + "@smithy/util-defaults-mode-node": ^2.0.28 + "@smithy/util-endpoints": ^1.0.6 + "@smithy/util-retry": ^2.0.8 "@smithy/util-utf8": ^2.0.2 tslib: ^2.5.0 - checksum: f459533489ef191afae6a7bb5cf6676ec4685b382880e6058c8861a7e8f45931aa4c323dfac5f17c45f390fc6997250e3b7063eb58054eae1c7919e3b940cdb2 + checksum: 1703db819b032f96e23021deb514eb0668b2102453559c8e5e1504d771bbc07b17f08d5227ab2963456016f15333ed0714b9fdcfce75cc8599ebac6a8d52235a languageName: node linkType: hard -"@aws-sdk/types@npm:3.460.0, @aws-sdk/types@npm:^3.222.0": - version: 3.460.0 - resolution: "@aws-sdk/types@npm:3.460.0" +"@aws-sdk/types@npm:3.468.0, @aws-sdk/types@npm:^3.222.0": + version: 3.468.0 + resolution: "@aws-sdk/types@npm:3.468.0" dependencies: - "@smithy/types": ^2.5.0 + "@smithy/types": ^2.7.0 tslib: ^2.5.0 - checksum: 6e3b367bebb2840a7e6efca2bbf74afeea4ce6df2a96095f1641bf0424838ae9fd12da6cbe669f4f58244963e61f38216f7f80709feb71a521d68fbb17b18f4c + checksum: f30ecfbdf6deac44d75d8575f034169a11f5be131228bab8ce78a91105d813617edb6d9492dbf266be713e1bc8978029f3fa42c17c2268732378e1c3356ad583 languageName: node linkType: hard -"@aws-sdk/util-endpoints@npm:3.460.0": - version: 3.460.0 - resolution: "@aws-sdk/util-endpoints@npm:3.460.0" +"@aws-sdk/util-endpoints@npm:3.468.0": + version: 3.468.0 + resolution: "@aws-sdk/util-endpoints@npm:3.468.0" dependencies: - "@aws-sdk/types": 3.460.0 - "@smithy/util-endpoints": ^1.0.4 + "@aws-sdk/types": 3.468.0 + "@smithy/util-endpoints": ^1.0.6 tslib: ^2.5.0 - checksum: 4b0d3c4fe38a9c28b38ad4d575d600d1a29de7b829ac579a674f79b058473467dd0f31afbae03dd13c453fee48f3decb026259714051faf54161429a3b713124 + checksum: 967d8b4a161732d28cd1ad87efeebd16cf0c5e3fe4349c0584c282afe49d1da4f60349af49d3fd16ff1bdec3bd770dc5c48b1566395809ed13ec4839829ce752 languageName: node linkType: hard -"@aws-sdk/util-format-url@npm:3.460.0": - version: 3.460.0 - resolution: "@aws-sdk/util-format-url@npm:3.460.0" +"@aws-sdk/util-format-url@npm:3.468.0": + version: 3.468.0 + resolution: "@aws-sdk/util-format-url@npm:3.468.0" dependencies: - "@aws-sdk/types": 3.460.0 - "@smithy/querystring-builder": ^2.0.13 - "@smithy/types": ^2.5.0 + "@aws-sdk/types": 3.468.0 + "@smithy/querystring-builder": ^2.0.15 + "@smithy/types": ^2.7.0 tslib: ^2.5.0 - checksum: faf11e73205de8bbacff9a64022e8ecae0830b8a32e245aba018167ba040da0ba76734cc2e5c7189403428dbd60d81433fdd456cacd13b4a4e6932cfd10533c7 + checksum: b8b469eaa32c0d680de067690363a982d37968a6e547a6201439e53165af2972a891ab2aff336de360ab6ced8c2b4204c40116e5893370b84c2e8c929295bb66 languageName: node linkType: hard "@aws-sdk/util-locate-window@npm:^3.0.0": - version: 3.310.0 - resolution: "@aws-sdk/util-locate-window@npm:3.310.0" + version: 3.465.0 + resolution: "@aws-sdk/util-locate-window@npm:3.465.0" dependencies: tslib: ^2.5.0 - checksum: d552ce5f0f836ecb13d7920ae650552c56706f26a5e8abf894ba471e18775a3791869bda95269153735bac9d211efc3ba78ea01c34428c3fed4318ac693a08bc + checksum: 3ec2c40bea7976bf403fc7f227e70180ed1016f5a76e33d57148fc6b6edb24b73b16a5e5c3e32003d6c0783339984c7e50fa997a54d414937c6de14180ee419a languageName: node linkType: hard -"@aws-sdk/util-user-agent-browser@npm:3.460.0": - version: 3.460.0 - resolution: "@aws-sdk/util-user-agent-browser@npm:3.460.0" +"@aws-sdk/util-user-agent-browser@npm:3.468.0": + version: 3.468.0 + resolution: "@aws-sdk/util-user-agent-browser@npm:3.468.0" dependencies: - "@aws-sdk/types": 3.460.0 - "@smithy/types": ^2.5.0 + "@aws-sdk/types": 3.468.0 + "@smithy/types": ^2.7.0 bowser: ^2.11.0 tslib: ^2.5.0 - checksum: 6cdbf7c0159ce0d74964ac6c751fc256084c1388720cb4f70c1a2602762270fb2f04e8ff7dc187b2975248a965f1834adfd1bc74a2769bbde7722bbf04773764 + checksum: 40edf9f88336f70567fc1a6887ea9724dffcb1caf9e18cd0c402d3250ad8dad1e5604c3007a93c6a4fcf404e026607922352fb89b3819779d354308609d08a86 languageName: node linkType: hard -"@aws-sdk/util-user-agent-node@npm:3.460.0": - version: 3.460.0 - resolution: "@aws-sdk/util-user-agent-node@npm:3.460.0" +"@aws-sdk/util-user-agent-node@npm:3.468.0": + version: 3.468.0 + resolution: "@aws-sdk/util-user-agent-node@npm:3.468.0" dependencies: - "@aws-sdk/types": 3.460.0 - "@smithy/node-config-provider": ^2.1.5 - "@smithy/types": ^2.5.0 + "@aws-sdk/types": 3.468.0 + "@smithy/node-config-provider": ^2.1.7 + "@smithy/types": ^2.7.0 tslib: ^2.5.0 peerDependencies: aws-crt: ">=1.0.0" peerDependenciesMeta: aws-crt: optional: true - checksum: 12eb5ae7e6fd0d60d188ae24f2eba746fdf9a612cc28d317c4a2762b0dc8ef4427ff82def11c964600f329edd6b14076bc6d4d8a65877ca0c42ebacfcb34c5f7 + checksum: 00c53050be0898b74a22eb3d55dc49f87a945795037e79e4eb5f0d2e191ba8e6d46bdc71654224432cad8374277429f11ec7622b1204f1783683707769f7c9f6 languageName: node linkType: hard @@ -2307,7 +2307,7 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.16.3, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.9.2": +"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.16.3, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.22.5, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.6.3, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": version: 7.23.5 resolution: "@babel/runtime@npm:7.23.5" dependencies: @@ -3136,8 +3136,8 @@ __metadata: linkType: hard "@eslint/eslintrc@npm:^2.1.1": - version: 2.1.3 - resolution: "@eslint/eslintrc@npm:2.1.3" + version: 2.1.4 + resolution: "@eslint/eslintrc@npm:2.1.4" dependencies: ajv: ^6.12.4 debug: ^4.3.2 @@ -3148,14 +3148,14 @@ __metadata: js-yaml: ^4.1.0 minimatch: ^3.1.2 strip-json-comments: ^3.1.1 - checksum: 5c6c3878192fe0ddffa9aff08b4e2f3bcc8f1c10d6449b7295a5f58b662019896deabfc19890455ffd7e60a5bd28d25d0eaefb2f78b2d230aae3879af92b89e5 + checksum: 10957c7592b20ca0089262d8c2a8accbad14b4f6507e35416c32ee6b4dbf9cad67dfb77096bbd405405e9ada2b107f3797fe94362e1c55e0b09d6e90dd149127 languageName: node linkType: hard "@eslint/js@npm:^8.46.0": - version: 8.54.0 - resolution: "@eslint/js@npm:8.54.0" - checksum: 6d88a6f711ef0133566b5340e3178a178fbb297585766460f195d0a9db85688f1e5cf8559fd5748aeb3131e2096c66595b323d8edab22df015acda68f1ebde92 + version: 8.55.0 + resolution: "@eslint/js@npm:8.55.0" + checksum: fa33ef619f0646ed15649b0c2e313e4d9ccee8425884bdbfc78020d6b6b64c0c42fa9d83061d0e6158e1d4274f03f0f9008786540e2efab8fcdc48082259908c languageName: node linkType: hard @@ -4956,9 +4956,16 @@ __metadata: linkType: hard "@polka/url@npm:^1.0.0-next.20": - version: 1.0.0-next.23 - resolution: "@polka/url@npm:1.0.0-next.23" - checksum: 4b0330de1ceecd1002c7e7449094d0c41f2ed0e21765f4835ccc7b003f2f024ac557d503b9ffdf0918cf50b80d5b8c99dfc5a91927e7b3c468b09c6bb42a3c41 + version: 1.0.0-next.24 + resolution: "@polka/url@npm:1.0.0-next.24" + checksum: 00baec4458ac86ca27edf7ce807ccfad97cd1d4b67bdedaf3401a9e755757588f3331e891290d1deea52d88df2bf2387caf8d94a6835b614d5b37b638a688273 + languageName: node + linkType: hard + +"@popperjs/core@npm:^2.11.6": + version: 2.11.8 + resolution: "@popperjs/core@npm:2.11.8" + checksum: e5c69fdebf52a4012f6a1f14817ca8e9599cb1be73dd1387e1785e2ed5e5f0862ff817f420a87c7fc532add1f88a12e25aeb010ffcbdc98eace3d55ce2139cf0 languageName: node linkType: hard @@ -5134,6 +5141,17 @@ __metadata: languageName: node linkType: hard +"@react-aria/ssr@npm:^3.5.0": + version: 3.9.0 + resolution: "@react-aria/ssr@npm:3.9.0" + dependencies: + "@swc/helpers": ^0.5.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 7b708494e7c59c4cda8c21f8580d989e7758e854b043d597a0513ee2b08c86e9b877d9f6d5eea9df758bf1b1abdb5adfcba1871e38578ecdf1fe561980addda9 + languageName: node + linkType: hard + "@redwoodjs/api-server@npm:6.4.2": version: 6.4.2 resolution: "@redwoodjs/api-server@npm:6.4.2" @@ -5740,6 +5758,37 @@ __metadata: languageName: node linkType: hard +"@restart/hooks@npm:^0.4.9": + version: 0.4.14 + resolution: "@restart/hooks@npm:0.4.14" + dependencies: + dequal: ^2.0.3 + peerDependencies: + react: ">=16.8.0" + checksum: 13e87b535af0993a941fb362c4c3883f501230ed0e6dd8843fe998e9fe8ca060a2f9cfa0535efd246bf7b6fc39cfda950314fd021529910e9dc33c01da162741 + languageName: node + linkType: hard + +"@restart/ui@npm:^1.6.6": + version: 1.6.6 + resolution: "@restart/ui@npm:1.6.6" + dependencies: + "@babel/runtime": ^7.21.0 + "@popperjs/core": ^2.11.6 + "@react-aria/ssr": ^3.5.0 + "@restart/hooks": ^0.4.9 + "@types/warning": ^3.0.0 + dequal: ^2.0.3 + dom-helpers: ^5.2.0 + uncontrollable: ^8.0.1 + warning: ^4.0.3 + peerDependencies: + react: ">=16.14.0" + react-dom: ">=16.14.0" + checksum: c2d1b56a0a6c3afadd98f1adf3cf16897b86752464d1f17f81f3611c99b2aada0c6701944807bcc997f1095dd2c3f4dac8b83ef515bac560b40a8060663871cf + languageName: node + linkType: hard + "@rollup/pluginutils@npm:^4.0.0": version: 4.2.1 resolution: "@rollup/pluginutils@npm:4.2.1" @@ -5799,86 +5848,86 @@ __metadata: languageName: node linkType: hard -"@smithy/abort-controller@npm:^2.0.14": - version: 2.0.14 - resolution: "@smithy/abort-controller@npm:2.0.14" +"@smithy/abort-controller@npm:^2.0.15": + version: 2.0.15 + resolution: "@smithy/abort-controller@npm:2.0.15" dependencies: - "@smithy/types": ^2.6.0 + "@smithy/types": ^2.7.0 tslib: ^2.5.0 - checksum: f89c7b0523fcb4df7dd7057d15a6deff9aa0b9ac5fe816a2f1331353d3874cf8d3e9b2280a1daa903c32be0fe280ef034a2222f6e62f733fc7dc40be3b1cbe38 + checksum: d852b20e3efafe6c48d29a652147c7a5902ef553d59713e21800db0ae306486303a6f474011165758bd704bdf8fa779fdeadc8c4938501adade0664775e0c007 languageName: node linkType: hard -"@smithy/config-resolver@npm:^2.0.18, @smithy/config-resolver@npm:^2.0.19": - version: 2.0.19 - resolution: "@smithy/config-resolver@npm:2.0.19" +"@smithy/config-resolver@npm:^2.0.20, @smithy/config-resolver@npm:^2.0.21": + version: 2.0.21 + resolution: "@smithy/config-resolver@npm:2.0.21" dependencies: - "@smithy/node-config-provider": ^2.1.6 - "@smithy/types": ^2.6.0 + "@smithy/node-config-provider": ^2.1.8 + "@smithy/types": ^2.7.0 "@smithy/util-config-provider": ^2.0.0 - "@smithy/util-middleware": ^2.0.7 + "@smithy/util-middleware": ^2.0.8 tslib: ^2.5.0 - checksum: 004dc40bd0f3e7e211aa10ea2410955ff68b3fc1f31c7cdfe26d18631ed93865b91375af78aba27ad46a35b648e547f1a12172052a35a7536313be449cb2998d + checksum: 5a604ae2b46a0db952d49e0ad97b3eb006954d9d0cb749cedda37998b41953954b6c51f8a0752ce8b01608ba04b8550ef7708eee490329d77da2eef42283e8ed languageName: node linkType: hard -"@smithy/credential-provider-imds@npm:^2.0.0, @smithy/credential-provider-imds@npm:^2.1.2": - version: 2.1.2 - resolution: "@smithy/credential-provider-imds@npm:2.1.2" +"@smithy/credential-provider-imds@npm:^2.0.0, @smithy/credential-provider-imds@npm:^2.1.4": + version: 2.1.4 + resolution: "@smithy/credential-provider-imds@npm:2.1.4" 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 + "@smithy/node-config-provider": ^2.1.8 + "@smithy/property-provider": ^2.0.16 + "@smithy/types": ^2.7.0 + "@smithy/url-parser": ^2.0.15 tslib: ^2.5.0 - checksum: 2726fed3805c19580b200e279415e92bf082c6a3b7e46fc32e850fcd956cb45c12f684e5f9b338b4cbc56080e5964ed9451d4b0dbbcb8674253f4f231a2bf134 + checksum: 7076c2c7378b50806e61b1db73a1470275dd8fd60e64c33c7dfd5f8569b8cb667fa024f42c991408d1212294ab02e686781b2f8a4ea6533c96690973dc31c45b languageName: node linkType: hard -"@smithy/eventstream-codec@npm:^2.0.14": - version: 2.0.14 - resolution: "@smithy/eventstream-codec@npm:2.0.14" +"@smithy/eventstream-codec@npm:^2.0.15": + version: 2.0.15 + resolution: "@smithy/eventstream-codec@npm:2.0.15" dependencies: "@aws-crypto/crc32": 3.0.0 - "@smithy/types": ^2.6.0 + "@smithy/types": ^2.7.0 "@smithy/util-hex-encoding": ^2.0.0 tslib: ^2.5.0 - checksum: 6ae0c99f814e4ea5e919b6f9fd5c08a6a211b4b693a60decf2e58f0f4a1e49e8547d3754a8c0b6e9226fe19038e1e9d9d649b6d57431d80af70d0dac971cf2bf + checksum: 6f729505b1e43306bc7d7fb13f0420f72f92283001c9b883b88b2e39266fca61d3072ec680bb0775e34697784c2bc07345feec71d02cf99816c162a20d935d11 languageName: node linkType: hard -"@smithy/fetch-http-handler@npm:^2.2.6, @smithy/fetch-http-handler@npm:^2.2.7": - version: 2.2.7 - resolution: "@smithy/fetch-http-handler@npm:2.2.7" +"@smithy/fetch-http-handler@npm:^2.3.1": + version: 2.3.1 + resolution: "@smithy/fetch-http-handler@npm:2.3.1" dependencies: - "@smithy/protocol-http": ^3.0.10 - "@smithy/querystring-builder": ^2.0.14 - "@smithy/types": ^2.6.0 + "@smithy/protocol-http": ^3.0.11 + "@smithy/querystring-builder": ^2.0.15 + "@smithy/types": ^2.7.0 "@smithy/util-base64": ^2.0.1 tslib: ^2.5.0 - checksum: 3685cb0472545c7bbc8afcfbf52ae77fc57814422c98dacdfa2f233469f62c141db2c5f52416e1fd99a7f4fdf77fcade0c75d50b5620f1f1534042f5cb4665e3 + checksum: 22a515af5df15d2d1da07bb75b12847d402651ce10e072bdf016574522eb58b8d1da0c626029743ae0ffb27a0f3d954bccf53cd35d8b48912dffebe48f8d7dd9 languageName: node linkType: hard -"@smithy/hash-node@npm:^2.0.15": - version: 2.0.16 - resolution: "@smithy/hash-node@npm:2.0.16" +"@smithy/hash-node@npm:^2.0.17": + version: 2.0.17 + resolution: "@smithy/hash-node@npm:2.0.17" dependencies: - "@smithy/types": ^2.6.0 + "@smithy/types": ^2.7.0 "@smithy/util-buffer-from": ^2.0.0 "@smithy/util-utf8": ^2.0.2 tslib: ^2.5.0 - checksum: a531febb8ea37d05ee69ecb00ca5d145b6274a862913e0d6802a3c504152c3ff94ed337c4e346171c760392276ea8d952c1963fa670167e92b84bd01376c8b99 + checksum: f6b18dc26a02fba757d63502a4911ff452f4656920878360a3ebe230dbcd3231a0d56c1e653c397fc2be4a7cceb35f697a8679c695edcb5b27a0f1bffa7e8373 languageName: node linkType: hard -"@smithy/invalid-dependency@npm:^2.0.13": - version: 2.0.14 - resolution: "@smithy/invalid-dependency@npm:2.0.14" +"@smithy/invalid-dependency@npm:^2.0.15": + version: 2.0.15 + resolution: "@smithy/invalid-dependency@npm:2.0.15" dependencies: - "@smithy/types": ^2.6.0 + "@smithy/types": ^2.7.0 tslib: ^2.5.0 - checksum: 859536b1dff18744d1461ed50c691f17a911f7f9b832e146e1e5700109052903eaec9e9fec49cfae4fc7fa595cf7834980de6a47a4e5065e027a68979c20bfd0 + checksum: 3889ae8dbbf9bcbe20c9fe5936b73044135d775612012b49bec79d43793a81b6b2b3b0b918e3b6b5f2bfbe05ffcf0d39c38233850ad9d308e5d2bf407b095485 languageName: node linkType: hard @@ -5891,198 +5940,199 @@ __metadata: languageName: node linkType: hard -"@smithy/middleware-content-length@npm:^2.0.15": - version: 2.0.16 - resolution: "@smithy/middleware-content-length@npm:2.0.16" +"@smithy/middleware-content-length@npm:^2.0.17": + version: 2.0.17 + resolution: "@smithy/middleware-content-length@npm:2.0.17" dependencies: - "@smithy/protocol-http": ^3.0.10 - "@smithy/types": ^2.6.0 + "@smithy/protocol-http": ^3.0.11 + "@smithy/types": ^2.7.0 tslib: ^2.5.0 - checksum: 6d64c9d7a5b327ddef997b5ad8035385331811596ff715f9f212b546999c4babb7296b4250d90082d8ba2a7608984dc5c0f9ca78258d13724fc94c6cb55b1a8b + checksum: 34863a988a3065e6149937e70ce2770289943b873f8d3e7dff16b8c089795e8190b991e382c1e57d8a12bbda4654429660d6c90ec7d8f6fbf0b5a86972cf579a languageName: node linkType: hard -"@smithy/middleware-endpoint@npm:^2.2.0": - version: 2.2.1 - resolution: "@smithy/middleware-endpoint@npm:2.2.1" - 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 +"@smithy/middleware-endpoint@npm:^2.2.2": + version: 2.2.3 + resolution: "@smithy/middleware-endpoint@npm:2.2.3" + dependencies: + "@smithy/middleware-serde": ^2.0.15 + "@smithy/node-config-provider": ^2.1.8 + "@smithy/shared-ini-file-loader": ^2.2.7 + "@smithy/types": ^2.7.0 + "@smithy/url-parser": ^2.0.15 + "@smithy/util-middleware": ^2.0.8 tslib: ^2.5.0 - checksum: 4cffa404b5596335019a4a9ba18cf2e9a014a8b9d97bf337e186f562e5a98851148b2a361b42fa9048c3e9b11c839367d418226e2a6be5b8057d11467ee44cc8 + checksum: 2b45ff247fe7fbd7ae904ad4280f14fa2e55a8848b5d84f3151f149bd02f7614273a336bb2f0f8e78197ce265bdd7258aea19658d505f918b8520a01619ab002 languageName: node linkType: hard -"@smithy/middleware-retry@npm:^2.0.20": - version: 2.0.21 - resolution: "@smithy/middleware-retry@npm:2.0.21" - 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 +"@smithy/middleware-retry@npm:^2.0.23": + version: 2.0.24 + resolution: "@smithy/middleware-retry@npm:2.0.24" + dependencies: + "@smithy/node-config-provider": ^2.1.8 + "@smithy/protocol-http": ^3.0.11 + "@smithy/service-error-classification": ^2.0.8 + "@smithy/smithy-client": ^2.1.18 + "@smithy/types": ^2.7.0 + "@smithy/util-middleware": ^2.0.8 + "@smithy/util-retry": ^2.0.8 tslib: ^2.5.0 uuid: ^8.3.2 - checksum: 5e95a9a640a2a3676b1c1b7434eee0b09ac437e9a995790f4eb9f47537d01cd32c224528c4a8e2b0fddc74ea131add97129ccec2362b2d4f110c06ffc3b0ec0d + checksum: def11abe91a54df53e81bcb4768d79005fa11962979300f19bb434e8d9d93a5e7e7a42d08b2a16e83fb38450003184f7ef838e02783b90dbf33aaa9cbfaa5288 languageName: node linkType: hard -"@smithy/middleware-serde@npm:^2.0.13, @smithy/middleware-serde@npm:^2.0.14": - version: 2.0.14 - resolution: "@smithy/middleware-serde@npm:2.0.14" +"@smithy/middleware-serde@npm:^2.0.15": + version: 2.0.15 + resolution: "@smithy/middleware-serde@npm:2.0.15" dependencies: - "@smithy/types": ^2.6.0 + "@smithy/types": ^2.7.0 tslib: ^2.5.0 - checksum: d03c0d73d9646f4f933e1b7b8336199f5f490a52f26d55f6a6df6e14b64860446887cddaff4bee35933d2155936d83d4818334f2c5e8f6109622f62adc24bb90 + checksum: adab898c6850079ae61e847b22d38c797a89ac4626921676bee63a315211096eb4d153338d7ba2e4097e2e990a22eb8d8736655a2068b81b3c88b75276e766b9 languageName: node linkType: hard -"@smithy/middleware-stack@npm:^2.0.7, @smithy/middleware-stack@npm:^2.0.8": - version: 2.0.8 - resolution: "@smithy/middleware-stack@npm:2.0.8" +"@smithy/middleware-stack@npm:^2.0.9": + version: 2.0.9 + resolution: "@smithy/middleware-stack@npm:2.0.9" dependencies: - "@smithy/types": ^2.6.0 + "@smithy/types": ^2.7.0 tslib: ^2.5.0 - checksum: b1d32468c67b65a6d5fe7309df26e798f41fe4c014cae5626f3bb5b4d86fe6aa4028980a1cfc9db732591a8dc2e2b41c3fe5764fa9bbbb2d7b61d7dc0b4240dd + checksum: bad18c49819629b33a43993e80558bc23d322ab71127dd5908b525f796577b541e7eeb2954b63fd813a4bb42d8cf73e6969d305d83459e01f4743c6e28024647 languageName: node linkType: hard -"@smithy/node-config-provider@npm:^2.1.5, @smithy/node-config-provider@npm:^2.1.6": - version: 2.1.6 - resolution: "@smithy/node-config-provider@npm:2.1.6" +"@smithy/node-config-provider@npm:^2.1.7, @smithy/node-config-provider@npm:^2.1.8": + version: 2.1.8 + resolution: "@smithy/node-config-provider@npm:2.1.8" dependencies: - "@smithy/property-provider": ^2.0.15 - "@smithy/shared-ini-file-loader": ^2.2.5 - "@smithy/types": ^2.6.0 + "@smithy/property-provider": ^2.0.16 + "@smithy/shared-ini-file-loader": ^2.2.7 + "@smithy/types": ^2.7.0 tslib: ^2.5.0 - checksum: 8592cafae09df25104bac7c914cc881ebd4880191f479a144a3b7581c62c3af9097ef0f8f88b8053efdb674f0faab44e323e7937decc0b15a2cb7dcf1340c286 + checksum: 04406a4c18e75c939350db07cb8f748a0a7ae02d5310ca209da50726625af01717c761b5311744bf28bdfde482e87ca129f57f3d44a703481c2e84890202f0c9 languageName: node linkType: hard -"@smithy/node-http-handler@npm:^2.1.10, @smithy/node-http-handler@npm:^2.1.9": - version: 2.1.10 - resolution: "@smithy/node-http-handler@npm:2.1.10" +"@smithy/node-http-handler@npm:^2.2.1": + version: 2.2.1 + resolution: "@smithy/node-http-handler@npm:2.2.1" dependencies: - "@smithy/abort-controller": ^2.0.14 - "@smithy/protocol-http": ^3.0.10 - "@smithy/querystring-builder": ^2.0.14 - "@smithy/types": ^2.6.0 + "@smithy/abort-controller": ^2.0.15 + "@smithy/protocol-http": ^3.0.11 + "@smithy/querystring-builder": ^2.0.15 + "@smithy/types": ^2.7.0 tslib: ^2.5.0 - checksum: b24a3d2ebf87458f92274ba099af05a1a8d933d8df3767ab5d3baf273890c1cfd4be291b06b5323e5119898ba07e88a1f257b8970f7e75fc8944b7071090fa55 + checksum: d081de68b73afd6ca63a87cc6112266db372a0ff075e488c6a38a868babdd0e44de716b284936b1176e60700d2842d9436db133c151a8e4ffc9ee36d658e03cc languageName: node linkType: hard -"@smithy/property-provider@npm:^2.0.0, @smithy/property-provider@npm:^2.0.15": - version: 2.0.15 - resolution: "@smithy/property-provider@npm:2.0.15" +"@smithy/property-provider@npm:^2.0.0, @smithy/property-provider@npm:^2.0.16": + version: 2.0.16 + resolution: "@smithy/property-provider@npm:2.0.16" dependencies: - "@smithy/types": ^2.6.0 + "@smithy/types": ^2.7.0 tslib: ^2.5.0 - checksum: 308135f2fac508220d53963db5804c340933cf52a4560df339d0904ab47986fbcfe39098353400fd05a782c82dd3ca6a8611fada59a109d70859d1dbf80e076c + checksum: 4ab44d5cc0a7f1a52112ba521aaea2d5b8c234e0b09279f592da0682eb2fc1e501b33106b1acea2502ae02bb884a8725a8379691b81c8dc4a24cf5f6fdf23ab8 languageName: node linkType: hard -"@smithy/protocol-http@npm:^3.0.10, @smithy/protocol-http@npm:^3.0.9": - version: 3.0.10 - resolution: "@smithy/protocol-http@npm:3.0.10" +"@smithy/protocol-http@npm:^3.0.11": + version: 3.0.11 + resolution: "@smithy/protocol-http@npm:3.0.11" dependencies: - "@smithy/types": ^2.6.0 + "@smithy/types": ^2.7.0 tslib: ^2.5.0 - checksum: 77bda5c76e00e0fee6a0654d10a0127287402484522dcdcb0eda84a6be196304301a68d263ba27639fb288dbcbb891bfa3efa50a24ea9a9878915a0e1ddc8620 + checksum: 35215c2dd1ba928fcd043ec5e8f54ec29b44ab65774ef5a508be2d963a8dca5daf188448c896dba2e2c1167cbe5d5ac7ff221fd307119af47fb2ccba8bdcf994 languageName: node linkType: hard -"@smithy/querystring-builder@npm:^2.0.13, @smithy/querystring-builder@npm:^2.0.14": - version: 2.0.14 - resolution: "@smithy/querystring-builder@npm:2.0.14" +"@smithy/querystring-builder@npm:^2.0.15": + version: 2.0.15 + resolution: "@smithy/querystring-builder@npm:2.0.15" dependencies: - "@smithy/types": ^2.6.0 + "@smithy/types": ^2.7.0 "@smithy/util-uri-escape": ^2.0.0 tslib: ^2.5.0 - checksum: e1287709055abd016b214e4cede9d976a63aa73aff8f3092db60a0fe7e103f7a1294bdedf39a7bbea4b2bf1b959682cbcf8e078ca0489a8a58b8b5706679b55d + checksum: 849ab4191913194de120bea443511bdded1af601e61bcf9babdfaa1d1d4ce66381aa641a8e67fd6329cc6ed9ce90c3f31d23bdd032b3cd9b55690d9d210d1012 languageName: node linkType: hard -"@smithy/querystring-parser@npm:^2.0.14": - version: 2.0.14 - resolution: "@smithy/querystring-parser@npm:2.0.14" +"@smithy/querystring-parser@npm:^2.0.15": + version: 2.0.15 + resolution: "@smithy/querystring-parser@npm:2.0.15" dependencies: - "@smithy/types": ^2.6.0 + "@smithy/types": ^2.7.0 tslib: ^2.5.0 - checksum: 36d2c7763a1c1cc2c943f7967afb53d040d4e2e704a4e659508e2a78e05a0a63c0e2f4f2404ca5dd49004d1743717c8b2c37d0135c015f1eef2b11ac48f2d4ed + checksum: c6823238352e159c58ba8cc8e43a655cacf47c41c35c04e409249858c293a0740d2998c96117fe42b5f84206a0001651ecd16287ed62935bfb82c85c35341280 languageName: node linkType: hard -"@smithy/service-error-classification@npm:^2.0.7": - version: 2.0.7 - resolution: "@smithy/service-error-classification@npm:2.0.7" +"@smithy/service-error-classification@npm:^2.0.8": + version: 2.0.8 + resolution: "@smithy/service-error-classification@npm:2.0.8" dependencies: - "@smithy/types": ^2.6.0 - checksum: 38ad47e1a80186c610711eff2e60b0b0125d3dae808b2f87281901a4af51bc870b1b7eb95b2e8c2392a7399cad68d263f1698cf11128fcf7fa7e0a21168ad770 + "@smithy/types": ^2.7.0 + checksum: fdcdf5e12663339a59ab8aab7eeddde0a4b862beaff46b100ad722efd8c925934179a26ed12a06cbdb0c39cf753952c6187b65749dd037e8db5fe588fd6e97db languageName: node linkType: hard -"@smithy/shared-ini-file-loader@npm:^2.0.6, @smithy/shared-ini-file-loader@npm:^2.2.5": - version: 2.2.5 - resolution: "@smithy/shared-ini-file-loader@npm:2.2.5" +"@smithy/shared-ini-file-loader@npm:^2.0.6, @smithy/shared-ini-file-loader@npm:^2.2.7": + version: 2.2.7 + resolution: "@smithy/shared-ini-file-loader@npm:2.2.7" dependencies: - "@smithy/types": ^2.6.0 + "@smithy/types": ^2.7.0 tslib: ^2.5.0 - checksum: 32cae6bdec49d5ca563b08aaef7b189134574e50c1d8a198839158ad1a5b48dda1b9fec16ff4d9cee48add33bfe57feb96d6ae6a95bdeca38cfb57123d948680 + checksum: 694fe5e8c3ede9d1e9d7d38196b6f38d3870f574c79730d0259962d11bafe6ee088d4a0cad171fa861600840d249b711617e6fcd4bb720bcb9ababc67945447c languageName: node linkType: hard "@smithy/signature-v4@npm:^2.0.0": - version: 2.0.16 - resolution: "@smithy/signature-v4@npm:2.0.16" + version: 2.0.17 + resolution: "@smithy/signature-v4@npm:2.0.17" dependencies: - "@smithy/eventstream-codec": ^2.0.14 + "@smithy/eventstream-codec": ^2.0.15 "@smithy/is-array-buffer": ^2.0.0 - "@smithy/types": ^2.6.0 + "@smithy/types": ^2.7.0 "@smithy/util-hex-encoding": ^2.0.0 - "@smithy/util-middleware": ^2.0.7 + "@smithy/util-middleware": ^2.0.8 "@smithy/util-uri-escape": ^2.0.0 "@smithy/util-utf8": ^2.0.2 tslib: ^2.5.0 - checksum: 0426f94792e04b64a10ffa0d62c3f7051a17cccb75d6518f791e268c6fc4a720e69055613a468d979af198c7f4024874ef01e878219c5b80e1c7c596aa8d8db0 + checksum: 8449ae428dc6f3c98ad09b11b769776ba2980d7c06d2d891c5c15f26615b28dd6737056be3a0e0304f3042f2d853a7c0812260be5c5ecf436d4a22bcc8a0c216 languageName: node linkType: hard -"@smithy/smithy-client@npm:^2.1.15, @smithy/smithy-client@npm:^2.1.16": - version: 2.1.16 - resolution: "@smithy/smithy-client@npm:2.1.16" +"@smithy/smithy-client@npm:^2.1.18": + version: 2.1.18 + resolution: "@smithy/smithy-client@npm:2.1.18" dependencies: - "@smithy/middleware-stack": ^2.0.8 - "@smithy/types": ^2.6.0 - "@smithy/util-stream": ^2.0.21 + "@smithy/middleware-stack": ^2.0.9 + "@smithy/types": ^2.7.0 + "@smithy/util-stream": ^2.0.23 tslib: ^2.5.0 - checksum: 6ba472ce63236f01a16276792c5fe6c715a58e3b5ec7b74bf9b7e84eaaa02153f65bdd595981bce3c23c2f97b0306dc633713565bcb744292cc40cc118543aa5 + checksum: cdc4876629b185f7b24150b052e2088ee07024064f6bdd42ac2bac7e152ef78f94594b38e057e992b47822a0b99ca26043f980807c0d0a6b2d8e550a83c6f279 languageName: node linkType: hard -"@smithy/types@npm:^2.5.0, @smithy/types@npm:^2.6.0": - version: 2.6.0 - resolution: "@smithy/types@npm:2.6.0" +"@smithy/types@npm:^2.7.0": + version: 2.7.0 + resolution: "@smithy/types@npm:2.7.0" dependencies: tslib: ^2.5.0 - checksum: 9233d1e6e414a8b807f9fe7a7c30064626f77b0242d8634b9b1c192f77b27a997a3caf90ecf7f4361d5926c9e9cc761991eecfb47bbfa6ce2be21c5533a3bea6 + checksum: f3edb2a281e69a7dc471b62fb34237fec44b37617d1b8f5c1bc4b6c410b03416f76eabc6ead1fb63cb18742890d9115226eaa7da055fd39f0c24754ed2fd56a7 languageName: node linkType: hard -"@smithy/url-parser@npm:^2.0.13, @smithy/url-parser@npm:^2.0.14": - version: 2.0.14 - resolution: "@smithy/url-parser@npm:2.0.14" +"@smithy/url-parser@npm:^2.0.15": + version: 2.0.15 + resolution: "@smithy/url-parser@npm:2.0.15" dependencies: - "@smithy/querystring-parser": ^2.0.14 - "@smithy/types": ^2.6.0 + "@smithy/querystring-parser": ^2.0.15 + "@smithy/types": ^2.7.0 tslib: ^2.5.0 - checksum: 84ba32e53f5a78afd9ab26f5476d387b7d05d93a9e58860198d8dee0e73d116c0a781a1ef1f57820c0d711f4ee25b4e8a7515aca8d461ec6be8715e1f4c00417 + checksum: 538ad3d073a49ca811b1835c06e97bc8f0a64a6235c212d94436d249d3f3147d3fb482a5127493ff0e664b48d91ddecd502f74714c074540135aaadb44d28fd9 languageName: node linkType: hard @@ -6096,12 +6146,12 @@ __metadata: languageName: node linkType: hard -"@smithy/util-body-length-browser@npm:^2.0.0": - version: 2.0.0 - resolution: "@smithy/util-body-length-browser@npm:2.0.0" +"@smithy/util-body-length-browser@npm:^2.0.1": + version: 2.0.1 + resolution: "@smithy/util-body-length-browser@npm:2.0.1" dependencies: tslib: ^2.5.0 - checksum: 4bccdd857bd24c9dcb6e9f2d5be03d59415f9a94d660ec7b3efb45e9aa04017f34c387368f176f24233a071af3b7a2b5f8236a2f5a83bfc884d24dfcc341e836 + checksum: 1d342acdba493047400a1aae9922e7274a2d4ba68f2980290ac4d44bd1a33a2a0a9d75b99c773924a7381d88c7b8cc612947e3adb442f7f67ac2edd4a4d3cf58 languageName: node linkType: hard @@ -6133,42 +6183,42 @@ __metadata: languageName: node linkType: hard -"@smithy/util-defaults-mode-browser@npm:^2.0.19": - version: 2.0.20 - resolution: "@smithy/util-defaults-mode-browser@npm:2.0.20" +"@smithy/util-defaults-mode-browser@npm:^2.0.22": + version: 2.0.22 + resolution: "@smithy/util-defaults-mode-browser@npm:2.0.22" dependencies: - "@smithy/property-provider": ^2.0.15 - "@smithy/smithy-client": ^2.1.16 - "@smithy/types": ^2.6.0 + "@smithy/property-provider": ^2.0.16 + "@smithy/smithy-client": ^2.1.18 + "@smithy/types": ^2.7.0 bowser: ^2.11.0 tslib: ^2.5.0 - checksum: db8f7d5b234a5d3dfc2e6d6c54c26170590c2752b07e5e2a2e4b70e40d2e14252fb0072c0f7f935383860e521e35e4915dde47f6d9d93703c7db31ec3889a123 + checksum: fd260b9ca3d151d40c3902122d18ffedff47e907fe9529690a3402ee4fea16312a824848323cd4e28f4585b7b676e51e07729b9c5a66d9dd62c2a75575b8178e languageName: node linkType: hard -"@smithy/util-defaults-mode-node@npm:^2.0.25": - version: 2.0.26 - resolution: "@smithy/util-defaults-mode-node@npm:2.0.26" +"@smithy/util-defaults-mode-node@npm:^2.0.28": + version: 2.0.29 + resolution: "@smithy/util-defaults-mode-node@npm:2.0.29" 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 + "@smithy/config-resolver": ^2.0.21 + "@smithy/credential-provider-imds": ^2.1.4 + "@smithy/node-config-provider": ^2.1.8 + "@smithy/property-provider": ^2.0.16 + "@smithy/smithy-client": ^2.1.18 + "@smithy/types": ^2.7.0 tslib: ^2.5.0 - checksum: 870a453033f120df7437c9e3a121e01657d90909fe3d25a437df84994bb1b8c69c395df92dc90edbc40a3c24d4dd6538ccf782700417c0159713756e027b7f65 + checksum: 02e58fa7865f32f9c4e7d8101ce821f455dba9b4658d0f799f9ed536142cfcb88a5fb56c8703931b56ea98140b5ba4e513f86a68c2cfa027e5ebf431aff14612 languageName: node linkType: hard -"@smithy/util-endpoints@npm:^1.0.4": - version: 1.0.5 - resolution: "@smithy/util-endpoints@npm:1.0.5" +"@smithy/util-endpoints@npm:^1.0.6": + version: 1.0.7 + resolution: "@smithy/util-endpoints@npm:1.0.7" dependencies: - "@smithy/node-config-provider": ^2.1.6 - "@smithy/types": ^2.6.0 + "@smithy/node-config-provider": ^2.1.8 + "@smithy/types": ^2.7.0 tslib: ^2.5.0 - checksum: 98c508b0afaa57ed465910fd28dee990c2bdf79a0e187095c63d5df75f29a577f79466d7540f30f3437c9ace98894524090f9563a27ab015c7698e79e57a4b5c + checksum: 026c496dbd17e7170e371d1c89161c49d2637090a430ca96b00ef34fade58f618369ae88d23b34287bb026e80c983611f0632dff645b1a162b296d8a2ed6bc85 languageName: node linkType: hard @@ -6181,40 +6231,40 @@ __metadata: languageName: node linkType: hard -"@smithy/util-middleware@npm:^2.0.6, @smithy/util-middleware@npm:^2.0.7": - version: 2.0.7 - resolution: "@smithy/util-middleware@npm:2.0.7" +"@smithy/util-middleware@npm:^2.0.8": + version: 2.0.8 + resolution: "@smithy/util-middleware@npm:2.0.8" dependencies: - "@smithy/types": ^2.6.0 + "@smithy/types": ^2.7.0 tslib: ^2.5.0 - checksum: 99e116a5d52a7204467d2211a44dc5662305d0a26f1b9b0e091291da3cb4bfa2bf249667831b36402d42da61f12e82b4a3b18267d41e1753fa51370bc8ed66f3 + checksum: e7d35ea9bcfa2a28cd243c3acaee1b55f3bd9346ad9a4d29106ee34f03a1f43ac7ea5ff60050cf522877a6c4509b49057e0d0013192d74186cf0905607009374 languageName: node linkType: hard -"@smithy/util-retry@npm:^2.0.6, @smithy/util-retry@npm:^2.0.7": - version: 2.0.7 - resolution: "@smithy/util-retry@npm:2.0.7" +"@smithy/util-retry@npm:^2.0.8": + version: 2.0.8 + resolution: "@smithy/util-retry@npm:2.0.8" dependencies: - "@smithy/service-error-classification": ^2.0.7 - "@smithy/types": ^2.6.0 + "@smithy/service-error-classification": ^2.0.8 + "@smithy/types": ^2.7.0 tslib: ^2.5.0 - checksum: 26194827ec63ec1952fbe1bd73e6bee6ca9ca415151d75dbafc61eaa2f6f04bfcb01962561f538369dab5faa65bd0c27ad4e124c76d63b846346d227f81a4efd + checksum: ce7070ed0956917d81c1c394e38460c82e3cac982a917701b432f857da16e927408cf70cbda3c12ba66cf7653d52d35cec4bc51cc95ea010e787f67901599ea5 languageName: node linkType: hard -"@smithy/util-stream@npm:^2.0.20, @smithy/util-stream@npm:^2.0.21": - version: 2.0.21 - resolution: "@smithy/util-stream@npm:2.0.21" +"@smithy/util-stream@npm:^2.0.23": + version: 2.0.23 + resolution: "@smithy/util-stream@npm:2.0.23" dependencies: - "@smithy/fetch-http-handler": ^2.2.7 - "@smithy/node-http-handler": ^2.1.10 - "@smithy/types": ^2.6.0 + "@smithy/fetch-http-handler": ^2.3.1 + "@smithy/node-http-handler": ^2.2.1 + "@smithy/types": ^2.7.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 - checksum: a61f3f63bc77901040e202c2d8b36aba775213323e8266476256af0506c8c6e78c5d9cbeb63334bddcee2786424edd27600e2bcaa302615e1ede29f3842882eb + checksum: 72dc4acde422a2e499a148b24e621105a2769f41497d9460a56e371c9be9a4cc751aa37a59373efb5bd81b81aa0bc379300658faebc699ad5f42be1638c8e0f9 languageName: node linkType: hard @@ -6237,14 +6287,23 @@ __metadata: languageName: node linkType: hard -"@smithy/util-waiter@npm:^2.0.13": - version: 2.0.14 - resolution: "@smithy/util-waiter@npm:2.0.14" +"@smithy/util-waiter@npm:^2.0.15": + version: 2.0.15 + resolution: "@smithy/util-waiter@npm:2.0.15" dependencies: - "@smithy/abort-controller": ^2.0.14 - "@smithy/types": ^2.6.0 + "@smithy/abort-controller": ^2.0.15 + "@smithy/types": ^2.7.0 tslib: ^2.5.0 - checksum: c0a59a3a6ed8b6f8c00a82940406ab9a95f4d52aaf5e4c1c9ec73df402f6c8c189d6833bf79ef5b99dccc501e24c91755f20a75822bb17374db8b02c5dafdcb3 + checksum: cb5e0a1e6ce613842a9ead1fc3d77f91dc31ecd08de8c0f14650b62e43a9a87ac0f6290c19ca1939b7c5de178921bcaec1e2deff9bd32eb206450cb579f85c64 + languageName: node + linkType: hard + +"@swc/helpers@npm:^0.5.0": + version: 0.5.3 + resolution: "@swc/helpers@npm:0.5.3" + dependencies: + tslib: ^2.4.0 + checksum: 61c3f7ccd47fc70ad91437df88be6b458cdc11e311cb331288827d7c50befffc72aa18fe913ec2a9e70fbf44e4b818bed38bfd7c329d689e1ff3c198d084cd02 languageName: node linkType: hard @@ -6679,12 +6738,12 @@ __metadata: linkType: hard "@types/jest@npm:*": - version: 29.5.10 - resolution: "@types/jest@npm:29.5.10" + version: 29.5.11 + resolution: "@types/jest@npm:29.5.11" dependencies: expect: ^29.0.0 pretty-format: ^29.0.0 - checksum: ef385905787db528de9b6beb2688865c0bb276e64256ed60b9a1a6ffc0b75737456cb5e27e952a3241c5845b6a1da487470010dd30f3ca59c8581624c564a823 + checksum: f892a06ec9f0afa9a61cd7fa316ec614e21d4df1ad301b5a837787e046fcb40dfdf7f264a55e813ac6b9b633cb9d366bd5b8d1cea725e84102477b366df23fdd languageName: node linkType: hard @@ -6798,11 +6857,11 @@ __metadata: linkType: hard "@types/node@npm:*": - version: 20.10.2 - resolution: "@types/node@npm:20.10.2" + version: 20.10.4 + resolution: "@types/node@npm:20.10.4" dependencies: undici-types: ~5.26.4 - checksum: c0c84e8270cdf7a47a18c0230c0321537cc59506adb0e3cba51949b6f1ad4879f2e2ec3a29161f2f5321ebb6415460712d9f0a25ac5c02be0f5435464fe77c23 + checksum: 054b296417e771ab524bea63cf3289559c6bdf290d45428f7cc68e9b00030ff7a0ece47b8c99a26b4f47a443919813bcf42beadff2f0bea7d8125fa541d92eb0 languageName: node linkType: hard @@ -6866,14 +6925,23 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:*, @types/react@npm:18.2.39": - version: 18.2.39 - resolution: "@types/react@npm:18.2.39" +"@types/react-transition-group@npm:^4.4.6": + version: 4.4.10 + resolution: "@types/react-transition-group@npm:4.4.10" + dependencies: + "@types/react": "*" + checksum: fe2ea11f70251e9f79f368e198c18fd469b1d4f1e1d44e4365845b44e15974b0ec925100036f449b023b0ca3480a82725c5f0a73040e282ad32ec7b0def9b57c + languageName: node + linkType: hard + +"@types/react@npm:*, @types/react@npm:>=16.9.11": + version: 18.2.42 + resolution: "@types/react@npm:18.2.42" dependencies: "@types/prop-types": "*" "@types/scheduler": "*" csstype: ^3.0.2 - checksum: 9bcb1f1f060f1bf8f4730fb1c7772d0323a6e707f274efee3b976c40d92af4677df4d88e9135faaacf34e13e02f92ef24eb7d0cbcf7fb75c1883f5623ccb19f4 + checksum: d2019afdf48303a3a598a97cc9dd2284e3c04b369e791f6ba3c33232b7f8645daff97b093a19f8b3ce75ac8a261b47552cb4513226ab16d843eb9443b0f91844 languageName: node linkType: hard @@ -6888,6 +6956,17 @@ __metadata: languageName: node linkType: hard +"@types/react@npm:18.2.39": + version: 18.2.39 + resolution: "@types/react@npm:18.2.39" + dependencies: + "@types/prop-types": "*" + "@types/scheduler": "*" + csstype: ^3.0.2 + checksum: 9bcb1f1f060f1bf8f4730fb1c7772d0323a6e707f274efee3b976c40d92af4677df4d88e9135faaacf34e13e02f92ef24eb7d0cbcf7fb75c1883f5623ccb19f4 + languageName: node + linkType: hard + "@types/responselike@npm:^1.0.0": version: 1.0.3 resolution: "@types/responselike@npm:1.0.3" @@ -6989,6 +7068,13 @@ __metadata: languageName: node linkType: hard +"@types/warning@npm:^3.0.0": + version: 3.0.3 + resolution: "@types/warning@npm:3.0.3" + checksum: 862b71c918283d2ace5cab4e9f0167507a15ee9cf4d46035c858bdd4bf1ee83cbfb42bcfd4da6e7e254a2efa32200b6521f3719c729e39e88e336309d53bb4c4 + languageName: node + linkType: hard + "@types/webpack-env@npm:1.18.1": version: 1.18.1 resolution: "@types/webpack-env@npm:1.18.1" @@ -7816,9 +7902,9 @@ __metadata: linkType: hard "acorn-walk@npm:^8.0.0, acorn-walk@npm:^8.0.2, acorn-walk@npm:^8.1.1": - version: 8.3.0 - resolution: "acorn-walk@npm:8.3.0" - checksum: 15ea56ab6529135be05e7d018f935ca80a572355dd3f6d3cd717e36df3346e0f635a93ae781b1c7942607693e2e5f3ef81af5c6fc697bbadcc377ebda7b7f5f6 + version: 8.3.1 + resolution: "acorn-walk@npm:8.3.1" + checksum: 5c8926ddb5400bc825b6baca782931f9df4ace603ba1a517f5243290fd9cdb089d52877840687b5d5c939591ebc314e2e63721514feaa37c6829c828f2b940ce languageName: node linkType: hard @@ -8494,6 +8580,24 @@ __metadata: languageName: node linkType: hard +"autoprefixer@npm:^10.4.16": + version: 10.4.16 + resolution: "autoprefixer@npm:10.4.16" + dependencies: + browserslist: ^4.21.10 + caniuse-lite: ^1.0.30001538 + fraction.js: ^4.3.6 + normalize-range: ^0.1.2 + picocolors: ^1.0.0 + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.1.0 + bin: + autoprefixer: bin/autoprefixer + checksum: 45fad7086495048dacb14bb7b00313e70e135b5d8e8751dcc60548889400763705ab16fc2d99ea628b44c3472698fb0e39598f595ba28409c965ab159035afde + languageName: node + linkType: hard + "available-typed-arrays@npm:^1.0.5": version: 1.0.5 resolution: "available-typed-arrays@npm:1.0.5" @@ -8940,6 +9044,15 @@ __metadata: languageName: node linkType: hard +"bootstrap@npm:^5.3.2": + version: 5.3.2 + resolution: "bootstrap@npm:5.3.2" + peerDependencies: + "@popperjs/core": ^2.11.8 + checksum: d5580b253d121ffc137388d41da58dce8d15f1ccd574e12f28d4a08e7649ca15e95db645b2b677cb8025bccd446bff04138fc0fe64f8cba0ccc5dc004a8644cf + languageName: node + linkType: hard + "bowser@npm:^2.11.0": version: 2.11.0 resolution: "bowser@npm:2.11.0" @@ -9089,17 +9202,17 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.0.0, browserslist@npm:^4.14.5, browserslist@npm:^4.21.4, browserslist@npm:^4.21.9, browserslist@npm:^4.22.1": - version: 4.22.1 - resolution: "browserslist@npm:4.22.1" +"browserslist@npm:^4.0.0, browserslist@npm:^4.14.5, browserslist@npm:^4.21.10, browserslist@npm:^4.21.4, browserslist@npm:^4.21.9, browserslist@npm:^4.22.2": + version: 4.22.2 + resolution: "browserslist@npm:4.22.2" dependencies: - caniuse-lite: ^1.0.30001541 - electron-to-chromium: ^1.4.535 - node-releases: ^2.0.13 + caniuse-lite: ^1.0.30001565 + electron-to-chromium: ^1.4.601 + node-releases: ^2.0.14 update-browserslist-db: ^1.0.13 bin: browserslist: cli.js - checksum: 7e6b10c53f7dd5d83fd2b95b00518889096382539fed6403829d447e05df4744088de46a571071afb447046abc3c66ad06fbc790e70234ec2517452e32ffd862 + checksum: 33ddfcd9145220099a7a1ac533cecfe5b7548ffeb29b313e1b57be6459000a1f8fa67e781cf4abee97268ac594d44134fcc4a6b2b4750ceddc9796e3a22076d9 languageName: node linkType: hard @@ -9337,10 +9450,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001541": - version: 1.0.30001565 - resolution: "caniuse-lite@npm:1.0.30001565" - checksum: 7621f358d0e1158557430a111ca5506008ae0b2c796039ef53aeebf4e2ba15e5241cb89def21ea3a633b6a609273085835b44a522165d871fa44067cdf29cccd +"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001538, caniuse-lite@npm:^1.0.30001565": + version: 1.0.30001566 + resolution: "caniuse-lite@npm:1.0.30001566" + checksum: 0f9084bf9f7d5c0a9ddb200c2baddb25dd2ad5a2f205f01e7b971f3e98e9a7bb23c2d86bae48237e9bc9782b682cffaaf3406d936937ab9844987dbe2a6401f2 languageName: node linkType: hard @@ -9527,7 +9640,7 @@ __metadata: languageName: node linkType: hard -"chokidar@npm:3.5.3, chokidar@npm:^3.4.0, chokidar@npm:^3.4.1, chokidar@npm:^3.4.2, chokidar@npm:^3.5.2, chokidar@npm:^3.5.3": +"chokidar@npm:3.5.3, chokidar@npm:>=3.0.0 <4.0.0, chokidar@npm:^3.4.0, chokidar@npm:^3.4.1, chokidar@npm:^3.4.2, chokidar@npm:^3.5.2, chokidar@npm:^3.5.3": version: 3.5.3 resolution: "chokidar@npm:3.5.3" dependencies: @@ -9633,6 +9746,13 @@ __metadata: languageName: node linkType: hard +"classnames@npm:^2.3.2": + version: 2.3.2 + resolution: "classnames@npm:2.3.2" + checksum: 2c62199789618d95545c872787137262e741f9db13328e216b093eea91c85ef2bfb152c1f9e63027204e2559a006a92eb74147d46c800a9f96297ae1d9f96f4e + languageName: node + linkType: hard + "clean-css@npm:^5.2.2": version: 5.3.3 resolution: "clean-css@npm:5.3.3" @@ -10175,18 +10295,18 @@ __metadata: linkType: hard "core-js-compat@npm:^3.31.0, core-js-compat@npm:^3.33.1": - version: 3.33.3 - resolution: "core-js-compat@npm:3.33.3" + version: 3.34.0 + resolution: "core-js-compat@npm:3.34.0" dependencies: - browserslist: ^4.22.1 - checksum: cb121e83f0f5f18b2b75428cdfb19524936a18459f1e0358f9124c8ff8b75d6a5901495cb996560cfde3a416103973f78eb5947777bb8b2fd877cdf84471465d + browserslist: ^4.22.2 + checksum: 6281f7f57a72f254c06611ec088445e11cf84e0b4edfb5f43dece1a1ff8b0ed0e81ed0bc291024761cd90c39d0f007d8bc46548265139808081d311c7cbc9c81 languageName: node linkType: hard "core-js-pure@npm:^3.23.3, core-js-pure@npm:^3.30.2": - version: 3.33.3 - resolution: "core-js-pure@npm:3.33.3" - checksum: 369f01a8b544f413da96c606039c1b9beea57fd7252b56524fcfa4276103e3e6a0f857452ed9cc5638e9d203763e2a6f8466c6915c95b64b88b3aa976467b325 + version: 3.34.0 + resolution: "core-js-pure@npm:3.34.0" + checksum: 4c44ac4beff42e07f41eef3c9ecefc8ee3f9e91e1b9f278bf8520cc1fb37afb663cff77c182541dc42d58737f93ab0f30a33a5fe661fb161fdd8aa7fe78a5edf languageName: node linkType: hard @@ -10229,6 +10349,23 @@ __metadata: languageName: node linkType: hard +"cosmiconfig@npm:^8.2.0": + version: 8.3.6 + resolution: "cosmiconfig@npm:8.3.6" + dependencies: + import-fresh: ^3.3.0 + js-yaml: ^4.1.0 + parse-json: ^5.2.0 + path-type: ^4.0.0 + peerDependencies: + typescript: ">=4.9.5" + peerDependenciesMeta: + typescript: + optional: true + checksum: dc339ebea427898c9e03bf01b56ba7afbac07fc7d2a2d5a15d6e9c14de98275a9565da949375aee1809591c152c0a3877bb86dbeaf74d5bd5aaa79955ad9e7a0 + languageName: node + linkType: hard + "cp-file@npm:^10.0.0": version: 10.0.0 resolution: "cp-file@npm:10.0.0" @@ -10612,9 +10749,9 @@ __metadata: linkType: hard "csstype@npm:^3.0.2": - version: 3.1.2 - resolution: "csstype@npm:3.1.2" - checksum: e1a52e6c25c1314d6beef5168da704ab29c5186b877c07d822bd0806717d9a265e8493a2e35ca7e68d0f5d472d43fac1cdce70fd79fd0853dff81f3028d857b5 + version: 3.1.3 + resolution: "csstype@npm:3.1.3" + checksum: 8db785cc92d259102725b3c694ec0c823f5619a84741b5c7991b8ad135dfaa66093038a1cc63e03361a6cd28d122be48f2106ae72334e067dd619a51f49eddf7 languageName: node linkType: hard @@ -11169,6 +11306,16 @@ __metadata: languageName: node linkType: hard +"dom-helpers@npm:^5.0.1, dom-helpers@npm:^5.2.0, dom-helpers@npm:^5.2.1": + version: 5.2.1 + resolution: "dom-helpers@npm:5.2.1" + dependencies: + "@babel/runtime": ^7.8.7 + csstype: ^3.0.2 + checksum: 863ba9e086f7093df3376b43e74ce4422571d404fc9828bf2c56140963d5edf0e56160f9b2f3bb61b282c07f8fc8134f023c98fd684bddcb12daf7b0f14d951c + languageName: node + linkType: hard + "dom-serializer@npm:^1.0.1": version: 1.4.1 resolution: "dom-serializer@npm:1.4.1" @@ -11386,10 +11533,10 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.4.535": - version: 1.4.601 - resolution: "electron-to-chromium@npm:1.4.601" - checksum: 6c6d090afaab83f49fe413c2558a3294e7dfce6a9d8afda3496a80ba59377901279ea7903122558399d5f5dbbdcca8562e3e826b7b78e7ec0b561fcc02c45f73 +"electron-to-chromium@npm:^1.4.601": + version: 1.4.607 + resolution: "electron-to-chromium@npm:1.4.607" + checksum: cc31233eaf2a6bb6268f97365861a4411db6823bec59126658245d4aec742cfeacb09135ada6321d27cfe74f1b72f04ff53cf2f5ac675c1b81deab035f97ab28 languageName: node linkType: hard @@ -13033,6 +13180,13 @@ __metadata: languageName: node linkType: hard +"fraction.js@npm:^4.3.6": + version: 4.3.7 + resolution: "fraction.js@npm:4.3.7" + checksum: e1553ae3f08e3ba0e8c06e43a3ab20b319966dfb7ddb96fd9b5d0ee11a66571af7f993229c88ebbb0d4a816eb813a24ed48207b140d442a8f76f33763b8d1f3f + languageName: node + linkType: hard + "fragment-cache@npm:^0.2.1": version: 0.2.1 resolution: "fragment-cache@npm:0.2.1" @@ -13141,7 +13295,7 @@ __metadata: languageName: node linkType: hard -"fsevents@npm:^2.3.2, fsevents@npm:~2.3.2": +"fsevents@npm:^2.3.2, fsevents@npm:^2.3.3, fsevents@npm:~2.3.2": version: 2.3.3 resolution: "fsevents@npm:2.3.3" dependencies: @@ -13161,7 +13315,7 @@ __metadata: languageName: node linkType: hard -"fsevents@patch:fsevents@^2.3.2#~builtin, fsevents@patch:fsevents@~2.3.2#~builtin": +"fsevents@patch:fsevents@^2.3.2#~builtin, fsevents@patch:fsevents@^2.3.3#~builtin, fsevents@patch:fsevents@~2.3.2#~builtin": version: 2.3.3 resolution: "fsevents@patch:fsevents@npm%3A2.3.3#~builtin::version=2.3.3&hash=df0bf1" dependencies: @@ -14167,6 +14321,13 @@ __metadata: languageName: node linkType: hard +"immutable@npm:^4.0.0": + version: 4.3.4 + resolution: "immutable@npm:4.3.4" + checksum: de3edd964c394bab83432429d3fb0b4816b42f56050f2ca913ba520bd3068ec3e504230d0800332d3abc478616e8f55d3787424a90d0952e6aba864524f1afc3 + languageName: node + linkType: hard + "immutable@npm:~3.7.6": version: 3.7.6 resolution: "immutable@npm:3.7.6" @@ -14174,7 +14335,7 @@ __metadata: languageName: node linkType: hard -"import-fresh@npm:^3.2.1": +"import-fresh@npm:^3.2.1, import-fresh@npm:^3.3.0": version: 3.3.0 resolution: "import-fresh@npm:3.3.0" dependencies: @@ -15500,7 +15661,7 @@ __metadata: languageName: node linkType: hard -"jiti@npm:^1.17.1": +"jiti@npm:^1.17.1, jiti@npm:^1.18.2": version: 1.21.0 resolution: "jiti@npm:1.21.0" bin: @@ -16933,7 +17094,7 @@ __metadata: languageName: node linkType: hard -"nanoid@npm:^3.3.6": +"nanoid@npm:^3.3.7": version: 3.3.7 resolution: "nanoid@npm:3.3.7" bin: @@ -17126,7 +17287,7 @@ __metadata: languageName: node linkType: hard -"node-releases@npm:^2.0.13": +"node-releases@npm:^2.0.14": version: 2.0.14 resolution: "node-releases@npm:2.0.14" checksum: 59443a2f77acac854c42d321bf1b43dea0aef55cd544c6a686e9816a697300458d4e82239e2d794ea05f7bbbc8a94500332e2d3ac3f11f52e4b16cbe638b3c41 @@ -17223,6 +17384,13 @@ __metadata: languageName: node linkType: hard +"normalize-range@npm:^0.1.2": + version: 0.1.2 + resolution: "normalize-range@npm:0.1.2" + checksum: 9b2f14f093593f367a7a0834267c24f3cb3e887a2d9809c77d8a7e5fd08738bcd15af46f0ab01cc3a3d660386f015816b5c922cea8bf2ee79777f40874063184 + languageName: node + linkType: hard + "normalize-url@npm:^4.1.0": version: 4.5.1 resolution: "normalize-url@npm:4.5.1" @@ -18217,6 +18385,20 @@ __metadata: languageName: node linkType: hard +"postcss-loader@npm:^7.3.3": + version: 7.3.3 + resolution: "postcss-loader@npm:7.3.3" + dependencies: + cosmiconfig: ^8.2.0 + jiti: ^1.18.2 + semver: ^7.3.8 + peerDependencies: + postcss: ^7.0.0 || ^8.0.1 + webpack: ^5.0.0 + checksum: c724044d6ae56334535c26bb4efc9c151431d44d60bc8300157c760747281a242757d8dab32db72738434531175b38a408cb0b270bb96207c07584dcfcd899ff + languageName: node + linkType: hard + "postcss-merge-longhand@npm:^6.0.0": version: 6.0.0 resolution: "postcss-merge-longhand@npm:6.0.0" @@ -18521,14 +18703,14 @@ __metadata: languageName: node linkType: hard -"postcss@npm:^8.2.14, postcss@npm:^8.4.21, postcss@npm:^8.4.23, postcss@npm:^8.4.24, postcss@npm:^8.4.27": - version: 8.4.31 - resolution: "postcss@npm:8.4.31" +"postcss@npm:^8.2.14, postcss@npm:^8.4.21, postcss@npm:^8.4.23, postcss@npm:^8.4.24, postcss@npm:^8.4.27, postcss@npm:^8.4.31": + version: 8.4.32 + resolution: "postcss@npm:8.4.32" dependencies: - nanoid: ^3.3.6 + nanoid: ^3.3.7 picocolors: ^1.0.0 source-map-js: ^1.0.2 - checksum: 1d8611341b073143ad90486fcdfeab49edd243377b1f51834dc4f6d028e82ce5190e4f11bb2633276864503654fb7cab28e67abdc0fbf9d1f88cad4a0ff0beea + checksum: 220d9d0bf5d65be7ed31006c523bfb11619461d296245c1231831f90150aeb4a31eab9983ac9c5c89759a3ca8b60b3e0d098574964e1691673c3ce5c494305ae languageName: node linkType: hard @@ -18667,9 +18849,9 @@ __metadata: linkType: hard "process-warning@npm:^2.0.0, process-warning@npm:^2.2.0": - version: 2.3.1 - resolution: "process-warning@npm:2.3.1" - checksum: 5806d2a3c835430372f51798df1c39aaf69217bc2f11288577c25648279e546752629172e518f880554ca37704a9a46333b916c240ceeede60ec77053188050d + version: 2.3.2 + resolution: "process-warning@npm:2.3.2" + checksum: cbeddc85d3963eccd6578b1eea5ba981383d1ec688d6e4ba5bf0ca6662d094c024b44dfcb1c530662c7694b68fe09fd95fa0269a1309090d793008f4553e7784 languageName: node linkType: hard @@ -18723,7 +18905,19 @@ __metadata: languageName: node linkType: hard -"prop-types@npm:15.8.1, prop-types@npm:^15.7.2, prop-types@npm:^15.8.1": +"prop-types-extra@npm:^1.1.0": + version: 1.1.1 + resolution: "prop-types-extra@npm:1.1.1" + dependencies: + react-is: ^16.3.2 + warning: ^4.0.0 + peerDependencies: + react: ">=0.14.0" + checksum: ebf1c048687bb538457f91a3610abb36ca0f50587a6afae80443a9e65b9db96882d18c3511175a8967fad4ca5dcd804913bbc241d7b5160c74cf69aacdd054f0 + languageName: node + linkType: hard + +"prop-types@npm:15.8.1, prop-types@npm:^15.6.2, prop-types@npm:^15.7.2, prop-types@npm:^15.8.1": version: 15.8.1 resolution: "prop-types@npm:15.8.1" dependencies: @@ -18982,6 +19176,33 @@ __metadata: languageName: node linkType: hard +"react-bootstrap@npm:^2.9.1": + version: 2.9.1 + resolution: "react-bootstrap@npm:2.9.1" + dependencies: + "@babel/runtime": ^7.22.5 + "@restart/hooks": ^0.4.9 + "@restart/ui": ^1.6.6 + "@types/react-transition-group": ^4.4.6 + classnames: ^2.3.2 + dom-helpers: ^5.2.1 + invariant: ^2.2.4 + prop-types: ^15.8.1 + prop-types-extra: ^1.1.0 + react-transition-group: ^4.4.5 + uncontrollable: ^7.2.1 + warning: ^4.0.3 + peerDependencies: + "@types/react": ">=16.14.8" + react: ">=16.14.0" + react-dom: ">=16.14.0" + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 889de157ab782257a6496d37aebb578b13850caec41bdc068e68a2e1ff2af18740f0a388974850f59115a57fa34a2949a2803aaa79000498fef7d0b63b413706 + languageName: node + linkType: hard + "react-dom@npm:18.2.0": version: 18.2.0 resolution: "react-dom@npm:18.2.0" @@ -19038,7 +19259,7 @@ __metadata: languageName: node linkType: hard -"react-is@npm:^16.13.1, react-is@npm:^16.7.0": +"react-is@npm:^16.13.1, react-is@npm:^16.3.2, react-is@npm:^16.7.0": version: 16.13.1 resolution: "react-is@npm:16.13.1" checksum: f7a19ac3496de32ca9ae12aa030f00f14a3d45374f1ceca0af707c831b2a6098ef0d6bdae51bd437b0a306d7f01d4677fcc8de7c0d331eb47ad0f46130e53c5f @@ -19059,6 +19280,13 @@ __metadata: languageName: node linkType: hard +"react-lifecycles-compat@npm:^3.0.4": + version: 3.0.4 + resolution: "react-lifecycles-compat@npm:3.0.4" + checksum: a904b0fc0a8eeb15a148c9feb7bc17cec7ef96e71188280061fc340043fd6d8ee3ff233381f0e8f95c1cf926210b2c4a31f38182c8f35ac55057e453d6df204f + languageName: node + linkType: hard + "react-refresh@npm:0.14.0, react-refresh@npm:^0.14.0": version: 0.14.0 resolution: "react-refresh@npm:0.14.0" @@ -19066,6 +19294,21 @@ __metadata: languageName: node linkType: hard +"react-transition-group@npm:^4.4.5": + version: 4.4.5 + resolution: "react-transition-group@npm:4.4.5" + dependencies: + "@babel/runtime": ^7.5.5 + dom-helpers: ^5.0.1 + loose-envify: ^1.4.0 + prop-types: ^15.6.2 + peerDependencies: + react: ">=16.6.0" + react-dom: ">=16.6.0" + checksum: 75602840106aa9c6545149d6d7ae1502fb7b7abadcce70a6954c4b64a438ff1cd16fc77a0a1e5197cdd72da398f39eb929ea06f9005c45b132ed34e056ebdeb1 + languageName: node + linkType: hard + "react@npm:18.2.0": version: 18.2.0 resolution: "react@npm:18.2.0" @@ -19667,6 +19910,7 @@ __metadata: dependencies: "@netlify/zip-it-and-ship-it": ^9.27.0 "@redwoodjs/core": 6.4.2 + fsevents: ^2.3.3 languageName: unknown linkType: soft @@ -19773,6 +20017,43 @@ __metadata: languageName: node linkType: hard +"sass-loader@npm:^13.3.2": + version: 13.3.2 + resolution: "sass-loader@npm:13.3.2" + dependencies: + neo-async: ^2.6.2 + peerDependencies: + fibers: ">= 3.1.0" + node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + sass: ^1.3.0 + sass-embedded: "*" + webpack: ^5.0.0 + peerDependenciesMeta: + fibers: + optional: true + node-sass: + optional: true + sass: + optional: true + sass-embedded: + optional: true + checksum: 7394a8d1b818a289b9caabd979543c907b83e28ae08bc80ccb836e0ccabc4ae574c077ab2fa520ba5fb8abb2ec3e7c9822a1cbd8c58a28ff30018be9d1dc6c27 + languageName: node + linkType: hard + +"sass@npm:^1.69.5": + version: 1.69.5 + resolution: "sass@npm:1.69.5" + dependencies: + chokidar: ">=3.0.0 <4.0.0" + immutable: ^4.0.0 + source-map-js: ">=0.6.2 <2.0.0" + bin: + sass: sass.js + checksum: c66f4f02882e7aa7aa49703824dadbb5a174dcd05e3cd96f17f73687889aab6027d078b518e2c04b594dfd89b2f574824bf935c7aee46c770aa6be9aafcc49f2 + languageName: node + linkType: hard + "saxes@npm:^6.0.0": version: 6.0.0 resolution: "saxes@npm:6.0.0" @@ -20341,7 +20622,7 @@ __metadata: languageName: node linkType: hard -"source-map-js@npm:^1.0.1, source-map-js@npm:^1.0.2": +"source-map-js@npm:>=0.6.2 <2.0.0, source-map-js@npm:^1.0.1, source-map-js@npm:^1.0.2": version: 1.0.2 resolution: "source-map-js@npm:1.0.2" checksum: c049a7fc4deb9a7e9b481ae3d424cc793cb4845daa690bc5a05d428bf41bf231ced49b4cf0c9e77f9d42fdb3d20d6187619fc586605f5eabe995a316da8d377c @@ -21091,8 +21372,8 @@ __metadata: linkType: hard "terser@npm:^5.10.0, terser@npm:^5.16.8": - version: 5.24.0 - resolution: "terser@npm:5.24.0" + version: 5.26.0 + resolution: "terser@npm:5.26.0" dependencies: "@jridgewell/source-map": ^0.3.3 acorn: ^8.8.2 @@ -21100,7 +21381,7 @@ __metadata: source-map-support: ~0.5.20 bin: terser: bin/terser - checksum: d88f774b6fa711a234fcecefd7657f99189c367e17dbe95a51c2776d426ad0e4d98d1ffe6edfdf299877c7602e495bdd711d21b2caaec188410795e5447d0f6c + checksum: 02a9bb896f04df828025af8f0eced36c315d25d310b6c2418e7dad2bed19ddeb34a9cea9b34e7c24789830fa51e1b6a9be26679980987a9c817a7e6d9cd4154b languageName: node linkType: hard @@ -21276,9 +21557,9 @@ __metadata: linkType: hard "toad-cache@npm:^3.3.0": - version: 3.3.1 - resolution: "toad-cache@npm:3.3.1" - checksum: 94f4588378826067ce6dc0b511f59cd0644d9c8e2ac95dcaa38fd7df11526a97fde54fe2cb3350ef455e4b83d28f1c6ae986f8e5f57ea5ba7bf5fb71d0ec60cb + version: 3.4.1 + resolution: "toad-cache@npm:3.4.1" + checksum: c679bd5af6883a70a251168d05b594709b11117a9a96f040673e0b993b49f59b0e6d3fcafff50b16839658f37533a91bd9dbb72b1d34c02b0f2021c603aa7fcc languageName: node linkType: hard @@ -21644,12 +21925,12 @@ __metadata: linkType: hard "typescript@npm:^5.0.4": - version: 5.3.2 - resolution: "typescript@npm:5.3.2" + version: 5.3.3 + resolution: "typescript@npm:5.3.3" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: d92534dda639eb825db013203404c1fabca8ac630564283c9e7dc9e64fd9c9346c2de95ecebdf3e6e8c1c32941bca1cfe0da37877611feb9daf8feeaea58d230 + checksum: 2007ccb6e51bbbf6fde0a78099efe04dc1c3dfbdff04ca3b6a8bc717991862b39fd6126c0c3ebf2d2d98ac5e960bcaa873826bb2bb241f14277034148f41f6a2 languageName: node linkType: hard @@ -21664,12 +21945,12 @@ __metadata: linkType: hard "typescript@patch:typescript@^5.0.4#~builtin": - version: 5.3.2 - resolution: "typescript@patch:typescript@npm%3A5.3.2#~builtin::version=5.3.2&hash=e012d7" + version: 5.3.3 + resolution: "typescript@patch:typescript@npm%3A5.3.3#~builtin::version=5.3.3&hash=e012d7" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 47b2e63418ea7ef7dd0bf359ee41c6fca852c680826089269c5d03673ead471e052b172561f377f9e51212054e5f0fe19dd58085ff7db7b168449a6af704c784 + checksum: 4e604a9e107ce0c23b16a2f8d79d0531d4d8fe9ebbb7a8c395c66998c39892f0e0a071ef0b0d4e66420a8ec2b8d6cfd9cdb29ba24f25b37cba072e9282376df9 languageName: node linkType: hard @@ -21699,6 +21980,29 @@ __metadata: languageName: node linkType: hard +"uncontrollable@npm:^7.2.1": + version: 7.2.1 + resolution: "uncontrollable@npm:7.2.1" + dependencies: + "@babel/runtime": ^7.6.3 + "@types/react": ">=16.9.11" + invariant: ^2.2.4 + react-lifecycles-compat: ^3.0.4 + peerDependencies: + react: ">=15.0.0" + checksum: 3345c0c1916193ddb9cc6f2b78711dc9f22b919d780485e15b95690722e9d1797fc702c4ebb30c0acaae6a772b865d0a9ddc83fa1da44958f089aee78f2f5eab + languageName: node + linkType: hard + +"uncontrollable@npm:^8.0.1": + version: 8.0.4 + resolution: "uncontrollable@npm:8.0.4" + peerDependencies: + react: ">=16.14.0" + checksum: b685af148e29372ac336c95a7562094c5375d14807b3bc85861708363cb64b29a487f55f9d6eafda8003f21f1ca61c9cce8c83bcea5d94a0ba32bca519ac3be7 + languageName: node + linkType: hard + "undefsafe@npm:^2.0.5": version: 2.0.5 resolution: "undefsafe@npm:2.0.5" @@ -22207,6 +22511,15 @@ __metadata: languageName: node linkType: hard +"warning@npm:^4.0.0, warning@npm:^4.0.3": + version: 4.0.3 + resolution: "warning@npm:4.0.3" + dependencies: + loose-envify: ^1.0.0 + checksum: 4f2cb6a9575e4faf71ddad9ad1ae7a00d0a75d24521c193fa464f30e6b04027bd97aa5d9546b0e13d3a150ab402eda216d59c1d0f2d6ca60124d96cd40dfa35c + languageName: node + linkType: hard + "watchpack-chokidar2@npm:^2.0.1": version: 2.0.1 resolution: "watchpack-chokidar2@npm:2.0.1" @@ -22291,9 +22604,17 @@ __metadata: "@redwoodjs/web": 6.4.2 "@types/react": 18.2.39 "@types/react-dom": 18.2.17 + autoprefixer: ^10.4.16 + bootstrap: ^5.3.2 + humanize-string: 2.1.0 + postcss: ^8.4.31 + postcss-loader: ^7.3.3 prop-types: 15.8.1 react: 18.2.0 + react-bootstrap: ^2.9.1 react-dom: 18.2.0 + sass: ^1.69.5 + sass-loader: ^13.3.2 languageName: unknown linkType: soft