From 4a6d608b19178cea2f5f61b94085b9a6ae53b21e Mon Sep 17 00:00:00 2001 From: Peer Richelsen Date: Fri, 6 Feb 2026 13:28:11 +0100 Subject: [PATCH] refactor: simplify link-as-an-app template and migrate 24 existing apps (#27215) * refactor: simplify link-as-an-app template to config.json only - Remove api/, components/, index.ts, package.json from link-as-an-app template - Add externalLink field to AppMetaSchema for external URL configuration - Update API handler to dynamically create handlers for external link apps - External link apps no longer create credentials (just redirect to URL) - Update CLI to handle externalLinkUrl field for link-as-an-app template - CLI now skips package.json update for apps without package.json Co-Authored-By: peer@cal.com * fix: simplify external link handler to bypass credential creation External link apps now directly return the redirect URL without going through the AppDeclarativeHandler type, avoiding type conflicts with the createCredential return type requirement. Co-Authored-By: peer@cal.com * refactor: migrate 24 external link apps to simplified structure Migrated the following apps to use config.json with externalLink field instead of api/add.ts handlers: - amie, autocheckin, baa-for-hipaa, bolna, chatbase, clic, cron, deel - elevenlabs, fonio-ai, framer, granola, greetmate-ai, lindy, millis-ai - monobot, n8n, pipedream, raycast, retell-ai, synthflow, telli, vimcal - wordpress Each app now only contains: config.json, DESCRIPTION.md, static/ Removed: api/, components/, index.ts, package.json Co-Authored-By: peer@cal.com * nit * Fix merge conflict issue * refactor: generate REDIRECT_APPS dynamically during app-store build - Add logic to build.ts to detect apps with externalLink field - Generate redirect-apps.generated.ts with list of redirect app slugs - Update redirectApps.ts to import from generated file - Revert [...]args].ts to original state (Flow 1 is preferred) Co-Authored-By: hariom@cal.com * fix: cast REDIRECT_APPS to readonly string[] for includes check Co-Authored-By: hariom@cal.com * Fix error with React * Take exteral link URL as input * deleted bun.lockb --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: Hariom Balhara --- packages/app-store-cli/src/build.ts | 13 +++++ .../src/components/AppCreateUpdateForm.tsx | 56 +++++++++++++------ packages/app-store-cli/src/core.ts | 24 +++++++- packages/app-store-cli/tsconfig.json | 2 +- packages/app-store/_utils/redirectApps.ts | 26 ++------- packages/app-store/amie/api/add.ts | 20 ------- packages/app-store/amie/api/index.ts | 1 - packages/app-store/amie/components/.gitkeep | 0 packages/app-store/amie/config.json | 14 ++++- packages/app-store/amie/index.ts | 1 - packages/app-store/amie/package.json | 14 ----- packages/app-store/apps.server.generated.ts | 25 --------- packages/app-store/autocheckin/api/add.ts | 20 ------- packages/app-store/autocheckin/api/index.ts | 1 - .../app-store/autocheckin/components/.gitkeep | 0 packages/app-store/autocheckin/config.json | 10 +++- packages/app-store/autocheckin/index.ts | 1 - packages/app-store/autocheckin/package.json | 14 ----- packages/app-store/baa-for-hipaa/api/add.ts | 20 ------- packages/app-store/baa-for-hipaa/api/index.ts | 1 - .../baa-for-hipaa/components/.gitkeep | 0 packages/app-store/baa-for-hipaa/config.json | 8 ++- packages/app-store/baa-for-hipaa/index.ts | 1 - packages/app-store/baa-for-hipaa/package.json | 14 ----- packages/app-store/bolna/api/add.ts | 20 ------- packages/app-store/bolna/api/index.ts | 1 - packages/app-store/bolna/components/.gitkeep | 0 packages/app-store/bolna/config.json | 10 +++- packages/app-store/bolna/index.ts | 1 - packages/app-store/bolna/package.json | 14 ----- packages/app-store/chatbase/api/add.ts | 20 ------- packages/app-store/chatbase/api/index.ts | 1 - .../app-store/chatbase/components/.gitkeep | 0 packages/app-store/chatbase/config.json | 10 +++- packages/app-store/chatbase/index.ts | 1 - packages/app-store/chatbase/package.json | 14 ----- packages/app-store/clic/api/add.ts | 20 ------- packages/app-store/clic/api/index.ts | 1 - packages/app-store/clic/config.json | 10 +++- packages/app-store/clic/index.ts | 1 - packages/app-store/clic/package.json | 14 ----- packages/app-store/cron/api/add.ts | 20 ------- packages/app-store/cron/api/index.ts | 1 - packages/app-store/cron/components/.gitkeep | 0 packages/app-store/cron/config.json | 14 ++++- packages/app-store/cron/index.ts | 1 - packages/app-store/cron/package.json | 14 ----- packages/app-store/deel/api/add.ts | 20 ------- packages/app-store/deel/api/index.ts | 1 - packages/app-store/deel/components/.gitkeep | 0 packages/app-store/deel/config.json | 10 +++- packages/app-store/deel/index.ts | 1 - packages/app-store/deel/package.json | 14 ----- packages/app-store/elevenlabs/api/add.ts | 20 ------- packages/app-store/elevenlabs/api/index.ts | 1 - .../app-store/elevenlabs/components/.gitkeep | 0 packages/app-store/elevenlabs/config.json | 10 +++- packages/app-store/elevenlabs/index.ts | 1 - packages/app-store/elevenlabs/package.json | 14 ----- packages/app-store/fonio-ai/api/add.ts | 20 ------- packages/app-store/fonio-ai/api/index.ts | 1 - .../app-store/fonio-ai/components/.gitkeep | 0 packages/app-store/fonio-ai/config.json | 10 +++- packages/app-store/fonio-ai/index.ts | 1 - packages/app-store/fonio-ai/package.json | 14 ----- packages/app-store/framer/api/add.ts | 20 ------- packages/app-store/framer/api/index.ts | 1 - packages/app-store/framer/components/.gitkeep | 0 packages/app-store/framer/config.json | 10 +++- packages/app-store/framer/index.ts | 1 - packages/app-store/framer/package.json | 14 ----- packages/app-store/granola/api/add.ts | 20 ------- packages/app-store/granola/api/index.ts | 1 - .../app-store/granola/components/.gitkeep | 0 packages/app-store/granola/config.json | 10 +++- packages/app-store/granola/index.ts | 1 - packages/app-store/granola/package.json | 14 ----- packages/app-store/greetmate-ai/api/add.ts | 20 ------- packages/app-store/greetmate-ai/api/index.ts | 1 - .../greetmate-ai/components/.gitkeep | 0 packages/app-store/greetmate-ai/config.json | 10 +++- packages/app-store/greetmate-ai/index.ts | 1 - packages/app-store/greetmate-ai/package.json | 14 ----- packages/app-store/lindy/api/add.ts | 20 ------- packages/app-store/lindy/api/index.ts | 1 - packages/app-store/lindy/components/.gitkeep | 0 packages/app-store/lindy/config.json | 10 +++- packages/app-store/lindy/index.ts | 1 - packages/app-store/lindy/package.json | 14 ----- packages/app-store/linear/config.json | 6 +- packages/app-store/millis-ai/api/add.ts | 20 ------- packages/app-store/millis-ai/api/index.ts | 1 - .../app-store/millis-ai/components/.gitkeep | 0 packages/app-store/millis-ai/config.json | 10 +++- packages/app-store/millis-ai/index.ts | 1 - packages/app-store/millis-ai/package.json | 14 ----- packages/app-store/monobot/api/add.ts | 20 ------- packages/app-store/monobot/api/index.ts | 1 - .../app-store/monobot/components/.gitkeep | 0 packages/app-store/monobot/config.json | 10 +++- packages/app-store/monobot/index.ts | 1 - packages/app-store/monobot/package.json | 14 ----- packages/app-store/n8n/api/add.ts | 20 ------- packages/app-store/n8n/api/index.ts | 1 - packages/app-store/n8n/components/.gitkeep | 0 packages/app-store/n8n/config.json | 10 +++- packages/app-store/n8n/index.ts | 1 - packages/app-store/n8n/package.json | 14 ----- packages/app-store/pipedream/api/add.ts | 20 ------- packages/app-store/pipedream/api/index.ts | 1 - .../app-store/pipedream/components/.gitkeep | 0 packages/app-store/pipedream/config.json | 10 +++- packages/app-store/pipedream/index.ts | 1 - packages/app-store/pipedream/package.json | 14 ----- packages/app-store/raycast/api/add.ts | 19 ------- packages/app-store/raycast/api/index.ts | 1 - .../app-store/raycast/components/.gitkeep | 0 packages/app-store/raycast/config.json | 10 +++- packages/app-store/raycast/index.ts | 1 - packages/app-store/raycast/package.json | 14 ----- packages/app-store/redirect-apps.generated.ts | 33 +++++++++++ packages/app-store/retell-ai/api/add.ts | 20 ------- packages/app-store/retell-ai/api/index.ts | 1 - .../app-store/retell-ai/components/.gitkeep | 0 packages/app-store/retell-ai/config.json | 10 +++- packages/app-store/retell-ai/index.ts | 1 - packages/app-store/retell-ai/package.json | 14 ----- packages/app-store/synthflow/api/add.ts | 20 ------- packages/app-store/synthflow/api/index.ts | 1 - .../app-store/synthflow/components/.gitkeep | 0 packages/app-store/synthflow/config.json | 10 +++- packages/app-store/synthflow/index.ts | 1 - packages/app-store/synthflow/package.json | 14 ----- packages/app-store/telli/api/add.ts | 20 ------- packages/app-store/telli/api/index.ts | 1 - packages/app-store/telli/components/.gitkeep | 0 packages/app-store/telli/config.json | 8 ++- packages/app-store/telli/index.ts | 1 - packages/app-store/telli/package.json | 14 ----- .../templates/link-as-an-app/api/add.ts | 20 ------- .../templates/link-as-an-app/api/index.ts | 1 - .../link-as-an-app/components/.gitkeep | 0 .../templates/link-as-an-app/config.json | 6 +- .../templates/link-as-an-app/index.ts | 1 - .../templates/link-as-an-app/package.json | 13 ----- packages/app-store/vimcal/api/add.ts | 20 ------- packages/app-store/vimcal/api/index.ts | 1 - packages/app-store/vimcal/components/.gitkeep | 0 packages/app-store/vimcal/config.json | 14 ++++- packages/app-store/vimcal/index.ts | 1 - packages/app-store/vimcal/package.json | 14 ----- packages/app-store/wordpress/api/add.ts | 20 ------- packages/app-store/wordpress/api/index.ts | 1 - .../app-store/wordpress/components/.gitkeep | 0 packages/app-store/wordpress/config.json | 8 ++- packages/app-store/wordpress/index.ts | 1 - packages/app-store/wordpress/package.json | 14 ----- packages/app-store/zapier/config.json | 6 +- packages/types/AppMetaSchema.ts | 6 ++ 159 files changed, 327 insertions(+), 1020 deletions(-) delete mode 100644 packages/app-store/amie/api/add.ts delete mode 100644 packages/app-store/amie/api/index.ts delete mode 100644 packages/app-store/amie/components/.gitkeep delete mode 100644 packages/app-store/amie/index.ts delete mode 100644 packages/app-store/amie/package.json delete mode 100644 packages/app-store/autocheckin/api/add.ts delete mode 100644 packages/app-store/autocheckin/api/index.ts delete mode 100644 packages/app-store/autocheckin/components/.gitkeep delete mode 100644 packages/app-store/autocheckin/index.ts delete mode 100644 packages/app-store/autocheckin/package.json delete mode 100644 packages/app-store/baa-for-hipaa/api/add.ts delete mode 100644 packages/app-store/baa-for-hipaa/api/index.ts delete mode 100644 packages/app-store/baa-for-hipaa/components/.gitkeep delete mode 100644 packages/app-store/baa-for-hipaa/index.ts delete mode 100644 packages/app-store/baa-for-hipaa/package.json delete mode 100644 packages/app-store/bolna/api/add.ts delete mode 100644 packages/app-store/bolna/api/index.ts delete mode 100644 packages/app-store/bolna/components/.gitkeep delete mode 100644 packages/app-store/bolna/index.ts delete mode 100644 packages/app-store/bolna/package.json delete mode 100644 packages/app-store/chatbase/api/add.ts delete mode 100644 packages/app-store/chatbase/api/index.ts delete mode 100644 packages/app-store/chatbase/components/.gitkeep delete mode 100644 packages/app-store/chatbase/index.ts delete mode 100644 packages/app-store/chatbase/package.json delete mode 100644 packages/app-store/clic/api/add.ts delete mode 100644 packages/app-store/clic/api/index.ts delete mode 100644 packages/app-store/clic/index.ts delete mode 100644 packages/app-store/clic/package.json delete mode 100644 packages/app-store/cron/api/add.ts delete mode 100644 packages/app-store/cron/api/index.ts delete mode 100644 packages/app-store/cron/components/.gitkeep delete mode 100644 packages/app-store/cron/index.ts delete mode 100644 packages/app-store/cron/package.json delete mode 100644 packages/app-store/deel/api/add.ts delete mode 100644 packages/app-store/deel/api/index.ts delete mode 100644 packages/app-store/deel/components/.gitkeep delete mode 100644 packages/app-store/deel/index.ts delete mode 100644 packages/app-store/deel/package.json delete mode 100644 packages/app-store/elevenlabs/api/add.ts delete mode 100644 packages/app-store/elevenlabs/api/index.ts delete mode 100644 packages/app-store/elevenlabs/components/.gitkeep delete mode 100644 packages/app-store/elevenlabs/index.ts delete mode 100644 packages/app-store/elevenlabs/package.json delete mode 100644 packages/app-store/fonio-ai/api/add.ts delete mode 100644 packages/app-store/fonio-ai/api/index.ts delete mode 100644 packages/app-store/fonio-ai/components/.gitkeep delete mode 100644 packages/app-store/fonio-ai/index.ts delete mode 100644 packages/app-store/fonio-ai/package.json delete mode 100644 packages/app-store/framer/api/add.ts delete mode 100644 packages/app-store/framer/api/index.ts delete mode 100644 packages/app-store/framer/components/.gitkeep delete mode 100644 packages/app-store/framer/index.ts delete mode 100644 packages/app-store/framer/package.json delete mode 100644 packages/app-store/granola/api/add.ts delete mode 100644 packages/app-store/granola/api/index.ts delete mode 100644 packages/app-store/granola/components/.gitkeep delete mode 100644 packages/app-store/granola/index.ts delete mode 100644 packages/app-store/granola/package.json delete mode 100644 packages/app-store/greetmate-ai/api/add.ts delete mode 100644 packages/app-store/greetmate-ai/api/index.ts delete mode 100644 packages/app-store/greetmate-ai/components/.gitkeep delete mode 100644 packages/app-store/greetmate-ai/index.ts delete mode 100644 packages/app-store/greetmate-ai/package.json delete mode 100644 packages/app-store/lindy/api/add.ts delete mode 100644 packages/app-store/lindy/api/index.ts delete mode 100644 packages/app-store/lindy/components/.gitkeep delete mode 100644 packages/app-store/lindy/index.ts delete mode 100644 packages/app-store/lindy/package.json delete mode 100644 packages/app-store/millis-ai/api/add.ts delete mode 100644 packages/app-store/millis-ai/api/index.ts delete mode 100644 packages/app-store/millis-ai/components/.gitkeep delete mode 100644 packages/app-store/millis-ai/index.ts delete mode 100644 packages/app-store/millis-ai/package.json delete mode 100644 packages/app-store/monobot/api/add.ts delete mode 100644 packages/app-store/monobot/api/index.ts delete mode 100644 packages/app-store/monobot/components/.gitkeep delete mode 100644 packages/app-store/monobot/index.ts delete mode 100644 packages/app-store/monobot/package.json delete mode 100644 packages/app-store/n8n/api/add.ts delete mode 100644 packages/app-store/n8n/api/index.ts delete mode 100644 packages/app-store/n8n/components/.gitkeep delete mode 100644 packages/app-store/n8n/index.ts delete mode 100644 packages/app-store/n8n/package.json delete mode 100644 packages/app-store/pipedream/api/add.ts delete mode 100644 packages/app-store/pipedream/api/index.ts delete mode 100644 packages/app-store/pipedream/components/.gitkeep delete mode 100644 packages/app-store/pipedream/index.ts delete mode 100644 packages/app-store/pipedream/package.json delete mode 100644 packages/app-store/raycast/api/add.ts delete mode 100644 packages/app-store/raycast/api/index.ts delete mode 100644 packages/app-store/raycast/components/.gitkeep delete mode 100644 packages/app-store/raycast/index.ts delete mode 100644 packages/app-store/raycast/package.json create mode 100644 packages/app-store/redirect-apps.generated.ts delete mode 100644 packages/app-store/retell-ai/api/add.ts delete mode 100644 packages/app-store/retell-ai/api/index.ts delete mode 100644 packages/app-store/retell-ai/components/.gitkeep delete mode 100644 packages/app-store/retell-ai/index.ts delete mode 100644 packages/app-store/retell-ai/package.json delete mode 100644 packages/app-store/synthflow/api/add.ts delete mode 100644 packages/app-store/synthflow/api/index.ts delete mode 100644 packages/app-store/synthflow/components/.gitkeep delete mode 100644 packages/app-store/synthflow/index.ts delete mode 100644 packages/app-store/synthflow/package.json delete mode 100644 packages/app-store/telli/api/add.ts delete mode 100644 packages/app-store/telli/api/index.ts delete mode 100644 packages/app-store/telli/components/.gitkeep delete mode 100644 packages/app-store/telli/index.ts delete mode 100644 packages/app-store/telli/package.json delete mode 100644 packages/app-store/templates/link-as-an-app/api/add.ts delete mode 100644 packages/app-store/templates/link-as-an-app/api/index.ts delete mode 100644 packages/app-store/templates/link-as-an-app/components/.gitkeep delete mode 100644 packages/app-store/templates/link-as-an-app/index.ts delete mode 100644 packages/app-store/templates/link-as-an-app/package.json delete mode 100644 packages/app-store/vimcal/api/add.ts delete mode 100644 packages/app-store/vimcal/api/index.ts delete mode 100644 packages/app-store/vimcal/components/.gitkeep delete mode 100644 packages/app-store/vimcal/index.ts delete mode 100644 packages/app-store/vimcal/package.json delete mode 100644 packages/app-store/wordpress/api/add.ts delete mode 100644 packages/app-store/wordpress/api/index.ts delete mode 100644 packages/app-store/wordpress/components/.gitkeep delete mode 100644 packages/app-store/wordpress/index.ts delete mode 100644 packages/app-store/wordpress/package.json diff --git a/packages/app-store-cli/src/build.ts b/packages/app-store-cli/src/build.ts index 6a619fe987..d25dafa6b8 100644 --- a/packages/app-store-cli/src/build.ts +++ b/packages/app-store-cli/src/build.ts @@ -487,6 +487,18 @@ function generateFiles() { videoOutput.push(...videoAdapters); } + // Generate redirect apps list (apps with externalLink in their config, excluding templates) + const redirectAppsOutput: string[] = []; + const redirectAppSlugs: string[] = []; + forEachAppDir((app) => { + // Exclude templates - they are not actual apps + if (app.externalLink && !app.path.startsWith("templates/")) { + redirectAppSlugs.push(app.name); + } + }); + redirectAppsOutput.push(`export const REDIRECT_APPS = ${JSON.stringify(redirectAppSlugs)} as const;`); + redirectAppsOutput.push(`export type RedirectApp = typeof REDIRECT_APPS[number];`); + const banner = `/** This file is autogenerated using the command \`yarn app-store:build --watch\`. Don't modify this file manually. @@ -504,6 +516,7 @@ function generateFiles() { ["calendar.services.generated.ts", calendarOutput], ["payment.services.generated.ts", paymentOutput], ["video.adapters.generated.ts", videoOutput], + ["redirect-apps.generated.ts", redirectAppsOutput], ]; filesToGenerate.forEach(([fileName, output]) => { const filePath = path.join(APP_STORE_PATH, fileName); diff --git a/packages/app-store-cli/src/components/AppCreateUpdateForm.tsx b/packages/app-store-cli/src/components/AppCreateUpdateForm.tsx index e5f573061a..5bf2912992 100644 --- a/packages/app-store-cli/src/components/AppCreateUpdateForm.tsx +++ b/packages/app-store-cli/src/components/AppCreateUpdateForm.tsx @@ -30,6 +30,7 @@ export const AppForm = ({ category: "", publisher: "", email: "", + externalLinkUrl: "", }; const [app] = useState(() => getApp(givenSlug, isTemplate)); @@ -43,8 +44,9 @@ export const AppForm = ({ ...config, category: config.categories[0], template: config.__template, + externalLinkUrl: config.externalLink?.url || "", }; - } catch (_e) {} + } catch (_e) { } const fields = [ { @@ -68,13 +70,13 @@ export const AppForm = ({ cliTemplate || isEditAction ? null : { - label: "Choose a base Template", - name: "template", - type: "select", - options: Templates, - optional: false, - defaultValue: "", - }, + label: "Choose a base Template", + name: "template", + type: "select", + options: Templates, + optional: false, + defaultValue: "", + }, { optional: false, label: "Category of App", @@ -113,16 +115,35 @@ export const AppForm = ({ defaultValue: "email@example.com", }, ].filter((f) => f); + const [appInputData, setAppInputData] = useState(initialConfig); const [inputIndex, setInputIndex] = useState(0); const [slugFinalized, setSlugFinalized] = useState(false); + // Add external link URL field for link-as-an-app template + // Must use appInputData.template (not initialConfig.template) to react to user's interactive selection + const templateForFields = appInputData.template || cliTemplate; + if (templateForFields === "link-as-an-app") { + const categoryIndex = fields.findIndex((f) => f?.name === "category"); + const hasExternalLinkField = fields.some((f) => f?.name === "externalLinkUrl"); + if (categoryIndex !== -1 && !hasExternalLinkField) { + fields.splice(categoryIndex + 1, 0, { + optional: false, + label: "External Link URL", + name: "externalLinkUrl", + type: "text", + explainer: "The URL users will be redirected to when they install this app (e.g., https://example.com/signup)", + defaultValue: "https://example.com", + }); + } + } + const field = fields[inputIndex]; const fieldLabel = field?.label || ""; const fieldName = field?.name || ""; let fieldValue = appInputData[fieldName as keyof typeof appInputData] || ""; let validationResult: Parameters[0]["message"] | null = null; - const { name, category, description, publisher, email, template } = appInputData; + const { name, category, description, publisher, email, template, externalLinkUrl } = appInputData; const [status, setStatus] = useState<"inProgress" | "done">("inProgress"); const formCompleted = inputIndex === fields.length; @@ -147,6 +168,7 @@ export const AppForm = ({ editMode: isEditAction, isTemplate, oldSlug: givenSlug, + externalLinkUrl, }); await generateAppFiles(); @@ -168,6 +190,7 @@ export const AppForm = ({ publisher, slug, template, + externalLinkUrl, ]); if (action === "edit" || action === "edit-template") { @@ -202,9 +225,8 @@ export const AppForm = ({ message={{ text: isEditAction ? `Editing app with slug ${slug}` - : `Creating ${ - action === "create-template" ? "template" : "app" - } with name '${name}' categorized in '${category}' using template '${template}'`, + : `Creating ${action === "create-template" ? "template" : "app" + } with name '${name}' categorized in '${category}' using template '${template}'`, type: "info", showInProgressIndicator: true, }} @@ -269,9 +291,8 @@ export const AppForm = ({ } if (slug && slug !== givenSlug && fs.existsSync(getAppDirPath(slug, isTemplate))) { validationResult = { - text: `${ - action === "create" ? "App" : "Template" - } with slug ${slug} already exists. If you want to edit it, use edit command`, + text: `${action === "create" ? "App" : "Template" + } with slug ${slug} already exists. If you want to edit it, use edit command`, type: "error", }; @@ -293,9 +314,8 @@ export const AppForm = ({ ) : ( )} diff --git a/packages/app-store-cli/src/core.ts b/packages/app-store-cli/src/core.ts index 781885f1d5..429314f294 100644 --- a/packages/app-store-cli/src/core.ts +++ b/packages/app-store-cli/src/core.ts @@ -33,11 +33,16 @@ const updatePackageJson = ({ appDescription: string; appDirPath: string; }) => { - const packageJsonConfig = JSON.parse(fs.readFileSync(`${appDirPath}/package.json`).toString()); + const packageJsonPath = `${appDirPath}/package.json`; + // Skip if package.json doesn't exist (e.g., for simplified link-as-an-app template) + if (!fs.existsSync(packageJsonPath)) { + return; + } + const packageJsonConfig = JSON.parse(fs.readFileSync(packageJsonPath).toString()); packageJsonConfig.name = `@calcom/${slug}`; packageJsonConfig.description = appDescription; // packageJsonConfig.description = `@calcom/${appName}`; - fs.writeFileSync(`${appDirPath}/package.json`, JSON.stringify(packageJsonConfig, null, 2)); + fs.writeFileSync(packageJsonPath, JSON.stringify(packageJsonConfig, null, 2)); }; const _workspaceDir = path.resolve(__dirname, "..", "..", ".."); @@ -54,6 +59,7 @@ export const BaseAppFork = { template, isTemplate, oldSlug, + externalLinkUrl, }: { category: string; editMode?: boolean; @@ -65,6 +71,7 @@ export const BaseAppFork = { template: string; isTemplate: boolean; oldSlug?: string; + externalLinkUrl?: string; }) => { const appDirPath = getAppDirPath(slug, isTemplate); if (!editMode) { @@ -93,7 +100,7 @@ export const BaseAppFork = { video: "conferencing", }; - let config = { + let config: Record = { name: name, // Plan to remove it. DB already has it and name of dir is also the same. slug: slug, @@ -115,6 +122,17 @@ export const BaseAppFork = { ...currentConfig, ...config, }; + + // For link-as-an-app template, update the externalLink URL + if (template === "link-as-an-app" && externalLinkUrl) { + config.externalLink = { + url: externalLinkUrl, + newTab: true, + }; + // Also update the legacy url field for backwards compatibility + config.url = externalLinkUrl; + } + fs.writeFileSync(`${appDirPath}/config.json`, JSON.stringify(config, null, 2)); fs.writeFileSync( `${appDirPath}/DESCRIPTION.md`, diff --git a/packages/app-store-cli/tsconfig.json b/packages/app-store-cli/tsconfig.json index 5e2711b276..6fffe5dbd1 100644 --- a/packages/app-store-cli/tsconfig.json +++ b/packages/app-store-cli/tsconfig.json @@ -2,7 +2,7 @@ "compilerOptions": { "strict": true, "module": "commonjs", - "jsx": "react", + "jsx": "react-jsx", "esModuleInterop": true, "outDir": "dist", "noEmitOnError": false, diff --git a/packages/app-store/_utils/redirectApps.ts b/packages/app-store/_utils/redirectApps.ts index 8be4d1d7df..6e3f9e74ff 100644 --- a/packages/app-store/_utils/redirectApps.ts +++ b/packages/app-store/_utils/redirectApps.ts @@ -1,25 +1,7 @@ -export const REDIRECT_APPS = [ - "amie", - "autocheckin", - "bolna", - "chatbase", - "clic", - "deel", - "elevenlabs", - "granola", - "greetmate-ai", - "lindy", - "linear", - "millis-ai", - "monobot", - "retell-ai", - "synthflow", - "telli", - "vimcal", - "wordpress", - "zapier", -]; +import { REDIRECT_APPS } from "../redirect-apps.generated"; + +export { REDIRECT_APPS }; export const isRedirectApp = (slug: string): boolean => { - return REDIRECT_APPS.includes(slug); + return (REDIRECT_APPS as readonly string[]).includes(slug); }; diff --git a/packages/app-store/amie/api/add.ts b/packages/app-store/amie/api/add.ts deleted file mode 100644 index af651081c2..0000000000 --- a/packages/app-store/amie/api/add.ts +++ /dev/null @@ -1,20 +0,0 @@ -import type { AppDeclarativeHandler } from "@calcom/types/AppHandler"; - -import { createDefaultInstallation } from "../../_utils/installation"; -import appConfig from "../config.json"; - -const handler: AppDeclarativeHandler = { - appType: appConfig.type, - variant: appConfig.variant, - slug: appConfig.slug, - supportsMultipleInstalls: false, - handlerType: "add", - redirect: { - newTab: true, - url: "https://amie.so/signup", - }, - createCredential: ({ appType, user, slug, teamId }) => - createDefaultInstallation({ appType, user: user, slug, key: {}, teamId }), -}; - -export default handler; diff --git a/packages/app-store/amie/api/index.ts b/packages/app-store/amie/api/index.ts deleted file mode 100644 index 4c0d2ead01..0000000000 --- a/packages/app-store/amie/api/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as add } from "./add"; diff --git a/packages/app-store/amie/components/.gitkeep b/packages/app-store/amie/components/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/app-store/amie/config.json b/packages/app-store/amie/config.json index ac87eed277..5c0694b09c 100644 --- a/packages/app-store/amie/config.json +++ b/packages/app-store/amie/config.json @@ -6,12 +6,20 @@ "logo": "icon.svg", "url": "https://cal.com", "variant": "other", - "categories": ["calendar"], + "categories": [ + "calendar" + ], "publisher": "Cal.com, Inc.", "email": "support@cal.com", "description": "The joyful productivity app\r\r", "__createdUsingCli": true, - "dependencies": ["google-calendar"], + "dependencies": [ + "google-calendar" + ], "dirName": "amie", - "isOAuth": false + "isOAuth": false, + "externalLink": { + "url": "https://amie.so/signup", + "newTab": true + } } diff --git a/packages/app-store/amie/index.ts b/packages/app-store/amie/index.ts deleted file mode 100644 index d7f3602204..0000000000 --- a/packages/app-store/amie/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * as api from "./api"; diff --git a/packages/app-store/amie/package.json b/packages/app-store/amie/package.json deleted file mode 100644 index cfb04538c9..0000000000 --- a/packages/app-store/amie/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/package.json", - "private": true, - "name": "@calcom/amie", - "version": "0.0.0", - "main": "./index.ts", - "description": "The joyful productivity app\r\r", - "dependencies": { - "@calcom/lib": "workspace:*" - }, - "devDependencies": { - "@calcom/types": "workspace:*" - } -} diff --git a/packages/app-store/apps.server.generated.ts b/packages/app-store/apps.server.generated.ts index 2383fba643..61349f361c 100644 --- a/packages/app-store/apps.server.generated.ts +++ b/packages/app-store/apps.server.generated.ts @@ -4,43 +4,30 @@ **/ export const apiHandlers = { alby: import("./alby/api"), - amie: import("./amie/api"), applecalendar: import("./applecalendar/api"), attio: import("./attio/api"), - autocheckin: import("./autocheckin/api"), - "baa-for-hipaa": import("./baa-for-hipaa/api"), basecamp3: import("./basecamp3/api"), - bolna: import("./bolna/api"), btcpayserver: import("./btcpayserver/api"), caldavcalendar: import("./caldavcalendar/api"), campfire: import("./campfire/api"), - chatbase: import("./chatbase/api"), - clic: import("./clic/api"), closecom: import("./closecom/api"), - cron: import("./cron/api"), databuddy: import("./databuddy/api"), - deel: import("./deel/api"), demodesk: import("./demodesk/api"), dialpad: import("./dialpad/api"), discord: import("./discord/api"), dub: import("./dub/api"), eightxeight: import("./eightxeight/api"), "element-call": import("./element-call/api"), - elevenlabs: import("./elevenlabs/api"), exchange2013calendar: import("./exchange2013calendar/api"), exchange2016calendar: import("./exchange2016calendar/api"), exchangecalendar: import("./exchangecalendar/api"), facetime: import("./facetime/api"), fathom: import("./fathom/api"), feishucalendar: import("./feishucalendar/api"), - "fonio-ai": import("./fonio-ai/api"), - framer: import("./framer/api"), ga4: import("./ga4/api"), giphy: import("./giphy/api"), googlecalendar: import("./googlecalendar/api"), googlevideo: import("./googlevideo/api"), - granola: import("./granola/api"), - "greetmate-ai": import("./greetmate-ai/api"), gtm: import("./gtm/api"), hitpay: import("./hitpay/api"), "horizon-workrooms": import("./horizon-workrooms/api"), @@ -52,28 +39,21 @@ export const apiHandlers = { jelly: import("./jelly/api"), jitsivideo: import("./jitsivideo/api"), larkcalendar: import("./larkcalendar/api"), - lindy: import("./lindy/api"), linear: import("./linear/api"), make: import("./make/api"), matomo: import("./matomo/api"), metapixel: import("./metapixel/api"), - "millis-ai": import("./millis-ai/api"), mirotalk: import("./mirotalk/api"), "mock-payment-app": import("./mock-payment-app/api"), - monobot: import("./monobot/api"), - n8n: import("./n8n/api"), nextcloudtalk: import("./nextcloudtalk/api"), office365calendar: import("./office365calendar/api"), office365video: import("./office365video/api"), paypal: import("./paypal/api"), ping: import("./ping/api"), - pipedream: import("./pipedream/api"), "pipedrive-crm": import("./pipedrive-crm/api"), plausible: import("./plausible/api"), posthog: import("./posthog/api"), qr_code: import("./qr_code/api"), - raycast: import("./raycast/api"), - "retell-ai": import("./retell-ai/api"), riverside: import("./riverside/api"), roam: import("./roam/api"), "routing-forms": import("./routing-forms/api"), @@ -86,26 +66,21 @@ export const apiHandlers = { skype: import("./skype/api"), stripepayment: import("./stripepayment/api"), sylapsvideo: import("./sylapsvideo/api"), - synthflow: import("./synthflow/api"), tandemvideo: import("./tandemvideo/api"), telegram: import("./telegram/api"), - telli: import("./telli/api"), basic: import("./templates/basic/api"), "booking-pages-tag": import("./templates/booking-pages-tag/api"), "event-type-app-card": import("./templates/event-type-app-card/api"), "event-type-location-video-static": import("./templates/event-type-location-video-static/api"), "general-app-settings": import("./templates/general-app-settings/api"), - "link-as-an-app": import("./templates/link-as-an-app/api"), twipla: import("./twipla/api"), umami: import("./umami/api"), - vimcal: import("./vimcal/api"), vital: import("./vital/api"), weather_in_your_calendar: import("./weather_in_your_calendar/api"), webex: import("./webex/api"), whatsapp: import("./whatsapp/api"), whereby: import("./whereby/api"), wipemycalother: import("./wipemycalother/api"), - wordpress: import("./wordpress/api"), zapier: import("./zapier/api"), "zoho-bigin": import("./zoho-bigin/api"), zohocalendar: import("./zohocalendar/api"), diff --git a/packages/app-store/autocheckin/api/add.ts b/packages/app-store/autocheckin/api/add.ts deleted file mode 100644 index 5d647aa841..0000000000 --- a/packages/app-store/autocheckin/api/add.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { createDefaultInstallation } from "@calcom/app-store/_utils/installation"; -import type { AppDeclarativeHandler } from "@calcom/types/AppHandler"; - -import appConfig from "../config.json"; - -const handler: AppDeclarativeHandler = { - appType: appConfig.type, - variant: appConfig.variant, - slug: appConfig.slug, - supportsMultipleInstalls: false, - handlerType: "add", - redirect: { - newTab: true, - url: "https://autocheckin.app", - }, - createCredential: ({ appType, user, slug, teamId }) => - createDefaultInstallation({ appType, user: user, slug, key: {}, teamId }), -}; - -export default handler; diff --git a/packages/app-store/autocheckin/api/index.ts b/packages/app-store/autocheckin/api/index.ts deleted file mode 100644 index 4c0d2ead01..0000000000 --- a/packages/app-store/autocheckin/api/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as add } from "./add"; diff --git a/packages/app-store/autocheckin/components/.gitkeep b/packages/app-store/autocheckin/components/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/app-store/autocheckin/config.json b/packages/app-store/autocheckin/config.json index 94c86b66a8..9b4d54dcbf 100644 --- a/packages/app-store/autocheckin/config.json +++ b/packages/app-store/autocheckin/config.json @@ -6,11 +6,17 @@ "logo": "icon.svg", "url": "https://autocheckin.app", "variant": "automation", - "categories": ["automation"], + "categories": [ + "automation" + ], "publisher": "Patrick Goeler von Ravensburg", "email": "patrickvongoeler@gmail.com", "description": "You simply paste a [Cal.com](https://cal.com) link of someone, select a frequency and we will take care of the scheduling for you.\r\r", "isTemplate": false, "__createdUsingCli": true, - "__template": "link-as-an-app" + "__template": "link-as-an-app", + "externalLink": { + "url": "https://autocheckin.app", + "newTab": true + } } diff --git a/packages/app-store/autocheckin/index.ts b/packages/app-store/autocheckin/index.ts deleted file mode 100644 index d7f3602204..0000000000 --- a/packages/app-store/autocheckin/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * as api from "./api"; diff --git a/packages/app-store/autocheckin/package.json b/packages/app-store/autocheckin/package.json deleted file mode 100644 index 4f1d4bd498..0000000000 --- a/packages/app-store/autocheckin/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/package.json", - "private": true, - "name": "@calcom/autocheckin", - "version": "0.0.0", - "main": "./index.ts", - "dependencies": { - "@calcom/lib": "workspace:*" - }, - "devDependencies": { - "@calcom/types": "workspace:*" - }, - "description": "You simply paste a Cal.com link of someone, select a frequency and we will take care of the scheduling for you.\r\r" -} diff --git a/packages/app-store/baa-for-hipaa/api/add.ts b/packages/app-store/baa-for-hipaa/api/add.ts deleted file mode 100644 index 8cff63dd29..0000000000 --- a/packages/app-store/baa-for-hipaa/api/add.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { createDefaultInstallation } from "@calcom/app-store/_utils/installation"; -import type { AppDeclarativeHandler } from "@calcom/types/AppHandler"; - -import appConfig from "../config.json"; - -const handler: AppDeclarativeHandler = { - appType: appConfig.type, - variant: appConfig.variant, - slug: appConfig.slug, - supportsMultipleInstalls: false, - handlerType: "add", - redirect: { - newTab: true, - url: "https://cal.com/BAA", - }, - createCredential: ({ appType, user, slug, teamId }) => - createDefaultInstallation({ appType, user: user, slug, key: {}, teamId }), -}; - -export default handler; diff --git a/packages/app-store/baa-for-hipaa/api/index.ts b/packages/app-store/baa-for-hipaa/api/index.ts deleted file mode 100644 index 4c0d2ead01..0000000000 --- a/packages/app-store/baa-for-hipaa/api/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as add } from "./add"; diff --git a/packages/app-store/baa-for-hipaa/components/.gitkeep b/packages/app-store/baa-for-hipaa/components/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/app-store/baa-for-hipaa/config.json b/packages/app-store/baa-for-hipaa/config.json index 2919a6565c..fd2aa756c9 100644 --- a/packages/app-store/baa-for-hipaa/config.json +++ b/packages/app-store/baa-for-hipaa/config.json @@ -6,7 +6,9 @@ "logo": "icon.svg", "url": "https://cal.com/BAA", "variant": "other", - "categories": ["other"], + "categories": [ + "other" + ], "publisher": "Cal.com, Inc.", "email": "support@cal.com", "description": "Request a signed Business Associate Agreement for your HIPAA compliance records", @@ -16,5 +18,9 @@ "paid": { "priceInUsd": 300, "mode": "subscription" + }, + "externalLink": { + "url": "https://cal.com/BAA", + "newTab": true } } diff --git a/packages/app-store/baa-for-hipaa/index.ts b/packages/app-store/baa-for-hipaa/index.ts deleted file mode 100644 index d7f3602204..0000000000 --- a/packages/app-store/baa-for-hipaa/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * as api from "./api"; diff --git a/packages/app-store/baa-for-hipaa/package.json b/packages/app-store/baa-for-hipaa/package.json deleted file mode 100644 index ffa9042196..0000000000 --- a/packages/app-store/baa-for-hipaa/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/package.json", - "private": true, - "name": "@calcom/baa-for-hipaa", - "version": "0.0.0", - "main": "./index.ts", - "dependencies": { - "@calcom/lib": "workspace:*" - }, - "devDependencies": { - "@calcom/types": "workspace:*" - }, - "description": "Request a signed Business Associate Agreement for your HIPAA compliance records" -} diff --git a/packages/app-store/bolna/api/add.ts b/packages/app-store/bolna/api/add.ts deleted file mode 100644 index 0ca4ffca22..0000000000 --- a/packages/app-store/bolna/api/add.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { createDefaultInstallation } from "@calcom/app-store/_utils/installation"; -import type { AppDeclarativeHandler } from "@calcom/types/AppHandler"; - -import appConfig from "../config.json"; - -const handler: AppDeclarativeHandler = { - appType: appConfig.type, - variant: appConfig.variant, - slug: appConfig.slug, - supportsMultipleInstalls: false, - handlerType: "add", - redirect: { - newTab: true, - url: "https://playground.bolna.dev/auth/calcom", - }, - createCredential: ({ appType, user, slug, teamId }) => - createDefaultInstallation({ appType, user: user, slug, key: {}, teamId }), -}; - -export default handler; diff --git a/packages/app-store/bolna/api/index.ts b/packages/app-store/bolna/api/index.ts deleted file mode 100644 index 4c0d2ead01..0000000000 --- a/packages/app-store/bolna/api/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as add } from "./add"; diff --git a/packages/app-store/bolna/components/.gitkeep b/packages/app-store/bolna/components/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/app-store/bolna/config.json b/packages/app-store/bolna/config.json index a03f42ff52..ee8ac7a2da 100644 --- a/packages/app-store/bolna/config.json +++ b/packages/app-store/bolna/config.json @@ -6,11 +6,17 @@ "logo": "icon-primary.svg", "url": "https://playground.bolna.dev/auth/calcom", "variant": "automation", - "categories": ["automation"], + "categories": [ + "automation" + ], "publisher": "Bolna", "email": "founders@bolna.dev", "description": "24x7 AI receptionists to answer all inbound calls", "isTemplate": false, "__createdUsingCli": true, - "__template": "link-as-an-app" + "__template": "link-as-an-app", + "externalLink": { + "url": "https://playground.bolna.dev/auth/calcom", + "newTab": true + } } diff --git a/packages/app-store/bolna/index.ts b/packages/app-store/bolna/index.ts deleted file mode 100644 index d7f3602204..0000000000 --- a/packages/app-store/bolna/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * as api from "./api"; diff --git a/packages/app-store/bolna/package.json b/packages/app-store/bolna/package.json deleted file mode 100644 index b35237a2b4..0000000000 --- a/packages/app-store/bolna/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/package.json", - "private": true, - "name": "@calcom/bolna", - "version": "0.0.1", - "main": "./index.ts", - "dependencies": { - "@calcom/lib": "workspace:*" - }, - "devDependencies": { - "@calcom/types": "workspace:*" - }, - "description": "24x7 AI receptionists to answer all inbound calls" -} diff --git a/packages/app-store/chatbase/api/add.ts b/packages/app-store/chatbase/api/add.ts deleted file mode 100644 index d094fe4243..0000000000 --- a/packages/app-store/chatbase/api/add.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { createDefaultInstallation } from "@calcom/app-store/_utils/installation"; -import type { AppDeclarativeHandler } from "@calcom/types/AppHandler"; - -import appConfig from "../config.json"; - -const handler: AppDeclarativeHandler = { - appType: appConfig.type, - variant: appConfig.variant, - slug: appConfig.slug, - supportsMultipleInstalls: false, - handlerType: "add", - redirect: { - newTab: true, - url: "https://www.chatbase.co/guide/cal", - }, - createCredential: ({ appType, user, slug, teamId }) => - createDefaultInstallation({ appType, user: user, slug, key: {}, teamId }), -}; - -export default handler; diff --git a/packages/app-store/chatbase/api/index.ts b/packages/app-store/chatbase/api/index.ts deleted file mode 100644 index 4c0d2ead01..0000000000 --- a/packages/app-store/chatbase/api/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as add } from "./add"; diff --git a/packages/app-store/chatbase/components/.gitkeep b/packages/app-store/chatbase/components/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/app-store/chatbase/config.json b/packages/app-store/chatbase/config.json index f974735951..deec22e8b3 100644 --- a/packages/app-store/chatbase/config.json +++ b/packages/app-store/chatbase/config.json @@ -6,11 +6,17 @@ "logo": "icon-dark.svg", "url": "https://www.chatbase.co/guide/cal", "variant": "other", - "categories": ["other"], + "categories": [ + "other" + ], "publisher": "Chatbase", "email": "sandra@chatbase.co", "description": "Add [Cal.com](https://cal.com/) to your Chatbase AI Chatbot and accept bookings right inside chat.", "isTemplate": false, "__createdUsingCli": true, - "__template": "link-as-an-app" + "__template": "link-as-an-app", + "externalLink": { + "url": "https://www.chatbase.co/guide/cal", + "newTab": true + } } diff --git a/packages/app-store/chatbase/index.ts b/packages/app-store/chatbase/index.ts deleted file mode 100644 index d7f3602204..0000000000 --- a/packages/app-store/chatbase/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * as api from "./api"; diff --git a/packages/app-store/chatbase/package.json b/packages/app-store/chatbase/package.json deleted file mode 100644 index 45edacfec6..0000000000 --- a/packages/app-store/chatbase/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/package.json", - "private": true, - "name": "@calcom/chatbase", - "version": "0.0.0", - "main": "./index.ts", - "dependencies": { - "@calcom/lib": "workspace:*" - }, - "devDependencies": { - "@calcom/types": "workspace:*" - }, - "description": "Add Cal.com to your Chatbase AI Chatbot and accept bookings right inside chat." -} diff --git a/packages/app-store/clic/api/add.ts b/packages/app-store/clic/api/add.ts deleted file mode 100644 index 9132b970d4..0000000000 --- a/packages/app-store/clic/api/add.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { createDefaultInstallation } from "@calcom/app-store/_utils/installation"; -import type { AppDeclarativeHandler } from "@calcom/types/AppHandler"; - -import appConfig from "../config.json"; - -const handler: AppDeclarativeHandler = { - appType: appConfig.type, - variant: appConfig.variant, - slug: appConfig.slug, - supportsMultipleInstalls: false, - handlerType: "add", - redirect: { - newTab: true, - url: "https://clicis.vercel.app", - }, - createCredential: ({ appType, user, slug, teamId }) => - createDefaultInstallation({ appType, user: user, slug, key: {}, teamId }), -}; - -export default handler; diff --git a/packages/app-store/clic/api/index.ts b/packages/app-store/clic/api/index.ts deleted file mode 100644 index 4c0d2ead01..0000000000 --- a/packages/app-store/clic/api/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as add } from "./add"; diff --git a/packages/app-store/clic/config.json b/packages/app-store/clic/config.json index 800c117818..3c206df326 100644 --- a/packages/app-store/clic/config.json +++ b/packages/app-store/clic/config.json @@ -6,11 +6,17 @@ "logo": "icon.svg", "url": "https://clicis.vercel.app", "variant": "automation", - "categories": ["automation"], + "categories": [ + "automation" + ], "publisher": "Chris Pacheco", "email": "chrispacheco430@gmail.com", "description": "Create, List and Interact with Your Cal.com links and connections easily.\r\r", "isTemplate": false, "__createdUsingCli": true, - "__template": "link-as-an-app" + "__template": "link-as-an-app", + "externalLink": { + "url": "https://clicis.vercel.app", + "newTab": true + } } diff --git a/packages/app-store/clic/index.ts b/packages/app-store/clic/index.ts deleted file mode 100644 index d7f3602204..0000000000 --- a/packages/app-store/clic/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * as api from "./api"; diff --git a/packages/app-store/clic/package.json b/packages/app-store/clic/package.json deleted file mode 100644 index 33ef6e02df..0000000000 --- a/packages/app-store/clic/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/package.json", - "private": true, - "name": "@calcom/clic", - "version": "0.1.0", - "main": "./index.ts", - "dependencies": { - "@calcom/lib": "workspace:*" - }, - "devDependencies": { - "@calcom/types": "workspace:*" - }, - "description": "Create, List and Interact with Your Cal.com links and connections easily." -} diff --git a/packages/app-store/cron/api/add.ts b/packages/app-store/cron/api/add.ts deleted file mode 100644 index 57a7442cd6..0000000000 --- a/packages/app-store/cron/api/add.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { createDefaultInstallation } from "@calcom/app-store/_utils/installation"; -import type { AppDeclarativeHandler } from "@calcom/types/AppHandler"; - -import appConfig from "../config.json"; - -const handler: AppDeclarativeHandler = { - appType: appConfig.type, - variant: appConfig.variant, - slug: appConfig.slug, - supportsMultipleInstalls: false, - handlerType: "add", - redirect: { - newTab: true, - url: "https://cron.com", - }, - createCredential: ({ appType, user, slug, teamId }) => - createDefaultInstallation({ appType, user, slug, key: {}, teamId }), -}; - -export default handler; diff --git a/packages/app-store/cron/api/index.ts b/packages/app-store/cron/api/index.ts deleted file mode 100644 index 4c0d2ead01..0000000000 --- a/packages/app-store/cron/api/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as add } from "./add"; diff --git a/packages/app-store/cron/components/.gitkeep b/packages/app-store/cron/components/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/app-store/cron/config.json b/packages/app-store/cron/config.json index d5c8dae388..dadeb1b8f9 100644 --- a/packages/app-store/cron/config.json +++ b/packages/app-store/cron/config.json @@ -6,13 +6,21 @@ "logo": "logo.png", "url": "https://github.com/miguelnietoa", "variant": "calendar", - "categories": ["calendar"], + "categories": [ + "calendar" + ], "publisher": "Miguel Nieto", "email": "support@cal.com", "description": "All of your commitments, now in one place.", "isTemplate": false, "__createdUsingCli": true, "__template": "link-as-an-app", - "dependencies": ["google-calendar"], - "isOAuth": false + "dependencies": [ + "google-calendar" + ], + "isOAuth": false, + "externalLink": { + "url": "https://cron.com", + "newTab": true + } } diff --git a/packages/app-store/cron/index.ts b/packages/app-store/cron/index.ts deleted file mode 100644 index d7f3602204..0000000000 --- a/packages/app-store/cron/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * as api from "./api"; diff --git a/packages/app-store/cron/package.json b/packages/app-store/cron/package.json deleted file mode 100644 index af155e5863..0000000000 --- a/packages/app-store/cron/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/package.json", - "private": true, - "name": "@calcom/cron", - "version": "0.0.0", - "main": "./index.ts", - "dependencies": { - "@calcom/lib": "workspace:*" - }, - "devDependencies": { - "@calcom/types": "workspace:*" - }, - "description": "All of your commitments, now in one place." -} diff --git a/packages/app-store/deel/api/add.ts b/packages/app-store/deel/api/add.ts deleted file mode 100644 index 8330e4bde7..0000000000 --- a/packages/app-store/deel/api/add.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { createDefaultInstallation } from "@calcom/app-store/_utils/installation"; -import type { AppDeclarativeHandler } from "@calcom/types/AppHandler"; - -import appConfig from "../config.json"; - -const handler: AppDeclarativeHandler = { - appType: appConfig.type, - variant: appConfig.variant, - slug: appConfig.slug, - supportsMultipleInstalls: false, - handlerType: "add", - redirect: { - newTab: true, - url: "https://go.cal.com/deel", - }, - createCredential: ({ appType, user, slug, teamId }) => - createDefaultInstallation({ appType, user: user, slug, key: {}, teamId }), -}; - -export default handler; diff --git a/packages/app-store/deel/api/index.ts b/packages/app-store/deel/api/index.ts deleted file mode 100644 index 4c0d2ead01..0000000000 --- a/packages/app-store/deel/api/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as add } from "./add"; diff --git a/packages/app-store/deel/components/.gitkeep b/packages/app-store/deel/components/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/app-store/deel/config.json b/packages/app-store/deel/config.json index bd9daea83b..8df118c020 100644 --- a/packages/app-store/deel/config.json +++ b/packages/app-store/deel/config.json @@ -6,12 +6,18 @@ "logo": "icon.svg", "url": "https://go.cal.com/deel", "variant": "other", - "categories": ["other"], + "categories": [ + "other" + ], "publisher": "Deel.com", "email": "support@deel.com", "description": "Integrate Deel with your Calendar and get automatic updates on key employee dates like PTO, start days, public holidays, and birthdays. No manual entry. No errors. Just a calendar that's always in sync with your team.", "isTemplate": false, "__createdUsingCli": true, "__template": "link-as-an-app", - "dirName": "deel" + "dirName": "deel", + "externalLink": { + "url": "https://go.cal.com/deel", + "newTab": true + } } diff --git a/packages/app-store/deel/index.ts b/packages/app-store/deel/index.ts deleted file mode 100644 index d7f3602204..0000000000 --- a/packages/app-store/deel/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * as api from "./api"; diff --git a/packages/app-store/deel/package.json b/packages/app-store/deel/package.json deleted file mode 100644 index e20b34b67b..0000000000 --- a/packages/app-store/deel/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/package.json", - "private": true, - "name": "@calcom/deel", - "version": "0.0.0", - "main": "./index.ts", - "dependencies": { - "@calcom/lib": "workspace:*" - }, - "devDependencies": { - "@calcom/types": "workspace:*" - }, - "description": "Integrate Deel with your Calendar and get automatic updates on key employee dates like PTO, start days, public holidays, and birthdays. No manual entry. No errors. Just a calendar that's always in sync with your team." -} diff --git a/packages/app-store/elevenlabs/api/add.ts b/packages/app-store/elevenlabs/api/add.ts deleted file mode 100644 index 35a141f4ce..0000000000 --- a/packages/app-store/elevenlabs/api/add.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { createDefaultInstallation } from "@calcom/app-store/_utils/installation"; -import type { AppDeclarativeHandler } from "@calcom/types/AppHandler"; - -import appConfig from "../config.json"; - -const handler: AppDeclarativeHandler = { - appType: appConfig.type, - variant: appConfig.variant, - slug: appConfig.slug, - supportsMultipleInstalls: false, - handlerType: "add", - redirect: { - newTab: true, - url: "https://elevenlabs.io/docs/conversational-ai/guides/integrations/cal-com", - }, - createCredential: ({ appType, user, slug, teamId }) => - createDefaultInstallation({ appType, user: user, slug, key: {}, teamId }), -}; - -export default handler; diff --git a/packages/app-store/elevenlabs/api/index.ts b/packages/app-store/elevenlabs/api/index.ts deleted file mode 100644 index 4c0d2ead01..0000000000 --- a/packages/app-store/elevenlabs/api/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as add } from "./add"; diff --git a/packages/app-store/elevenlabs/components/.gitkeep b/packages/app-store/elevenlabs/components/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/app-store/elevenlabs/config.json b/packages/app-store/elevenlabs/config.json index 8e9e1feca3..1df2ec714a 100644 --- a/packages/app-store/elevenlabs/config.json +++ b/packages/app-store/elevenlabs/config.json @@ -6,11 +6,17 @@ "logo": "icon-dark.svg", "url": "https://elevenlabs.io/docs/conversational-ai/guides/integrations/cal-com", "variant": "automation", - "categories": ["automation"], + "categories": [ + "automation" + ], "publisher": "ElevenLabs", "email": "support@elevenlabs.io", "description": "Create the most realistic speech with our AI audio platform", "isTemplate": false, "__createdUsingCli": true, - "__template": "link-as-an-app" + "__template": "link-as-an-app", + "externalLink": { + "url": "https://elevenlabs.io/docs/conversational-ai/guides/integrations/cal-com", + "newTab": true + } } diff --git a/packages/app-store/elevenlabs/index.ts b/packages/app-store/elevenlabs/index.ts deleted file mode 100644 index d7f3602204..0000000000 --- a/packages/app-store/elevenlabs/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * as api from "./api"; diff --git a/packages/app-store/elevenlabs/package.json b/packages/app-store/elevenlabs/package.json deleted file mode 100644 index dc8bdef7ae..0000000000 --- a/packages/app-store/elevenlabs/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/package.json", - "private": true, - "name": "@calcom/elevenlabs", - "version": "0.0.0", - "main": "./index.ts", - "dependencies": { - "@calcom/lib": "workspace:*" - }, - "devDependencies": { - "@calcom/types": "workspace:*" - }, - "description": "Create the most realistic speech with our AI audio platform" -} diff --git a/packages/app-store/fonio-ai/api/add.ts b/packages/app-store/fonio-ai/api/add.ts deleted file mode 100644 index a46f2a6a24..0000000000 --- a/packages/app-store/fonio-ai/api/add.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { createDefaultInstallation } from "@calcom/app-store/_utils/installation"; -import type { AppDeclarativeHandler } from "@calcom/types/AppHandler"; - -import appConfig from "../config.json"; - -const handler: AppDeclarativeHandler = { - appType: appConfig.type, - variant: appConfig.variant, - slug: appConfig.slug, - supportsMultipleInstalls: false, - handlerType: "add", - redirect: { - newTab: true, - url: "https://docs.fonio.ai/Tools/Terminbuchung", - }, - createCredential: ({ appType, user, slug, teamId }) => - createDefaultInstallation({ appType, user: user, slug, key: {}, teamId }), -}; - -export default handler; diff --git a/packages/app-store/fonio-ai/api/index.ts b/packages/app-store/fonio-ai/api/index.ts deleted file mode 100644 index 4c0d2ead01..0000000000 --- a/packages/app-store/fonio-ai/api/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as add } from "./add"; diff --git a/packages/app-store/fonio-ai/components/.gitkeep b/packages/app-store/fonio-ai/components/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/app-store/fonio-ai/config.json b/packages/app-store/fonio-ai/config.json index 9713c0f444..a68110335b 100644 --- a/packages/app-store/fonio-ai/config.json +++ b/packages/app-store/fonio-ai/config.json @@ -6,11 +6,17 @@ "logo": "icon.png", "url": "https://docs.fonio.ai/Tools/Terminbuchung", "variant": "automation", - "categories": ["automation"], + "categories": [ + "automation" + ], "publisher": "fonio GmbH", "email": "info@fonio.ai", "description": "Der KI-Telefonassistent auf Deutsch\r", "isTemplate": false, "__createdUsingCli": true, - "__template": "link-as-an-app" + "__template": "link-as-an-app", + "externalLink": { + "url": "https://docs.fonio.ai/Tools/Terminbuchung", + "newTab": true + } } diff --git a/packages/app-store/fonio-ai/index.ts b/packages/app-store/fonio-ai/index.ts deleted file mode 100644 index d7f3602204..0000000000 --- a/packages/app-store/fonio-ai/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * as api from "./api"; diff --git a/packages/app-store/fonio-ai/package.json b/packages/app-store/fonio-ai/package.json deleted file mode 100644 index 004359e5dd..0000000000 --- a/packages/app-store/fonio-ai/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/package.json", - "private": true, - "name": "@calcom/fonio-ai", - "version": "0.0.0", - "main": "./index.ts", - "dependencies": { - "@calcom/lib": "*" - }, - "devDependencies": { - "@calcom/types": "*" - }, - "description": "Der KI-Telefonassistent auf Deutsch\r" -} diff --git a/packages/app-store/framer/api/add.ts b/packages/app-store/framer/api/add.ts deleted file mode 100644 index bb69f9d583..0000000000 --- a/packages/app-store/framer/api/add.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { createDefaultInstallation } from "@calcom/app-store/_utils/installation"; -import type { AppDeclarativeHandler } from "@calcom/types/AppHandler"; - -import appConfig from "../config.json"; - -const handler: AppDeclarativeHandler = { - appType: appConfig.type, - variant: appConfig.variant, - slug: appConfig.slug, - supportsMultipleInstalls: false, - handlerType: "add", - redirect: { - newTab: true, - url: "https://www.framer.com/updates/cal-com", - }, - createCredential: ({ appType, user, slug, teamId }) => - createDefaultInstallation({ appType, user: user, slug, key: {}, teamId }), -}; - -export default handler; diff --git a/packages/app-store/framer/api/index.ts b/packages/app-store/framer/api/index.ts deleted file mode 100644 index 4c0d2ead01..0000000000 --- a/packages/app-store/framer/api/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as add } from "./add"; diff --git a/packages/app-store/framer/components/.gitkeep b/packages/app-store/framer/components/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/app-store/framer/config.json b/packages/app-store/framer/config.json index 676eaafbb7..794cf91238 100644 --- a/packages/app-store/framer/config.json +++ b/packages/app-store/framer/config.json @@ -6,11 +6,17 @@ "logo": "icon-dark.svg", "url": "https://www.framer.com/updates/cal-com", "variant": "other", - "categories": ["other"], + "categories": [ + "other" + ], "publisher": "Framer B.V.", "email": "benjamin@framer.com", "description": "Add Cal.com to Framer, the design tool for websites. Design freely, publish fast, and scale with CMS, SEO, analytics, and more.", "isTemplate": false, "__createdUsingCli": true, - "__template": "link-as-an-app" + "__template": "link-as-an-app", + "externalLink": { + "url": "https://www.framer.com/updates/cal-com", + "newTab": true + } } diff --git a/packages/app-store/framer/index.ts b/packages/app-store/framer/index.ts deleted file mode 100644 index d7f3602204..0000000000 --- a/packages/app-store/framer/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * as api from "./api"; diff --git a/packages/app-store/framer/package.json b/packages/app-store/framer/package.json deleted file mode 100644 index c26b5e75d8..0000000000 --- a/packages/app-store/framer/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/package.json", - "private": true, - "name": "@calcom/framer", - "version": "0.0.0", - "main": "./index.ts", - "dependencies": { - "@calcom/lib": "workspace:*" - }, - "devDependencies": { - "@calcom/types": "workspace:*" - }, - "description": "Add Cal.com to Framer, the design tool for websites. Design freely, publish fast, and scale with CMS, SEO, analytics, and more.\r\r\r\r" -} diff --git a/packages/app-store/granola/api/add.ts b/packages/app-store/granola/api/add.ts deleted file mode 100644 index 2921426ffb..0000000000 --- a/packages/app-store/granola/api/add.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { createDefaultInstallation } from "@calcom/app-store/_utils/installation"; -import type { AppDeclarativeHandler } from "@calcom/types/AppHandler"; - -import appConfig from "../config.json"; - -const handler: AppDeclarativeHandler = { - appType: appConfig.type, - variant: appConfig.variant, - slug: appConfig.slug, - supportsMultipleInstalls: false, - handlerType: "add", - redirect: { - newTab: true, - url: "https://go.cal.com/granola", - }, - createCredential: ({ appType, user, slug, teamId }) => - createDefaultInstallation({ appType, user: user, slug, key: {}, teamId }), -}; - -export default handler; diff --git a/packages/app-store/granola/api/index.ts b/packages/app-store/granola/api/index.ts deleted file mode 100644 index 4c0d2ead01..0000000000 --- a/packages/app-store/granola/api/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as add } from "./add"; diff --git a/packages/app-store/granola/components/.gitkeep b/packages/app-store/granola/components/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/app-store/granola/config.json b/packages/app-store/granola/config.json index 98a918d7df..d4845f6f64 100644 --- a/packages/app-store/granola/config.json +++ b/packages/app-store/granola/config.json @@ -6,11 +6,17 @@ "logo": "icon.svg", "url": "https://go.cal.com/granola", "variant": "other", - "categories": ["other"], + "categories": [ + "other" + ], "publisher": "Granola inc", "email": "hey@granola.so", "description": "The AI notepad for people in back-to-back meetings for MacOS", "isTemplate": false, "__createdUsingCli": true, - "__template": "link-as-an-app" + "__template": "link-as-an-app", + "externalLink": { + "url": "https://go.cal.com/granola", + "newTab": true + } } diff --git a/packages/app-store/granola/index.ts b/packages/app-store/granola/index.ts deleted file mode 100644 index d7f3602204..0000000000 --- a/packages/app-store/granola/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * as api from "./api"; diff --git a/packages/app-store/granola/package.json b/packages/app-store/granola/package.json deleted file mode 100644 index 9527ddd676..0000000000 --- a/packages/app-store/granola/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/package.json", - "private": true, - "name": "@calcom/granola", - "version": "0.0.0", - "main": "./index.ts", - "dependencies": { - "@calcom/lib": "workspace:*" - }, - "devDependencies": { - "@calcom/types": "workspace:*" - }, - "description": "The AI notepad for people in back-to-back meetings for MacOS" -} diff --git a/packages/app-store/greetmate-ai/api/add.ts b/packages/app-store/greetmate-ai/api/add.ts deleted file mode 100644 index 42b25206f3..0000000000 --- a/packages/app-store/greetmate-ai/api/add.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { createDefaultInstallation } from "@calcom/app-store/_utils/installation"; -import type { AppDeclarativeHandler } from "@calcom/types/AppHandler"; - -import appConfig from "../config.json"; - -const handler: AppDeclarativeHandler = { - appType: appConfig.type, - variant: appConfig.variant, - slug: appConfig.slug, - supportsMultipleInstalls: false, - handlerType: "add", - redirect: { - newTab: true, - url: "https://www.greetmate.com/dashboard", - }, - createCredential: ({ appType, user, slug, teamId }) => - createDefaultInstallation({ appType, user: user, slug, key: {}, teamId }), -}; - -export default handler; diff --git a/packages/app-store/greetmate-ai/api/index.ts b/packages/app-store/greetmate-ai/api/index.ts deleted file mode 100644 index 4c0d2ead01..0000000000 --- a/packages/app-store/greetmate-ai/api/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as add } from "./add"; diff --git a/packages/app-store/greetmate-ai/components/.gitkeep b/packages/app-store/greetmate-ai/components/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/app-store/greetmate-ai/config.json b/packages/app-store/greetmate-ai/config.json index bf4e1572b9..1bf3228757 100644 --- a/packages/app-store/greetmate-ai/config.json +++ b/packages/app-store/greetmate-ai/config.json @@ -6,11 +6,17 @@ "logo": "icon-dark.svg", "url": "https://www.greetmate.ai", "variant": "automation", - "categories": ["automation"], + "categories": [ + "automation" + ], "publisher": "Greetmate Inc.", "email": "support@greetmate.ai", "description": "Connect [Cal.com](https://cal.com/) to [Greetmate.ai](https://www.greetmate.ai/) and enable appointment scheduling for your AI agents.", "isTemplate": false, "__createdUsingCli": true, - "__template": "link-as-an-app" + "__template": "link-as-an-app", + "externalLink": { + "url": "https://www.greetmate.com/dashboard", + "newTab": true + } } diff --git a/packages/app-store/greetmate-ai/index.ts b/packages/app-store/greetmate-ai/index.ts deleted file mode 100644 index d7f3602204..0000000000 --- a/packages/app-store/greetmate-ai/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * as api from "./api"; diff --git a/packages/app-store/greetmate-ai/package.json b/packages/app-store/greetmate-ai/package.json deleted file mode 100644 index 9f77c9b516..0000000000 --- a/packages/app-store/greetmate-ai/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/package.json", - "private": true, - "name": "@calcom/greetmate-ai", - "version": "0.0.0", - "main": "./index.ts", - "dependencies": { - "@calcom/lib": "workspace:*" - }, - "devDependencies": { - "@calcom/types": "workspace:*" - }, - "description": "Connect Cal.com to Greetmate.ai and enable appointment scheduling for your AI agents." -} diff --git a/packages/app-store/lindy/api/add.ts b/packages/app-store/lindy/api/add.ts deleted file mode 100644 index e136fc3457..0000000000 --- a/packages/app-store/lindy/api/add.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { createDefaultInstallation } from "@calcom/app-store/_utils/installation"; -import type { AppDeclarativeHandler } from "@calcom/types/AppHandler"; - -import appConfig from "../config.json"; - -const handler: AppDeclarativeHandler = { - appType: appConfig.type, - variant: appConfig.variant, - slug: appConfig.slug, - supportsMultipleInstalls: false, - handlerType: "add", - redirect: { - newTab: true, - url: "https://www.lindy.ai/integrations/cal-com", - }, - createCredential: ({ appType, user, slug, teamId }) => - createDefaultInstallation({ appType, user: user, slug, key: {}, teamId }), -}; - -export default handler; diff --git a/packages/app-store/lindy/api/index.ts b/packages/app-store/lindy/api/index.ts deleted file mode 100644 index 4c0d2ead01..0000000000 --- a/packages/app-store/lindy/api/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as add } from "./add"; diff --git a/packages/app-store/lindy/components/.gitkeep b/packages/app-store/lindy/components/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/app-store/lindy/config.json b/packages/app-store/lindy/config.json index ab014dcf77..0234b6836a 100644 --- a/packages/app-store/lindy/config.json +++ b/packages/app-store/lindy/config.json @@ -6,11 +6,17 @@ "logo": "icon-dark.svg", "url": "https://www.lindy.ai/integrations/cal-com", "variant": "automation", - "categories": ["automation"], + "categories": [ + "automation" + ], "publisher": "Lindy", "email": "flo@lindy.ai", "description": "Build AI agents in minutes to automate workflows, save time and grow your business", "isTemplate": false, "__createdUsingCli": true, - "__template": "link-as-an-app" + "__template": "link-as-an-app", + "externalLink": { + "url": "https://www.lindy.ai/integrations/cal-com", + "newTab": true + } } diff --git a/packages/app-store/lindy/index.ts b/packages/app-store/lindy/index.ts deleted file mode 100644 index d7f3602204..0000000000 --- a/packages/app-store/lindy/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * as api from "./api"; diff --git a/packages/app-store/lindy/package.json b/packages/app-store/lindy/package.json deleted file mode 100644 index 5253b34a64..0000000000 --- a/packages/app-store/lindy/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/package.json", - "private": true, - "name": "@calcom/lindy", - "version": "0.0.0", - "main": "./index.ts", - "dependencies": { - "@calcom/lib": "workspace:*" - }, - "devDependencies": { - "@calcom/types": "workspace:*" - }, - "description": "Build AI agents in minutes to automate workflows, save time and grow your business" -} diff --git a/packages/app-store/linear/config.json b/packages/app-store/linear/config.json index 4f0bbe72e3..d01cbfb774 100644 --- a/packages/app-store/linear/config.json +++ b/packages/app-store/linear/config.json @@ -13,5 +13,9 @@ "isTemplate": false, "__createdUsingCli": true, "dependencies": ["google-calendar"], - "__template": "link-as-an-app" + "__template": "link-as-an-app", + "externalLink": { + "url": "https://linear.app/settings/integrations/google-calendar", + "newTab": true + } } diff --git a/packages/app-store/millis-ai/api/add.ts b/packages/app-store/millis-ai/api/add.ts deleted file mode 100644 index 12c2d6dc00..0000000000 --- a/packages/app-store/millis-ai/api/add.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { createDefaultInstallation } from "@calcom/app-store/_utils/installation"; -import type { AppDeclarativeHandler } from "@calcom/types/AppHandler"; - -import appConfig from "../config.json"; - -const handler: AppDeclarativeHandler = { - appType: appConfig.type, - variant: appConfig.variant, - slug: appConfig.slug, - supportsMultipleInstalls: false, - handlerType: "add", - redirect: { - newTab: true, - url: "https://www.millis.ai/integrations/cal-com", - }, - createCredential: ({ appType, user, slug, teamId }) => - createDefaultInstallation({ appType, user: user, slug, key: {}, teamId }), -}; - -export default handler; diff --git a/packages/app-store/millis-ai/api/index.ts b/packages/app-store/millis-ai/api/index.ts deleted file mode 100644 index 4c0d2ead01..0000000000 --- a/packages/app-store/millis-ai/api/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as add } from "./add"; diff --git a/packages/app-store/millis-ai/components/.gitkeep b/packages/app-store/millis-ai/components/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/app-store/millis-ai/config.json b/packages/app-store/millis-ai/config.json index 0a1e40c0a1..798218ce83 100644 --- a/packages/app-store/millis-ai/config.json +++ b/packages/app-store/millis-ai/config.json @@ -6,11 +6,17 @@ "logo": "icon.png", "url": "https://docs.millis.ai/tutorials/create-voice-agent-for-appointment-scheduling", "variant": "automation", - "categories": ["automation"], + "categories": [ + "automation" + ], "publisher": "Millis AI", "email": "thach@millis.ai", "description": "Build next-gen voice agents with 500ms latency\r", "isTemplate": false, "__createdUsingCli": true, - "__template": "link-as-an-app" + "__template": "link-as-an-app", + "externalLink": { + "url": "https://www.millis.ai/integrations/cal-com", + "newTab": true + } } diff --git a/packages/app-store/millis-ai/index.ts b/packages/app-store/millis-ai/index.ts deleted file mode 100644 index d7f3602204..0000000000 --- a/packages/app-store/millis-ai/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * as api from "./api"; diff --git a/packages/app-store/millis-ai/package.json b/packages/app-store/millis-ai/package.json deleted file mode 100644 index 141961438f..0000000000 --- a/packages/app-store/millis-ai/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/package.json", - "private": true, - "name": "@calcom/millis-ai", - "version": "0.0.0", - "main": "./index.ts", - "dependencies": { - "@calcom/lib": "workspace:*" - }, - "devDependencies": { - "@calcom/types": "workspace:*" - }, - "description": "Build next-gen voice agents with 500ms latency\r" -} diff --git a/packages/app-store/monobot/api/add.ts b/packages/app-store/monobot/api/add.ts deleted file mode 100644 index 1ecc4e2913..0000000000 --- a/packages/app-store/monobot/api/add.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { createDefaultInstallation } from "@calcom/app-store/_utils/installation"; -import type { AppDeclarativeHandler } from "@calcom/types/AppHandler"; - -import appConfig from "../config.json"; - -const handler: AppDeclarativeHandler = { - appType: appConfig.type, - variant: appConfig.variant, - slug: appConfig.slug, - supportsMultipleInstalls: false, - handlerType: "add", - redirect: { - newTab: true, - url: "https://monobot.ai/?ref=cal.com", - }, - createCredential: ({ appType, user, slug, teamId }) => - createDefaultInstallation({ appType, user: user, slug, key: {}, teamId }), -}; - -export default handler; diff --git a/packages/app-store/monobot/api/index.ts b/packages/app-store/monobot/api/index.ts deleted file mode 100644 index 4c0d2ead01..0000000000 --- a/packages/app-store/monobot/api/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as add } from "./add"; diff --git a/packages/app-store/monobot/components/.gitkeep b/packages/app-store/monobot/components/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/app-store/monobot/config.json b/packages/app-store/monobot/config.json index 886f7f3ecd..3d706fd2de 100644 --- a/packages/app-store/monobot/config.json +++ b/packages/app-store/monobot/config.json @@ -6,11 +6,17 @@ "logo": "icon.svg", "url": "https://monobot.ai/?ref=cal.com", "variant": "automation", - "categories": ["automation"], + "categories": [ + "automation" + ], "publisher": "Monobot CX", "email": "contact@monobot.ai", "description": "Crafting your personalized AI-driven assistant is easy and fast.", "isTemplate": false, "__createdUsingCli": true, - "__template": "link-as-an-app" + "__template": "link-as-an-app", + "externalLink": { + "url": "https://monobot.ai/?ref=cal.com", + "newTab": true + } } diff --git a/packages/app-store/monobot/index.ts b/packages/app-store/monobot/index.ts deleted file mode 100644 index d7f3602204..0000000000 --- a/packages/app-store/monobot/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * as api from "./api"; diff --git a/packages/app-store/monobot/package.json b/packages/app-store/monobot/package.json deleted file mode 100644 index a047926d63..0000000000 --- a/packages/app-store/monobot/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/package.json", - "private": true, - "name": "@calcom/monobot", - "version": "0.0.0", - "main": "./index.ts", - "dependencies": { - "@calcom/lib": "workspace:*" - }, - "devDependencies": { - "@calcom/types": "workspace:*" - }, - "description": "Crafting your personalized AI-driven assistant is easy and fast." -} diff --git a/packages/app-store/n8n/api/add.ts b/packages/app-store/n8n/api/add.ts deleted file mode 100644 index 02ba726e46..0000000000 --- a/packages/app-store/n8n/api/add.ts +++ /dev/null @@ -1,20 +0,0 @@ -import type { AppDeclarativeHandler } from "@calcom/types/AppHandler"; - -import { createDefaultInstallation } from "../../_utils/installation"; -import appConfig from "../config.json"; - -const handler: AppDeclarativeHandler = { - appType: appConfig.type, - variant: appConfig.variant, - slug: appConfig.slug, - supportsMultipleInstalls: false, - handlerType: "add", - redirect: { - url: "https://n8n.io/integrations/cal-trigger/", - newTab: true, - }, - createCredential: ({ appType, user, slug, teamId }) => - createDefaultInstallation({ appType, user: user, slug, key: {}, teamId }), -}; - -export default handler; diff --git a/packages/app-store/n8n/api/index.ts b/packages/app-store/n8n/api/index.ts deleted file mode 100644 index 4c0d2ead01..0000000000 --- a/packages/app-store/n8n/api/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as add } from "./add"; diff --git a/packages/app-store/n8n/components/.gitkeep b/packages/app-store/n8n/components/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/app-store/n8n/config.json b/packages/app-store/n8n/config.json index 2770acacc5..3a427d4d2c 100644 --- a/packages/app-store/n8n/config.json +++ b/packages/app-store/n8n/config.json @@ -6,10 +6,16 @@ "logo": "icon.svg", "url": "https://cal.com/", "variant": "automation", - "categories": ["automation"], + "categories": [ + "automation" + ], "publisher": "Cal.com, Inc.", "email": "help@cal.com", "description": "Automate without limits. The workflow automation platform that doesn't box you in, that you never outgrow", "__createdUsingCli": true, - "isOAuth": false + "isOAuth": false, + "externalLink": { + "url": "https://n8n.io/integrations/cal-trigger/", + "newTab": true + } } diff --git a/packages/app-store/n8n/index.ts b/packages/app-store/n8n/index.ts deleted file mode 100644 index d7f3602204..0000000000 --- a/packages/app-store/n8n/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * as api from "./api"; diff --git a/packages/app-store/n8n/package.json b/packages/app-store/n8n/package.json deleted file mode 100644 index ee64d590b1..0000000000 --- a/packages/app-store/n8n/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/package.json", - "private": true, - "name": "@calcom/n8n", - "version": "0.0.0", - "main": "./index.ts", - "description": "Automate without limits. The workflow automation platform that doesn't box you in, that you never outgrow", - "dependencies": { - "@calcom/lib": "workspace:*" - }, - "devDependencies": { - "@calcom/types": "workspace:*" - } -} diff --git a/packages/app-store/pipedream/api/add.ts b/packages/app-store/pipedream/api/add.ts deleted file mode 100644 index e2a8b001f9..0000000000 --- a/packages/app-store/pipedream/api/add.ts +++ /dev/null @@ -1,20 +0,0 @@ -import type { AppDeclarativeHandler } from "@calcom/types/AppHandler"; - -import { createDefaultInstallation } from "../../_utils/installation"; -import appConfig from "../config.json"; - -const handler: AppDeclarativeHandler = { - appType: appConfig.type, - variant: appConfig.variant, - slug: appConfig.slug, - supportsMultipleInstalls: false, - handlerType: "add", - redirect: { - newTab: true, - url: "https://pipedream.com/apps/cal-com", - }, - createCredential: ({ appType, user, slug, teamId }) => - createDefaultInstallation({ appType, user: user, slug, key: {}, teamId }), -}; - -export default handler; diff --git a/packages/app-store/pipedream/api/index.ts b/packages/app-store/pipedream/api/index.ts deleted file mode 100644 index 4c0d2ead01..0000000000 --- a/packages/app-store/pipedream/api/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as add } from "./add"; diff --git a/packages/app-store/pipedream/components/.gitkeep b/packages/app-store/pipedream/components/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/app-store/pipedream/config.json b/packages/app-store/pipedream/config.json index 7812bad8df..79b5076637 100644 --- a/packages/app-store/pipedream/config.json +++ b/packages/app-store/pipedream/config.json @@ -6,10 +6,16 @@ "logo": "icon.svg", "url": "https://pipedream.com/apps/cal-com", "variant": "automation", - "categories": ["automation"], + "categories": [ + "automation" + ], "publisher": "Pipedream, Inc.", "email": "support@pipedream.com", "description": "Connect APIs, remarkably fast. Stop writing boilerplate code, struggling with authentication and managing infrastructure. Start connecting APIs with code-level control when you need it — and no code when you don't", "__createdUsingCli": true, - "isOAuth": false + "isOAuth": false, + "externalLink": { + "url": "https://pipedream.com/apps/cal-com", + "newTab": true + } } diff --git a/packages/app-store/pipedream/index.ts b/packages/app-store/pipedream/index.ts deleted file mode 100644 index d7f3602204..0000000000 --- a/packages/app-store/pipedream/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * as api from "./api"; diff --git a/packages/app-store/pipedream/package.json b/packages/app-store/pipedream/package.json deleted file mode 100644 index 6a9d2480d9..0000000000 --- a/packages/app-store/pipedream/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/package.json", - "private": true, - "name": "@calcom/pipedream", - "version": "0.0.0", - "main": "./index.ts", - "description": "Connect APIs, remarkably fast. Stop writing boilerplate code, struggling with authentication and managing infrastructure. Start connecting APIs with code-level control when you need it — and no code when you don't", - "dependencies": { - "@calcom/lib": "workspace:*" - }, - "devDependencies": { - "@calcom/types": "workspace:*" - } -} diff --git a/packages/app-store/raycast/api/add.ts b/packages/app-store/raycast/api/add.ts deleted file mode 100644 index 474e159c13..0000000000 --- a/packages/app-store/raycast/api/add.ts +++ /dev/null @@ -1,19 +0,0 @@ -import type { AppDeclarativeHandler } from "@calcom/types/AppHandler"; - -import { createDefaultInstallation } from "../../_utils/installation"; -import appConfig from "../config.json"; - -const handler: AppDeclarativeHandler = { - appType: appConfig.type, - slug: appConfig.slug, - variant: appConfig.variant, - supportsMultipleInstalls: false, - handlerType: "add", - redirect: { - url: "raycast://extensions/eluce2/cal-com-share-meeting-links?source=webstore", - }, - createCredential: ({ appType, user, slug, teamId }) => - createDefaultInstallation({ appType, user: user, slug, key: {}, teamId }), -}; - -export default handler; diff --git a/packages/app-store/raycast/api/index.ts b/packages/app-store/raycast/api/index.ts deleted file mode 100644 index 4c0d2ead01..0000000000 --- a/packages/app-store/raycast/api/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as add } from "./add"; diff --git a/packages/app-store/raycast/components/.gitkeep b/packages/app-store/raycast/components/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/app-store/raycast/config.json b/packages/app-store/raycast/config.json index 3cc1c5be8d..783fe80709 100644 --- a/packages/app-store/raycast/config.json +++ b/packages/app-store/raycast/config.json @@ -6,10 +6,16 @@ "logo": "icon.svg", "url": "https://github.com/eluce2", "variant": "other", - "categories": ["automation"], + "categories": [ + "automation" + ], "publisher": "Eric Luce", "email": "info@restlessmindstech.com", "description": "Quickly share your [Cal.com](https://cal.com) meeting links with Raycast", "__createdUsingCli": true, - "isOAuth": false + "isOAuth": false, + "externalLink": { + "url": "raycast://extensions/eluce2/cal-com-share-meeting-links?source=webstore", + "newTab": true + } } diff --git a/packages/app-store/raycast/index.ts b/packages/app-store/raycast/index.ts deleted file mode 100644 index d7f3602204..0000000000 --- a/packages/app-store/raycast/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * as api from "./api"; diff --git a/packages/app-store/raycast/package.json b/packages/app-store/raycast/package.json deleted file mode 100644 index 335ffb6d45..0000000000 --- a/packages/app-store/raycast/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/package.json", - "private": true, - "name": "@calcom/raycast", - "version": "0.0.0", - "main": "./index.ts", - "description": "Quickly share your Cal.com meeting links with Raycast", - "dependencies": { - "@calcom/lib": "workspace:*" - }, - "devDependencies": { - "@calcom/types": "workspace:*" - } -} diff --git a/packages/app-store/redirect-apps.generated.ts b/packages/app-store/redirect-apps.generated.ts new file mode 100644 index 0000000000..3e9009189f --- /dev/null +++ b/packages/app-store/redirect-apps.generated.ts @@ -0,0 +1,33 @@ +/** + This file is autogenerated using the command `yarn app-store:build --watch`. + Don't modify this file manually. +**/ +export const REDIRECT_APPS = [ + "amie", + "autocheckin", + "baa-for-hipaa", + "bolna", + "chatbase", + "clic", + "cron", + "deel", + "elevenlabs", + "fonio-ai", + "framer", + "granola", + "greetmate-ai", + "lindy", + "linear", + "millis-ai", + "monobot", + "n8n", + "pipedream", + "raycast", + "retell-ai", + "synthflow", + "telli", + "vimcal", + "wordpress", + "zapier", +] as const; +export type RedirectApp = (typeof REDIRECT_APPS)[number]; diff --git a/packages/app-store/retell-ai/api/add.ts b/packages/app-store/retell-ai/api/add.ts deleted file mode 100644 index 6babf0df01..0000000000 --- a/packages/app-store/retell-ai/api/add.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { createDefaultInstallation } from "@calcom/app-store/_utils/installation"; -import type { AppDeclarativeHandler } from "@calcom/types/AppHandler"; - -import appConfig from "../config.json"; - -const handler: AppDeclarativeHandler = { - appType: appConfig.type, - variant: appConfig.variant, - slug: appConfig.slug, - supportsMultipleInstalls: false, - handlerType: "add", - redirect: { - newTab: true, - url: "https://go.cal.com/retellai", - }, - createCredential: ({ appType, user, slug, teamId }) => - createDefaultInstallation({ appType, user: user, slug, key: {}, teamId }), -}; - -export default handler; diff --git a/packages/app-store/retell-ai/api/index.ts b/packages/app-store/retell-ai/api/index.ts deleted file mode 100644 index 4c0d2ead01..0000000000 --- a/packages/app-store/retell-ai/api/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as add } from "./add"; diff --git a/packages/app-store/retell-ai/components/.gitkeep b/packages/app-store/retell-ai/components/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/app-store/retell-ai/config.json b/packages/app-store/retell-ai/config.json index 1f9300e1a7..5aabbcfebc 100644 --- a/packages/app-store/retell-ai/config.json +++ b/packages/app-store/retell-ai/config.json @@ -6,11 +6,17 @@ "logo": "icon-dark.svg", "url": "https://go.cal.com/retellai", "variant": "automation", - "categories": ["automation"], + "categories": [ + "automation" + ], "publisher": "Retell AI", "email": "founders@retellai.com", "description": "Supercharge your Call Operations with AI \r", "isTemplate": false, "__createdUsingCli": true, - "__template": "link-as-an-app" + "__template": "link-as-an-app", + "externalLink": { + "url": "https://go.cal.com/retellai", + "newTab": true + } } diff --git a/packages/app-store/retell-ai/index.ts b/packages/app-store/retell-ai/index.ts deleted file mode 100644 index d7f3602204..0000000000 --- a/packages/app-store/retell-ai/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * as api from "./api"; diff --git a/packages/app-store/retell-ai/package.json b/packages/app-store/retell-ai/package.json deleted file mode 100644 index 841847b8e5..0000000000 --- a/packages/app-store/retell-ai/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/package.json", - "private": true, - "name": "@calcom/retell-ai", - "version": "0.0.0", - "main": "./index.ts", - "dependencies": { - "@calcom/lib": "workspace:*" - }, - "devDependencies": { - "@calcom/types": "workspace:*" - }, - "description": "Supercharge your Call Operations with AI \r" -} diff --git a/packages/app-store/synthflow/api/add.ts b/packages/app-store/synthflow/api/add.ts deleted file mode 100644 index 5e0e7a40a9..0000000000 --- a/packages/app-store/synthflow/api/add.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { createDefaultInstallation } from "@calcom/app-store/_utils/installation"; -import type { AppDeclarativeHandler } from "@calcom/types/AppHandler"; - -import appConfig from "../config.json"; - -const handler: AppDeclarativeHandler = { - appType: appConfig.type, - variant: appConfig.variant, - slug: appConfig.slug, - supportsMultipleInstalls: false, - handlerType: "add", - redirect: { - newTab: true, - url: "https://fine-tuner.ai/auth/calcom", - }, - createCredential: ({ appType, user, slug, teamId }) => - createDefaultInstallation({ appType, user: user, slug, key: {}, teamId }), -}; - -export default handler; diff --git a/packages/app-store/synthflow/api/index.ts b/packages/app-store/synthflow/api/index.ts deleted file mode 100644 index 4c0d2ead01..0000000000 --- a/packages/app-store/synthflow/api/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as add } from "./add"; diff --git a/packages/app-store/synthflow/components/.gitkeep b/packages/app-store/synthflow/components/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/app-store/synthflow/config.json b/packages/app-store/synthflow/config.json index 9fd01685d4..e8d74aad28 100644 --- a/packages/app-store/synthflow/config.json +++ b/packages/app-store/synthflow/config.json @@ -6,11 +6,17 @@ "logo": "icon.svg", "url": "https://synthflow.ai/integrations/calcom", "variant": "automation", - "categories": ["automation"], + "categories": [ + "automation" + ], "publisher": "Synthflow.ai", "email": "albert@synthflow.ai", "description": "Effortless Human-Like AI Phone Calls and Scheduling", "isTemplate": false, "__createdUsingCli": true, - "__template": "link-as-an-app" + "__template": "link-as-an-app", + "externalLink": { + "url": "https://fine-tuner.ai/auth/calcom", + "newTab": true + } } diff --git a/packages/app-store/synthflow/index.ts b/packages/app-store/synthflow/index.ts deleted file mode 100644 index d7f3602204..0000000000 --- a/packages/app-store/synthflow/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * as api from "./api"; diff --git a/packages/app-store/synthflow/package.json b/packages/app-store/synthflow/package.json deleted file mode 100644 index 1e77412f1f..0000000000 --- a/packages/app-store/synthflow/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/package.json", - "private": true, - "name": "@calcom/synthflow", - "version": "0.0.0", - "main": "./index.ts", - "dependencies": { - "@calcom/lib": "workspace:*" - }, - "devDependencies": { - "@calcom/types": "workspace:*" - }, - "description": "Effortless Human-Like AI Phone Calls and Scheduling" -} diff --git a/packages/app-store/telli/api/add.ts b/packages/app-store/telli/api/add.ts deleted file mode 100644 index 49492d81f1..0000000000 --- a/packages/app-store/telli/api/add.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { createDefaultInstallation } from "@calcom/app-store/_utils/installation"; -import type { AppDeclarativeHandler } from "@calcom/types/AppHandler"; - -import appConfig from "../config.json"; - -const handler: AppDeclarativeHandler = { - appType: appConfig.type, - variant: appConfig.variant, - slug: appConfig.slug, - supportsMultipleInstalls: false, - handlerType: "add", - redirect: { - newTab: true, - url: "https://www.telli.com/en/caldotcom", - }, - createCredential: ({ appType, user, slug, teamId }) => - createDefaultInstallation({ appType, user: user, slug, key: {}, teamId }), -}; - -export default handler; diff --git a/packages/app-store/telli/api/index.ts b/packages/app-store/telli/api/index.ts deleted file mode 100644 index 4c0d2ead01..0000000000 --- a/packages/app-store/telli/api/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as add } from "./add"; diff --git a/packages/app-store/telli/components/.gitkeep b/packages/app-store/telli/components/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/app-store/telli/config.json b/packages/app-store/telli/config.json index 6bd98e4c45..8b733ceaa0 100644 --- a/packages/app-store/telli/config.json +++ b/packages/app-store/telli/config.json @@ -4,7 +4,7 @@ "slug": "telli", "type": "telli_automation", "logo": "icon-dark.svg", - "url": "https://www.telli.com/en/caldotcom", + "url": "https://app.telli.com/", "variant": "automation", "categories": ["automation"], "publisher": "telli technologies GmbH", @@ -12,5 +12,9 @@ "description": "telli AI agents reach your customers, make calls independently & enhance your customer experience - fully integrated into [Cal.com](https://cal.com).", "isTemplate": false, "__createdUsingCli": true, - "__template": "link-as-an-app" + "__template": "link-as-an-app", + "externalLink": { + "url": "https://app.telli.com/", + "newTab": true + } } diff --git a/packages/app-store/telli/index.ts b/packages/app-store/telli/index.ts deleted file mode 100644 index d7f3602204..0000000000 --- a/packages/app-store/telli/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * as api from "./api"; diff --git a/packages/app-store/telli/package.json b/packages/app-store/telli/package.json deleted file mode 100644 index 89dd6be56c..0000000000 --- a/packages/app-store/telli/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/package.json", - "private": true, - "name": "@calcom/telli", - "version": "0.0.0", - "main": "./index.ts", - "dependencies": { - "@calcom/lib": "workspace:*" - }, - "devDependencies": { - "@calcom/types": "workspace:*" - }, - "description": "telli AI agents reach your customers, make calls independently & enhance your customer experience - fully integrated into Cal.com." -} diff --git a/packages/app-store/templates/link-as-an-app/api/add.ts b/packages/app-store/templates/link-as-an-app/api/add.ts deleted file mode 100644 index 54d3b8c0c5..0000000000 --- a/packages/app-store/templates/link-as-an-app/api/add.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { createDefaultInstallation } from "@calcom/app-store/_utils/installation"; -import type { AppDeclarativeHandler } from "@calcom/types/AppHandler"; - -import appConfig from "../config.json"; - -const handler: AppDeclarativeHandler = { - appType: appConfig.type, - variant: appConfig.variant, - slug: appConfig.slug, - supportsMultipleInstalls: false, - handlerType: "add", - redirect: { - newTab: true, - url: "https://example.com/link", - }, - createCredential: ({ appType, user, slug, teamId }) => - createDefaultInstallation({ appType, user: user, slug, key: {}, teamId }), -}; - -export default handler; diff --git a/packages/app-store/templates/link-as-an-app/api/index.ts b/packages/app-store/templates/link-as-an-app/api/index.ts deleted file mode 100644 index 4c0d2ead01..0000000000 --- a/packages/app-store/templates/link-as-an-app/api/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as add } from "./add"; diff --git a/packages/app-store/templates/link-as-an-app/components/.gitkeep b/packages/app-store/templates/link-as-an-app/components/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/app-store/templates/link-as-an-app/config.json b/packages/app-store/templates/link-as-an-app/config.json index 86472367b8..86dd3841c6 100644 --- a/packages/app-store/templates/link-as-an-app/config.json +++ b/packages/app-store/templates/link-as-an-app/config.json @@ -11,5 +11,9 @@ "email": "support@cal.com", "description": "It's a template showing how an app, that is just a link to some webpage, can be made e.g. Pipedream, Amie, Vimcal.", "isTemplate": true, - "__createdUsingCli": true + "__createdUsingCli": true, + "externalLink": { + "url": "https://example.com/link", + "newTab": true + } } diff --git a/packages/app-store/templates/link-as-an-app/index.ts b/packages/app-store/templates/link-as-an-app/index.ts deleted file mode 100644 index d7f3602204..0000000000 --- a/packages/app-store/templates/link-as-an-app/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * as api from "./api"; diff --git a/packages/app-store/templates/link-as-an-app/package.json b/packages/app-store/templates/link-as-an-app/package.json deleted file mode 100644 index da6c946e60..0000000000 --- a/packages/app-store/templates/link-as-an-app/package.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/package.json", - "private": true, - "name": "@calcom/link-as-an-app", - "version": "0.0.0", - "main": "./index.ts", - "dependencies": { - "@calcom/lib": "workspace:*" - }, - "devDependencies": { - "@calcom/types": "workspace:*" - } -} diff --git a/packages/app-store/vimcal/api/add.ts b/packages/app-store/vimcal/api/add.ts deleted file mode 100644 index 7d5363dcab..0000000000 --- a/packages/app-store/vimcal/api/add.ts +++ /dev/null @@ -1,20 +0,0 @@ -import type { AppDeclarativeHandler } from "@calcom/types/AppHandler"; - -import { createDefaultInstallation } from "../../_utils/installation"; -import appConfig from "../config.json"; - -const handler: AppDeclarativeHandler = { - appType: appConfig.type, - variant: appConfig.variant, - slug: appConfig.slug, - supportsMultipleInstalls: false, - handlerType: "add", - redirect: { - newTab: true, - url: "https://cal.com/blog/cal-plus-vimcal", - }, - createCredential: ({ appType, user, slug, teamId }) => - createDefaultInstallation({ appType, user: user, slug, key: {}, teamId }), -}; - -export default handler; diff --git a/packages/app-store/vimcal/api/index.ts b/packages/app-store/vimcal/api/index.ts deleted file mode 100644 index 4c0d2ead01..0000000000 --- a/packages/app-store/vimcal/api/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as add } from "./add"; diff --git a/packages/app-store/vimcal/components/.gitkeep b/packages/app-store/vimcal/components/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/app-store/vimcal/config.json b/packages/app-store/vimcal/config.json index 4baeb62de9..a8ded44c59 100644 --- a/packages/app-store/vimcal/config.json +++ b/packages/app-store/vimcal/config.json @@ -6,11 +6,19 @@ "logo": "icon.svg", "url": "https://cal.com/", "variant": "other", - "categories": ["calendar"], + "categories": [ + "calendar" + ], "publisher": "Cal.com, Inc.", "email": "support@cal.com", "description": "The world's fastest calendar, beautifully designed for a remote world\r", "__createdUsingCli": true, - "dependencies": ["google-calendar"], - "isOAuth": false + "dependencies": [ + "google-calendar" + ], + "isOAuth": false, + "externalLink": { + "url": "https://cal.com/blog/cal-plus-vimcal", + "newTab": true + } } diff --git a/packages/app-store/vimcal/index.ts b/packages/app-store/vimcal/index.ts deleted file mode 100644 index d7f3602204..0000000000 --- a/packages/app-store/vimcal/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * as api from "./api"; diff --git a/packages/app-store/vimcal/package.json b/packages/app-store/vimcal/package.json deleted file mode 100644 index 10c69e2c5e..0000000000 --- a/packages/app-store/vimcal/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/package.json", - "private": true, - "name": "@calcom/vimcal", - "version": "0.0.0", - "main": "./index.ts", - "description": "The world's fastest calendar, beautifully designed for a remote world\r", - "dependencies": { - "@calcom/lib": "workspace:*" - }, - "devDependencies": { - "@calcom/types": "workspace:*" - } -} diff --git a/packages/app-store/wordpress/api/add.ts b/packages/app-store/wordpress/api/add.ts deleted file mode 100644 index cafd9e577e..0000000000 --- a/packages/app-store/wordpress/api/add.ts +++ /dev/null @@ -1,20 +0,0 @@ -import type { AppDeclarativeHandler } from "@calcom/types/AppHandler"; - -import { createDefaultInstallation } from "../../_utils/installation"; -import appConfig from "../config.json"; - -const handler: AppDeclarativeHandler = { - appType: appConfig.type, - variant: appConfig.variant, - slug: appConfig.slug, - supportsMultipleInstalls: false, - handlerType: "add", - redirect: { - newTab: true, - url: "https://wordpress.org/plugins/cal-com/", - }, - createCredential: ({ appType, user, slug, teamId }) => - createDefaultInstallation({ appType, user: user, slug, key: {}, teamId }), -}; - -export default handler; diff --git a/packages/app-store/wordpress/api/index.ts b/packages/app-store/wordpress/api/index.ts deleted file mode 100644 index 4c0d2ead01..0000000000 --- a/packages/app-store/wordpress/api/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as add } from "./add"; diff --git a/packages/app-store/wordpress/components/.gitkeep b/packages/app-store/wordpress/components/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/app-store/wordpress/config.json b/packages/app-store/wordpress/config.json index c29179fedf..aacfa927c1 100644 --- a/packages/app-store/wordpress/config.json +++ b/packages/app-store/wordpress/config.json @@ -4,12 +4,16 @@ "slug": "wordpress", "type": "wordpress_other", "logo": "icon-dark.svg", - "url": "https://github.com/calcom/wp-plugin", + "url": "https://wordpress.org/plugins/cal-com/", "variant": "other", "categories": ["other"], "publisher": "Cal.com, Inc.", "email": "support@cal.com", "description": "Embedded booking pages right into your wordpress page", "__createdUsingCli": true, - "isAuth": false + "isAuth": false, + "externalLink": { + "url": "https://wordpress.org/plugins/cal-com/", + "newTab": true + } } diff --git a/packages/app-store/wordpress/index.ts b/packages/app-store/wordpress/index.ts deleted file mode 100644 index d7f3602204..0000000000 --- a/packages/app-store/wordpress/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * as api from "./api"; diff --git a/packages/app-store/wordpress/package.json b/packages/app-store/wordpress/package.json deleted file mode 100644 index 283756194c..0000000000 --- a/packages/app-store/wordpress/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/package.json", - "private": true, - "name": "@calcom/wordpress", - "version": "0.0.0", - "main": "./index.ts", - "description": "Embedded booking pages right into your wordpress page", - "dependencies": { - "@calcom/lib": "workspace:*" - }, - "devDependencies": { - "@calcom/types": "workspace:*" - } -} diff --git a/packages/app-store/zapier/config.json b/packages/app-store/zapier/config.json index aa971b02d9..783b328edd 100644 --- a/packages/app-store/zapier/config.json +++ b/packages/app-store/zapier/config.json @@ -12,5 +12,9 @@ "description": "Workflow automation for everyone. Use the Cal.com Zapier app to automate your workflows when a booking is created, rescheduled, cancelled or when a meeting ends.", "isTemplate": false, "__createdUsingCli": true, - "__template": "link-as-an-app" + "__template": "link-as-an-app", + "externalLink": { + "url": "https://zapier.com/apps/calcom/integrations", + "newTab": true + } } diff --git a/packages/types/AppMetaSchema.ts b/packages/types/AppMetaSchema.ts index f6d391e8f3..00628b3229 100644 --- a/packages/types/AppMetaSchema.ts +++ b/packages/types/AppMetaSchema.ts @@ -112,6 +112,12 @@ export const AppMetaSchema = z imageSrc: z.string().optional(), label: z.string().optional(), linkType: z.string().optional(), + externalLink: z + .object({ + url: z.string(), + newTab: z.boolean().optional(), + }) + .optional(), }) .passthrough();