function pick(objectInput: T, ...keys: K[]): Pick { const objectOutput: any = {}; keys.forEach((key) => { objectOutput[key] = objectInput[key]; }); return objectOutput; } export const devPlanIds = { startup: "plan_Fe8BzLp7k71eGD", business: "plan_Fe8CUkZfXasFtB", essential: "plan_FpljxNuZtNFFbm", growth: "plan_FplOshrr1w3Mvu", essential_new: "plan_GYXmTA3EdfCv4q", professional: "plan_GYXoIkvwVKyfF2", cli_founder: "plan_Gq0FzdmoTJshQL", cli_founder_30: "plan_GsL7NZskOY0TC9", cli_founder_50: "plan_GsL6VYAshfh7c4", enterprise: "price_1H2v6JIewCKA2h0IgUwsuctb", }; export const prodPlanIds = { startup: "plan_FdmDAUN7JGD8pR", business: "plan_FdmE8akq9ukxiY", essential: "plan_FohJzCujA6vvt4", growth: "plan_FohKGuWis5ocsi", essential_new: "plan_GYXn2cnPl5dy7j", professional: "plan_GYXoKsa2j0yURg", cli_founder: "plan_GpzWZLfsOzjrvI", cli_founder_30: "plan_GsL1IRUwpj5CIF", cli_founder_50: "plan_GsL1IRUwpj5CIF", enterprise: "plan_GuGICX6nRtDthN", }; export type PlanIds = typeof prodPlanIds; export const getPlanEnvironment = (stage: "dev" | "prod") => stage === "prod" ? prodPlanIds : devPlanIds; export const getEssentialPlanIds = (stage: "dev" | "prod") => { const planIds = getPlanEnvironment(stage); return pick(planIds, "startup", "essential", "essential_new"); }; export const getCLIPlanIds = (stage: "dev" | "prod") => { const planIds = getPlanEnvironment(stage); return pick(planIds, "cli_founder", "cli_founder_30", "cli_founder_50"); }; export const getProfessionalPlanIds = (stage: "dev" | "prod") => { const planIds = getPlanEnvironment(stage); return pick( planIds, "business", "growth", "professional", "cli_founder", "cli_founder_30", "cli_founder_50" ); }; export const getEnterprisePlanIds = (stage: "dev" | "prod") => { const planIds = getPlanEnvironment(stage); return pick(planIds, "enterprise"); };