From d57c5f73d0236806ddcf183ce2832d180e6d76d6 Mon Sep 17 00:00:00 2001 From: Minh Nguyen <64875104+MinhxNguyen7@users.noreply.github.com> Date: Mon, 27 May 2024 14:57:12 -0700 Subject: [PATCH 01/13] empty commit to trigger staging From b14c4e091a7f604e76ef7aa4e4f607e77dae564c Mon Sep 17 00:00:00 2001 From: Minh Nguyen <64875104+MinhxNguyen7@users.noreply.github.com> Date: Mon, 27 May 2024 14:59:29 -0700 Subject: [PATCH 02/13] =?UTF-8?q?chore:=20=F0=9F=94=A7=20remove=20extraneo?= =?UTF-8?q?us=20ts-expect?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sst.config.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/sst.config.ts b/sst.config.ts index bfe69e7f..c701b164 100644 --- a/sst.config.ts +++ b/sst.config.ts @@ -19,7 +19,6 @@ export default { domainName: `${stack.stage === "prod" ? "" : `${stack.stage}.`}zotmeet.com`, hostedZone: "zotmeet.com", cdk: { - // @ts-expect-error Constructs types are broken, see https://github.com/sst/sst/issues/3483 certificate: Certificate.fromCertificateArn( stack, "MyCert", From 37a0ac5ce87389b4b6585282dff21a0bb6d2b92a Mon Sep 17 00:00:00 2001 From: Minh Nguyen <64875104+MinhxNguyen7@users.noreply.github.com> Date: Mon, 27 May 2024 15:01:21 -0700 Subject: [PATCH 03/13] =?UTF-8?q?feat:=20=E2=9C=A8=20add=20source=20maps?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sst.config.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/sst.config.ts b/sst.config.ts index c701b164..265b5762 100644 --- a/sst.config.ts +++ b/sst.config.ts @@ -29,5 +29,15 @@ export default { }); stack.addOutputs({ url: site.url }); }); + + // Reference: https://docs.sst.dev/advanced/source-maps + app.setDefaultFunctionProps({ + environment: { + NODE_OPTIONS: "--enable-source-maps", + }, + nodejs: { + sourcemap: true, + }, + }); }, } satisfies SSTConfig; From aa936850135f4230cd41c735bcb2336990b4df7e Mon Sep 17 00:00:00 2001 From: Minh Nguyen <64875104+MinhxNguyen7@users.noreply.github.com> Date: Fri, 31 May 2024 21:08:56 +0000 Subject: [PATCH 04/13] =?UTF-8?q?fix:=20=F0=9F=90=9B=20throw=20error?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/routes/api/create/+server.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/routes/api/create/+server.ts b/src/routes/api/create/+server.ts index 2aceb842..db903e2b 100644 --- a/src/routes/api/create/+server.ts +++ b/src/routes/api/create/+server.ts @@ -11,16 +11,16 @@ export async function POST({ request }) { console.log("Creating meeting:", title, description, fromTime, toTime, meetingDates); if (fromTime >= toTime) { - error(400, "From time must be before to time"); + throw error(400, "From time must be before to time"); } if (meetingDates.length === 0) { - error(400, "At least one date must be provided"); + throw error(400, "At least one date must be provided"); } // Just so we don't get flooded too easily if (meetingDates.length > 100) { - error(400, "Too many dates provided"); + throw error(400, "Too many dates provided"); } const sortedDates = meetingDates @@ -42,6 +42,6 @@ export async function POST({ request }) { return json({ meetingId }); } catch (err) { console.log("Error creating meeting:", err); - error(500, "Error creating meeting"); + throw error(500, "Error creating meeting"); } } From d25cf4fd6d441a3b7700abe9de5d415f766a0a1f Mon Sep 17 00:00:00 2001 From: Minh Nguyen <64875104+MinhxNguyen7@users.noreply.github.com> Date: Fri, 31 May 2024 21:27:05 +0000 Subject: [PATCH 05/13] =?UTF-8?q?feat:=20=E2=9C=A8=20print=20server=20erro?= =?UTF-8?q?r?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/routes/api/create/+server.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/routes/api/create/+server.ts b/src/routes/api/create/+server.ts index db903e2b..253e1f4c 100644 --- a/src/routes/api/create/+server.ts +++ b/src/routes/api/create/+server.ts @@ -42,6 +42,7 @@ export async function POST({ request }) { return json({ meetingId }); } catch (err) { console.log("Error creating meeting:", err); - throw error(500, "Error creating meeting"); + // TODO: This is unsafe + throw error(500, `Error creating meeting: ${err}`); } } From 3805c924e348c9907e1f6e1f4177bb659e11e25b Mon Sep 17 00:00:00 2001 From: Minh Nguyen <64875104+MinhxNguyen7@users.noreply.github.com> Date: Fri, 31 May 2024 21:49:05 +0000 Subject: [PATCH 06/13] feat: return stack on error --- src/routes/api/create/+server.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/api/create/+server.ts b/src/routes/api/create/+server.ts index 253e1f4c..d4ce1467 100644 --- a/src/routes/api/create/+server.ts +++ b/src/routes/api/create/+server.ts @@ -43,6 +43,6 @@ export async function POST({ request }) { } catch (err) { console.log("Error creating meeting:", err); // TODO: This is unsafe - throw error(500, `Error creating meeting: ${err}`); + throw error(500, `${err}\n${err.stack}`); } } From a2c7a79ec6517ec6c09928e9c56fcb915032e1eb Mon Sep 17 00:00:00 2001 From: Minh Nguyen <64875104+MinhxNguyen7@users.noreply.github.com> Date: Fri, 31 May 2024 21:58:32 +0000 Subject: [PATCH 07/13] =?UTF-8?q?feat:=20=E2=9C=A8=20return=20stack=20on?= =?UTF-8?q?=20error?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/routes/api/create/+server.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/api/create/+server.ts b/src/routes/api/create/+server.ts index d4ce1467..3550c23b 100644 --- a/src/routes/api/create/+server.ts +++ b/src/routes/api/create/+server.ts @@ -43,6 +43,6 @@ export async function POST({ request }) { } catch (err) { console.log("Error creating meeting:", err); // TODO: This is unsafe - throw error(500, `${err}\n${err.stack}`); + throw error(500, `${err.stack}\nmeeting schema: ${meeting}`); } } From 6374f04539955d50435f2ce506ee9ec95c4f9271 Mon Sep 17 00:00:00 2001 From: Minh Nguyen <64875104+MinhxNguyen7@users.noreply.github.com> Date: Fri, 31 May 2024 22:10:37 +0000 Subject: [PATCH 08/13] fix: stringify JSON --- src/routes/api/create/+server.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/api/create/+server.ts b/src/routes/api/create/+server.ts index 3550c23b..8e264efc 100644 --- a/src/routes/api/create/+server.ts +++ b/src/routes/api/create/+server.ts @@ -43,6 +43,6 @@ export async function POST({ request }) { } catch (err) { console.log("Error creating meeting:", err); // TODO: This is unsafe - throw error(500, `${err.stack}\nmeeting schema: ${meeting}`); + throw error(500, `${err.stack}\nmeeting schema: ${JSON.stringify(meeting)}`); } } From 00ce4a466d228fd4ee21c3ba8d676679ffd25cf7 Mon Sep 17 00:00:00 2001 From: Minh Nguyen <64875104+MinhxNguyen7@users.noreply.github.com> Date: Fri, 31 May 2024 22:12:08 +0000 Subject: [PATCH 09/13] =?UTF-8?q?feat:=20=E2=9C=A8=20print=20to=20stderr?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/routes/api/create/+server.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/api/create/+server.ts b/src/routes/api/create/+server.ts index 8e264efc..25ed7e0f 100644 --- a/src/routes/api/create/+server.ts +++ b/src/routes/api/create/+server.ts @@ -41,7 +41,7 @@ export async function POST({ request }) { const meetingId = await insertMeeting(meeting, sortedDates); return json({ meetingId }); } catch (err) { - console.log("Error creating meeting:", err); + console.error("Error creating meeting:", err, meeting, sortedDates); // TODO: This is unsafe throw error(500, `${err.stack}\nmeeting schema: ${JSON.stringify(meeting)}`); } From 5e9dd765354ee8fd8f8e736ce3acb1b651c1d8c5 Mon Sep 17 00:00:00 2001 From: Minh Nguyen <64875104+MinhxNguyen7@users.noreply.github.com> Date: Mon, 3 Jun 2024 01:03:21 -0700 Subject: [PATCH 10/13] feat: meeting dates insertion in response --- src/lib/db/databaseUtils.server.ts | 8 +++++++- src/routes/api/create/+server.ts | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/lib/db/databaseUtils.server.ts b/src/lib/db/databaseUtils.server.ts index f84ed1ed..0e833356 100644 --- a/src/lib/db/databaseUtils.server.ts +++ b/src/lib/db/databaseUtils.server.ts @@ -132,7 +132,13 @@ export const insertMeetingDates = async (dates: Date[], meeting_id: string) => { return { meeting_id, date: startOfDay }; }); - await db.insert(meetingDates).values(dbMeetingDates); + try { + await db.insert(meetingDates).values(dbMeetingDates); + } + catch (err) { + console.error("Error inserting meeting dates=", dbMeetingDates); + throw err; + } }; export const getExistingMeetingDates = async (meetingId: string) => { diff --git a/src/routes/api/create/+server.ts b/src/routes/api/create/+server.ts index 25ed7e0f..8978d918 100644 --- a/src/routes/api/create/+server.ts +++ b/src/routes/api/create/+server.ts @@ -43,6 +43,6 @@ export async function POST({ request }) { } catch (err) { console.error("Error creating meeting:", err, meeting, sortedDates); // TODO: This is unsafe - throw error(500, `${err.stack}\nmeeting schema: ${JSON.stringify(meeting)}`); + throw error(500, `Error creating meeting: ${err.message}`); } } From e52a0ea64cf6c252c47b3df4177f5185dd3b11f2 Mon Sep 17 00:00:00 2001 From: Minh Nguyen <64875104+MinhxNguyen7@users.noreply.github.com> Date: Mon, 3 Jun 2024 01:09:44 -0700 Subject: [PATCH 11/13] =?UTF-8?q?feat:=20=E2=9C=A8=20more=20error=20printi?= =?UTF-8?q?ng?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/lib/db/databaseUtils.server.ts | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/lib/db/databaseUtils.server.ts b/src/lib/db/databaseUtils.server.ts index 0e833356..cc9c002c 100644 --- a/src/lib/db/databaseUtils.server.ts +++ b/src/lib/db/databaseUtils.server.ts @@ -114,9 +114,15 @@ export const getExistingGuest = async (username: string, meeting: MeetingSelectS * @returns The id of the inserted meeting. */ export const insertMeeting = async (meeting: MeetingInsertSchema, meetingDates: Date[]) => { - const [dbMeeting] = await db.insert(meetings).values(meeting).returning(); - await insertMeetingDates(meetingDates, dbMeeting.id); - return dbMeeting.id; + try { + const [dbMeeting] = await db.insert(meetings).values(meeting).returning(); + await insertMeetingDates(meetingDates, dbMeeting.id); + + return dbMeeting.id; + } catch (err) { + console.error("Error inserting meeting=", meeting); + throw Error(`Error inserting meeting=${meeting}`); + } }; export const getExistingMeeting = async (meetingId: string) => { @@ -134,10 +140,9 @@ export const insertMeetingDates = async (dates: Date[], meeting_id: string) => { try { await db.insert(meetingDates).values(dbMeetingDates); - } - catch (err) { + } catch (err) { console.error("Error inserting meeting dates=", dbMeetingDates); - throw err; + throw Error(`Error inserting meeting dates=${dbMeetingDates}`); } }; From a6d2e9ff896d604a8aa49962bbd7743a777b6aa7 Mon Sep 17 00:00:00 2001 From: Minh Nguyen <64875104+MinhxNguyen7@users.noreply.github.com> Date: Mon, 3 Jun 2024 01:15:17 -0700 Subject: [PATCH 12/13] =?UTF-8?q?feat:=20=E2=9C=A8=20split=20error=20handl?= =?UTF-8?q?ing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/lib/db/databaseUtils.server.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/lib/db/databaseUtils.server.ts b/src/lib/db/databaseUtils.server.ts index cc9c002c..9275b808 100644 --- a/src/lib/db/databaseUtils.server.ts +++ b/src/lib/db/databaseUtils.server.ts @@ -114,15 +114,17 @@ export const getExistingGuest = async (username: string, meeting: MeetingSelectS * @returns The id of the inserted meeting. */ export const insertMeeting = async (meeting: MeetingInsertSchema, meetingDates: Date[]) => { - try { - const [dbMeeting] = await db.insert(meetings).values(meeting).returning(); - await insertMeetingDates(meetingDates, dbMeeting.id); + let dbMeeting: MeetingSelectSchema; - return dbMeeting.id; + try { + [dbMeeting] = await db.insert(meetings).values(meeting).returning(); } catch (err) { console.error("Error inserting meeting=", meeting); throw Error(`Error inserting meeting=${meeting}`); } + + await insertMeetingDates(meetingDates, dbMeeting.id); + return dbMeeting.id; }; export const getExistingMeeting = async (meetingId: string) => { From e757fcaf8d647235ce0f42f9cf6077ea0c53f2b5 Mon Sep 17 00:00:00 2001 From: Minh Nguyen <64875104+MinhxNguyen7@users.noreply.github.com> Date: Mon, 3 Jun 2024 01:19:57 -0700 Subject: [PATCH 13/13] =?UTF-8?q?feat:=20=E2=9C=A8=20serialize=20meeting?= =?UTF-8?q?=20input?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/lib/db/databaseUtils.server.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/lib/db/databaseUtils.server.ts b/src/lib/db/databaseUtils.server.ts index 9275b808..fb1e94e9 100644 --- a/src/lib/db/databaseUtils.server.ts +++ b/src/lib/db/databaseUtils.server.ts @@ -119,8 +119,9 @@ export const insertMeeting = async (meeting: MeetingInsertSchema, meetingDates: try { [dbMeeting] = await db.insert(meetings).values(meeting).returning(); } catch (err) { - console.error("Error inserting meeting=", meeting); - throw Error(`Error inserting meeting=${meeting}`); + const meetingSerialized = JSON.stringify(meeting); + console.error("Error inserting meeting=", meetingSerialized); + throw Error(`Error inserting meeting=${meetingSerialized}`); } await insertMeetingDates(meetingDates, dbMeeting.id);