From 126d5c1f4a7cf9d2d0098f72caaa1bda75049345 Mon Sep 17 00:00:00 2001 From: hingobway Date: Sun, 1 Sep 2024 21:09:09 -0400 Subject: [PATCH 01/11] update types --- client/graphql-schema.d.ts | 2 +- server/graphql-schema.d.ts | 2 +- server/src/db/schema/Cabin/types.graphql.ts | 2 +- server/src/db/schema/Room/types.graphql.ts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/client/graphql-schema.d.ts b/client/graphql-schema.d.ts index ab876d6..3d26484 100644 --- a/client/graphql-schema.d.ts +++ b/client/graphql-schema.d.ts @@ -30,7 +30,7 @@ export type introspection = { 'Int': unknown; 'Mutation': { kind: 'OBJECT'; name: 'Mutation'; fields: { 'cabinCreate': { name: 'cabinCreate'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Cabin'; ofType: null; }; } }; 'cabinCreateMultiple': { name: 'cabinCreateMultiple'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Cabin'; ofType: null; }; }; }; } }; 'cabinDelete': { name: 'cabinDelete'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Cabin'; ofType: null; }; } }; 'cabinUpdate': { name: 'cabinUpdate'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Cabin'; ofType: null; }; } }; 'cmsFileCreateFolder': { name: 'cmsFileCreateFolder'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'cmsFileDelete': { name: 'cmsFileDelete'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'cmsFileMove': { name: 'cmsFileMove'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'cmsFileUpload': { name: 'cmsFileUpload'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'CMSFileUploadOutput'; ofType: null; }; } }; 'cmsImageConfirm': { name: 'cmsImageConfirm'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'CMSImage'; ofType: null; }; } }; 'cmsImageDelete': { name: 'cmsImageDelete'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'CMSImage'; ofType: null; }; } }; 'cmsImageDeleteMultiple': { name: 'cmsImageDeleteMultiple'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'OBJECT'; name: 'CMSImage'; ofType: null; }; }; } }; 'cmsImageDeleteUnconfirmed': { name: 'cmsImageDeleteUnconfirmed'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'OBJECT'; name: 'CMSImage'; ofType: null; }; }; } }; 'cmsImageUpdate': { name: 'cmsImageUpdate'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'CMSImage'; ofType: null; }; } }; 'cmsImageUpload': { name: 'cmsImageUpload'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'CMSImageUploadOutput'; ofType: null; }; } }; 'cmsPageCreate': { name: 'cmsPageCreate'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'CMSPage'; ofType: null; }; } }; 'cmsPageDelete': { name: 'cmsPageDelete'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'CMSPage'; ofType: null; }; } }; 'cmsPageUpdate': { name: 'cmsPageUpdate'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'CMSPage'; ofType: null; }; } }; 'preUserCreate': { name: 'preUserCreate'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'PreUser'; ofType: null; }; } }; 'preUserDelete': { name: 'preUserDelete'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'PreUser'; ofType: null; }; } }; 'preUserUpdate': { name: 'preUserUpdate'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'PreUser'; ofType: null; }; } }; 'roomCreate': { name: 'roomCreate'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Room'; ofType: null; }; } }; 'roomCreateMultiple': { name: 'roomCreateMultiple'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Room'; ofType: null; }; }; }; } }; 'roomDelete': { name: 'roomDelete'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Room'; ofType: null; }; } }; 'roomUpdate': { name: 'roomUpdate'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Room'; ofType: null; }; } }; 'stayCreate': { name: 'stayCreate'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Stay'; ofType: null; }; } }; 'stayDelete': { name: 'stayDelete'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Stay'; ofType: null; }; } }; 'stayUpdate': { name: 'stayUpdate'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Stay'; ofType: null; }; } }; 'userCreate': { name: 'userCreate'; type: { kind: 'OBJECT'; name: 'User'; ofType: null; } }; 'userCreateCredential': { name: 'userCreateCredential'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'userDelete': { name: 'userDelete'; type: { kind: 'OBJECT'; name: 'User'; ofType: null; } }; 'userDeleteCredential': { name: 'userDeleteCredential'; type: { kind: 'OBJECT'; name: 'UserCredential'; ofType: null; } }; 'userResetSecret': { name: 'userResetSecret'; type: { kind: 'OBJECT'; name: 'User'; ofType: null; } }; 'userUpdate': { name: 'userUpdate'; type: { kind: 'OBJECT'; name: 'User'; ofType: null; } }; }; }; 'PreUser': { kind: 'OBJECT'; name: 'PreUser'; fields: { 'email': { name: 'email'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'scope': { name: 'scope'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'UserScopeProp'; ofType: null; }; }; } }; 'timestamp': { name: 'timestamp'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'TS'; ofType: null; }; } }; }; }; - 'Query': { kind: 'OBJECT'; name: 'Query'; fields: { 'cabin': { name: 'cabin'; type: { kind: 'OBJECT'; name: 'Cabin'; ofType: null; } }; 'cabins': { name: 'cabins'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'OBJECT'; name: 'Cabin'; ofType: null; }; }; } }; 'cmsFilePresign': { name: 'cmsFilePresign'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'cmsFiles': { name: 'cmsFiles'; type: { kind: 'OBJECT'; name: 'CMSFileListOutput'; ofType: null; } }; 'cmsImage': { name: 'cmsImage'; type: { kind: 'OBJECT'; name: 'CMSImage'; ofType: null; } }; 'cmsImages': { name: 'cmsImages'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'OBJECT'; name: 'CMSImage'; ofType: null; }; }; } }; 'cmsImagesFromPageId': { name: 'cmsImagesFromPageId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'OBJECT'; name: 'CMSImage'; ofType: null; }; }; } }; 'cmsPage': { name: 'cmsPage'; type: { kind: 'OBJECT'; name: 'CMSPage'; ofType: null; } }; 'cmsPageFromSlug': { name: 'cmsPageFromSlug'; type: { kind: 'OBJECT'; name: 'CMSPage'; ofType: null; } }; 'cmsPages': { name: 'cmsPages'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'OBJECT'; name: 'CMSPage'; ofType: null; }; }; } }; 'preUser': { name: 'preUser'; type: { kind: 'OBJECT'; name: 'PreUser'; ofType: null; } }; 'preUserFromEmail': { name: 'preUserFromEmail'; type: { kind: 'OBJECT'; name: 'PreUser'; ofType: null; } }; 'preUsers': { name: 'preUsers'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'PreUser'; ofType: null; }; }; } }; 'room': { name: 'room'; type: { kind: 'OBJECT'; name: 'Room'; ofType: null; } }; 'rooms': { name: 'rooms'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'OBJECT'; name: 'Room'; ofType: null; }; }; } }; 'roomsById': { name: 'roomsById'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'OBJECT'; name: 'Room'; ofType: null; }; }; } }; 'roomsFromCabin': { name: 'roomsFromCabin'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'OBJECT'; name: 'Room'; ofType: null; }; }; } }; 'roomsNoCabin': { name: 'roomsNoCabin'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'OBJECT'; name: 'Room'; ofType: null; }; }; } }; 'stay': { name: 'stay'; type: { kind: 'OBJECT'; name: 'Stay'; ofType: null; } }; 'stays': { name: 'stays'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Stay'; ofType: null; }; }; }; } }; 'staysInRoom': { name: 'staysInRoom'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Stay'; ofType: null; }; }; }; } }; 'user': { name: 'user'; type: { kind: 'OBJECT'; name: 'User'; ofType: null; } }; 'userFromAuth': { name: 'userFromAuth'; type: { kind: 'OBJECT'; name: 'User'; ofType: null; } }; 'userFromEmail': { name: 'userFromEmail'; type: { kind: 'OBJECT'; name: 'User'; ofType: null; } }; 'userSECURE': { name: 'userSECURE'; type: { kind: 'OBJECT'; name: 'UserSECURE'; ofType: null; } }; 'users': { name: 'users'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'User'; ofType: null; }; }; } }; }; }; + 'Query': { kind: 'OBJECT'; name: 'Query'; fields: { 'cabin': { name: 'cabin'; type: { kind: 'OBJECT'; name: 'Cabin'; ofType: null; } }; 'cabins': { name: 'cabins'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Cabin'; ofType: null; }; }; }; } }; 'cmsFilePresign': { name: 'cmsFilePresign'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'cmsFiles': { name: 'cmsFiles'; type: { kind: 'OBJECT'; name: 'CMSFileListOutput'; ofType: null; } }; 'cmsImage': { name: 'cmsImage'; type: { kind: 'OBJECT'; name: 'CMSImage'; ofType: null; } }; 'cmsImages': { name: 'cmsImages'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'OBJECT'; name: 'CMSImage'; ofType: null; }; }; } }; 'cmsImagesFromPageId': { name: 'cmsImagesFromPageId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'OBJECT'; name: 'CMSImage'; ofType: null; }; }; } }; 'cmsPage': { name: 'cmsPage'; type: { kind: 'OBJECT'; name: 'CMSPage'; ofType: null; } }; 'cmsPageFromSlug': { name: 'cmsPageFromSlug'; type: { kind: 'OBJECT'; name: 'CMSPage'; ofType: null; } }; 'cmsPages': { name: 'cmsPages'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'OBJECT'; name: 'CMSPage'; ofType: null; }; }; } }; 'preUser': { name: 'preUser'; type: { kind: 'OBJECT'; name: 'PreUser'; ofType: null; } }; 'preUserFromEmail': { name: 'preUserFromEmail'; type: { kind: 'OBJECT'; name: 'PreUser'; ofType: null; } }; 'preUsers': { name: 'preUsers'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'PreUser'; ofType: null; }; }; } }; 'room': { name: 'room'; type: { kind: 'OBJECT'; name: 'Room'; ofType: null; } }; 'rooms': { name: 'rooms'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Room'; ofType: null; }; }; }; } }; 'roomsById': { name: 'roomsById'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'OBJECT'; name: 'Room'; ofType: null; }; }; } }; 'roomsFromCabin': { name: 'roomsFromCabin'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'OBJECT'; name: 'Room'; ofType: null; }; }; } }; 'roomsNoCabin': { name: 'roomsNoCabin'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'OBJECT'; name: 'Room'; ofType: null; }; }; } }; 'stay': { name: 'stay'; type: { kind: 'OBJECT'; name: 'Stay'; ofType: null; } }; 'stays': { name: 'stays'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Stay'; ofType: null; }; }; }; } }; 'staysInRoom': { name: 'staysInRoom'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Stay'; ofType: null; }; }; }; } }; 'user': { name: 'user'; type: { kind: 'OBJECT'; name: 'User'; ofType: null; } }; 'userFromAuth': { name: 'userFromAuth'; type: { kind: 'OBJECT'; name: 'User'; ofType: null; } }; 'userFromEmail': { name: 'userFromEmail'; type: { kind: 'OBJECT'; name: 'User'; ofType: null; } }; 'userSECURE': { name: 'userSECURE'; type: { kind: 'OBJECT'; name: 'UserSECURE'; ofType: null; } }; 'users': { name: 'users'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'User'; ofType: null; }; }; } }; }; }; 'Room': { kind: 'OBJECT'; name: 'Room'; fields: { 'aliases': { name: 'aliases'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; } }; 'availableBeds': { name: 'availableBeds'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'beds': { name: 'beds'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'cabin': { name: 'cabin'; type: { kind: 'OBJECT'; name: 'Cabin'; ofType: null; } }; 'forCouples': { name: 'forCouples'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'noCount': { name: 'noCount'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'timestamp': { name: 'timestamp'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'TS'; ofType: null; }; } }; }; }; 'RoomCreate': { kind: 'INPUT_OBJECT'; name: 'RoomCreate'; isOneOf: false; inputFields: [{ name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'aliases'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'cabinId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'beds'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; defaultValue: null }, { name: 'forCouples'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'noCount'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }]; }; 'RoomOrCustomRoom': { kind: 'UNION'; name: 'RoomOrCustomRoom'; fields: {}; possibleTypes: 'CustomRoom' | 'Room'; }; diff --git a/server/graphql-schema.d.ts b/server/graphql-schema.d.ts index ab876d6..3d26484 100644 --- a/server/graphql-schema.d.ts +++ b/server/graphql-schema.d.ts @@ -30,7 +30,7 @@ export type introspection = { 'Int': unknown; 'Mutation': { kind: 'OBJECT'; name: 'Mutation'; fields: { 'cabinCreate': { name: 'cabinCreate'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Cabin'; ofType: null; }; } }; 'cabinCreateMultiple': { name: 'cabinCreateMultiple'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Cabin'; ofType: null; }; }; }; } }; 'cabinDelete': { name: 'cabinDelete'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Cabin'; ofType: null; }; } }; 'cabinUpdate': { name: 'cabinUpdate'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Cabin'; ofType: null; }; } }; 'cmsFileCreateFolder': { name: 'cmsFileCreateFolder'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'cmsFileDelete': { name: 'cmsFileDelete'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'cmsFileMove': { name: 'cmsFileMove'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'cmsFileUpload': { name: 'cmsFileUpload'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'CMSFileUploadOutput'; ofType: null; }; } }; 'cmsImageConfirm': { name: 'cmsImageConfirm'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'CMSImage'; ofType: null; }; } }; 'cmsImageDelete': { name: 'cmsImageDelete'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'CMSImage'; ofType: null; }; } }; 'cmsImageDeleteMultiple': { name: 'cmsImageDeleteMultiple'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'OBJECT'; name: 'CMSImage'; ofType: null; }; }; } }; 'cmsImageDeleteUnconfirmed': { name: 'cmsImageDeleteUnconfirmed'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'OBJECT'; name: 'CMSImage'; ofType: null; }; }; } }; 'cmsImageUpdate': { name: 'cmsImageUpdate'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'CMSImage'; ofType: null; }; } }; 'cmsImageUpload': { name: 'cmsImageUpload'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'CMSImageUploadOutput'; ofType: null; }; } }; 'cmsPageCreate': { name: 'cmsPageCreate'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'CMSPage'; ofType: null; }; } }; 'cmsPageDelete': { name: 'cmsPageDelete'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'CMSPage'; ofType: null; }; } }; 'cmsPageUpdate': { name: 'cmsPageUpdate'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'CMSPage'; ofType: null; }; } }; 'preUserCreate': { name: 'preUserCreate'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'PreUser'; ofType: null; }; } }; 'preUserDelete': { name: 'preUserDelete'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'PreUser'; ofType: null; }; } }; 'preUserUpdate': { name: 'preUserUpdate'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'PreUser'; ofType: null; }; } }; 'roomCreate': { name: 'roomCreate'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Room'; ofType: null; }; } }; 'roomCreateMultiple': { name: 'roomCreateMultiple'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Room'; ofType: null; }; }; }; } }; 'roomDelete': { name: 'roomDelete'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Room'; ofType: null; }; } }; 'roomUpdate': { name: 'roomUpdate'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Room'; ofType: null; }; } }; 'stayCreate': { name: 'stayCreate'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Stay'; ofType: null; }; } }; 'stayDelete': { name: 'stayDelete'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Stay'; ofType: null; }; } }; 'stayUpdate': { name: 'stayUpdate'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Stay'; ofType: null; }; } }; 'userCreate': { name: 'userCreate'; type: { kind: 'OBJECT'; name: 'User'; ofType: null; } }; 'userCreateCredential': { name: 'userCreateCredential'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'userDelete': { name: 'userDelete'; type: { kind: 'OBJECT'; name: 'User'; ofType: null; } }; 'userDeleteCredential': { name: 'userDeleteCredential'; type: { kind: 'OBJECT'; name: 'UserCredential'; ofType: null; } }; 'userResetSecret': { name: 'userResetSecret'; type: { kind: 'OBJECT'; name: 'User'; ofType: null; } }; 'userUpdate': { name: 'userUpdate'; type: { kind: 'OBJECT'; name: 'User'; ofType: null; } }; }; }; 'PreUser': { kind: 'OBJECT'; name: 'PreUser'; fields: { 'email': { name: 'email'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'scope': { name: 'scope'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'UserScopeProp'; ofType: null; }; }; } }; 'timestamp': { name: 'timestamp'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'TS'; ofType: null; }; } }; }; }; - 'Query': { kind: 'OBJECT'; name: 'Query'; fields: { 'cabin': { name: 'cabin'; type: { kind: 'OBJECT'; name: 'Cabin'; ofType: null; } }; 'cabins': { name: 'cabins'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'OBJECT'; name: 'Cabin'; ofType: null; }; }; } }; 'cmsFilePresign': { name: 'cmsFilePresign'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'cmsFiles': { name: 'cmsFiles'; type: { kind: 'OBJECT'; name: 'CMSFileListOutput'; ofType: null; } }; 'cmsImage': { name: 'cmsImage'; type: { kind: 'OBJECT'; name: 'CMSImage'; ofType: null; } }; 'cmsImages': { name: 'cmsImages'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'OBJECT'; name: 'CMSImage'; ofType: null; }; }; } }; 'cmsImagesFromPageId': { name: 'cmsImagesFromPageId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'OBJECT'; name: 'CMSImage'; ofType: null; }; }; } }; 'cmsPage': { name: 'cmsPage'; type: { kind: 'OBJECT'; name: 'CMSPage'; ofType: null; } }; 'cmsPageFromSlug': { name: 'cmsPageFromSlug'; type: { kind: 'OBJECT'; name: 'CMSPage'; ofType: null; } }; 'cmsPages': { name: 'cmsPages'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'OBJECT'; name: 'CMSPage'; ofType: null; }; }; } }; 'preUser': { name: 'preUser'; type: { kind: 'OBJECT'; name: 'PreUser'; ofType: null; } }; 'preUserFromEmail': { name: 'preUserFromEmail'; type: { kind: 'OBJECT'; name: 'PreUser'; ofType: null; } }; 'preUsers': { name: 'preUsers'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'PreUser'; ofType: null; }; }; } }; 'room': { name: 'room'; type: { kind: 'OBJECT'; name: 'Room'; ofType: null; } }; 'rooms': { name: 'rooms'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'OBJECT'; name: 'Room'; ofType: null; }; }; } }; 'roomsById': { name: 'roomsById'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'OBJECT'; name: 'Room'; ofType: null; }; }; } }; 'roomsFromCabin': { name: 'roomsFromCabin'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'OBJECT'; name: 'Room'; ofType: null; }; }; } }; 'roomsNoCabin': { name: 'roomsNoCabin'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'OBJECT'; name: 'Room'; ofType: null; }; }; } }; 'stay': { name: 'stay'; type: { kind: 'OBJECT'; name: 'Stay'; ofType: null; } }; 'stays': { name: 'stays'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Stay'; ofType: null; }; }; }; } }; 'staysInRoom': { name: 'staysInRoom'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Stay'; ofType: null; }; }; }; } }; 'user': { name: 'user'; type: { kind: 'OBJECT'; name: 'User'; ofType: null; } }; 'userFromAuth': { name: 'userFromAuth'; type: { kind: 'OBJECT'; name: 'User'; ofType: null; } }; 'userFromEmail': { name: 'userFromEmail'; type: { kind: 'OBJECT'; name: 'User'; ofType: null; } }; 'userSECURE': { name: 'userSECURE'; type: { kind: 'OBJECT'; name: 'UserSECURE'; ofType: null; } }; 'users': { name: 'users'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'User'; ofType: null; }; }; } }; }; }; + 'Query': { kind: 'OBJECT'; name: 'Query'; fields: { 'cabin': { name: 'cabin'; type: { kind: 'OBJECT'; name: 'Cabin'; ofType: null; } }; 'cabins': { name: 'cabins'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Cabin'; ofType: null; }; }; }; } }; 'cmsFilePresign': { name: 'cmsFilePresign'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'cmsFiles': { name: 'cmsFiles'; type: { kind: 'OBJECT'; name: 'CMSFileListOutput'; ofType: null; } }; 'cmsImage': { name: 'cmsImage'; type: { kind: 'OBJECT'; name: 'CMSImage'; ofType: null; } }; 'cmsImages': { name: 'cmsImages'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'OBJECT'; name: 'CMSImage'; ofType: null; }; }; } }; 'cmsImagesFromPageId': { name: 'cmsImagesFromPageId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'OBJECT'; name: 'CMSImage'; ofType: null; }; }; } }; 'cmsPage': { name: 'cmsPage'; type: { kind: 'OBJECT'; name: 'CMSPage'; ofType: null; } }; 'cmsPageFromSlug': { name: 'cmsPageFromSlug'; type: { kind: 'OBJECT'; name: 'CMSPage'; ofType: null; } }; 'cmsPages': { name: 'cmsPages'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'OBJECT'; name: 'CMSPage'; ofType: null; }; }; } }; 'preUser': { name: 'preUser'; type: { kind: 'OBJECT'; name: 'PreUser'; ofType: null; } }; 'preUserFromEmail': { name: 'preUserFromEmail'; type: { kind: 'OBJECT'; name: 'PreUser'; ofType: null; } }; 'preUsers': { name: 'preUsers'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'PreUser'; ofType: null; }; }; } }; 'room': { name: 'room'; type: { kind: 'OBJECT'; name: 'Room'; ofType: null; } }; 'rooms': { name: 'rooms'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Room'; ofType: null; }; }; }; } }; 'roomsById': { name: 'roomsById'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'OBJECT'; name: 'Room'; ofType: null; }; }; } }; 'roomsFromCabin': { name: 'roomsFromCabin'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'OBJECT'; name: 'Room'; ofType: null; }; }; } }; 'roomsNoCabin': { name: 'roomsNoCabin'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'OBJECT'; name: 'Room'; ofType: null; }; }; } }; 'stay': { name: 'stay'; type: { kind: 'OBJECT'; name: 'Stay'; ofType: null; } }; 'stays': { name: 'stays'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Stay'; ofType: null; }; }; }; } }; 'staysInRoom': { name: 'staysInRoom'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Stay'; ofType: null; }; }; }; } }; 'user': { name: 'user'; type: { kind: 'OBJECT'; name: 'User'; ofType: null; } }; 'userFromAuth': { name: 'userFromAuth'; type: { kind: 'OBJECT'; name: 'User'; ofType: null; } }; 'userFromEmail': { name: 'userFromEmail'; type: { kind: 'OBJECT'; name: 'User'; ofType: null; } }; 'userSECURE': { name: 'userSECURE'; type: { kind: 'OBJECT'; name: 'UserSECURE'; ofType: null; } }; 'users': { name: 'users'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'User'; ofType: null; }; }; } }; }; }; 'Room': { kind: 'OBJECT'; name: 'Room'; fields: { 'aliases': { name: 'aliases'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; } }; 'availableBeds': { name: 'availableBeds'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; } }; 'beds': { name: 'beds'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'cabin': { name: 'cabin'; type: { kind: 'OBJECT'; name: 'Cabin'; ofType: null; } }; 'forCouples': { name: 'forCouples'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'ID'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'noCount': { name: 'noCount'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; } }; 'timestamp': { name: 'timestamp'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'TS'; ofType: null; }; } }; }; }; 'RoomCreate': { kind: 'INPUT_OBJECT'; name: 'RoomCreate'; isOneOf: false; inputFields: [{ name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'aliases'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; }; defaultValue: null }, { name: 'cabinId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'beds'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; defaultValue: null }, { name: 'forCouples'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'noCount'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }]; }; 'RoomOrCustomRoom': { kind: 'UNION'; name: 'RoomOrCustomRoom'; fields: {}; possibleTypes: 'CustomRoom' | 'Room'; }; diff --git a/server/src/db/schema/Cabin/types.graphql.ts b/server/src/db/schema/Cabin/types.graphql.ts index e596afd..a67945f 100644 --- a/server/src/db/schema/Cabin/types.graphql.ts +++ b/server/src/db/schema/Cabin/types.graphql.ts @@ -26,7 +26,7 @@ export default gql` get all cabins """ - cabins: [Cabin]! + cabins: [Cabin!]! """ **SCOPE: userId** diff --git a/server/src/db/schema/Room/types.graphql.ts b/server/src/db/schema/Room/types.graphql.ts index 2b9dc2d..fb3e82f 100644 --- a/server/src/db/schema/Room/types.graphql.ts +++ b/server/src/db/schema/Room/types.graphql.ts @@ -34,7 +34,7 @@ export default gql` get all rooms """ - rooms: [Room]! + rooms: [Room!]! """ **SCOPE: userId** From b8f5dfea4d6a01778bdf7d2b63c01275b2367281 Mon Sep 17 00:00:00 2001 From: hingobway Date: Mon, 2 Sep 2024 00:32:10 -0400 Subject: [PATCH 02/11] fix tiptap dependencies v2 --- client/package.json | 37 +- client/pnpm-lock.yaml | 1301 ++++------------------------------------- 2 files changed, 143 insertions(+), 1195 deletions(-) diff --git a/client/package.json b/client/package.json index a199d55..64b1b0e 100644 --- a/client/package.json +++ b/client/package.json @@ -24,24 +24,24 @@ "@tailwindcss/container-queries": "^0.1.1", "@tanstack/react-query": "^5.40.1", "@tiptap-pro/extension-file-handler": "^2.9.2", - "@tiptap/core": "^2.5.9", - "@tiptap/extension-color": "^2.5.9", - "@tiptap/extension-focus": "^2.5.9", - "@tiptap/extension-highlight": "^2.5.9", - "@tiptap/extension-image": "^2.5.9", - "@tiptap/extension-link": "^2.5.9", - "@tiptap/extension-placeholder": "^2.5.9", - "@tiptap/extension-subscript": "^2.5.9", - "@tiptap/extension-superscript": "^2.5.9", - "@tiptap/extension-text-align": "^2.5.9", - "@tiptap/extension-text-style": "^2.5.9", - "@tiptap/extension-typography": "^2.5.9", - "@tiptap/extension-underline": "^2.5.9", - "@tiptap/extension-youtube": "^2.5.9", - "@tiptap/html": "^2.5.9", - "@tiptap/pm": "^2.5.9", - "@tiptap/react": "^2.5.9", - "@tiptap/starter-kit": "^2.5.9", + "@tiptap/core": "2.5.9", + "@tiptap/extension-color": "2.5.9", + "@tiptap/extension-focus": "2.5.9", + "@tiptap/extension-highlight": "2.5.9", + "@tiptap/extension-image": "2.5.9", + "@tiptap/extension-link": "2.5.9", + "@tiptap/extension-placeholder": "2.5.9", + "@tiptap/extension-subscript": "2.5.9", + "@tiptap/extension-superscript": "2.5.9", + "@tiptap/extension-text-align": "2.5.9", + "@tiptap/extension-text-style": "2.5.9", + "@tiptap/extension-typography": "2.5.9", + "@tiptap/extension-underline": "2.5.9", + "@tiptap/extension-youtube": "2.5.9", + "@tiptap/html": "2.5.9", + "@tiptap/pm": "2.5.9", + "@tiptap/react": "2.5.9", + "@tiptap/starter-kit": "2.5.9", "@trpc/client": "11.0.0-rc.396", "@trpc/react-query": "11.0.0-rc.396", "@trpc/server": "11.0.0-rc.396", @@ -58,7 +58,6 @@ "react": "^18", "react-dom": "^18", "recoil": "^0.7.7", - "sst": "ion", "tailwind-merge": "^2.4.0", "zod": "^3.23.8" }, diff --git a/client/pnpm-lock.yaml b/client/pnpm-lock.yaml index e40289d..3a404f9 100644 --- a/client/pnpm-lock.yaml +++ b/client/pnpm-lock.yaml @@ -51,58 +51,58 @@ importers: specifier: ^2.9.2 version: 2.9.2(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))(@tiptap/pm@2.5.9) '@tiptap/core': - specifier: ^2.5.9 + specifier: 2.5.9 version: 2.5.9(@tiptap/pm@2.5.9) '@tiptap/extension-color': - specifier: ^2.5.9 + specifier: 2.5.9 version: 2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))(@tiptap/extension-text-style@2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))) '@tiptap/extension-focus': - specifier: ^2.5.9 + specifier: 2.5.9 version: 2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))(@tiptap/pm@2.5.9) '@tiptap/extension-highlight': - specifier: ^2.5.9 + specifier: 2.5.9 version: 2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9)) '@tiptap/extension-image': - specifier: ^2.5.9 + specifier: 2.5.9 version: 2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9)) '@tiptap/extension-link': - specifier: ^2.5.9 + specifier: 2.5.9 version: 2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))(@tiptap/pm@2.5.9) '@tiptap/extension-placeholder': - specifier: ^2.5.9 + specifier: 2.5.9 version: 2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))(@tiptap/pm@2.5.9) '@tiptap/extension-subscript': - specifier: ^2.5.9 + specifier: 2.5.9 version: 2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9)) '@tiptap/extension-superscript': - specifier: ^2.5.9 + specifier: 2.5.9 version: 2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9)) '@tiptap/extension-text-align': - specifier: ^2.5.9 + specifier: 2.5.9 version: 2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9)) '@tiptap/extension-text-style': - specifier: ^2.5.9 + specifier: 2.5.9 version: 2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9)) '@tiptap/extension-typography': - specifier: ^2.5.9 + specifier: 2.5.9 version: 2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9)) '@tiptap/extension-underline': - specifier: ^2.5.9 + specifier: 2.5.9 version: 2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9)) '@tiptap/extension-youtube': - specifier: ^2.5.9 + specifier: 2.5.9 version: 2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9)) '@tiptap/html': - specifier: ^2.5.9 + specifier: 2.5.9 version: 2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))(@tiptap/pm@2.5.9) '@tiptap/pm': - specifier: ^2.5.9 + specifier: 2.5.9 version: 2.5.9 '@tiptap/react': - specifier: ^2.5.9 + specifier: 2.5.9 version: 2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))(@tiptap/pm@2.5.9)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tiptap/starter-kit': - specifier: ^2.5.9 + specifier: 2.5.9 version: 2.5.9(@tiptap/pm@2.5.9) '@trpc/client': specifier: 11.0.0-rc.396 @@ -152,9 +152,6 @@ importers: recoil: specifier: ^0.7.7 version: 0.7.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - sst: - specifier: ion - version: 3.0.32 tailwind-merge: specifier: ^2.4.0 version: 2.4.0 @@ -241,119 +238,6 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@aws-crypto/crc32@3.0.0': - resolution: {integrity: sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==} - - '@aws-crypto/ie11-detection@3.0.0': - resolution: {integrity: sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==} - - '@aws-crypto/sha256-browser@3.0.0': - resolution: {integrity: sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==} - - '@aws-crypto/sha256-js@3.0.0': - resolution: {integrity: sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==} - - '@aws-crypto/supports-web-crypto@3.0.0': - resolution: {integrity: sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==} - - '@aws-crypto/util@3.0.0': - resolution: {integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==} - - '@aws-sdk/client-lambda@3.478.0': - resolution: {integrity: sha512-7+PEE1aV3qVeuswL6cUBfHeljxC/WaXFj+214/W3q71uRdLbX5Z7ZOD15sJbjSu+4VZN9ugMaxEcp+oLiqWl+A==} - engines: {node: '>=14.0.0'} - - '@aws-sdk/client-sso@3.478.0': - resolution: {integrity: sha512-Jxy9cE1JMkPR0PklCpq3cORHnZq/Z4klhSTNGgZNeBWovMa+plor52kyh8iUNHKl3XEJvTbHM7V+dvrr/x0P1g==} - engines: {node: '>=14.0.0'} - - '@aws-sdk/client-sts@3.478.0': - resolution: {integrity: sha512-D+QID0dYzmn9dcxgKP3/nMndUqiQbDLsqI0Zf2pG4MW5gPhVNKlDGIV3Ztz8SkMjzGJExNOLW2L569o8jshJVw==} - engines: {node: '>=14.0.0'} - - '@aws-sdk/core@3.477.0': - resolution: {integrity: sha512-o0434EH+d1BxHZvgG7z8vph2SYefciQ5RnJw2MgvETGnthgqsnI4nnNJLSw0FVeqCeS18n6vRtzqlGYR2YPCNg==} - engines: {node: '>=14.0.0'} - - '@aws-sdk/credential-provider-env@3.468.0': - resolution: {integrity: sha512-k/1WHd3KZn0EQYjadooj53FC0z24/e4dUZhbSKTULgmxyO62pwh9v3Brvw4WRa/8o2wTffU/jo54tf4vGuP/ZA==} - engines: {node: '>=14.0.0'} - - '@aws-sdk/credential-provider-ini@3.478.0': - resolution: {integrity: sha512-SsrYEYUvTG9ZoPC+zB19AnVoOKID+QIEHJDIi1GCZXW5kTVyr1saTVm4orG2TjYvbHQMddsWtHOvGYXZWAYMbw==} - engines: {node: '>=14.0.0'} - - '@aws-sdk/credential-provider-node@3.478.0': - resolution: {integrity: sha512-nwDutJYeHiIZCQDgKIUrsgwAWTil0mNe+cbd+j8fi+wwxkWUzip+F0+z02molJ8WrUUKNRhqB1V5aVx7IranuA==} - engines: {node: '>=14.0.0'} - - '@aws-sdk/credential-provider-process@3.468.0': - resolution: {integrity: sha512-OYSn1A/UsyPJ7Z8Q2cNhTf55O36shPmSsvOfND04nSfu1nPaR+VUvvsP7v+brhGpwC/GAKTIdGAo4blH31BS6A==} - engines: {node: '>=14.0.0'} - - '@aws-sdk/credential-provider-sso@3.478.0': - resolution: {integrity: sha512-LsDShG51X/q+s5ZFN7kHVqrd8ZHdyEyHqdhoocmRvvw2Dif50M0AqQfvCrW1ndj5CNzXO4x/eH8EK5ZOVlS6Sg==} - engines: {node: '>=14.0.0'} - - '@aws-sdk/credential-provider-web-identity@3.468.0': - resolution: {integrity: sha512-rexymPmXjtkwCPfhnUq3EjO1rSkf39R4Jz9CqiM7OsqK2qlT5Y/V3gnMKn0ZMXsYaQOMfM3cT5xly5R+OKDHlw==} - engines: {node: '>=14.0.0'} - - '@aws-sdk/middleware-host-header@3.468.0': - resolution: {integrity: sha512-gwQ+/QhX+lhof304r6zbZ/V5l5cjhGRxLL3CjH1uJPMcOAbw9wUlMdl+ibr8UwBZ5elfKFGiB1cdW/0uMchw0w==} - engines: {node: '>=14.0.0'} - - '@aws-sdk/middleware-logger@3.468.0': - resolution: {integrity: sha512-X5XHKV7DHRXI3f29SAhJPe/OxWRFgDWDMMCALfzhmJfCi6Jfh0M14cJKoC+nl+dk9lB+36+jKjhjETZaL2bPlA==} - engines: {node: '>=14.0.0'} - - '@aws-sdk/middleware-recursion-detection@3.468.0': - resolution: {integrity: sha512-vch9IQib2Ng9ucSyRW2eKNQXHUPb5jUPCLA5otTW/8nGjcOU37LxQG4WrxO7uaJ9Oe8hjHO+hViE3P0KISUhtA==} - engines: {node: '>=14.0.0'} - - '@aws-sdk/middleware-signing@3.468.0': - resolution: {integrity: sha512-s+7fSB1gdnnTj5O0aCCarX3z5Vppop8kazbNSZADdkfHIDWCN80IH4ZNjY3OWqaAz0HmR4LNNrovdR304ojb4Q==} - engines: {node: '>=14.0.0'} - - '@aws-sdk/middleware-user-agent@3.478.0': - resolution: {integrity: sha512-Rec+nAPIzzwxgHPW+xqY6tooJGFOytpYg/xSRv8/IXl3xKGhmpMGs6gDWzmMBv/qy5nKTvLph/csNWJ98GWXCw==} - engines: {node: '>=14.0.0'} - - '@aws-sdk/region-config-resolver@3.470.0': - resolution: {integrity: sha512-C1o1J06iIw8cyAAOvHqT4Bbqf+PgQ/RDlSyjt2gFfP2OovDpc2o2S90dE8f8iZdSGpg70N5MikT1DBhW9NbhtQ==} - engines: {node: '>=14.0.0'} - - '@aws-sdk/token-providers@3.478.0': - resolution: {integrity: sha512-7b5tj1y/wGHZIZ+ckjOUKgKrMuCJMF/G1UKZKIqqdekeEsjcThbvoxAMeY0FEowu2ODVk/ggOmpBFxcu0iYd6A==} - engines: {node: '>=14.0.0'} - - '@aws-sdk/types@3.468.0': - resolution: {integrity: sha512-rx/9uHI4inRbp2tw3Y4Ih4PNZkVj32h7WneSg3MVgVjAoVD5Zti9KhS5hkvsBxfgmQmg0AQbE+b1sy5WGAgntA==} - engines: {node: '>=14.0.0'} - - '@aws-sdk/util-endpoints@3.478.0': - resolution: {integrity: sha512-u9Mcg3euGJGs5clPt9mBuhBjHiEKiD0PnfvArhfq9i+dcY5mbCq/i1Dezp3iv1fZH9xxQt7hPXDfSpt1yUSM6g==} - engines: {node: '>=14.0.0'} - - '@aws-sdk/util-locate-window@3.568.0': - resolution: {integrity: sha512-3nh4TINkXYr+H41QaPelCceEB2FXP3fxp93YZXB/kqJvX0U9j0N0Uk45gvsjmEPzG8XxkPEeLIfT2I1M7A6Lig==} - engines: {node: '>=16.0.0'} - - '@aws-sdk/util-user-agent-browser@3.468.0': - resolution: {integrity: sha512-OJyhWWsDEizR3L+dCgMXSUmaCywkiZ7HSbnQytbeKGwokIhD69HTiJcibF/sgcM5gk4k3Mq3puUhGnEZ46GIig==} - - '@aws-sdk/util-user-agent-node@3.470.0': - resolution: {integrity: sha512-QxsZ9iVHcBB/XRdYvwfM5AMvNp58HfqkIrH88mY0cmxuvtlIGDfWjczdDrZMJk9y0vIq+cuoCHsGXHu7PyiEAQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - aws-crt: '>=1.0.0' - peerDependenciesMeta: - aws-crt: - optional: true - - '@aws-sdk/util-utf8-browser@3.259.0': - resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} - '@babel/helper-string-parser@7.24.7': resolution: {integrity: sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==} engines: {node: '>=6.9.0'} @@ -757,181 +641,6 @@ packages: '@rushstack/eslint-patch@1.10.2': resolution: {integrity: sha512-hw437iINopmQuxWPSUEvqE56NCPsiU8N4AYtfHmJFckclktzK9YQJieD3XkDCDH4OjL+C7zgPUh73R/nrcHrqw==} - '@smithy/abort-controller@2.2.0': - resolution: {integrity: sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw==} - engines: {node: '>=14.0.0'} - - '@smithy/config-resolver@2.2.0': - resolution: {integrity: sha512-fsiMgd8toyUba6n1WRmr+qACzXltpdDkPTAaDqc8QqPBUzO+/JKwL6bUBseHVi8tu9l+3JOK+tSf7cay+4B3LA==} - engines: {node: '>=14.0.0'} - - '@smithy/core@1.4.2': - resolution: {integrity: sha512-2fek3I0KZHWJlRLvRTqxTEri+qV0GRHrJIoLFuBMZB4EMg4WgeBGfF0X6abnrNYpq55KJ6R4D6x4f0vLnhzinA==} - engines: {node: '>=14.0.0'} - - '@smithy/credential-provider-imds@2.3.0': - resolution: {integrity: sha512-BWB9mIukO1wjEOo1Ojgl6LrG4avcaC7T/ZP6ptmAaW4xluhSIPZhY+/PI5YKzlk+jsm+4sQZB45Bt1OfMeQa3w==} - engines: {node: '>=14.0.0'} - - '@smithy/eventstream-codec@2.2.0': - resolution: {integrity: sha512-8janZoJw85nJmQZc4L8TuePp2pk1nxLgkxIR0TUjKJ5Dkj5oelB9WtiSSGXCQvNsJl0VSTvK/2ueMXxvpa9GVw==} - - '@smithy/eventstream-serde-browser@2.2.0': - resolution: {integrity: sha512-UaPf8jKbcP71BGiO0CdeLmlg+RhWnlN8ipsMSdwvqBFigl5nil3rHOI/5GE3tfiuX8LvY5Z9N0meuU7Rab7jWw==} - engines: {node: '>=14.0.0'} - - '@smithy/eventstream-serde-config-resolver@2.2.0': - resolution: {integrity: sha512-RHhbTw/JW3+r8QQH7PrganjNCiuiEZmpi6fYUAetFfPLfZ6EkiA08uN3EFfcyKubXQxOwTeJRZSQmDDCdUshaA==} - engines: {node: '>=14.0.0'} - - '@smithy/eventstream-serde-node@2.2.0': - resolution: {integrity: sha512-zpQMtJVqCUMn+pCSFcl9K/RPNtQE0NuMh8sKpCdEHafhwRsjP50Oq/4kMmvxSRy6d8Jslqd8BLvDngrUtmN9iA==} - engines: {node: '>=14.0.0'} - - '@smithy/eventstream-serde-universal@2.2.0': - resolution: {integrity: sha512-pvoe/vvJY0mOpuF84BEtyZoYfbehiFj8KKWk1ds2AT0mTLYFVs+7sBJZmioOFdBXKd48lfrx1vumdPdmGlCLxA==} - engines: {node: '>=14.0.0'} - - '@smithy/fetch-http-handler@2.5.0': - resolution: {integrity: sha512-BOWEBeppWhLn/no/JxUL/ghTfANTjT7kg3Ww2rPqTUY9R4yHPXxJ9JhMe3Z03LN3aPwiwlpDIUcVw1xDyHqEhw==} - - '@smithy/hash-node@2.2.0': - resolution: {integrity: sha512-zLWaC/5aWpMrHKpoDF6nqpNtBhlAYKF/7+9yMN7GpdR8CzohnWfGtMznPybnwSS8saaXBMxIGwJqR4HmRp6b3g==} - engines: {node: '>=14.0.0'} - - '@smithy/invalid-dependency@2.2.0': - resolution: {integrity: sha512-nEDASdbKFKPXN2O6lOlTgrEEOO9NHIeO+HVvZnkqc8h5U9g3BIhWsvzFo+UcUbliMHvKNPD/zVxDrkP1Sbgp8Q==} - - '@smithy/is-array-buffer@2.2.0': - resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} - engines: {node: '>=14.0.0'} - - '@smithy/middleware-content-length@2.2.0': - resolution: {integrity: sha512-5bl2LG1Ah/7E5cMSC+q+h3IpVHMeOkG0yLRyQT1p2aMJkSrZG7RlXHPuAgb7EyaFeidKEnnd/fNaLLaKlHGzDQ==} - engines: {node: '>=14.0.0'} - - '@smithy/middleware-endpoint@2.5.1': - resolution: {integrity: sha512-1/8kFp6Fl4OsSIVTWHnNjLnTL8IqpIb/D3sTSczrKFnrE9VMNWxnrRKNvpUHOJ6zpGD5f62TPm7+17ilTJpiCQ==} - engines: {node: '>=14.0.0'} - - '@smithy/middleware-retry@2.3.1': - resolution: {integrity: sha512-P2bGufFpFdYcWvqpyqqmalRtwFUNUA8vHjJR5iGqbfR6mp65qKOLcUd6lTr4S9Gn/enynSrSf3p3FVgVAf6bXA==} - engines: {node: '>=14.0.0'} - - '@smithy/middleware-serde@2.3.0': - resolution: {integrity: sha512-sIADe7ojwqTyvEQBe1nc/GXB9wdHhi9UwyX0lTyttmUWDJLP655ZYE1WngnNyXREme8I27KCaUhyhZWRXL0q7Q==} - engines: {node: '>=14.0.0'} - - '@smithy/middleware-stack@2.2.0': - resolution: {integrity: sha512-Qntc3jrtwwrsAC+X8wms8zhrTr0sFXnyEGhZd9sLtsJ/6gGQKFzNB+wWbOcpJd7BR8ThNCoKt76BuQahfMvpeA==} - engines: {node: '>=14.0.0'} - - '@smithy/node-config-provider@2.3.0': - resolution: {integrity: sha512-0elK5/03a1JPWMDPaS726Iw6LpQg80gFut1tNpPfxFuChEEklo2yL823V94SpTZTxmKlXFtFgsP55uh3dErnIg==} - engines: {node: '>=14.0.0'} - - '@smithy/node-http-handler@2.5.0': - resolution: {integrity: sha512-mVGyPBzkkGQsPoxQUbxlEfRjrj6FPyA3u3u2VXGr9hT8wilsoQdZdvKpMBFMB8Crfhv5dNkKHIW0Yyuc7eABqA==} - engines: {node: '>=14.0.0'} - - '@smithy/property-provider@2.2.0': - resolution: {integrity: sha512-+xiil2lFhtTRzXkx8F053AV46QnIw6e7MV8od5Mi68E1ICOjCeCHw2XfLnDEUHnT9WGUIkwcqavXjfwuJbGlpg==} - engines: {node: '>=14.0.0'} - - '@smithy/protocol-http@3.3.0': - resolution: {integrity: sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ==} - engines: {node: '>=14.0.0'} - - '@smithy/querystring-builder@2.2.0': - resolution: {integrity: sha512-L1kSeviUWL+emq3CUVSgdogoM/D9QMFaqxL/dd0X7PCNWmPXqt+ExtrBjqT0V7HLN03Vs9SuiLrG3zy3JGnE5A==} - engines: {node: '>=14.0.0'} - - '@smithy/querystring-parser@2.2.0': - resolution: {integrity: sha512-BvHCDrKfbG5Yhbpj4vsbuPV2GgcpHiAkLeIlcA1LtfpMz3jrqizP1+OguSNSj1MwBHEiN+jwNisXLGdajGDQJA==} - engines: {node: '>=14.0.0'} - - '@smithy/service-error-classification@2.1.5': - resolution: {integrity: sha512-uBDTIBBEdAQryvHdc5W8sS5YX7RQzF683XrHePVdFmAgKiMofU15FLSM0/HU03hKTnazdNRFa0YHS7+ArwoUSQ==} - engines: {node: '>=14.0.0'} - - '@smithy/shared-ini-file-loader@2.4.0': - resolution: {integrity: sha512-WyujUJL8e1B6Z4PBfAqC/aGY1+C7T0w20Gih3yrvJSk97gpiVfB+y7c46T4Nunk+ZngLq0rOIdeVeIklk0R3OA==} - engines: {node: '>=14.0.0'} - - '@smithy/signature-v4@2.3.0': - resolution: {integrity: sha512-ui/NlpILU+6HAQBfJX8BBsDXuKSNrjTSuOYArRblcrErwKFutjrCNb/OExfVRyj9+26F9J+ZmfWT+fKWuDrH3Q==} - engines: {node: '>=14.0.0'} - - '@smithy/smithy-client@2.5.1': - resolution: {integrity: sha512-jrbSQrYCho0yDaaf92qWgd+7nAeap5LtHTI51KXqmpIFCceKU3K9+vIVTUH72bOJngBMqa4kyu1VJhRcSrk/CQ==} - engines: {node: '>=14.0.0'} - - '@smithy/types@2.12.0': - resolution: {integrity: sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==} - engines: {node: '>=14.0.0'} - - '@smithy/url-parser@2.2.0': - resolution: {integrity: sha512-hoA4zm61q1mNTpksiSWp2nEl1dt3j726HdRhiNgVJQMj7mLp7dprtF57mOB6JvEk/x9d2bsuL5hlqZbBuHQylQ==} - - '@smithy/util-base64@2.3.0': - resolution: {integrity: sha512-s3+eVwNeJuXUwuMbusncZNViuhv2LjVJ1nMwTqSA0XAC7gjKhqqxRdJPhR8+YrkoZ9IiIbFk/yK6ACe/xlF+hw==} - engines: {node: '>=14.0.0'} - - '@smithy/util-body-length-browser@2.2.0': - resolution: {integrity: sha512-dtpw9uQP7W+n3vOtx0CfBD5EWd7EPdIdsQnWTDoFf77e3VUf05uA7R7TGipIo8e4WL2kuPdnsr3hMQn9ziYj5w==} - - '@smithy/util-body-length-node@2.3.0': - resolution: {integrity: sha512-ITWT1Wqjubf2CJthb0BuT9+bpzBfXeMokH/AAa5EJQgbv9aPMVfnM76iFIZVFf50hYXGbtiV71BHAthNWd6+dw==} - engines: {node: '>=14.0.0'} - - '@smithy/util-buffer-from@2.2.0': - resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} - engines: {node: '>=14.0.0'} - - '@smithy/util-config-provider@2.3.0': - resolution: {integrity: sha512-HZkzrRcuFN1k70RLqlNK4FnPXKOpkik1+4JaBoHNJn+RnJGYqaa3c5/+XtLOXhlKzlRgNvyaLieHTW2VwGN0VQ==} - engines: {node: '>=14.0.0'} - - '@smithy/util-defaults-mode-browser@2.2.1': - resolution: {integrity: sha512-RtKW+8j8skk17SYowucwRUjeh4mCtnm5odCL0Lm2NtHQBsYKrNW0od9Rhopu9wF1gHMfHeWF7i90NwBz/U22Kw==} - engines: {node: '>= 10.0.0'} - - '@smithy/util-defaults-mode-node@2.3.1': - resolution: {integrity: sha512-vkMXHQ0BcLFysBMWgSBLSk3+leMpFSyyFj8zQtv5ZyUBx8/owVh1/pPEkzmW/DR/Gy/5c8vjLDD9gZjXNKbrpA==} - engines: {node: '>= 10.0.0'} - - '@smithy/util-endpoints@1.2.0': - resolution: {integrity: sha512-BuDHv8zRjsE5zXd3PxFXFknzBG3owCpjq8G3FcsXW3CykYXuEqM3nTSsmLzw5q+T12ZYuDlVUZKBdpNbhVtlrQ==} - engines: {node: '>= 14.0.0'} - - '@smithy/util-hex-encoding@2.2.0': - resolution: {integrity: sha512-7iKXR+/4TpLK194pVjKiasIyqMtTYJsgKgM242Y9uzt5dhHnUDvMNb+3xIhRJ9QhvqGii/5cRUt4fJn3dtXNHQ==} - engines: {node: '>=14.0.0'} - - '@smithy/util-middleware@2.2.0': - resolution: {integrity: sha512-L1qpleXf9QD6LwLCJ5jddGkgWyuSvWBkJwWAZ6kFkdifdso+sk3L3O1HdmPvCdnCK3IS4qWyPxev01QMnfHSBw==} - engines: {node: '>=14.0.0'} - - '@smithy/util-retry@2.2.0': - resolution: {integrity: sha512-q9+pAFPTfftHXRytmZ7GzLFFrEGavqapFc06XxzZFcSIGERXMerXxCitjOG1prVDR9QdjqotF40SWvbqcCpf8g==} - engines: {node: '>= 14.0.0'} - - '@smithy/util-stream@2.2.0': - resolution: {integrity: sha512-17faEXbYWIRst1aU9SvPZyMdWmqIrduZjVOqCPMIsWFNxs5yQQgFrJL6b2SdiCzyW9mJoDjFtgi53xx7EH+BXA==} - engines: {node: '>=14.0.0'} - - '@smithy/util-uri-escape@2.2.0': - resolution: {integrity: sha512-jtmJMyt1xMD/d8OtbVJ2gFZOSKc+ueYJZPW20ULW1GOp/q/YIM0wNh+u8ZFao9UaIGz4WoPW8hC64qlWLIfoDA==} - engines: {node: '>=14.0.0'} - - '@smithy/util-utf8@2.3.0': - resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} - engines: {node: '>=14.0.0'} - - '@smithy/util-waiter@2.2.0': - resolution: {integrity: sha512-IHk53BVw6MPMi2Gsn+hCng8rFA3ZmR3Rk7GllxDUW9qFJl/hiSvskn7XldkECapQVkIg/1dHpMAxI9xSTaLLSA==} - engines: {node: '>=14.0.0'} - '@swc/counter@0.1.3': resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} @@ -984,37 +693,37 @@ packages: peerDependencies: '@tiptap/pm': ^2.5.9 - '@tiptap/extension-blockquote@2.6.6': - resolution: {integrity: sha512-hAdsNlMfzzxld154hJqPqtWqO5i4/7HoDfuxmyqBxdMJ+e2UMaIGBGwoLRXG0V9UoRwJusjqlpyD7pIorxNlgA==} + '@tiptap/extension-blockquote@2.5.9': + resolution: {integrity: sha512-LhGyigmd/v1OjYPeoVK8UvFHbH6ffh175ZuNvseZY4PsBd7kZhrSUiuMG8xYdNX8FxamsxAzr2YpsYnOzu3W7A==} peerDependencies: - '@tiptap/core': ^2.6.6 + '@tiptap/core': ^2.5.9 - '@tiptap/extension-bold@2.6.6': - resolution: {integrity: sha512-CD6gBhdQtCoqYSmx8oAV8gvKtVOGZSyyvuNYo7by9eZ56DqLYnd7kbUj0RH7o9Ymf/iJTOUJ6XcvrsWwo4lubg==} + '@tiptap/extension-bold@2.5.9': + resolution: {integrity: sha512-XUJdzFb31t0+bwiRquJf0btBpqOB3axQNHTKM9XADuL4S+Z6OBPj0I5rYINeElw/Q7muvdWrHWHh/ovNJA1/5A==} peerDependencies: - '@tiptap/core': ^2.6.6 + '@tiptap/core': ^2.5.9 - '@tiptap/extension-bubble-menu@2.6.6': - resolution: {integrity: sha512-IkfmlZq67aaegym5sBddBc/xXWCArxn5WJEl1oxKEayjQhybKSaqI7tk0lOx/x7fa5Ml1WlGpCFh+KKXbQTG0g==} + '@tiptap/extension-bubble-menu@2.5.9': + resolution: {integrity: sha512-NddZ8Qn5dgPPa1W4yk0jdhF4tDBh0FwzBpbnDu2Xz/0TUHrA36ugB2CvR5xS1we4zUKckgpVqOqgdelrmqqFVg==} peerDependencies: - '@tiptap/core': ^2.6.6 - '@tiptap/pm': ^2.6.6 + '@tiptap/core': ^2.5.9 + '@tiptap/pm': ^2.5.9 - '@tiptap/extension-bullet-list@2.6.6': - resolution: {integrity: sha512-WEKxbVSYuvmX2wkHWP8HXk5nzA7stYwtdaubwWH/R17kGI3IGScJuMQ9sEN82uzJU8bfgL9yCbH2bY8Fj/Q4Ow==} + '@tiptap/extension-bullet-list@2.5.9': + resolution: {integrity: sha512-hJTv1x4omFgaID4LMRT5tOZb/VKmi8Kc6jsf4JNq4Grxd2sANmr9qpmKtBZvviK+XD5PpTXHvL+1c8C1SQtuHQ==} peerDependencies: - '@tiptap/core': ^2.6.6 + '@tiptap/core': ^2.5.9 - '@tiptap/extension-code-block@2.6.6': - resolution: {integrity: sha512-1YLp/zHMHSkE2xzht8nPR6T4sQJJ3ket798czxWuQEbetFv/l0U/mpiPpYSLObj6oTAoqYZ0kWXZj5eQSpPB8Q==} + '@tiptap/extension-code-block@2.5.9': + resolution: {integrity: sha512-+MUwp0VFFv2aFiZ/qN6q10vfIc6VhLoFFpfuETX10eIRks0Xuj2nGiqCDj7ca0/M44bRg2VvW8+tg/ZEHFNl9g==} peerDependencies: - '@tiptap/core': ^2.6.6 - '@tiptap/pm': ^2.6.6 + '@tiptap/core': ^2.5.9 + '@tiptap/pm': ^2.5.9 - '@tiptap/extension-code@2.6.6': - resolution: {integrity: sha512-JrEFKsZiLvfvOFhOnnrpA0TzCuJjDeysfbMeuKUZNV4+DhYOL28d39H1++rEtJAX0LcbBU60oC5/PrlU9SpvRQ==} + '@tiptap/extension-code@2.5.9': + resolution: {integrity: sha512-Q1PL3DUXiEe5eYUwOug1haRjSaB0doAKwx7KFVI+kSGbDwCV6BdkKAeYf3us/O2pMP9D0im8RWX4dbSnatgwBA==} peerDependencies: - '@tiptap/core': ^2.6.6 + '@tiptap/core': ^2.5.9 '@tiptap/extension-color@2.5.9': resolution: {integrity: sha512-VUGCT9iqD/Ni9arLIxkCbykAElRMFyew7uk2kbbNvttzdwzmZkbslEgCiaEZQTqKr8w4wjuQL14YOtXc6iwEww==} @@ -1022,22 +731,22 @@ packages: '@tiptap/core': ^2.5.9 '@tiptap/extension-text-style': ^2.5.9 - '@tiptap/extension-document@2.6.6': - resolution: {integrity: sha512-6qlH5VWzLHHRVeeciRC6C4ZHpMsAGPNG16EF53z0GeMSaaFD/zU3B239QlmqXmLsAl8bpf8Bn93N0t2ABUvScw==} + '@tiptap/extension-document@2.5.9': + resolution: {integrity: sha512-VdNZYDyCzC3W430UdeRXR9IZzPeODSbi5Xz/JEdV93THVp8AC9CrZR7/qjqdBTgbTB54VP8Yr6bKfCoIAF0BeQ==} peerDependencies: - '@tiptap/core': ^2.6.6 + '@tiptap/core': ^2.5.9 - '@tiptap/extension-dropcursor@2.6.6': - resolution: {integrity: sha512-O6CeKriA9uyHsg7Ui4z5ZjEWXQxrIL+1zDekffW0wenGC3G4LUsCzAiFS4LSrR9a3u7tnwqGApW10rdkmCGF4w==} + '@tiptap/extension-dropcursor@2.5.9': + resolution: {integrity: sha512-nEOb37UryG6bsU9JAs/HojE6Jg43LupNTAMISbnuB1CPAeAqNsFMwORd9eEPkyEwnQT7MkhsMOSJM44GoPGIFA==} peerDependencies: - '@tiptap/core': ^2.6.6 - '@tiptap/pm': ^2.6.6 + '@tiptap/core': ^2.5.9 + '@tiptap/pm': ^2.5.9 - '@tiptap/extension-floating-menu@2.6.6': - resolution: {integrity: sha512-lPkESOfAUxgmXRiNqUU23WSyja5FUfSWjsW4hqe+BKNjsUt1OuFMEtYJtNc+MCGhhtPfFvM3Jg6g9jd6g5XsLQ==} + '@tiptap/extension-floating-menu@2.5.9': + resolution: {integrity: sha512-MWJIQQT6e5MgqHny8neeH2Dx926nVPF7sv4p84nX4E0dnkRbEYUP8mCsWYhSUvxxIif6e+yY+4654f2Q9qTx1w==} peerDependencies: - '@tiptap/core': ^2.6.6 - '@tiptap/pm': ^2.6.6 + '@tiptap/core': ^2.5.9 + '@tiptap/pm': ^2.5.9 '@tiptap/extension-focus@2.5.9': resolution: {integrity: sha512-vHpWsNbeHT44iiLkehHCvZiwU3eRkI7+X4M+HE6Bb4FHxZtha6xTnFX3kqZHFsWQTE8vAeTH/5/eAGn5gbS2rw==} @@ -1045,48 +754,48 @@ packages: '@tiptap/core': ^2.5.9 '@tiptap/pm': ^2.5.9 - '@tiptap/extension-gapcursor@2.6.6': - resolution: {integrity: sha512-O2lQ2t0X0Vsbn3yLWxFFHrXY6C2N9Y6ZF/M7LWzpcDTUZeWuhoNkFE/1yOM0h6ZX1DO2A9hNIrKpi5Ny8yx+QA==} + '@tiptap/extension-gapcursor@2.5.9': + resolution: {integrity: sha512-yW7V2ebezsa7mWEDWCg4A1ZGsmSV5bEHKse9wzHCDkb7TutSVhLZxGo72U6hNN9PnAksv+FJQk03NuZNYvNyRQ==} peerDependencies: - '@tiptap/core': ^2.6.6 - '@tiptap/pm': ^2.6.6 + '@tiptap/core': ^2.5.9 + '@tiptap/pm': ^2.5.9 - '@tiptap/extension-hard-break@2.6.6': - resolution: {integrity: sha512-bsUuyYBrMDEiudx1dOQSr9MzKv13m0xHWrOK+DYxuIDYJb5g+c9un5cK7Js+et/HEYYSPOoH/iTW6h+4I5YeUg==} + '@tiptap/extension-hard-break@2.5.9': + resolution: {integrity: sha512-8hQ63SgZRG4BqHOeSfeaowG2eMr2beced018pOGbpHbE3XSYoISkMVuFz4Z8UEVR3W9dTbKo4wxNufSTducocQ==} peerDependencies: - '@tiptap/core': ^2.6.6 + '@tiptap/core': ^2.5.9 - '@tiptap/extension-heading@2.6.6': - resolution: {integrity: sha512-bgx9vptVFi5yFkIw1OI53J7+xJ71Or3SOe/Q8eSpZv53DlaKpL/TzKw8Z54t1PrI2rJ6H9vrLtkvixJvBZH1Ug==} + '@tiptap/extension-heading@2.5.9': + resolution: {integrity: sha512-HHowAlGUbFn1qvmY02ydM7qiPPMTGhAJn2A46enDRjNHW5UoqeMfkMpTEYaioOexyguRFSfDT3gpK68IHkQORQ==} peerDependencies: - '@tiptap/core': ^2.6.6 + '@tiptap/core': ^2.5.9 '@tiptap/extension-highlight@2.5.9': resolution: {integrity: sha512-tRaSIIbCI7aBlvlmgUgBI5lVBqnMy49lc++UVAx1Pjey1j2KW031vUyvZfEwf6wk8Y7W3kVSkN0mW9IYCcOAOQ==} peerDependencies: '@tiptap/core': ^2.5.9 - '@tiptap/extension-history@2.6.6': - resolution: {integrity: sha512-tPTzAmPGqMX5Bd5H8lzRpmsaMvB9DvI5Dy2za/VQuFtxgXmDiFVgHRkRXIuluSkPTuANu84XBOQ0cBijqY8x4w==} + '@tiptap/extension-history@2.5.9': + resolution: {integrity: sha512-hGPtJgoZSwnVVqi/xipC2ET/9X2G2UI/Y+M3IYV1ZlM0tCYsv4spNi3uXlZqnXRwYcBXLk5u6e/dmsy5QFbL8g==} peerDependencies: - '@tiptap/core': ^2.6.6 - '@tiptap/pm': ^2.6.6 + '@tiptap/core': ^2.5.9 + '@tiptap/pm': ^2.5.9 - '@tiptap/extension-horizontal-rule@2.6.6': - resolution: {integrity: sha512-cFEfv7euDpuLSe8exY8buwxkreKBAZY9Hn3EetKhPcLQo+ut5Y24chZTxFyf9b+Y0wz3UhOhLTZSz7fTobLqBA==} + '@tiptap/extension-horizontal-rule@2.5.9': + resolution: {integrity: sha512-/ES5NdxCndBmZAgIXSpCJH8YzENcpxR0S8w34coSWyv+iW0Sq7rW/mksQw8ZIVsj8a7ntpoY5OoRFpSlqcvyGw==} peerDependencies: - '@tiptap/core': ^2.6.6 - '@tiptap/pm': ^2.6.6 + '@tiptap/core': ^2.5.9 + '@tiptap/pm': ^2.5.9 '@tiptap/extension-image@2.5.9': resolution: {integrity: sha512-v4WZISCvbriac6HE6v7kYYY7KX+v9rJaIZC3gbYGtqnBWfaAwZiVVu8Z03xSrqYhoc+KHuI+oQ4VubcvZ/i7OQ==} peerDependencies: '@tiptap/core': ^2.5.9 - '@tiptap/extension-italic@2.6.6': - resolution: {integrity: sha512-t7ZPsXqa8nJZZ/6D0rQyZ/KsvzLaSihC6hBTjUQ77CeDGV9PhDWjIcBW4OrvwraJDBd12ETBeQ2CkULJOgH+lQ==} + '@tiptap/extension-italic@2.5.9': + resolution: {integrity: sha512-Bw+P139L4cy+B56zpUiRjP8BZSaAUl3JFMnr/FO+FG55QhCxFMXIc6XrC3vslNy5ef3B3zv4gCttS3ee8ByMiw==} peerDependencies: - '@tiptap/core': ^2.6.6 + '@tiptap/core': ^2.5.9 '@tiptap/extension-link@2.5.9': resolution: {integrity: sha512-7v9yRsX7NuiY8DPslIsPIlFqcD8aGBMLqfEGXltJDvuG6kykdr+khEZeWcJ8ihHIL4yWR3/MAgeT2W72Z/nxiQ==} @@ -1094,20 +803,20 @@ packages: '@tiptap/core': ^2.5.9 '@tiptap/pm': ^2.5.9 - '@tiptap/extension-list-item@2.6.6': - resolution: {integrity: sha512-k+oEzZu2cgVKqPqOP1HzASOKLpTEV9m7mRVPAbuaaX8mSyvIgD6f+JUx9PvgYv//D918wk98LMoRBFX53tDJ4w==} + '@tiptap/extension-list-item@2.5.9': + resolution: {integrity: sha512-d9Eo+vBz74SMxP0r25aqiErV256C+lGz+VWMjOoqJa6xWLM1keYy12JtGQWJi8UDVZrDskJKCHq81A0uLt27WA==} peerDependencies: - '@tiptap/core': ^2.6.6 + '@tiptap/core': ^2.5.9 - '@tiptap/extension-ordered-list@2.6.6': - resolution: {integrity: sha512-AJwyfLXIi7iUGnK5twJbwdVVpQyh7fU6OK75h1AwDztzsOcoPcxtffDlZvUOd4ZtwuyhkzYqVkeI0f+abTWZTw==} + '@tiptap/extension-ordered-list@2.5.9': + resolution: {integrity: sha512-9MsWpvVvzILuEOd/GdroF7RI7uDuE1M6at9rzsaVGvCPVHZBvu1XR3MSVK5OdiJbbJuPGttlzEFLaN/rQdCGFg==} peerDependencies: - '@tiptap/core': ^2.6.6 + '@tiptap/core': ^2.5.9 - '@tiptap/extension-paragraph@2.6.6': - resolution: {integrity: sha512-fD/onCr16UQWx+/xEmuFC2MccZZ7J5u4YaENh8LMnAnBXf78iwU7CAcmuc9rfAEO3qiLoYGXgLKiHlh2ZfD4wA==} + '@tiptap/extension-paragraph@2.5.9': + resolution: {integrity: sha512-HDXGiHTJ/V85dbDMjcFj4XfqyTQZqry6V21ucMzgBZYX60X3gIn7VpQTQnnRjvULSgtfOASSJP6BELc5TyiK0w==} peerDependencies: - '@tiptap/core': ^2.6.6 + '@tiptap/core': ^2.5.9 '@tiptap/extension-placeholder@2.5.9': resolution: {integrity: sha512-ytKmlSiebtCBXoMPE2cup48DR0rQiekXhLKLkNyt7m8tSXkaRO4eDaFqCqPEXLeQXWdhwWEoPM6Cejaaa3ztkA==} @@ -1115,10 +824,10 @@ packages: '@tiptap/core': ^2.5.9 '@tiptap/pm': ^2.5.9 - '@tiptap/extension-strike@2.6.6': - resolution: {integrity: sha512-Ze8KhGk+wzSJSJRl5fbhTI6AvPu2LmcHYeO3pMEH8u4gV5WTXfmKJVStEIAzkoqvwEQVWzXvy8nDgsFQHiojPg==} + '@tiptap/extension-strike@2.5.9': + resolution: {integrity: sha512-QezkOZpczpl09S8lp5JL7sRkwREoPY16Y/lTvBcFKm3TZbVzYZZ/KwS0zpwK9HXTfXr8os4L9AGjQf0tHonX+w==} peerDependencies: - '@tiptap/core': ^2.6.6 + '@tiptap/core': ^2.5.9 '@tiptap/extension-subscript@2.5.9': resolution: {integrity: sha512-SY1VCf/zlsBLowZaayXGl7dkIGPMNieCO0P1luFBjsiEXCRff0WYVpxi24wzgMeWE6q28SXmd3eD5BsGBudx9g==} @@ -1140,10 +849,10 @@ packages: peerDependencies: '@tiptap/core': ^2.5.9 - '@tiptap/extension-text@2.6.6': - resolution: {integrity: sha512-e84uILnRzNzcwK1DVQNpXVmBG1Cq3BJipTOIDl1LHifOok7MBjhI/X+/NR0bd3N2t6gmDTWi63+4GuJ5EeDmsg==} + '@tiptap/extension-text@2.5.9': + resolution: {integrity: sha512-W0pfiQUPsMkwaV5Y/wKW4cFsyXAIkyOFt7uN5u6LrZ/iW9KZ/IsDODPJDikWp0aeQnXzT9NNQULTpCjbHzzS6g==} peerDependencies: - '@tiptap/core': ^2.6.6 + '@tiptap/core': ^2.5.9 '@tiptap/extension-typography@2.5.9': resolution: {integrity: sha512-S+r4m3J0eK4qOszUcCU7NeOEUMuOwj0pGO4YYbIJs3AjWOyLrXD04grb64u8sCGcM8hiibQ7uZKSLJOmLjuoEA==} @@ -1197,9 +906,6 @@ packages: '@trpc/server@11.0.0-rc.396': resolution: {integrity: sha512-xn5uElk64Ji2HXp4dy7/GfMfn/8SiTsWRYPvAGrVspM9w0TWKSwr4VF/RfZGi2m75LhKP7q0PbiBHTpjl5UgFQ==} - '@tsconfig/node20@20.1.4': - resolution: {integrity: sha512-sqgsT69YFeLWf5NtJ4Xq/xAF8p4ZQHlmGW74Nu2tD4+g5fAsposc4ZfaaPixVu4y01BEiDCWLRDCvDM5JOsRxg==} - '@types/estree@1.0.5': resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} @@ -1389,9 +1095,6 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - aws4fetch@1.0.18: - resolution: {integrity: sha512-3Cf+YaUl07p24MoQ46rFwulAmiyCwH2+1zw1ZyPAX5OtJ34Hh185DwB8y/qRLb6cYYYtSFJ9pthyLc0MD4e8sQ==} - axe-core@4.7.0: resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} engines: {node: '>=4'} @@ -1410,9 +1113,6 @@ packages: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} - bowser@2.11.0: - resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} - brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} @@ -1786,10 +1486,6 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-xml-parser@4.2.5: - resolution: {integrity: sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==} - hasBin: true - fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} @@ -2118,12 +1814,6 @@ packages: resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} hasBin: true - jose@4.15.5: - resolution: {integrity: sha512-jc7BFxgKPKi94uOvEmzlSWFFe2+vASyXaKUpdQKatWAESU2MWjDfFf0fdfc83CDKcA5QecabZeNLyfhe3yKNkg==} - - jose@5.2.3: - resolution: {integrity: sha512-KUXdbctm1uHVL8BYhnyHkgp3zDX5KW8ZhAKVFEfUbU2P8Alpzjb+48hHvjOdQIyPshoblhzsuqOwEEAbtHVirA==} - jose@5.6.2: resolution: {integrity: sha512-F1t1/WZJ4JdmCE/XoMYw1dPOW5g8JF0xGm6Ox2fwaCAPlCzt+4Bh0EWP59iQuZNHHauDkCdjx+kCZSh5z/PGow==} @@ -2226,10 +1916,6 @@ packages: resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==} engines: {node: 14 || >=16.14} - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - magic-string@0.30.11: resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} @@ -2325,10 +2011,6 @@ packages: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - object-hash@2.2.0: - resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==} - engines: {node: '>= 6'} - object-hash@3.0.0: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} @@ -2364,16 +2046,9 @@ packages: resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} engines: {node: '>= 0.4'} - oidc-token-hash@5.0.3: - resolution: {integrity: sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==} - engines: {node: ^10.13.0 || >=12.0.0} - once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - openid-client@5.6.4: - resolution: {integrity: sha512-T1h3B10BRPKfcObdBklX639tVz+xh34O7GjofqrqiAQdm7eHsQ00ih18x6wuJ/E6FxdtS2u3FmUGPDeEcMwzNA==} - optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} @@ -2831,17 +2506,6 @@ packages: resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} engines: {node: '>=0.10.0'} - sst@3.0.32: - resolution: {integrity: sha512-8+iiV5CP761e+Hv68WLdof6vUi0fk94uLyeKzdMLnKR+68o31vMnYMOT15UAsoaqJp/jow/Q2zbqHmasTkjMCQ==} - peerDependencies: - hono: 4.x - valibot: 0.30.x - peerDependenciesMeta: - hono: - optional: true - valibot: - optional: true - streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} @@ -2889,9 +2553,6 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - strnum@1.0.5: - resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} - styled-jsx@5.1.1: resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} engines: {node: '>= 12.0.0'} @@ -2985,9 +2646,6 @@ packages: tsconfig-paths@3.15.0: resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} @@ -3096,10 +2754,6 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - uuid@9.0.1: - resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} - hasBin: true - value-or-promise@1.0.12: resolution: {integrity: sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q==} engines: {node: '>=12'} @@ -3145,9 +2799,6 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - yaml@2.4.2: resolution: {integrity: sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==} engines: {node: '>= 14'} @@ -3183,375 +2834,6 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@aws-crypto/crc32@3.0.0': - dependencies: - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.468.0 - tslib: 1.14.1 - - '@aws-crypto/ie11-detection@3.0.0': - dependencies: - tslib: 1.14.1 - - '@aws-crypto/sha256-browser@3.0.0': - dependencies: - '@aws-crypto/ie11-detection': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-crypto/supports-web-crypto': 3.0.0 - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.468.0 - '@aws-sdk/util-locate-window': 3.568.0 - '@aws-sdk/util-utf8-browser': 3.259.0 - tslib: 1.14.1 - - '@aws-crypto/sha256-js@3.0.0': - dependencies: - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.468.0 - tslib: 1.14.1 - - '@aws-crypto/supports-web-crypto@3.0.0': - dependencies: - tslib: 1.14.1 - - '@aws-crypto/util@3.0.0': - dependencies: - '@aws-sdk/types': 3.468.0 - '@aws-sdk/util-utf8-browser': 3.259.0 - tslib: 1.14.1 - - '@aws-sdk/client-lambda@3.478.0': - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.478.0 - '@aws-sdk/core': 3.477.0 - '@aws-sdk/credential-provider-node': 3.478.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.478.0 - '@aws-sdk/region-config-resolver': 3.470.0 - '@aws-sdk/types': 3.468.0 - '@aws-sdk/util-endpoints': 3.478.0 - '@aws-sdk/util-user-agent-browser': 3.468.0 - '@aws-sdk/util-user-agent-node': 3.470.0 - '@smithy/config-resolver': 2.2.0 - '@smithy/core': 1.4.2 - '@smithy/eventstream-serde-browser': 2.2.0 - '@smithy/eventstream-serde-config-resolver': 2.2.0 - '@smithy/eventstream-serde-node': 2.2.0 - '@smithy/fetch-http-handler': 2.5.0 - '@smithy/hash-node': 2.2.0 - '@smithy/invalid-dependency': 2.2.0 - '@smithy/middleware-content-length': 2.2.0 - '@smithy/middleware-endpoint': 2.5.1 - '@smithy/middleware-retry': 2.3.1 - '@smithy/middleware-serde': 2.3.0 - '@smithy/middleware-stack': 2.2.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/node-http-handler': 2.5.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/smithy-client': 2.5.1 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.2.0 - '@smithy/util-base64': 2.3.0 - '@smithy/util-body-length-browser': 2.2.0 - '@smithy/util-body-length-node': 2.3.0 - '@smithy/util-defaults-mode-browser': 2.2.1 - '@smithy/util-defaults-mode-node': 2.3.1 - '@smithy/util-endpoints': 1.2.0 - '@smithy/util-retry': 2.2.0 - '@smithy/util-stream': 2.2.0 - '@smithy/util-utf8': 2.3.0 - '@smithy/util-waiter': 2.2.0 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/client-sso@3.478.0': - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/core': 3.477.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.478.0 - '@aws-sdk/region-config-resolver': 3.470.0 - '@aws-sdk/types': 3.468.0 - '@aws-sdk/util-endpoints': 3.478.0 - '@aws-sdk/util-user-agent-browser': 3.468.0 - '@aws-sdk/util-user-agent-node': 3.470.0 - '@smithy/config-resolver': 2.2.0 - '@smithy/core': 1.4.2 - '@smithy/fetch-http-handler': 2.5.0 - '@smithy/hash-node': 2.2.0 - '@smithy/invalid-dependency': 2.2.0 - '@smithy/middleware-content-length': 2.2.0 - '@smithy/middleware-endpoint': 2.5.1 - '@smithy/middleware-retry': 2.3.1 - '@smithy/middleware-serde': 2.3.0 - '@smithy/middleware-stack': 2.2.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/node-http-handler': 2.5.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/smithy-client': 2.5.1 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.2.0 - '@smithy/util-base64': 2.3.0 - '@smithy/util-body-length-browser': 2.2.0 - '@smithy/util-body-length-node': 2.3.0 - '@smithy/util-defaults-mode-browser': 2.2.1 - '@smithy/util-defaults-mode-node': 2.3.1 - '@smithy/util-endpoints': 1.2.0 - '@smithy/util-retry': 2.2.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/client-sts@3.478.0': - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/core': 3.477.0 - '@aws-sdk/credential-provider-node': 3.478.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.478.0 - '@aws-sdk/region-config-resolver': 3.470.0 - '@aws-sdk/types': 3.468.0 - '@aws-sdk/util-endpoints': 3.478.0 - '@aws-sdk/util-user-agent-browser': 3.468.0 - '@aws-sdk/util-user-agent-node': 3.470.0 - '@smithy/config-resolver': 2.2.0 - '@smithy/core': 1.4.2 - '@smithy/fetch-http-handler': 2.5.0 - '@smithy/hash-node': 2.2.0 - '@smithy/invalid-dependency': 2.2.0 - '@smithy/middleware-content-length': 2.2.0 - '@smithy/middleware-endpoint': 2.5.1 - '@smithy/middleware-retry': 2.3.1 - '@smithy/middleware-serde': 2.3.0 - '@smithy/middleware-stack': 2.2.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/node-http-handler': 2.5.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/smithy-client': 2.5.1 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.2.0 - '@smithy/util-base64': 2.3.0 - '@smithy/util-body-length-browser': 2.2.0 - '@smithy/util-body-length-node': 2.3.0 - '@smithy/util-defaults-mode-browser': 2.2.1 - '@smithy/util-defaults-mode-node': 2.3.1 - '@smithy/util-endpoints': 1.2.0 - '@smithy/util-middleware': 2.2.0 - '@smithy/util-retry': 2.2.0 - '@smithy/util-utf8': 2.3.0 - fast-xml-parser: 4.2.5 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/core@3.477.0': - dependencies: - '@smithy/core': 1.4.2 - '@smithy/protocol-http': 3.3.0 - '@smithy/signature-v4': 2.3.0 - '@smithy/smithy-client': 2.5.1 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@aws-sdk/credential-provider-env@3.468.0': - dependencies: - '@aws-sdk/types': 3.468.0 - '@smithy/property-provider': 2.2.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@aws-sdk/credential-provider-ini@3.478.0': - dependencies: - '@aws-sdk/credential-provider-env': 3.468.0 - '@aws-sdk/credential-provider-process': 3.468.0 - '@aws-sdk/credential-provider-sso': 3.478.0 - '@aws-sdk/credential-provider-web-identity': 3.468.0 - '@aws-sdk/types': 3.468.0 - '@smithy/credential-provider-imds': 2.3.0 - '@smithy/property-provider': 2.2.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/credential-provider-node@3.478.0': - dependencies: - '@aws-sdk/credential-provider-env': 3.468.0 - '@aws-sdk/credential-provider-ini': 3.478.0 - '@aws-sdk/credential-provider-process': 3.468.0 - '@aws-sdk/credential-provider-sso': 3.478.0 - '@aws-sdk/credential-provider-web-identity': 3.468.0 - '@aws-sdk/types': 3.468.0 - '@smithy/credential-provider-imds': 2.3.0 - '@smithy/property-provider': 2.2.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/credential-provider-process@3.468.0': - dependencies: - '@aws-sdk/types': 3.468.0 - '@smithy/property-provider': 2.2.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@aws-sdk/credential-provider-sso@3.478.0': - dependencies: - '@aws-sdk/client-sso': 3.478.0 - '@aws-sdk/token-providers': 3.478.0 - '@aws-sdk/types': 3.468.0 - '@smithy/property-provider': 2.2.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/credential-provider-web-identity@3.468.0': - dependencies: - '@aws-sdk/types': 3.468.0 - '@smithy/property-provider': 2.2.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-host-header@3.468.0': - dependencies: - '@aws-sdk/types': 3.468.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-logger@3.468.0': - dependencies: - '@aws-sdk/types': 3.468.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-recursion-detection@3.468.0': - dependencies: - '@aws-sdk/types': 3.468.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-signing@3.468.0': - dependencies: - '@aws-sdk/types': 3.468.0 - '@smithy/property-provider': 2.2.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/signature-v4': 2.3.0 - '@smithy/types': 2.12.0 - '@smithy/util-middleware': 2.2.0 - tslib: 2.6.2 - - '@aws-sdk/middleware-user-agent@3.478.0': - dependencies: - '@aws-sdk/types': 3.468.0 - '@aws-sdk/util-endpoints': 3.478.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@aws-sdk/region-config-resolver@3.470.0': - dependencies: - '@smithy/node-config-provider': 2.3.0 - '@smithy/types': 2.12.0 - '@smithy/util-config-provider': 2.3.0 - '@smithy/util-middleware': 2.2.0 - tslib: 2.6.2 - - '@aws-sdk/token-providers@3.478.0': - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.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.478.0 - '@aws-sdk/region-config-resolver': 3.470.0 - '@aws-sdk/types': 3.468.0 - '@aws-sdk/util-endpoints': 3.478.0 - '@aws-sdk/util-user-agent-browser': 3.468.0 - '@aws-sdk/util-user-agent-node': 3.470.0 - '@smithy/config-resolver': 2.2.0 - '@smithy/fetch-http-handler': 2.5.0 - '@smithy/hash-node': 2.2.0 - '@smithy/invalid-dependency': 2.2.0 - '@smithy/middleware-content-length': 2.2.0 - '@smithy/middleware-endpoint': 2.5.1 - '@smithy/middleware-retry': 2.3.1 - '@smithy/middleware-serde': 2.3.0 - '@smithy/middleware-stack': 2.2.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/node-http-handler': 2.5.0 - '@smithy/property-provider': 2.2.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/smithy-client': 2.5.1 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.2.0 - '@smithy/util-base64': 2.3.0 - '@smithy/util-body-length-browser': 2.2.0 - '@smithy/util-body-length-node': 2.3.0 - '@smithy/util-defaults-mode-browser': 2.2.1 - '@smithy/util-defaults-mode-node': 2.3.1 - '@smithy/util-endpoints': 1.2.0 - '@smithy/util-retry': 2.2.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/types@3.468.0': - dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@aws-sdk/util-endpoints@3.478.0': - dependencies: - '@aws-sdk/types': 3.468.0 - '@smithy/util-endpoints': 1.2.0 - tslib: 2.6.2 - - '@aws-sdk/util-locate-window@3.568.0': - dependencies: - tslib: 2.6.2 - - '@aws-sdk/util-user-agent-browser@3.468.0': - dependencies: - '@aws-sdk/types': 3.468.0 - '@smithy/types': 2.12.0 - bowser: 2.11.0 - tslib: 2.6.2 - - '@aws-sdk/util-user-agent-node@3.470.0': - dependencies: - '@aws-sdk/types': 3.468.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@aws-sdk/util-utf8-browser@3.259.0': - dependencies: - tslib: 2.6.2 - '@babel/helper-string-parser@7.24.7': {} '@babel/helper-validator-identifier@7.24.7': {} @@ -3966,292 +3248,6 @@ snapshots: '@rushstack/eslint-patch@1.10.2': {} - '@smithy/abort-controller@2.2.0': - dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@smithy/config-resolver@2.2.0': - dependencies: - '@smithy/node-config-provider': 2.3.0 - '@smithy/types': 2.12.0 - '@smithy/util-config-provider': 2.3.0 - '@smithy/util-middleware': 2.2.0 - tslib: 2.6.2 - - '@smithy/core@1.4.2': - dependencies: - '@smithy/middleware-endpoint': 2.5.1 - '@smithy/middleware-retry': 2.3.1 - '@smithy/middleware-serde': 2.3.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/smithy-client': 2.5.1 - '@smithy/types': 2.12.0 - '@smithy/util-middleware': 2.2.0 - tslib: 2.6.2 - - '@smithy/credential-provider-imds@2.3.0': - dependencies: - '@smithy/node-config-provider': 2.3.0 - '@smithy/property-provider': 2.2.0 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.2.0 - tslib: 2.6.2 - - '@smithy/eventstream-codec@2.2.0': - dependencies: - '@aws-crypto/crc32': 3.0.0 - '@smithy/types': 2.12.0 - '@smithy/util-hex-encoding': 2.2.0 - tslib: 2.6.2 - - '@smithy/eventstream-serde-browser@2.2.0': - dependencies: - '@smithy/eventstream-serde-universal': 2.2.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@smithy/eventstream-serde-config-resolver@2.2.0': - dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@smithy/eventstream-serde-node@2.2.0': - dependencies: - '@smithy/eventstream-serde-universal': 2.2.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@smithy/eventstream-serde-universal@2.2.0': - dependencies: - '@smithy/eventstream-codec': 2.2.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@smithy/fetch-http-handler@2.5.0': - dependencies: - '@smithy/protocol-http': 3.3.0 - '@smithy/querystring-builder': 2.2.0 - '@smithy/types': 2.12.0 - '@smithy/util-base64': 2.3.0 - tslib: 2.6.2 - - '@smithy/hash-node@2.2.0': - dependencies: - '@smithy/types': 2.12.0 - '@smithy/util-buffer-from': 2.2.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.6.2 - - '@smithy/invalid-dependency@2.2.0': - dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@smithy/is-array-buffer@2.2.0': - dependencies: - tslib: 2.6.2 - - '@smithy/middleware-content-length@2.2.0': - dependencies: - '@smithy/protocol-http': 3.3.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@smithy/middleware-endpoint@2.5.1': - dependencies: - '@smithy/middleware-serde': 2.3.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.2.0 - '@smithy/util-middleware': 2.2.0 - tslib: 2.6.2 - - '@smithy/middleware-retry@2.3.1': - dependencies: - '@smithy/node-config-provider': 2.3.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/service-error-classification': 2.1.5 - '@smithy/smithy-client': 2.5.1 - '@smithy/types': 2.12.0 - '@smithy/util-middleware': 2.2.0 - '@smithy/util-retry': 2.2.0 - tslib: 2.6.2 - uuid: 9.0.1 - - '@smithy/middleware-serde@2.3.0': - dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@smithy/middleware-stack@2.2.0': - dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@smithy/node-config-provider@2.3.0': - dependencies: - '@smithy/property-provider': 2.2.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@smithy/node-http-handler@2.5.0': - dependencies: - '@smithy/abort-controller': 2.2.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/querystring-builder': 2.2.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@smithy/property-provider@2.2.0': - dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@smithy/protocol-http@3.3.0': - dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@smithy/querystring-builder@2.2.0': - dependencies: - '@smithy/types': 2.12.0 - '@smithy/util-uri-escape': 2.2.0 - tslib: 2.6.2 - - '@smithy/querystring-parser@2.2.0': - dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@smithy/service-error-classification@2.1.5': - dependencies: - '@smithy/types': 2.12.0 - - '@smithy/shared-ini-file-loader@2.4.0': - dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@smithy/signature-v4@2.3.0': - dependencies: - '@smithy/is-array-buffer': 2.2.0 - '@smithy/types': 2.12.0 - '@smithy/util-hex-encoding': 2.2.0 - '@smithy/util-middleware': 2.2.0 - '@smithy/util-uri-escape': 2.2.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.6.2 - - '@smithy/smithy-client@2.5.1': - dependencies: - '@smithy/middleware-endpoint': 2.5.1 - '@smithy/middleware-stack': 2.2.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/types': 2.12.0 - '@smithy/util-stream': 2.2.0 - tslib: 2.6.2 - - '@smithy/types@2.12.0': - dependencies: - tslib: 2.6.2 - - '@smithy/url-parser@2.2.0': - dependencies: - '@smithy/querystring-parser': 2.2.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@smithy/util-base64@2.3.0': - dependencies: - '@smithy/util-buffer-from': 2.2.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.6.2 - - '@smithy/util-body-length-browser@2.2.0': - dependencies: - tslib: 2.6.2 - - '@smithy/util-body-length-node@2.3.0': - dependencies: - tslib: 2.6.2 - - '@smithy/util-buffer-from@2.2.0': - dependencies: - '@smithy/is-array-buffer': 2.2.0 - tslib: 2.6.2 - - '@smithy/util-config-provider@2.3.0': - dependencies: - tslib: 2.6.2 - - '@smithy/util-defaults-mode-browser@2.2.1': - dependencies: - '@smithy/property-provider': 2.2.0 - '@smithy/smithy-client': 2.5.1 - '@smithy/types': 2.12.0 - bowser: 2.11.0 - tslib: 2.6.2 - - '@smithy/util-defaults-mode-node@2.3.1': - dependencies: - '@smithy/config-resolver': 2.2.0 - '@smithy/credential-provider-imds': 2.3.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/property-provider': 2.2.0 - '@smithy/smithy-client': 2.5.1 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@smithy/util-endpoints@1.2.0': - dependencies: - '@smithy/node-config-provider': 2.3.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@smithy/util-hex-encoding@2.2.0': - dependencies: - tslib: 2.6.2 - - '@smithy/util-middleware@2.2.0': - dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@smithy/util-retry@2.2.0': - dependencies: - '@smithy/service-error-classification': 2.1.5 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@smithy/util-stream@2.2.0': - dependencies: - '@smithy/fetch-http-handler': 2.5.0 - '@smithy/node-http-handler': 2.5.0 - '@smithy/types': 2.12.0 - '@smithy/util-base64': 2.3.0 - '@smithy/util-buffer-from': 2.2.0 - '@smithy/util-hex-encoding': 2.2.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.6.2 - - '@smithy/util-uri-escape@2.2.0': - dependencies: - tslib: 2.6.2 - - '@smithy/util-utf8@2.3.0': - dependencies: - '@smithy/util-buffer-from': 2.2.0 - tslib: 2.6.2 - - '@smithy/util-waiter@2.2.0': - dependencies: - '@smithy/abort-controller': 2.2.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - '@swc/counter@0.1.3': {} '@swc/helpers@0.5.5': @@ -4302,30 +3298,30 @@ snapshots: dependencies: '@tiptap/pm': 2.5.9 - '@tiptap/extension-blockquote@2.6.6(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))': + '@tiptap/extension-blockquote@2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))': dependencies: '@tiptap/core': 2.5.9(@tiptap/pm@2.5.9) - '@tiptap/extension-bold@2.6.6(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))': + '@tiptap/extension-bold@2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))': dependencies: '@tiptap/core': 2.5.9(@tiptap/pm@2.5.9) - '@tiptap/extension-bubble-menu@2.6.6(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))(@tiptap/pm@2.5.9)': + '@tiptap/extension-bubble-menu@2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))(@tiptap/pm@2.5.9)': dependencies: '@tiptap/core': 2.5.9(@tiptap/pm@2.5.9) '@tiptap/pm': 2.5.9 tippy.js: 6.3.7 - '@tiptap/extension-bullet-list@2.6.6(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))': + '@tiptap/extension-bullet-list@2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))': dependencies: '@tiptap/core': 2.5.9(@tiptap/pm@2.5.9) - '@tiptap/extension-code-block@2.6.6(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))(@tiptap/pm@2.5.9)': + '@tiptap/extension-code-block@2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))(@tiptap/pm@2.5.9)': dependencies: '@tiptap/core': 2.5.9(@tiptap/pm@2.5.9) '@tiptap/pm': 2.5.9 - '@tiptap/extension-code@2.6.6(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))': + '@tiptap/extension-code@2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))': dependencies: '@tiptap/core': 2.5.9(@tiptap/pm@2.5.9) @@ -4334,16 +3330,16 @@ snapshots: '@tiptap/core': 2.5.9(@tiptap/pm@2.5.9) '@tiptap/extension-text-style': 2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9)) - '@tiptap/extension-document@2.6.6(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))': + '@tiptap/extension-document@2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))': dependencies: '@tiptap/core': 2.5.9(@tiptap/pm@2.5.9) - '@tiptap/extension-dropcursor@2.6.6(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))(@tiptap/pm@2.5.9)': + '@tiptap/extension-dropcursor@2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))(@tiptap/pm@2.5.9)': dependencies: '@tiptap/core': 2.5.9(@tiptap/pm@2.5.9) '@tiptap/pm': 2.5.9 - '@tiptap/extension-floating-menu@2.6.6(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))(@tiptap/pm@2.5.9)': + '@tiptap/extension-floating-menu@2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))(@tiptap/pm@2.5.9)': dependencies: '@tiptap/core': 2.5.9(@tiptap/pm@2.5.9) '@tiptap/pm': 2.5.9 @@ -4354,16 +3350,16 @@ snapshots: '@tiptap/core': 2.5.9(@tiptap/pm@2.5.9) '@tiptap/pm': 2.5.9 - '@tiptap/extension-gapcursor@2.6.6(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))(@tiptap/pm@2.5.9)': + '@tiptap/extension-gapcursor@2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))(@tiptap/pm@2.5.9)': dependencies: '@tiptap/core': 2.5.9(@tiptap/pm@2.5.9) '@tiptap/pm': 2.5.9 - '@tiptap/extension-hard-break@2.6.6(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))': + '@tiptap/extension-hard-break@2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))': dependencies: '@tiptap/core': 2.5.9(@tiptap/pm@2.5.9) - '@tiptap/extension-heading@2.6.6(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))': + '@tiptap/extension-heading@2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))': dependencies: '@tiptap/core': 2.5.9(@tiptap/pm@2.5.9) @@ -4371,12 +3367,12 @@ snapshots: dependencies: '@tiptap/core': 2.5.9(@tiptap/pm@2.5.9) - '@tiptap/extension-history@2.6.6(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))(@tiptap/pm@2.5.9)': + '@tiptap/extension-history@2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))(@tiptap/pm@2.5.9)': dependencies: '@tiptap/core': 2.5.9(@tiptap/pm@2.5.9) '@tiptap/pm': 2.5.9 - '@tiptap/extension-horizontal-rule@2.6.6(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))(@tiptap/pm@2.5.9)': + '@tiptap/extension-horizontal-rule@2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))(@tiptap/pm@2.5.9)': dependencies: '@tiptap/core': 2.5.9(@tiptap/pm@2.5.9) '@tiptap/pm': 2.5.9 @@ -4385,7 +3381,7 @@ snapshots: dependencies: '@tiptap/core': 2.5.9(@tiptap/pm@2.5.9) - '@tiptap/extension-italic@2.6.6(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))': + '@tiptap/extension-italic@2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))': dependencies: '@tiptap/core': 2.5.9(@tiptap/pm@2.5.9) @@ -4395,15 +3391,15 @@ snapshots: '@tiptap/pm': 2.5.9 linkifyjs: 4.1.3 - '@tiptap/extension-list-item@2.6.6(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))': + '@tiptap/extension-list-item@2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))': dependencies: '@tiptap/core': 2.5.9(@tiptap/pm@2.5.9) - '@tiptap/extension-ordered-list@2.6.6(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))': + '@tiptap/extension-ordered-list@2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))': dependencies: '@tiptap/core': 2.5.9(@tiptap/pm@2.5.9) - '@tiptap/extension-paragraph@2.6.6(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))': + '@tiptap/extension-paragraph@2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))': dependencies: '@tiptap/core': 2.5.9(@tiptap/pm@2.5.9) @@ -4412,7 +3408,7 @@ snapshots: '@tiptap/core': 2.5.9(@tiptap/pm@2.5.9) '@tiptap/pm': 2.5.9 - '@tiptap/extension-strike@2.6.6(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))': + '@tiptap/extension-strike@2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))': dependencies: '@tiptap/core': 2.5.9(@tiptap/pm@2.5.9) @@ -4432,7 +3428,7 @@ snapshots: dependencies: '@tiptap/core': 2.5.9(@tiptap/pm@2.5.9) - '@tiptap/extension-text@2.6.6(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))': + '@tiptap/extension-text@2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))': dependencies: '@tiptap/core': 2.5.9(@tiptap/pm@2.5.9) @@ -4478,8 +3474,8 @@ snapshots: '@tiptap/react@2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))(@tiptap/pm@2.5.9)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@tiptap/core': 2.5.9(@tiptap/pm@2.5.9) - '@tiptap/extension-bubble-menu': 2.6.6(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))(@tiptap/pm@2.5.9) - '@tiptap/extension-floating-menu': 2.6.6(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))(@tiptap/pm@2.5.9) + '@tiptap/extension-bubble-menu': 2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))(@tiptap/pm@2.5.9) + '@tiptap/extension-floating-menu': 2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))(@tiptap/pm@2.5.9) '@tiptap/pm': 2.5.9 '@types/use-sync-external-store': 0.0.6 react: 18.3.1 @@ -4489,24 +3485,24 @@ snapshots: '@tiptap/starter-kit@2.5.9(@tiptap/pm@2.5.9)': dependencies: '@tiptap/core': 2.5.9(@tiptap/pm@2.5.9) - '@tiptap/extension-blockquote': 2.6.6(@tiptap/core@2.5.9(@tiptap/pm@2.5.9)) - '@tiptap/extension-bold': 2.6.6(@tiptap/core@2.5.9(@tiptap/pm@2.5.9)) - '@tiptap/extension-bullet-list': 2.6.6(@tiptap/core@2.5.9(@tiptap/pm@2.5.9)) - '@tiptap/extension-code': 2.6.6(@tiptap/core@2.5.9(@tiptap/pm@2.5.9)) - '@tiptap/extension-code-block': 2.6.6(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))(@tiptap/pm@2.5.9) - '@tiptap/extension-document': 2.6.6(@tiptap/core@2.5.9(@tiptap/pm@2.5.9)) - '@tiptap/extension-dropcursor': 2.6.6(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))(@tiptap/pm@2.5.9) - '@tiptap/extension-gapcursor': 2.6.6(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))(@tiptap/pm@2.5.9) - '@tiptap/extension-hard-break': 2.6.6(@tiptap/core@2.5.9(@tiptap/pm@2.5.9)) - '@tiptap/extension-heading': 2.6.6(@tiptap/core@2.5.9(@tiptap/pm@2.5.9)) - '@tiptap/extension-history': 2.6.6(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))(@tiptap/pm@2.5.9) - '@tiptap/extension-horizontal-rule': 2.6.6(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))(@tiptap/pm@2.5.9) - '@tiptap/extension-italic': 2.6.6(@tiptap/core@2.5.9(@tiptap/pm@2.5.9)) - '@tiptap/extension-list-item': 2.6.6(@tiptap/core@2.5.9(@tiptap/pm@2.5.9)) - '@tiptap/extension-ordered-list': 2.6.6(@tiptap/core@2.5.9(@tiptap/pm@2.5.9)) - '@tiptap/extension-paragraph': 2.6.6(@tiptap/core@2.5.9(@tiptap/pm@2.5.9)) - '@tiptap/extension-strike': 2.6.6(@tiptap/core@2.5.9(@tiptap/pm@2.5.9)) - '@tiptap/extension-text': 2.6.6(@tiptap/core@2.5.9(@tiptap/pm@2.5.9)) + '@tiptap/extension-blockquote': 2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9)) + '@tiptap/extension-bold': 2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9)) + '@tiptap/extension-bullet-list': 2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9)) + '@tiptap/extension-code': 2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9)) + '@tiptap/extension-code-block': 2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))(@tiptap/pm@2.5.9) + '@tiptap/extension-document': 2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9)) + '@tiptap/extension-dropcursor': 2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))(@tiptap/pm@2.5.9) + '@tiptap/extension-gapcursor': 2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))(@tiptap/pm@2.5.9) + '@tiptap/extension-hard-break': 2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9)) + '@tiptap/extension-heading': 2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9)) + '@tiptap/extension-history': 2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))(@tiptap/pm@2.5.9) + '@tiptap/extension-horizontal-rule': 2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9))(@tiptap/pm@2.5.9) + '@tiptap/extension-italic': 2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9)) + '@tiptap/extension-list-item': 2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9)) + '@tiptap/extension-ordered-list': 2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9)) + '@tiptap/extension-paragraph': 2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9)) + '@tiptap/extension-strike': 2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9)) + '@tiptap/extension-text': 2.5.9(@tiptap/core@2.5.9(@tiptap/pm@2.5.9)) transitivePeerDependencies: - '@tiptap/pm' @@ -4524,8 +3520,6 @@ snapshots: '@trpc/server@11.0.0-rc.396': {} - '@tsconfig/node20@20.1.4': {} - '@types/estree@1.0.5': {} '@types/js-cookie@3.0.6': {} @@ -4765,8 +3759,6 @@ snapshots: dependencies: possible-typed-array-names: 1.0.0 - aws4fetch@1.0.18: {} - axe-core@4.7.0: {} axobject-query@3.2.1: @@ -4779,8 +3771,6 @@ snapshots: binary-extensions@2.3.0: {} - bowser@2.11.0: {} - brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 @@ -5300,10 +4290,6 @@ snapshots: fast-levenshtein@2.0.6: {} - fast-xml-parser@4.2.5: - dependencies: - strnum: 1.0.5 - fastq@1.17.1: dependencies: reusify: 1.0.4 @@ -5644,10 +4630,6 @@ snapshots: jiti@1.21.0: {} - jose@4.15.5: {} - - jose@5.2.3: {} - jose@5.6.2: {} js-cookie@3.0.5: {} @@ -5732,10 +4714,6 @@ snapshots: lru-cache@10.2.2: {} - lru-cache@6.0.0: - dependencies: - yallist: 4.0.0 - magic-string@0.30.11: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 @@ -5830,8 +4808,6 @@ snapshots: object-assign@4.1.1: {} - object-hash@2.2.0: {} - object-hash@3.0.0: {} object-inspect@1.13.1: {} @@ -5876,19 +4852,10 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.0.0 - oidc-token-hash@5.0.3: {} - once@1.4.0: dependencies: wrappy: 1.0.2 - openid-client@5.6.4: - dependencies: - jose: 4.15.5 - lru-cache: 6.0.0 - object-hash: 2.2.0 - oidc-token-hash: 5.0.3 - optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -6332,16 +5299,6 @@ snapshots: source-map-js@1.2.0: {} - sst@3.0.32: - dependencies: - '@aws-sdk/client-lambda': 3.478.0 - '@tsconfig/node20': 20.1.4 - aws4fetch: 1.0.18 - jose: 5.2.3 - openid-client: 5.6.4 - transitivePeerDependencies: - - aws-crt - streamsearch@1.1.0: {} string-length@6.0.0: @@ -6406,8 +5363,6 @@ snapshots: strip-json-comments@3.1.1: {} - strnum@1.0.5: {} - styled-jsx@5.1.1(react@18.3.1): dependencies: client-only: 0.0.1 @@ -6525,8 +5480,6 @@ snapshots: minimist: 1.2.8 strip-bom: 3.0.0 - tslib@1.14.1: {} - tslib@2.6.2: {} tslib@2.7.0: {} @@ -6632,8 +5585,6 @@ snapshots: util-deprecate@1.0.2: {} - uuid@9.0.1: {} - value-or-promise@1.0.12: {} vue-template-compiler@2.7.16: @@ -6701,8 +5652,6 @@ snapshots: wrappy@1.0.2: {} - yallist@4.0.0: {} - yaml@2.4.2: {} yocto-queue@0.1.0: {} From 29c304fc5579027f01ed1ae02b80212a87e82786 Mon Sep 17 00:00:00 2001 From: hingobway Date: Sun, 1 Sep 2024 23:45:45 -0400 Subject: [PATCH 03/11] calendar fixes - page title - calendar max width - new defaultDays based on window size - edit dialog keyboard shortcut explainer --- client/package.json | 1 + client/pnpm-lock.yaml | 15 ++++++ .../src/app/calendar/_components/Timeline.tsx | 49 ++++++++++--------- .../app/calendar/_components/ViewEvents.tsx | 2 - client/src/app/calendar/_util/dateUtils.ts | 1 + client/src/app/calendar/_util/defaultDays.ts | 14 ++++-- .../calendar/new/_components/NewEventForm.tsx | 32 ++++++++---- client/src/app/calendar/page.tsx | 7 ++- .../pages/edit/[id]/_components/SaveRow.tsx | 11 +---- client/src/util/breakpoints.ts | 7 +++ client/src/util/keyboardKeys.ts | 14 ++++++ 11 files changed, 105 insertions(+), 48 deletions(-) create mode 100644 client/src/util/breakpoints.ts create mode 100644 client/src/util/keyboardKeys.ts diff --git a/client/package.json b/client/package.json index 64b1b0e..7d036d4 100644 --- a/client/package.json +++ b/client/package.json @@ -45,6 +45,7 @@ "@trpc/client": "11.0.0-rc.396", "@trpc/react-query": "11.0.0-rc.396", "@trpc/server": "11.0.0-rc.396", + "@uidotdev/usehooks": "^2.4.1", "dayjs": "^1.11.11", "fast-deep-equal": "^3.1.3", "framer-motion": "^11.3.30", diff --git a/client/pnpm-lock.yaml b/client/pnpm-lock.yaml index 3a404f9..eebb026 100644 --- a/client/pnpm-lock.yaml +++ b/client/pnpm-lock.yaml @@ -113,6 +113,9 @@ importers: '@trpc/server': specifier: 11.0.0-rc.396 version: 11.0.0-rc.396 + '@uidotdev/usehooks': + specifier: ^2.4.1 + version: 2.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) dayjs: specifier: ^1.11.11 version: 1.11.11 @@ -964,6 +967,13 @@ packages: resolution: {integrity: sha512-c6EIQRHhcpl6+tO8EMR+kjkkV+ugUNXOmeASA1rlzkd8EPIriavpWoiEz1HR/VLhbVIdhqnV6E7JZm00cBDx2A==} engines: {node: ^16.0.0 || >=18.0.0} + '@uidotdev/usehooks@2.4.1': + resolution: {integrity: sha512-1I+RwWyS+kdv3Mv0Vmc+p0dPYH0DTRAo04HLyXReYBL9AeseDWUJyi4THuksBJcu9F0Pih69Ak150VDnqbVnXg==} + engines: {node: '>=16'} + peerDependencies: + react: '>=18.0.0' + react-dom: '>=18.0.0' + '@ungap/structured-clone@1.2.0': resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} @@ -3585,6 +3595,11 @@ snapshots: '@typescript-eslint/types': 7.2.0 eslint-visitor-keys: 3.4.3 + '@uidotdev/usehooks@2.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + '@ungap/structured-clone@1.2.0': {} '@volar/language-core@2.2.5': diff --git a/client/src/app/calendar/_components/Timeline.tsx b/client/src/app/calendar/_components/Timeline.tsx index c02baf7..9abe82a 100644 --- a/client/src/app/calendar/_components/Timeline.tsx +++ b/client/src/app/calendar/_components/Timeline.tsx @@ -14,31 +14,36 @@ export default function Timeline(props: CalendarProps) { return ( <> -
-
-
- {/* divider lines */} -
- {dates.map((_, i) => ( -
- ))} -
+
+ {/* events area */} +
+
+
+ {/* divider lines */} +
+ {dates.map((_, i) => ( +
+ ))} +
- {/* header */} - + {/* header */} + - {/* events grid */} -
- {events?.map((event) => ( - - ))} + {/* events grid */} +
+ {events?.map((event) => ( + + ))} +
+ +
diff --git a/client/src/app/calendar/_components/ViewEvents.tsx b/client/src/app/calendar/_components/ViewEvents.tsx index 415b5f5..c730676 100644 --- a/client/src/app/calendar/_components/ViewEvents.tsx +++ b/client/src/app/calendar/_components/ViewEvents.tsx @@ -147,8 +147,6 @@ export default function ViewEvents() { {/* timeline view */} - -
diff --git a/client/src/app/calendar/_util/dateUtils.ts b/client/src/app/calendar/_util/dateUtils.ts index 6b3ee5b..21c8ec3 100644 --- a/client/src/app/calendar/_util/dateUtils.ts +++ b/client/src/app/calendar/_util/dateUtils.ts @@ -50,6 +50,7 @@ export function dateTSLocal(d: number) { // ------------------------------------ // hooks +/** get an array of all dates between startdate and enddate */ export function useDatesArray(p: CalendarProps) { const { dates: dateLimits, days } = p; diff --git a/client/src/app/calendar/_util/defaultDays.ts b/client/src/app/calendar/_util/defaultDays.ts index 2096199..9970c5e 100644 --- a/client/src/app/calendar/_util/defaultDays.ts +++ b/client/src/app/calendar/_util/defaultDays.ts @@ -1,13 +1,17 @@ 'use client'; -import { useOs } from '@mantine/hooks'; import { useMemo } from 'react'; +import { useWindowSize } from '@uidotdev/usehooks'; +import { breakpoints } from '@/util/breakpoints'; + export function useDefaultDays() { - const os = useOs(); + const size = useWindowSize(); + const defaultDays = useMemo(() => { - if (os === 'android' || os === 'ios') return 3; - return 7; - }, [os]); + if (!size.width) return 7; + if (size.width >= breakpoints('sm')) return 7; + else return 4; + }, [size.width]); return defaultDays; } diff --git a/client/src/app/calendar/new/_components/NewEventForm.tsx b/client/src/app/calendar/new/_components/NewEventForm.tsx index 4f5040a..8cefe9c 100644 --- a/client/src/app/calendar/new/_components/NewEventForm.tsx +++ b/client/src/app/calendar/new/_components/NewEventForm.tsx @@ -1,6 +1,6 @@ 'use client'; -import { Button } from '@mantine/core'; +import { Button, Kbd } from '@mantine/core'; import { FormCtxProvider, InitialStayValue } from '../state/formCtx'; import { useReverseCbTrigger } from '@/util/reverseCb'; @@ -15,6 +15,7 @@ import FormSubmit from './FormSubmit'; import { getHotkeyHandler } from '@mantine/hooks'; import { usePassedTransition } from '@/app/_ctx/transition'; import FormDelete from './FormDelete'; +import { useKeyboardKeys } from '@/util/keyboardKeys'; export const COST_MEMBERS = 15.0; export const COST_GUESTS = 20.0; @@ -31,6 +32,8 @@ const NewEventForm = ({ const [isLoading] = usePassedTransition(); + const keyType = useKeyboardKeys(); + return ( <> @@ -105,16 +108,27 @@ const NewEventForm = ({ {/* SUBMIT */}
+ {/* delete */} - + {/* submit */} +
+ {keyType !== 'MOBILE' && ( +
+ {keyType === 'MAC' ? `Cmd` : `Ctrl`} + + + Enter to submit +
+ )} + +
diff --git a/client/src/app/calendar/page.tsx b/client/src/app/calendar/page.tsx index 3455fb4..9072101 100644 --- a/client/src/app/calendar/page.tsx +++ b/client/src/app/calendar/page.tsx @@ -1,11 +1,16 @@ +import { Metadata } from 'next'; import CalendarWrapper from './_components/CalendarWrapper'; import { SampleMonth, SampleWeek } from './_components/SampleCal'; +export const metadata: Metadata = { + title: 'Calendar', +}; + export default function CalendarPage() { return ( <>
-
+
{/*
diff --git a/client/src/app/cms/pages/edit/[id]/_components/SaveRow.tsx b/client/src/app/cms/pages/edit/[id]/_components/SaveRow.tsx index 65e92f2..c2b8540 100644 --- a/client/src/app/cms/pages/edit/[id]/_components/SaveRow.tsx +++ b/client/src/app/cms/pages/edit/[id]/_components/SaveRow.tsx @@ -1,9 +1,7 @@ -import { useMemo } from 'react'; - import { Button, Kbd } from '@mantine/core'; -import { useOs } from '@mantine/hooks'; import { useSkeleton } from '@/app/_ctx/skeleton/context'; +import { useKeyboardKeys } from '@/util/keyboardKeys'; export type SaveState = 'UNSAVED' | 'SAVED' | 'SAVING' | 'TYPING'; @@ -16,12 +14,7 @@ export default function SaveRow({ }) { const isSkeleton = useSkeleton(); - const os = useOs(); - const keys = useMemo<'MOBILE' | 'MAC' | 'STANDARD'>(() => { - if (os === 'macos') return 'MAC'; - if (os === 'android' || os === 'ios') return 'MOBILE'; - return 'STANDARD'; - }, [os]); + const keys = useKeyboardKeys(); const BUTTON_TEXT = <>Save; diff --git a/client/src/util/breakpoints.ts b/client/src/util/breakpoints.ts new file mode 100644 index 0000000..c3ef8ab --- /dev/null +++ b/client/src/util/breakpoints.ts @@ -0,0 +1,7 @@ +import tailwindConfig from '@/../tailwind.config'; +import resolveConfig from 'tailwindcss/resolveConfig'; + +const { theme } = resolveConfig(tailwindConfig); + +export const breakpoints = (s: keyof typeof theme.screens) => + parseFloat(theme.screens[s].match(/[\d.]+/)?.[0] ?? ''); diff --git a/client/src/util/keyboardKeys.ts b/client/src/util/keyboardKeys.ts new file mode 100644 index 0000000..879ece5 --- /dev/null +++ b/client/src/util/keyboardKeys.ts @@ -0,0 +1,14 @@ +import { useOs } from '@mantine/hooks'; +import { useMemo } from 'react'; + +/** get the computer type for displaying keyboard shortcuts. */ +export function useKeyboardKeys() { + const os = useOs(); + const keys = useMemo<'MOBILE' | 'MAC' | 'STANDARD'>(() => { + if (os === 'macos') return 'MAC'; + if (os === 'android' || os === 'ios') return 'MOBILE'; + return 'STANDARD'; + }, [os]); + + return keys; +} From 8f5af95abe62092124d644653b1eb667a6524fce Mon Sep 17 00:00:00 2001 From: hingobway Date: Mon, 2 Sep 2024 00:46:35 -0400 Subject: [PATCH 04/11] fixes: date picker close and text reorder --- .../app/calendar/_components/EventPopup.tsx | 8 +++---- .../src/app/calendar/_components/Timeline.tsx | 5 ++--- .../calendar/new/_components/FormCalendar.tsx | 21 +++++++++++++++---- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/client/src/app/calendar/_components/EventPopup.tsx b/client/src/app/calendar/_components/EventPopup.tsx index e3ee80f..4b77727 100644 --- a/client/src/app/calendar/_components/EventPopup.tsx +++ b/client/src/app/calendar/_components/EventPopup.tsx @@ -1,4 +1,4 @@ -import { useTransition } from 'react'; +import { Fragment, useTransition } from 'react'; import { CloseButton, PopoverPanel, type Popover } from '@headlessui/react'; import { ActionIcon, ScrollArea } from '@mantine/core'; @@ -121,11 +121,11 @@ export default function EventPopup({ event }: { event: EventType }) { show={!!event.description.length} >
- {event.description.split('\n').map((line) => ( - <> + {event.description.split('\n').map((line, i) => ( + {line}
- +
))}
diff --git a/client/src/app/calendar/_components/Timeline.tsx b/client/src/app/calendar/_components/Timeline.tsx index 9abe82a..d0329c5 100644 --- a/client/src/app/calendar/_components/Timeline.tsx +++ b/client/src/app/calendar/_components/Timeline.tsx @@ -17,7 +17,7 @@ export default function Timeline(props: CalendarProps) {
{/* events area */}
-
+
{/* divider lines */}
- -
+
diff --git a/client/src/app/calendar/new/_components/FormCalendar.tsx b/client/src/app/calendar/new/_components/FormCalendar.tsx index 53d418c..6d840a9 100644 --- a/client/src/app/calendar/new/_components/FormCalendar.tsx +++ b/client/src/app/calendar/new/_components/FormCalendar.tsx @@ -17,7 +17,7 @@ const FormCalendar = () => { // calendar visual state const [isCalOpen, cal] = useDisclosure(true); - const [firstDatePick, setFirstDatePick] = useState(false); + const [closeNextTime, setCloseNextTime] = useState(false); const [dateShown, setDateShown] = useState( showDate ?? dates?.[0] ?? new Date(), ); @@ -34,12 +34,19 @@ const FormCalendar = () => { // functions const handleDatePick = (nv: typeof dates) => { + // check if date picker had been blank before this + const wasBlank = !tdates[0].length && !tdates[1].length; + + // set values setDates(nv); setTdates(nv.map((it) => parseDate(it))); - if (nv[0] && nv[1] && !firstDatePick) { + + // close date picker if necessary + if (nv[0] && nv[1] && closeNextTime) { cal.close(); - setFirstDatePick(true); + setCloseNextTime(false); } + if (wasBlank) setCloseNextTime(true); }; const updateTdate = @@ -58,7 +65,10 @@ const FormCalendar = () => { const prettify = (id: 0 | 1) => () => { let temp = dates; // reorder dates if necessary - if ((temp[0]?.valueOf() ?? 0) > (temp[1]?.valueOf() ?? 0)) { + if ( + (temp[0]?.valueOf() ?? 0) > + (temp[1]?.valueOf() ?? Number.MAX_SAFE_INTEGER) + ) { temp = [temp[1], temp[0]]; setDates(temp); setTdates(temp.map((it) => parseDate(it))); @@ -66,6 +76,9 @@ const FormCalendar = () => { // otherwise just format the text setTdates((o) => ({ ...o, [id]: parseDate(dates[id]) })); } + + // refocus selected dates + if (temp[0]) setDateShown(temp[0]); }; return ( From 84ab66396f5b39e356c6157ade6b963a65a57117 Mon Sep 17 00:00:00 2001 From: hingobway Date: Mon, 2 Sep 2024 01:05:06 -0400 Subject: [PATCH 05/11] fix date wrap --- .../app/calendar/_components/EventPopup.tsx | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/client/src/app/calendar/_components/EventPopup.tsx b/client/src/app/calendar/_components/EventPopup.tsx index 4b77727..fb273d9 100644 --- a/client/src/app/calendar/_components/EventPopup.tsx +++ b/client/src/app/calendar/_components/EventPopup.tsx @@ -108,10 +108,22 @@ export default function EventPopup({ event }: { event: EventType }) {
{/* dates */} -
- {dateFormat(event.dateStart, 'dddd, MMM D')} +
+ + {dateFormat(event.dateStart, 'dddd')} + , + + {dateFormat(event.dateStart, 'MMM D')} + + – - {dateFormat(event.dateEnd, 'dddd, MMM D')} + + {dateFormat(event.dateEnd, 'dddd')} + , + + {dateFormat(event.dateEnd, 'MMM D')} + +
From 7b4182a84f4400f797a2fd57529fca8516dfa77c Mon Sep 17 00:00:00 2001 From: hingobway Date: Mon, 2 Sep 2024 01:41:15 -0400 Subject: [PATCH 06/11] fixes: stying + keyboard shortcuts --- client/src/app/_components/_base/modals.tsx | 1 + .../calendar/_components/TimelineControls.tsx | 25 ++++------- .../app/calendar/_components/ViewEvents.tsx | 42 +++++++++++++++++-- client/src/app/calendar/_util/controls.ts | 28 +++++++++++++ 4 files changed, 76 insertions(+), 20 deletions(-) create mode 100644 client/src/app/calendar/_util/controls.ts diff --git a/client/src/app/_components/_base/modals.tsx b/client/src/app/_components/_base/modals.tsx index ddb2b9f..f3956ff 100644 --- a/client/src/app/_components/_base/modals.tsx +++ b/client/src/app/_components/_base/modals.tsx @@ -41,6 +41,7 @@ export function confirmModal(p: ModalProps) { }, confirmProps: { color: p.color }, classNames: { + root: clx('focus:[&_button]:outline-black'), content: clx('rounded-xl p-2'), }, onConfirm: () => resolve(true), diff --git a/client/src/app/calendar/_components/TimelineControls.tsx b/client/src/app/calendar/_components/TimelineControls.tsx index e4a2c38..9de2e2b 100644 --- a/client/src/app/calendar/_components/TimelineControls.tsx +++ b/client/src/app/calendar/_components/TimelineControls.tsx @@ -17,16 +17,11 @@ import { import { CalendarProps } from './ViewEvents'; import { dayStyles } from '../_util/dayStyles'; -import { - D1, - dateFormat, - dateStartOfWeek, - dateTS, - dateTSLocal, -} from '../_util/dateUtils'; +import { dateFormat, dateTSLocal } from '../_util/dateUtils'; import { clamp } from '@/util/math'; import { useDefaultDays } from '../_util/defaultDays'; import { useReverseCbTrigger } from '@/util/reverseCb'; +import { useCalendarControls } from '../_util/controls'; import { Transition } from '@headlessui/react'; import EventEditWindow from './EventEditWindow'; @@ -34,7 +29,6 @@ import EventEditWindow from './EventEditWindow'; export default function TimelineControls(props: CalendarProps) { const { isLoading, - updatePeriod, dates, periodState: { days, setDays, startDate, setStartDate }, } = props; @@ -49,6 +43,8 @@ export default function TimelineControls(props: CalendarProps) { setDateShown(startDate); }, [startDate]); + const actions = useCalendarControls(props); + // new stay prompt const { prop: newStay, trigger: openNewStay } = useReverseCbTrigger(); @@ -92,7 +88,7 @@ export default function TimelineControls(props: CalendarProps) {
updatePeriod(dates.start - D1 * daysWithDefault)} + onClick={actions.last} color="slate" variant="subtle" > @@ -102,18 +98,13 @@ export default function TimelineControls(props: CalendarProps) { size="compact-md" variant="subtle" color="slate" - onClick={() => { - let today = dateTS(new Date()); - if (daysWithDefault === 7) - today = dateStartOfWeek(today, false); - updatePeriod(today); - }} + onClick={actions.today} > Today updatePeriod(dates.start + D1 * daysWithDefault)} + aria-label="next period" + onClick={actions.next} color="slate" variant="subtle" > diff --git a/client/src/app/calendar/_components/ViewEvents.tsx b/client/src/app/calendar/_components/ViewEvents.tsx index c730676..e167d8a 100644 --- a/client/src/app/calendar/_components/ViewEvents.tsx +++ b/client/src/app/calendar/_components/ViewEvents.tsx @@ -1,6 +1,6 @@ 'use client'; -import { useMemo, useState } from 'react'; +import { useEffect, useMemo } from 'react'; import { useRouter, useSearchParams } from 'next/navigation'; import { useGraphQuery } from '@/query/query'; @@ -14,11 +14,11 @@ import { } from '../_util/dateUtils'; import { Inside } from '@/util/inferTypes'; import { useDefaultDays } from '../_util/defaultDays'; -import { SetState } from '@/util/stateType'; +import { createCallbackCtx } from '@/app/_ctx/callback'; import Timeline from './Timeline'; import TimelineControls from './TimelineControls'; -import { createCallbackCtx } from '@/app/_ctx/callback'; +import { useCalendarControls } from '../_util/controls'; const EVENTS_QUERY = graphql(` query Stays($start: Int!, $end: Int!) { @@ -124,6 +124,7 @@ export default function ViewEvents() { query.refetch(); } + // CALENDAR PROPS const props: CalendarProps = { events, isLoading: query.isFetching, @@ -138,6 +139,41 @@ export default function ViewEvents() { }, }; + // KEYBOARD SHORTCUTS + const actions = useCalendarControls(props); + useEffect(() => { + const dom = window.document; + if (!dom) return; + const cb = (e: KeyboardEvent) => { + // make sure user isn't typing + const target = e.target as HTMLElement; + if ( + target instanceof HTMLInputElement || + target instanceof HTMLTextAreaElement || + target?.isContentEditable + ) + return; + + // handle keyboard shortcuts + switch (e.code) { + case 'KeyP': + actions.last(); + break; + case 'KeyN': + actions.next(); + break; + case 'KeyT': + actions.today(); + break; + } + }; + + // attach event listener + dom.addEventListener('keydown', cb); + return () => dom.removeEventListener('keydown', cb); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + return ( <> diff --git a/client/src/app/calendar/_util/controls.ts b/client/src/app/calendar/_util/controls.ts new file mode 100644 index 0000000..7ef08b1 --- /dev/null +++ b/client/src/app/calendar/_util/controls.ts @@ -0,0 +1,28 @@ +import { useCallback } from 'react'; + +import { CalendarProps } from '../_components/ViewEvents'; +import { useDefaultDays } from './defaultDays'; +import { D1, dateStartOfWeek, dateTS } from './dateUtils'; + +export function useCalendarControls(props: CalendarProps) { + const { updatePeriod, days, dates } = props; + + const defaultDays = useDefaultDays(); + const daysWithDefault = days ?? defaultDays; + + const last = useCallback( + () => updatePeriod(dates.start - D1 * daysWithDefault), + [dates.start, daysWithDefault, updatePeriod], + ); + const next = useCallback( + () => updatePeriod(dates.start + D1 * daysWithDefault), + [dates.start, daysWithDefault, updatePeriod], + ); + const today = useCallback(() => { + let today = dateTS(new Date()); + if (daysWithDefault === 7) today = dateStartOfWeek(today, false); + updatePeriod(today); + }, [daysWithDefault, updatePeriod]); + + return { last, next, today }; +} From 256922382f77f4df2b65e4be714c398078803548 Mon Sep 17 00:00:00 2001 From: hingobway Date: Mon, 2 Sep 2024 05:24:33 -0400 Subject: [PATCH 07/11] begin room split mode --- .../src/app/calendar/_components/Timeline.tsx | 158 ++++++++++++++++-- .../calendar/_components/TimelineHeader.tsx | 54 ++++-- client/src/app/calendar/_util/dateUtils.ts | 3 + 3 files changed, 184 insertions(+), 31 deletions(-) diff --git a/client/src/app/calendar/_components/Timeline.tsx b/client/src/app/calendar/_components/Timeline.tsx index d0329c5..a99dc09 100644 --- a/client/src/app/calendar/_components/Timeline.tsx +++ b/client/src/app/calendar/_components/Timeline.tsx @@ -1,17 +1,32 @@ +import { ForwardedRef, forwardRef, useMemo } from 'react'; + +import { ActionIcon } from '@mantine/core'; +import { useDisclosure } from '@mantine/hooks'; +import { IconChevronDown, IconChevronRight } from '@tabler/icons-react'; +import { Transition } from '@headlessui/react'; + import { useDatesArray } from '../_util/dateUtils'; import { CalendarProps } from './ViewEvents'; import { gridCols } from '../_util/grid'; +import { Cabin, Room, useGetRooms } from '../new/state/getRoomData'; +import { ANY_ROOM } from '@@/db/schema/Room/CABIN_DATA'; +import { clx } from '@/util/classConcat'; -import TimelineHeader from './TimelineHeader'; +import TimelineHeader, { TimelineHeaderFrame } from './TimelineHeader'; import TimelineEvent from './TimelineEvent'; export default function Timeline(props: CalendarProps) { - const { events, days } = props; + const { days } = props; // ctx hooks const dates = useDatesArray(props); const gridTemplateColumns = gridCols(days); + const byRoom = false; + const roomsWidth = byRoom ? '14rem' : '0'; + + const { initialOptions: rootCabins } = useGetRooms(); + return ( <>
@@ -21,8 +36,8 @@ export default function Timeline(props: CalendarProps) {
{/* divider lines */}
{dates.map((_, i) => (
@@ -30,20 +45,137 @@ export default function Timeline(props: CalendarProps) {
{/* header */} - +
+ + +
{/* events grid */} -
- {events?.map((event) => ( - - ))} +
+ {/* show by room */} + {byRoom && + rootCabins.map((rc) => ( + + ))} + {/* show disorganized */} + {!byRoom && }
-
+ {!byRoom &&
} +
+
+ + ); +} + +type RoomRowProps = { + roomOrCabin: Room | Cabin; + width?: string; + fr?: ForwardedRef; +} & CalendarProps; +function RoomRow({ roomOrCabin, width, fr, ...props }: RoomRowProps) { + const cr = roomOrCabin; + const isCabin = !('beds' in cr); + + const { rooms } = useGetRooms(); + + const [isOpen, { toggle }] = useDisclosure(); + + const RoomRowFR = forwardRef((props, fr) => ( + + )); + RoomRowFR.displayName = 'RoomRowFR'; + + if (roomOrCabin.name === ANY_ROOM) return null; + + return ( + <> +
+ {/* title section */} +
+ {isCabin ? ( + // CABIN TITLE +
+ + {isOpen ? : } + +
{cr.name}
+
+ ) : ( + // ROOM TITLE +
+
+
{cr.name}
+
+ )}
+ + {/* events */} +
+ {!isCabin && } +
+
+ + {/* child rooms */} + {isCabin && + rooms + .filter((r) => r.cabin?.id === cr.id) + .map((r) => ( + +
+ +
+
+ ))} + + ); +} + +function EventsRow({ roomId, ...props }: { roomId?: string } & CalendarProps) { + const { events: events_in, days } = props; + + const events = useMemo(() => { + if (!roomId?.length) return events_in; + return events_in?.filter((evt) => + evt.reservations.some( + (r) => r.room && 'id' in r.room && r.room.id === roomId, + ), + ); + }, [events_in, roomId]); + + const gridTemplateColumns = gridCols(days); + + return ( + <> +
+ {events?.map((event) => ( + + ))}
); diff --git a/client/src/app/calendar/_components/TimelineHeader.tsx b/client/src/app/calendar/_components/TimelineHeader.tsx index a59e193..93d208b 100644 --- a/client/src/app/calendar/_components/TimelineHeader.tsx +++ b/client/src/app/calendar/_components/TimelineHeader.tsx @@ -1,6 +1,7 @@ import { CalendarProps } from './ViewEvents'; import { dateFormat, dateTS, useDatesArray } from '../_util/dateUtils'; import { gridCols } from '../_util/grid'; +import { Children } from '@/util/propTypes'; export default function TimelineHeader(props: CalendarProps) { const { days, updatePeriod } = props; @@ -10,26 +11,43 @@ export default function TimelineHeader(props: CalendarProps) { return ( <> -
+ + {dates.map((date) => ( + + ))} + + + ); +} + +export function TimelineHeaderFrame({ + cols, + placeholderWidth, + children, +}: { cols?: string; placeholderWidth?: string } & Children) { + return ( + <> +
- {dates.map((date, i) => ( - - ))} + {children}
diff --git a/client/src/app/calendar/_util/dateUtils.ts b/client/src/app/calendar/_util/dateUtils.ts index 21c8ec3..09ac418 100644 --- a/client/src/app/calendar/_util/dateUtils.ts +++ b/client/src/app/calendar/_util/dateUtils.ts @@ -11,6 +11,9 @@ export const dayjs = dayjsRoot; /** one day in seconds */ export const D1 = 24 * 3600; +/** convert to date timestamp. + * + * **By default, `isInputNotUTC` is true**, meaning the date from your current timezone will be taken. set to `false` to take the date at UTC time. */ export function dateTS(d: Date | number, isInputNotUTC: boolean = true) { const day = d instanceof Date ? dayjs(d) : dayjs.unix(d); return day.utc(isInputNotUTC).startOf('date').unix(); From d3b2744542f3307656c8370974257caaaf01c7da Mon Sep 17 00:00:00 2001 From: hingobway Date: Mon, 2 Sep 2024 15:11:59 -0400 Subject: [PATCH 08/11] fixes: mostly styling cleanup --- .../app/calendar/_components/EventPopup.tsx | 21 +++-- .../src/app/calendar/_components/Timeline.tsx | 84 ++++++++++++------- .../calendar/_components/TimelineEvent.tsx | 27 +++++- .../calendar/_components/TimelineHeader.tsx | 5 +- 4 files changed, 96 insertions(+), 41 deletions(-) diff --git a/client/src/app/calendar/_components/EventPopup.tsx b/client/src/app/calendar/_components/EventPopup.tsx index fb273d9..009517e 100644 --- a/client/src/app/calendar/_components/EventPopup.tsx +++ b/client/src/app/calendar/_components/EventPopup.tsx @@ -24,7 +24,13 @@ import EventEditWindow from './EventEditWindow'; /** * place EventPopup inside a headlessui {@link Popover} element for functionality. */ -export default function EventPopup({ event }: { event: EventType }) { +export default function EventPopup({ + event, + highlightRoom, +}: { + event: EventType; + highlightRoom?: string; +}) { // stay editor setup const { prop: triggerEditStay, trigger: runEditStay } = useReverseCbTrigger(); const transition = useTransition(); @@ -150,7 +156,13 @@ export default function EventPopup({ event }: { event: EventType }) { .map((r, i) => (
{/* person's name */} @@ -163,14 +175,13 @@ export default function EventPopup({ event }: { event: EventType }) { {/* room name */}
-
{'text' in r.room! ? (
{r.room.text}
) : ( -
+
{r.room?.cabin && ( - + {r.room.cabin.name} )} diff --git a/client/src/app/calendar/_components/Timeline.tsx b/client/src/app/calendar/_components/Timeline.tsx index a99dc09..a9f5e6a 100644 --- a/client/src/app/calendar/_components/Timeline.tsx +++ b/client/src/app/calendar/_components/Timeline.tsx @@ -1,9 +1,9 @@ -import { ForwardedRef, forwardRef, useMemo } from 'react'; +import { ForwardedRef, Fragment, useMemo } from 'react'; +import { useRouter, useSearchParams } from 'next/navigation'; import { ActionIcon } from '@mantine/core'; import { useDisclosure } from '@mantine/hooks'; import { IconChevronDown, IconChevronRight } from '@tabler/icons-react'; -import { Transition } from '@headlessui/react'; import { useDatesArray } from '../_util/dateUtils'; import { CalendarProps } from './ViewEvents'; @@ -22,13 +22,31 @@ export default function Timeline(props: CalendarProps) { const dates = useDatesArray(props); const gridTemplateColumns = gridCols(days); - const byRoom = false; - const roomsWidth = byRoom ? '14rem' : '0'; - + // get byRoom option + const sq = useSearchParams(); + const router = useRouter(); + const SQ_BYROOM = 'rooms'; + const displayByRoom = useMemo(() => { + const str = sq.get(SQ_BYROOM); + return str === 'true' || str === '1'; + }, [sq]); + function setDisplayByRoom(nv: boolean) { + const query = new URLSearchParams(sq); + query.set(SQ_BYROOM, nv ? '1' : '0'); + router.push('?' + query.toString(), { scroll: false }); + } + + // prep cabin sidebar const { initialOptions: rootCabins } = useGetRooms(); + const sidebarWidth = displayByRoom ? '14rem' : '0'; return ( <> + {/* // TODO delete */} +
+ +
+
{/* events area */}
@@ -37,7 +55,7 @@ export default function Timeline(props: CalendarProps) { {/* divider lines */}
{dates.map((_, i) => (
@@ -46,50 +64,49 @@ export default function Timeline(props: CalendarProps) { {/* header */}
- +
{/* events grid */}
{/* show by room */} - {byRoom && + {displayByRoom && rootCabins.map((rc) => ( - ))} {/* show disorganized */} - {!byRoom && } + {!displayByRoom && }
- {!byRoom &&
} + {!displayByRoom &&
}
); } -type RoomRowProps = { +function RoomEventsRow({ + roomOrCabin, + width, + fr, + ...props +}: { roomOrCabin: Room | Cabin; width?: string; fr?: ForwardedRef; -} & CalendarProps; -function RoomRow({ roomOrCabin, width, fr, ...props }: RoomRowProps) { +} & CalendarProps) { const cr = roomOrCabin; const isCabin = !('beds' in cr); const { rooms } = useGetRooms(); - const [isOpen, { toggle }] = useDisclosure(); - - const RoomRowFR = forwardRef((props, fr) => ( - - )); - RoomRowFR.displayName = 'RoomRowFR'; + const [isOpen, { toggle }] = useDisclosure(true); if (roomOrCabin.name === ANY_ROOM) return null; @@ -98,18 +115,18 @@ function RoomRow({ roomOrCabin, width, fr, ...props }: RoomRowProps) {
{/* title section */}
{isCabin ? ( // CABIN TITLE -
+
{/* events */} -
+
{!isCabin && }
@@ -143,11 +160,11 @@ function RoomRow({ roomOrCabin, width, fr, ...props }: RoomRowProps) { rooms .filter((r) => r.cabin?.id === cr.id) .map((r) => ( - -
- -
-
+ + {isOpen && ( + + )} + ))} ); @@ -174,7 +191,12 @@ function EventsRow({ roomId, ...props }: { roomId?: string } & CalendarProps) { style={{ gridTemplateColumns }} > {events?.map((event) => ( - + ))}
diff --git a/client/src/app/calendar/_components/TimelineEvent.tsx b/client/src/app/calendar/_components/TimelineEvent.tsx index 9bbc4a2..81d135c 100644 --- a/client/src/app/calendar/_components/TimelineEvent.tsx +++ b/client/src/app/calendar/_components/TimelineEvent.tsx @@ -11,8 +11,9 @@ import EventPopup from './EventPopup'; export default function TimelineEvent({ event, + highlightRoom, ...props -}: { event: EventType } & CalendarProps) { +}: { event: EventType; highlightRoom?: string } & CalendarProps) { const { dates: dateLimits, days } = props; // calculate grid coordinates @@ -32,6 +33,26 @@ export default function TimelineEvent({ }; }, [dateLimits, event, days]); + const resText = useMemo(() => { + if (!highlightRoom) return null; + if (event.reservations.length <= 1) return null; + + const matches = event.reservations.filter( + (r) => r.room && 'id' in r.room && r.room.id === highlightRoom, + ); + if (!matches.length) return null; + let inside = ''; + if (matches.length === 1) inside = matches[0].name; + else inside = `${matches.length}+ people`; + + return ( + <> + {inside} + ({event.title}) + + ); + }, [event.reservations, event.title, highlightRoom]); + return ( <> )} {/* event title */} -
{event.title}
+
{resText ?? event.title}
{loc.end !== -1 ? (
) : ( @@ -56,7 +77,7 @@ export default function TimelineEvent({ )}
- +
); diff --git a/client/src/app/calendar/_components/TimelineHeader.tsx b/client/src/app/calendar/_components/TimelineHeader.tsx index 93d208b..d5b7dbf 100644 --- a/client/src/app/calendar/_components/TimelineHeader.tsx +++ b/client/src/app/calendar/_components/TimelineHeader.tsx @@ -3,7 +3,7 @@ import { dateFormat, dateTS, useDatesArray } from '../_util/dateUtils'; import { gridCols } from '../_util/grid'; import { Children } from '@/util/propTypes'; -export default function TimelineHeader(props: CalendarProps) { +export default function TimelineHeader({ ...props }: CalendarProps) { const { days, updatePeriod } = props; const gridTemplateColumns = gridCols(days); @@ -44,8 +44,9 @@ export function TimelineHeaderFrame({ style={{ maxWidth: placeholderWidth }} >
{children}
From eb92c35e4997b80ba1aa2de7d91e6830ca5bf1ed Mon Sep 17 00:00:00 2001 From: hingobway Date: Mon, 2 Sep 2024 20:14:01 -0400 Subject: [PATCH 09/11] collapsed rows + styling --- client/package.json | 2 + client/pnpm-lock.yaml | 17 ++ client/src/app/_components/Shell.tsx | 2 +- .../src/app/calendar/_components/Timeline.tsx | 197 +++++++++++++++--- .../calendar/_components/TimelineEvent.tsx | 98 +++++++-- .../calendar/_components/TimelineHeader.tsx | 2 +- .../app/calendar/_components/ViewEvents.tsx | 13 +- client/src/app/calendar/_util/defaultDays.ts | 2 +- client/src/app/calendar/layout.tsx | 2 +- client/src/app/calendar/page.tsx | 9 +- .../util/{breakpoints.ts => tailwindVars.ts} | 2 +- client/tailwind.config.ts | 4 +- 12 files changed, 287 insertions(+), 63 deletions(-) rename client/src/util/{breakpoints.ts => tailwindVars.ts} (80%) diff --git a/client/package.json b/client/package.json index 7d036d4..5418191 100644 --- a/client/package.json +++ b/client/package.json @@ -60,6 +60,7 @@ "react-dom": "^18", "recoil": "^0.7.7", "tailwind-merge": "^2.4.0", + "uuid": "^10.0.0", "zod": "^3.23.8" }, "devDependencies": { @@ -70,6 +71,7 @@ "@types/qs": "^6.9.15", "@types/react": "^18", "@types/react-dom": "^18", + "@types/uuid": "^10.0.0", "autoprefixer": "^10.4.19", "eslint": "^8", "eslint-config-next": "14.2.3", diff --git a/client/pnpm-lock.yaml b/client/pnpm-lock.yaml index eebb026..77d9e5a 100644 --- a/client/pnpm-lock.yaml +++ b/client/pnpm-lock.yaml @@ -158,6 +158,9 @@ importers: tailwind-merge: specifier: ^2.4.0 version: 2.4.0 + uuid: + specifier: ^10.0.0 + version: 10.0.0 zod: specifier: ^3.23.8 version: 3.23.8 @@ -183,6 +186,9 @@ importers: '@types/react-dom': specifier: ^18 version: 18.3.0 + '@types/uuid': + specifier: ^10.0.0 + version: 10.0.0 autoprefixer: specifier: ^10.4.19 version: 10.4.19(postcss@8.4.38) @@ -936,6 +942,9 @@ packages: '@types/use-sync-external-store@0.0.6': resolution: {integrity: sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==} + '@types/uuid@10.0.0': + resolution: {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==} + '@typescript-eslint/parser@7.2.0': resolution: {integrity: sha512-5FKsVcHTk6TafQKQbuIVkXq58Fnbkd2wDL4LB7AURN7RUOu1utVP+G8+6u3ZhEroW3DF6hyo3ZEXxgKgp4KeCg==} engines: {node: ^16.0.0 || >=18.0.0} @@ -2764,6 +2773,10 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + uuid@10.0.0: + resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} + hasBin: true + value-or-promise@1.0.12: resolution: {integrity: sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q==} engines: {node: '>=12'} @@ -3555,6 +3568,8 @@ snapshots: '@types/use-sync-external-store@0.0.6': {} + '@types/uuid@10.0.0': {} + '@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.4.5)': dependencies: '@typescript-eslint/scope-manager': 7.2.0 @@ -5600,6 +5615,8 @@ snapshots: util-deprecate@1.0.2: {} + uuid@10.0.0: {} + value-or-promise@1.0.12: {} vue-template-compiler@2.7.16: diff --git a/client/src/app/_components/Shell.tsx b/client/src/app/_components/Shell.tsx index 2c9a33b..7f79254 100644 --- a/client/src/app/_components/Shell.tsx +++ b/client/src/app/_components/Shell.tsx @@ -27,7 +27,7 @@ const Shell = ({ children }: Children) => { -
+
{children}
diff --git a/client/src/app/calendar/_components/Timeline.tsx b/client/src/app/calendar/_components/Timeline.tsx index a9f5e6a..42bfb83 100644 --- a/client/src/app/calendar/_components/Timeline.tsx +++ b/client/src/app/calendar/_components/Timeline.tsx @@ -1,19 +1,20 @@ import { ForwardedRef, Fragment, useMemo } from 'react'; import { useRouter, useSearchParams } from 'next/navigation'; +import { v4 as uuid } from 'uuid'; import { ActionIcon } from '@mantine/core'; import { useDisclosure } from '@mantine/hooks'; import { IconChevronDown, IconChevronRight } from '@tabler/icons-react'; +import { theme } from '@/util/tailwindVars'; -import { useDatesArray } from '../_util/dateUtils'; +import { D1, useDatesArray } from '../_util/dateUtils'; import { CalendarProps } from './ViewEvents'; import { gridCols } from '../_util/grid'; import { Cabin, Room, useGetRooms } from '../new/state/getRoomData'; import { ANY_ROOM } from '@@/db/schema/Room/CABIN_DATA'; -import { clx } from '@/util/classConcat'; import TimelineHeader, { TimelineHeaderFrame } from './TimelineHeader'; -import TimelineEvent from './TimelineEvent'; +import TimelineEvent, { EventPlaceholder } from './TimelineEvent'; export default function Timeline(props: CalendarProps) { const { days } = props; @@ -43,8 +44,8 @@ export default function Timeline(props: CalendarProps) { return ( <> {/* // TODO delete */} -
- +
+
@@ -63,13 +64,18 @@ export default function Timeline(props: CalendarProps) {
{/* header */} -
+
{/* events grid */} -
+
{/* show by room */} {displayByRoom && rootCabins.map((rc) => ( @@ -81,7 +87,7 @@ export default function Timeline(props: CalendarProps) { /> ))} {/* show disorganized */} - {!displayByRoom && } + {!displayByRoom && }
{!displayByRoom &&
} @@ -102,31 +108,42 @@ function RoomEventsRow({ fr?: ForwardedRef; } & CalendarProps) { const cr = roomOrCabin; - const isCabin = !('beds' in cr); const { rooms } = useGetRooms(); - const [isOpen, { toggle }] = useDisclosure(true); + const [isOpen, { toggle, open }] = useDisclosure(); + const isCabin = !('beds' in cr); + const isRootRoom = 'beds' in cr && cr.cabin === null; - if (roomOrCabin.name === ANY_ROOM) return null; + // offset for collapsed cabins + const namesOffset = useMemo(() => Math.random() * 32, []); return ( <>
{/* title section */}
{isCabin ? ( // CABIN TITLE -
+
) : ( // ROOM TITLE -
+
-
{cr.name}
+
+ {cr.name !== ANY_ROOM ? cr.name : (no room)} +
)}
{/* events */} -
- {!isCabin && } +
+ {/* show events in room */} + {!isCabin && } + + {/* show collapsed events in cabin */} + {isCabin && !isOpen && ( + + )} + + {/* names marquis when cabin is open */} + {isCabin && isOpen && ( +
+
+ {Array(12) + .fill(0) + .map((_, i) => ( +
+ {cr.name} +
+ ))} +
+
+ )}
@@ -170,17 +219,75 @@ function RoomEventsRow({ ); } -function EventsRow({ roomId, ...props }: { roomId?: string } & CalendarProps) { - const { events: events_in, days } = props; +function EventsGrid({ + roomId, + cabinId, + onOpen, + ...props +}: { roomId?: string; cabinId?: string; onOpen?: () => void } & CalendarProps) { + const { events: events_in, days, dates } = props; const events = useMemo(() => { + // filter for cabin overview + if (cabinId) + return events_in?.filter((evt) => + evt.reservations.some( + (r) => r.room && 'id' in r.room && r.room.cabin?.id === cabinId, + ), + ); + + // filter for single room if (!roomId?.length) return events_in; return events_in?.filter((evt) => evt.reservations.some( (r) => r.room && 'id' in r.room && r.room.id === roomId, ), ); - }, [events_in, roomId]); + }, [cabinId, events_in, roomId]); + + // COLLAPSED PLACEHOLDERS + const cabinPlaceholders = useMemo(() => { + let placeholders: EventPlaceholder[] = []; + if (!events?.length) return placeholders; + + // check every day + for (let t = dates.start - D1; t <= dates.end; t += D1) { + // find events today + const matches = events.filter((r) => r.dateStart <= t && r.dateEnd > t); + + // simple cases (extend existing entry if possible) + const last = placeholders.at(-1); + if (matches.length === 0) { + continue; + } else if (matches.length === 1) { + if (last && last.eventId === matches[0].id) { + last.end = t + D1; + continue; + } + } else { + if (last && last?.combined && last.end === t) { + last.end = t + D1; + continue; + } + } + + // OTHERWISE, make new entry + placeholders.push({ + eventId: matches.length === 1 ? matches[0].id : undefined, + combined: matches.length > 1, + start: + !placeholders.length && t === dates.start && matches[0]?.dateStart < t + ? t - D1 + : t, + end: + t + D1 === dates.end && matches[0]?.dateEnd > t + D1 + ? t + 2 * D1 + : t + D1, + }); + } + + return placeholders; + }, [dates, events]); const gridTemplateColumns = gridCols(days); @@ -190,14 +297,38 @@ function EventsRow({ roomId, ...props }: { roomId?: string } & CalendarProps) { className="grid flex-1 grid-flow-row-dense auto-rows-fr gap-2" style={{ gridTemplateColumns }} > - {events?.map((event) => ( - - ))} + {!cabinId + ? events?.map((event) => ( + // regular events + + )) + : cabinPlaceholders.map((p, i) => ( + // collapsed events + it.id === p.eventId)) || { + id: uuid(), + dateStart: 0, + dateEnd: 0, + reservations: [], + author: null, + description: '', + title: '', + } + } + {...props} + /> + ))}
); diff --git a/client/src/app/calendar/_components/TimelineEvent.tsx b/client/src/app/calendar/_components/TimelineEvent.tsx index 81d135c..4e69162 100644 --- a/client/src/app/calendar/_components/TimelineEvent.tsx +++ b/client/src/app/calendar/_components/TimelineEvent.tsx @@ -8,18 +8,46 @@ import { clamp } from '@/util/math'; import { CalendarProps, EventType } from './ViewEvents'; import EventPopup from './EventPopup'; +import { clmx, clx } from '@/util/classConcat'; + +const EVENT_COLORS = { + DEFAULT: { + main: clx( + 'border-emerald-600 bg-emerald-600/30 text-emerald-950 ring-emerald-600', + ), + specialty: clx('text-emerald-800'), + }, + GRAY: { + main: clx('border-slate-500/50 bg-slate-300/50 ring-slate-300'), + specialty: clx('text-slate-800'), + }, +} satisfies Record; export default function TimelineEvent({ event, + theme, highlightRoom, + placeholder, + onOpen, ...props -}: { event: EventType; highlightRoom?: string } & CalendarProps) { +}: { + event: EventType; + theme?: keyof typeof EVENT_COLORS; + highlightRoom?: string; + placeholder?: EventPlaceholder; + onOpen?: () => void; +} & CalendarProps) { const { dates: dateLimits, days } = props; + const css = theme ? EVENT_COLORS[theme] : EVENT_COLORS.DEFAULT; + // calculate grid coordinates const loc = useMemo(() => { - const fromStart = dateDiff(event.dateStart, dateLimits.start); - const fromEnd = dateDiff(event.dateEnd, dateLimits.end); + const fromStart = dateDiff( + placeholder?.start ?? event.dateStart, + dateLimits.start, + ); + const fromEnd = dateDiff(placeholder?.end ?? event.dateEnd, dateLimits.end); const start = clamp((fromStart + 1) * 2, 1, days * 2); const end = clamp((fromEnd - 1) * 2, -days * 2, -1); @@ -31,9 +59,15 @@ export default function TimelineEvent({ end, length, }; - }, [dateLimits, event, days]); + }, [placeholder, event, dateLimits, days]); + // override button text const resText = useMemo(() => { + if (placeholder?.combined) + return ( + (multiple) + ); + if (!highlightRoom) return null; if (event.reservations.length <= 1) return null; @@ -48,10 +82,24 @@ export default function TimelineEvent({ return ( <> {inside} - ({event.title}) + ({event.title}) ); - }, [event.reservations, event.title, highlightRoom]); + }, [ + css.specialty, + event.reservations, + event.title, + highlightRoom, + placeholder?.combined, + ]); + + // show arrows + const arrLeft = + loc.start === 1 || + (placeholder?.eventId ? event.dateStart < placeholder.start : false); + const arrRight = + loc.end === -1 || + (placeholder?.eventId ? event.dateEnd > placeholder.end : false); return ( <> @@ -61,24 +109,44 @@ export default function TimelineEvent({ gridColumn: `${loc.start} / ${loc.end}`, }} > - -
- {loc.start !== 1 ? ( -
- ) : ( + +
{ + if (placeholder?.combined) { + e.preventDefault(); + onOpen?.(); + } + }} + > + {arrLeft ? ( + ) : ( +
)} {/* event title */}
{resText ?? event.title}
- {loc.end !== -1 ? ( -
- ) : ( + {arrRight ? ( + ) : ( +
)}
- + {!placeholder?.combined && ( + + )} ); } + +export type EventPlaceholder = { + eventId?: string; + combined?: boolean; + start: number; + end: number; +}; diff --git a/client/src/app/calendar/_components/TimelineHeader.tsx b/client/src/app/calendar/_components/TimelineHeader.tsx index d5b7dbf..faae04a 100644 --- a/client/src/app/calendar/_components/TimelineHeader.tsx +++ b/client/src/app/calendar/_components/TimelineHeader.tsx @@ -16,7 +16,7 @@ export default function TimelineHeader({ ...props }: CalendarProps) {
diff --git a/client/src/app/calendar/_components/TimelineHeader.tsx b/client/src/app/calendar/_components/TimelineHeader.tsx index faae04a..8ec916c 100644 --- a/client/src/app/calendar/_components/TimelineHeader.tsx +++ b/client/src/app/calendar/_components/TimelineHeader.tsx @@ -41,7 +41,7 @@ export function TimelineHeaderFrame({ <>
Date: Tue, 3 Sep 2024 02:08:13 -0400 Subject: [PATCH 11/11] color coding, controls, fixes + styling --- client/src/app/_components/Navbar.tsx | 4 +- client/src/app/_components/Shell.tsx | 2 +- .../app/calendar/_components/EventPopup.tsx | 102 ++++--- .../app/calendar/_components/RoomSwatch.tsx | 24 ++ .../src/app/calendar/_components/Timeline.tsx | 289 +++++++++++------- .../calendar/_components/TimelineControls.tsx | 42 ++- .../calendar/_components/TimelineEvent.tsx | 54 ++-- .../calendar/_components/TimelineHeader.tsx | 11 +- .../app/calendar/_components/ViewEvents.tsx | 14 +- client/src/app/calendar/_util/cabinColors.ts | 89 ++++++ .../src/app/calendar/_util/displayByRooms.ts | 25 ++ client/src/app/calendar/page.tsx | 2 +- server/src/db/schema/Cabin/functions.ts | 4 + 13 files changed, 476 insertions(+), 186 deletions(-) create mode 100644 client/src/app/calendar/_components/RoomSwatch.tsx create mode 100644 client/src/app/calendar/_util/cabinColors.ts create mode 100644 client/src/app/calendar/_util/displayByRooms.ts diff --git a/client/src/app/_components/Navbar.tsx b/client/src/app/_components/Navbar.tsx index a508f82..7a165fb 100644 --- a/client/src/app/_components/Navbar.tsx +++ b/client/src/app/_components/Navbar.tsx @@ -7,7 +7,7 @@ import { IconX } from '@tabler/icons-react'; import NavAccount from './nav/NavAccount'; import NavLinks from './nav/NavLinks'; import Logo from './nav/Logo'; -import { useEffect, useRef, useState } from 'react'; +import { useEffect, useState } from 'react'; const Navbar = ({ navState, @@ -29,7 +29,7 @@ const Navbar = ({ return ( <> - + -
- -
+
{/* events area */}

-
- {/* divider lines */} -
- {dates.map((_, i) => ( -
- ))} -
+ +
+ {/* divider lines */} +
+ {dates.map((_, i) => ( +
+ ))} +
- {/* header */} -
- - -
+ {/* header */} +
+ + {displayByRoom && ( + + )} + +
- {/* events grid */} -
- {/* show by room */} - {displayByRoom && - rootCabins.map((rc) => ( - - ))} - {/* show disorganized */} - {!displayByRoom && } + {/* events grid */} +
+ {/* show by room */} + {displayByRoom && ( + <> + {/* room rows */} + {rootCabins.map((rc) => ( + + ))} + + {/* no room */} + + + )} + {/* show disorganized */} + {!displayByRoom && } +
-
- {!displayByRoom &&
} + + +
@@ -103,81 +105,118 @@ export default function Timeline(props: CalendarProps) { function RoomEventsRow({ roomOrCabin, width, - fr, ...props }: { - roomOrCabin: Room | Cabin; + roomOrCabin: Room | Cabin | null; width?: string; - fr?: ForwardedRef; } & CalendarProps) { + const { roomCollapse } = props; + const [localOpen, setLocalOpen] = useState(false); + const isOpen = useMemo(() => { + if (roomCollapse.state === 'OPEN') { + setLocalOpen(true); + return true; + } + if (roomCollapse.state === 'CLOSED') { + setLocalOpen(false); + return false; + } + return localOpen; + }, [localOpen, roomCollapse.state]); + function open() { + roomCollapse.set('MIXED'); + setLocalOpen(true); + } + function toggle() { + roomCollapse.set('MIXED'); + setLocalOpen((s) => !s); + } + const cr = roomOrCabin; const { rooms } = useGetRooms(); - const [isOpen, { toggle, open }] = useDisclosure(); - const isCabin = !('beds' in cr); - const isRootRoom = 'beds' in cr && cr.cabin === null; + const isCabin = cr && !('beds' in cr); + const isRootRoom = cr && 'beds' in cr && cr.cabin === null; // offset for collapsed cabins const namesOffset = useMemo(() => Math.random() * 32, []); return ( <> -
{/* title section */} -
- {isCabin ? ( - // CABIN TITLE -
- +
+ {isCabin ? ( + // CABIN TITLE +
- {isOpen ? : } - -
{cr.name}
-
- ) : ( - // ROOM TITLE -
+ + {isOpen ? : } + +
+ + {cr.name} +
+
+ ) : ( + // ROOM TITLE
-
- {cr.name !== ANY_ROOM ? cr.name : (no room)} + className="flex flex-row items-center rounded-md transition duration-200 group-hover:font-bold" + data-hb={!isRootRoom || null} // hover bg + > +
+
+ + + {cr?.name !== ANY_ROOM ? ( + cr?.name ?? ( + + No room data + + ) + ) : ( + no room + )} + +
-
- )} + )} +
+ + {/* right divider */} +
{/* events */} -
+
{/* show events in room */} - {!isCabin && } + {!isCabin && ( + + )} {/* show collapsed events in cabin */} {isCabin && !isOpen && ( @@ -188,24 +227,26 @@ function RoomEventsRow({ {isCabin && isOpen && (
{Array(12) .fill(0) .map((_, i) => ( -
{cr.name} -
+ ))}
)}
-
+ {/* child rooms */} {isCabin && @@ -225,12 +266,25 @@ function RoomEventsRow({ function EventsGrid({ roomId, cabinId, + noRoom, onOpen, ...props -}: { roomId?: string; cabinId?: string; onOpen?: () => void } & CalendarProps) { +}: { + roomId?: string; + cabinId?: string; + noRoom?: boolean; + onOpen?: () => void; +} & CalendarProps) { const { events: events_in, days, dates } = props; const events = useMemo(() => { + // filter for norooms if requested + if (noRoom) + return events_in?.filter( + (evt) => + !evt.reservations.filter((r) => r.room && 'id' in r.room).length, + ); + // filter for cabin overview if (cabinId) return events_in?.filter((evt) => @@ -246,7 +300,7 @@ function EventsGrid({ (r) => r.room && 'id' in r.room && r.room.id === roomId, ), ); - }, [cabinId, events_in, roomId]); + }, [cabinId, events_in, noRoom, roomId]); // COLLAPSED PLACEHOLDERS const cabinPlaceholders = useMemo(() => { @@ -270,6 +324,7 @@ function EventsGrid({ } else { if (last && last?.combined && last.end === t) { last.end = t + D1; + if (last.combined < matches.length) last.combined = matches.length; continue; } } @@ -277,15 +332,13 @@ function EventsGrid({ // OTHERWISE, make new entry placeholders.push({ eventId: matches.length === 1 ? matches[0].id : undefined, - combined: matches.length > 1, + combined: matches.length > 1 ? matches.length : 0, start: !placeholders.length && t === dates.start && matches[0]?.dateStart < t ? t - D1 : t, end: - t + D1 === dates.end && matches[0]?.dateEnd > t + D1 - ? t + 2 * D1 - : t + D1, + t === dates.end && matches[0]?.dateEnd > t + D1 ? t + 2 * D1 : t + D1, }); } @@ -316,7 +369,7 @@ function EventsGrid({ key={i} placeholder={p} onOpen={onOpen} - theme={p.combined ? 'GRAY' : undefined} + theme={p.combined ? 'NATIVE' : undefined} event={ (p.eventId?.length && events?.find((it) => it.id === p.eventId)) || { diff --git a/client/src/app/calendar/_components/TimelineControls.tsx b/client/src/app/calendar/_components/TimelineControls.tsx index 9de2e2b..c15e5b9 100644 --- a/client/src/app/calendar/_components/TimelineControls.tsx +++ b/client/src/app/calendar/_components/TimelineControls.tsx @@ -1,4 +1,4 @@ -import { useEffect, useState } from 'react'; +import { useEffect, useState, useTransition } from 'react'; import { ActionIcon, @@ -11,8 +11,12 @@ import { DatePicker } from '@mantine/dates'; import { IconArrowLeft, IconArrowRight, + IconLayoutNavbarCollapseFilled, + IconLayoutNavbarExpandFilled, IconLoader2, IconPlus, + IconTable, + IconTableFilled, } from '@tabler/icons-react'; import { CalendarProps } from './ViewEvents'; @@ -25,12 +29,14 @@ import { useCalendarControls } from '../_util/controls'; import { Transition } from '@headlessui/react'; import EventEditWindow from './EventEditWindow'; +import { useDisplayByRooms } from '../_util/displayByRooms'; export default function TimelineControls(props: CalendarProps) { const { isLoading, dates, periodState: { days, setDays, startDate, setStartDate }, + roomCollapse, } = props; const [datePickerOpen, setDatePickerOpen] = useState(false); @@ -45,6 +51,12 @@ export default function TimelineControls(props: CalendarProps) { const actions = useCalendarControls(props); + const [isRoomLoading, roomLoading] = useTransition(); + const [displayByRoom, setDisplayByRoom] = useDisplayByRooms(); + function updateByRoom(nv: boolean) { + roomLoading(async () => setDisplayByRoom(nv)); + } + // new stay prompt const { prop: newStay, trigger: openNewStay } = useReverseCbTrigger(); @@ -143,6 +155,34 @@ export default function TimelineControls(props: CalendarProps) {
+ {/* rooms controls */} +
+ updateByRoom(!displayByRoom)} + > + {displayByRoom ? : } + + roomCollapse.set('CLOSED')} + > + + + roomCollapse.set('OPEN')} + > + + +
+ +
+ {/* new stay button */} ; +import { clmx } from '@/util/classConcat'; +import { CABIN_COLORS, CabinColor, getCabinColor } from '../_util/cabinColors'; export default function TimelineEvent({ event, @@ -32,14 +20,31 @@ export default function TimelineEvent({ ...props }: { event: EventType; - theme?: keyof typeof EVENT_COLORS; + theme?: CabinColor; highlightRoom?: string; placeholder?: EventPlaceholder; onOpen?: () => void; } & CalendarProps) { const { dates: dateLimits, days } = props; - const css = theme ? EVENT_COLORS[theme] : EVENT_COLORS.DEFAULT; + // get correct color scheme + const css = useMemo(() => { + const parse = (s?: CabinColor) => + CABIN_COLORS[s ?? 'DEFAULT'] ?? CABIN_COLORS.DEFAULT; + + if (theme) return parse(theme); + + if (event.reservations.length) { + const r = event.reservations[0]; + if (r.room && 'id' in r.room) { + let c = getCabinColor(r.room.id); + if (c) return parse(c); + c = getCabinColor(r.room.cabin?.id); + if (c) return parse(c); + } + } + return parse(); + }, [event.reservations, theme]); // calculate grid coordinates const loc = useMemo(() => { @@ -49,11 +54,16 @@ export default function TimelineEvent({ ); const fromEnd = dateDiff(placeholder?.end ?? event.dateEnd, dateLimits.end); - const start = clamp((fromStart + 1) * 2, 1, days * 2); - const end = clamp((fromEnd - 1) * 2, -days * 2, -1); - + let start = clamp((fromStart + 1) * 2, 1, days * 2); + let end = clamp((fromEnd - 1) * 2, -days * 2, -1); const length = days * 2 + end + 2 - start; + // correct for single days + if (length === 0) { + start--; + end++; + } + return { start, end, @@ -65,7 +75,9 @@ export default function TimelineEvent({ const resText = useMemo(() => { if (placeholder?.combined) return ( - (multiple) + + {placeholder.combined}+ people + ); if (!highlightRoom) return null; @@ -146,7 +158,7 @@ export default function TimelineEvent({ export type EventPlaceholder = { eventId?: string; - combined?: boolean; + combined?: number; start: number; end: number; }; diff --git a/client/src/app/calendar/_components/TimelineHeader.tsx b/client/src/app/calendar/_components/TimelineHeader.tsx index 8ec916c..06d423b 100644 --- a/client/src/app/calendar/_components/TimelineHeader.tsx +++ b/client/src/app/calendar/_components/TimelineHeader.tsx @@ -35,8 +35,13 @@ export default function TimelineHeader({ ...props }: CalendarProps) { export function TimelineHeaderFrame({ cols, placeholderWidth, + noDivider, children, -}: { cols?: string; placeholderWidth?: string } & Children) { +}: { + cols?: string; + placeholderWidth?: string; + noDivider?: boolean; +} & Children) { return ( <>
{children}
diff --git a/client/src/app/calendar/_components/ViewEvents.tsx b/client/src/app/calendar/_components/ViewEvents.tsx index 00ba77b..c89b9e9 100644 --- a/client/src/app/calendar/_components/ViewEvents.tsx +++ b/client/src/app/calendar/_components/ViewEvents.tsx @@ -1,6 +1,6 @@ 'use client'; -import { useEffect, useMemo } from 'react'; +import { useEffect, useMemo, useState } from 'react'; import { useRouter, useSearchParams } from 'next/navigation'; import { useGraphQuery } from '@/query/query'; @@ -125,6 +125,9 @@ export default function ViewEvents() { query.refetch(); } + // room collapse state + const [roomCollapse, setRoomCollapse] = useState('CLOSED'); + // CALENDAR PROPS const props: CalendarProps = { events, @@ -138,6 +141,10 @@ export default function ViewEvents() { setStartDate, setDays, }, + roomCollapse: { + state: roomCollapse, + set: setRoomCollapse, + }, }; // KEYBOARD SHORTCUTS @@ -211,4 +218,9 @@ export type CalendarProps = { startDate: Date; setStartDate: (d: Date) => void; }; + roomCollapse: { + state: RoomCollapse; + set: (s: RoomCollapse) => void; + }; }; +export type RoomCollapse = 'OPEN' | 'CLOSED' | 'MIXED'; diff --git a/client/src/app/calendar/_util/cabinColors.ts b/client/src/app/calendar/_util/cabinColors.ts new file mode 100644 index 0000000..fc1b681 --- /dev/null +++ b/client/src/app/calendar/_util/cabinColors.ts @@ -0,0 +1,89 @@ +import { clx } from '@/util/classConcat'; + +const COLOR_MAP: Record = { + '574ce1ab-6aa6-4ea5-a082-683125b417a7': 'RED', // ide cabin + '74dab16d-04fe-4f2e-b872-ea3d59e56514': 'GREEN', // foster cabin + 'b47f9a87-2993-4598-982b-da751486036f': 'YELLOW', // kendrew cabin + 'bf802b84-2813-4438-b2da-f997c138a14a': 'ORANGE', // house + '649d65b6-9a50-491f-b0f2-8a0e22ee6275': 'PINK', // gay's cabin + '662357e8-953b-4a7b-844d-003c317860c8': 'BLUE', // day tripper +}; + +export function getCabinColor(id?: string): CabinColor | undefined { + if (!id) return; + return COLOR_MAP[id]; +} + +export function getCabinColorObject(id?: string, withDefault?: boolean) { + let key = getCabinColor(id); + if (!key) { + if (withDefault) key = 'DEFAULT'; + else return; + } + return CABIN_COLORS[key]; +} + +export const CABIN_COLORS = { + DEFAULT: { + main: clx('border-slate-600 bg-slate-600/10 text-slate-950 ring-slate-600'), + specialty: clx('text-slate-800'), + selected: clx('border-slate-600 bg-slate-300/20 text-slate-900'), + swatch: clx('bg-slate-600'), + }, + BLUE: { + main: clx('border-sky-600 bg-sky-600/30 text-sky-950 ring-sky-600'), + specialty: clx('text-sky-800'), + selected: clx('border-sky-600 bg-sky-300/20 text-sky-900'), + swatch: clx('bg-sky-600'), + }, + RED: { + main: clx('border-black/40 bg-rose-400/30 text-rose-950 ring-rose-600'), + specialty: clx('text-rose-900/80'), + selected: clx('border-rose-600 bg-rose-300/20 text-rose-900'), + swatch: clx('bg-rose-600'), + }, + YELLOW: { + main: clx( + 'border-yellow-700/50 bg-yellow-400/30 text-yellow-950 ring-yellow-600', + ), + specialty: clx('text-yellow-800'), + selected: clx('border-yellow-600 bg-yellow-300/20 text-yellow-900'), + swatch: clx('bg-yellow-500'), + }, + ORANGE: { + main: clx( + 'border-orange-600 bg-orange-600/30 text-orange-950 ring-orange-600', + ), + specialty: clx('text-orange-900/85'), + selected: clx('border-orange-600 bg-orange-300/20 text-orange-900'), + swatch: clx('bg-orange-600'), + }, + GREEN: { + main: clx( + 'border-emerald-600 bg-emerald-600/30 text-emerald-950 ring-emerald-600', + ), + specialty: clx('text-emerald-800'), + selected: clx('border-emerald-600 bg-emerald-300/20 text-emerald-900'), + swatch: clx('bg-emerald-600'), + }, + PINK: { + main: clx( + 'border-fuchsia-600 bg-fuchsia-400/30 text-fuchsia-950 ring-fuchsia-600', + ), + specialty: clx('text-fuchsia-800'), + selected: clx('border-fuchsia-600 bg-fuchsia-300/20 text-fuchsia-900'), + swatch: clx('bg-fuchsia-500'), + }, + NATIVE: { + main: clx( + 'border-dashed border-slate-500/50 bg-slate-300/30 ring-slate-300', + ), + specialty: clx('text-slate-800'), + selected: clx('border-slate-600 bg-slate-300/20 text-slate-900'), + swatch: clx('bg-slate-600'), + }, +} satisfies Record< + string, + { main: string; specialty: string; swatch: string; selected: string } +>; +export type CabinColor = keyof typeof CABIN_COLORS; diff --git a/client/src/app/calendar/_util/displayByRooms.ts b/client/src/app/calendar/_util/displayByRooms.ts new file mode 100644 index 0000000..c122dae --- /dev/null +++ b/client/src/app/calendar/_util/displayByRooms.ts @@ -0,0 +1,25 @@ +import { breakpoints } from '@/util/tailwindVars'; +import { useWindowSize } from '@uidotdev/usehooks'; +import { useRouter, useSearchParams } from 'next/navigation'; +import { useMemo } from 'react'; + +export function useDisplayByRooms() { + const windowSize = useWindowSize(); + const sq = useSearchParams(); + const router = useRouter(); + + const SQ_KEY = 'rooms'; + + const state = useMemo(() => { + if (windowSize.width && windowSize.width < breakpoints('sm')) return false; + const str = sq.get(SQ_KEY); + return str === 'true' || str === '1'; + }, [sq, windowSize.width]); + function set(nv: boolean) { + const query = new URLSearchParams(sq); + query.set(SQ_KEY, nv ? '1' : '0'); + router.push('?' + query.toString(), { scroll: false }); + } + + return [state, set] as const; +} diff --git a/client/src/app/calendar/page.tsx b/client/src/app/calendar/page.tsx index c509203..0112b37 100644 --- a/client/src/app/calendar/page.tsx +++ b/client/src/app/calendar/page.tsx @@ -11,7 +11,7 @@ export default function CalendarPage() { return ( <>
-
+
{/*
diff --git a/server/src/db/schema/Cabin/functions.ts b/server/src/db/schema/Cabin/functions.ts index 6aa6a56..cbc7869 100644 --- a/server/src/db/schema/Cabin/functions.ts +++ b/server/src/db/schema/Cabin/functions.ts @@ -67,6 +67,10 @@ export const cabinDelete = h( const cabin = sources.cabin.get(id); if (!cabin) throw err('CABIN_NOT_FOUND'); + // delete all rooms in cabin + const rooms = await sources.room.findBy('cabinId', id); + await sources.room.deleteMultiple(rooms.map((r) => r.id)); + return sources.cabin.delete(id); } );