From 27bd7cfcb86f1259f5a194ce084a91edd7bbc42e Mon Sep 17 00:00:00 2001 From: Steven Tey Date: Fri, 10 Jan 2025 08:52:14 -0800 Subject: [PATCH 1/5] Bump Dub version to fix createMany error --- package.json | 1 + .../ee/workflows/lib/reminders/utils.ts | 2 +- yarn.lock | 19 +++++++++++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index b8ddd812f61141..564744e6c8c9ea 100644 --- a/package.json +++ b/package.json @@ -118,6 +118,7 @@ "@next/third-parties": "^14.2.5", "@vercel/functions": "^1.4.0", "city-timezones": "^1.2.1", + "dub": "^0.46.12", "eslint": "^8.34.0", "turbo": "^1.10.1" }, diff --git a/packages/features/ee/workflows/lib/reminders/utils.ts b/packages/features/ee/workflows/lib/reminders/utils.ts index d60ea2c57a7f74..4e8a33dcc9ab85 100644 --- a/packages/features/ee/workflows/lib/reminders/utils.ts +++ b/packages/features/ee/workflows/lib/reminders/utils.ts @@ -1,7 +1,7 @@ import { dub } from "@calcom/features/auth/lib/dub"; export const bulkShortenLinks = async (links: string[]) => { - const linksToShorten = links.filter((link) => link !== ""); + const linksToShorten = links.filter((link) => link); const results = await dub.links.createMany( linksToShorten.map((link) => ({ domain: "sms.cal.com", url: link })) ); diff --git a/yarn.lock b/yarn.lock index 6d4065163142a9..c4ec9f44007826 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4220,6 +4220,15 @@ __metadata: languageName: unknown linkType: soft +"@calcom/granola@workspace:packages/app-store/granola": + version: 0.0.0-use.local + resolution: "@calcom/granola@workspace:packages/app-store/granola" + dependencies: + "@calcom/lib": "*" + "@calcom/types": "*" + languageName: unknown + linkType: soft + "@calcom/gtm@workspace:packages/app-store/gtm": version: 0.0.0-use.local resolution: "@calcom/gtm@workspace:packages/app-store/gtm" @@ -20350,6 +20359,7 @@ __metadata: checkly: latest city-timezones: ^1.2.1 dotenv-checker: ^1.1.5 + dub: ^0.46.12 eslint: ^8.34.0 husky: ^8.0.0 i18n-unused: ^0.13.0 @@ -23488,6 +23498,15 @@ __metadata: languageName: node linkType: hard +"dub@npm:^0.46.12": + version: 0.46.12 + resolution: "dub@npm:0.46.12" + peerDependencies: + zod: ">= 3" + checksum: 4210c60d8057a1d6c2035033410927e9aa35b3052aeb1c91ddc714b525c1ec2a08c81a928da9f7a1ddae1d7c7a774ffbbbb20edf1eb7c83388c9f89a784ec9ea + languageName: node + linkType: hard + "duplexer@npm:^0.1.1, duplexer@npm:^0.1.2, duplexer@npm:~0.1.1": version: 0.1.2 resolution: "duplexer@npm:0.1.2" From aa52c3ebe2ca2b89c91ea4c7b812e8ec54542684 Mon Sep 17 00:00:00 2001 From: Steven Tey Date: Fri, 10 Jan 2025 12:54:46 -0800 Subject: [PATCH 2/5] upgrade dub in the right directory --- package.json | 1 - packages/features/auth/package.json | 2 +- yarn.lock | 12 +----------- 3 files changed, 2 insertions(+), 13 deletions(-) diff --git a/package.json b/package.json index 564744e6c8c9ea..b8ddd812f61141 100644 --- a/package.json +++ b/package.json @@ -118,7 +118,6 @@ "@next/third-parties": "^14.2.5", "@vercel/functions": "^1.4.0", "city-timezones": "^1.2.1", - "dub": "^0.46.12", "eslint": "^8.34.0", "turbo": "^1.10.1" }, diff --git a/packages/features/auth/package.json b/packages/features/auth/package.json index ba504222041816..b824e71a8828d9 100644 --- a/packages/features/auth/package.json +++ b/packages/features/auth/package.json @@ -13,7 +13,7 @@ "@calcom/trpc": "*", "@calcom/ui": "*", "bcryptjs": "^2.4.3", - "dub": "^0.35.0", + "dub": "^0.46.12", "handlebars": "^4.7.7", "jose": "^4.13.1", "lru-cache": "^9.0.3", diff --git a/yarn.lock b/yarn.lock index c4ec9f44007826..58c349a123b07f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4139,7 +4139,7 @@ __metadata: "@calcom/trpc": "*" "@calcom/ui": "*" bcryptjs: ^2.4.3 - dub: ^0.35.0 + dub: ^0.46.12 handlebars: ^4.7.7 jose: ^4.13.1 lru-cache: ^9.0.3 @@ -20359,7 +20359,6 @@ __metadata: checkly: latest city-timezones: ^1.2.1 dotenv-checker: ^1.1.5 - dub: ^0.46.12 eslint: ^8.34.0 husky: ^8.0.0 i18n-unused: ^0.13.0 @@ -23489,15 +23488,6 @@ __metadata: languageName: node linkType: hard -"dub@npm:^0.35.0": - version: 0.35.0 - resolution: "dub@npm:0.35.0" - peerDependencies: - zod: ">= 3" - checksum: 162bd1ff62b62044e3840d3128f341baa8d07828aaf9ca2e94a562b7196df857c1fcdbf2495edfd8b7055970eb1c64298a2265dca81cb4d7bdc65ddc97980905 - languageName: node - linkType: hard - "dub@npm:^0.46.12": version: 0.46.12 resolution: "dub@npm:0.46.12" From 82e41692768035c482e41abdcfa848b150e43301 Mon Sep 17 00:00:00 2001 From: Alex van Andel Date: Mon, 13 Jan 2025 17:37:18 +0000 Subject: [PATCH 3/5] fix: Type error introduced with version upgrade --- packages/features/ee/workflows/lib/reminders/utils.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/features/ee/workflows/lib/reminders/utils.ts b/packages/features/ee/workflows/lib/reminders/utils.ts index 4e8a33dcc9ab85..3a4d628072aab2 100644 --- a/packages/features/ee/workflows/lib/reminders/utils.ts +++ b/packages/features/ee/workflows/lib/reminders/utils.ts @@ -5,12 +5,13 @@ export const bulkShortenLinks = async (links: string[]) => { const results = await dub.links.createMany( linksToShorten.map((link) => ({ domain: "sms.cal.com", url: link })) ); - return links.map((link) => { - const createdLink = results.find((result) => result.url === link); + const createdLink = results.find( + (result): result is Extract => + !("error" in result) && result.url === link + ); if (createdLink) { return { shortLink: createdLink.shortLink }; - // if invalid link, return the original link as it is } else { return { shortLink: link }; } From d8af178c76b7d64d9fe226784e8b2e1bf2acb8a1 Mon Sep 17 00:00:00 2001 From: Steven Tey Date: Thu, 16 Jan 2025 12:21:22 -0800 Subject: [PATCH 4/5] upgrade dub version --- packages/features/auth/package.json | 2 +- yarn.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/features/auth/package.json b/packages/features/auth/package.json index b824e71a8828d9..73c312f394a1d9 100644 --- a/packages/features/auth/package.json +++ b/packages/features/auth/package.json @@ -13,7 +13,7 @@ "@calcom/trpc": "*", "@calcom/ui": "*", "bcryptjs": "^2.4.3", - "dub": "^0.46.12", + "dub": "^0.46.15", "handlebars": "^4.7.7", "jose": "^4.13.1", "lru-cache": "^9.0.3", diff --git a/yarn.lock b/yarn.lock index 58c349a123b07f..54b40e91bfa90a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4139,7 +4139,7 @@ __metadata: "@calcom/trpc": "*" "@calcom/ui": "*" bcryptjs: ^2.4.3 - dub: ^0.46.12 + dub: ^0.46.15 handlebars: ^4.7.7 jose: ^4.13.1 lru-cache: ^9.0.3 @@ -23488,12 +23488,12 @@ __metadata: languageName: node linkType: hard -"dub@npm:^0.46.12": - version: 0.46.12 - resolution: "dub@npm:0.46.12" +"dub@npm:^0.46.15": + version: 0.46.15 + resolution: "dub@npm:0.46.15" peerDependencies: zod: ">= 3" - checksum: 4210c60d8057a1d6c2035033410927e9aa35b3052aeb1c91ddc714b525c1ec2a08c81a928da9f7a1ddae1d7c7a774ffbbbb20edf1eb7c83388c9f89a784ec9ea + checksum: 36b1260bc3115e5a9122bd165785ecfcc208ff6e6f8dc38c339d9b98132e3d49fe05740659106dcf870cc0bc8037ff6181620347076186e1a82644fb9513983b languageName: node linkType: hard From dea24d2b3650fdd940ff50fdf67c04e7a9cb6ce3 Mon Sep 17 00:00:00 2001 From: Steven Tey Date: Thu, 16 Jan 2025 12:49:05 -0800 Subject: [PATCH 5/5] use bulkShortenLinks --- .../ee/workflows/api/scheduleSMSReminders.ts | 24 +++---------------- .../lib/reminders/smsReminderManager.ts | 24 +++---------------- 2 files changed, 6 insertions(+), 42 deletions(-) diff --git a/packages/features/ee/workflows/api/scheduleSMSReminders.ts b/packages/features/ee/workflows/api/scheduleSMSReminders.ts index 2319e9bff50d76..19f9d6fdafd8fb 100644 --- a/packages/features/ee/workflows/api/scheduleSMSReminders.ts +++ b/packages/features/ee/workflows/api/scheduleSMSReminders.ts @@ -2,7 +2,7 @@ import type { NextApiRequest, NextApiResponse } from "next"; import dayjs from "@calcom/dayjs"; -import { getShortenLink } from "@calcom/ee/workflows/lib/reminders/utils"; +import { bulkShortenLinks } from "@calcom/ee/workflows/lib/reminders/utils"; import { getCalEventResponses } from "@calcom/features/bookings/lib/getCalEventResponses"; import { getBookerBaseUrl } from "@calcom/lib/getBookerUrl/server"; import { defaultHandler } from "@calcom/lib/server"; @@ -127,26 +127,8 @@ async function handler(req: NextApiRequest, res: NextApiResponse) { rescheduleLink: `${bookerUrl}/reschedule/${reminder.booking.uid}` || "", }; - const [meetingUrl, cancelLink, rescheduleLink] = await Promise.allSettled([ - getShortenLink(urls.meetingUrl), - getShortenLink(urls.cancelLink), - getShortenLink(urls.rescheduleLink), - ]).then((results) => { - return results.map((result) => { - let finalResult = ""; - - if (result.status === "fulfilled") { - const v = result.value; - if (typeof v === "string") { - finalResult = v; - } else { - finalResult = v.shortLink; - } - } - - return finalResult; - }); - }); + const [{ shortLink: meetingUrl }, { shortLink: cancelLink }, { shortLink: rescheduleLink }] = + await bulkShortenLinks([urls.meetingUrl, urls.cancelLink, urls.rescheduleLink]); const variables: VariablesType = { eventName: reminder.booking?.eventType?.title, diff --git a/packages/features/ee/workflows/lib/reminders/smsReminderManager.ts b/packages/features/ee/workflows/lib/reminders/smsReminderManager.ts index b2171e46c58254..c288d64216f103 100644 --- a/packages/features/ee/workflows/lib/reminders/smsReminderManager.ts +++ b/packages/features/ee/workflows/lib/reminders/smsReminderManager.ts @@ -1,5 +1,5 @@ import dayjs from "@calcom/dayjs"; -import { getShortenLink } from "@calcom/ee/workflows/lib/reminders/utils"; +import { bulkShortenLinks } from "@calcom/ee/workflows/lib/reminders/utils"; import { SENDER_ID, WEBSITE_URL } from "@calcom/lib/constants"; import logger from "@calcom/lib/logger"; import type { TimeFormat } from "@calcom/lib/timeFormat"; @@ -153,26 +153,8 @@ export const scheduleSMSReminder = async (args: ScheduleTextReminderArgs) => { rescheduleLink: `${evt.bookerUrl ?? WEBSITE_URL}/reschedule/${evt.uid}`, }; - const [meetingUrl, cancelLink, rescheduleLink] = await Promise.allSettled([ - getShortenLink(urls.meetingUrl), - getShortenLink(urls.cancelLink), - getShortenLink(urls.rescheduleLink), - ]).then((results) => { - return results.map((result) => { - let finalResult = ""; - - if (result.status === "fulfilled") { - const v = result.value; - if (typeof v === "string") { - finalResult = v; - } else { - finalResult = v.shortLink; - } - } - - return finalResult; - }); - }); + const [{ shortLink: meetingUrl }, { shortLink: cancelLink }, { shortLink: rescheduleLink }] = + await bulkShortenLinks([urls.meetingUrl, urls.cancelLink, urls.rescheduleLink]); const variables: VariablesType = { eventName: evt.title,