import { AWS_REGIONS, FLY_REGIONS } from 'shared-data' import type { components } from '@/data/api' import { useCustomContent } from '@/hooks/custom-content/useCustomContent' export const AWS_REGIONS_DEFAULT = process.env.NEXT_PUBLIC_ENVIRONMENT !== 'prod' ? AWS_REGIONS.SOUTHEAST_ASIA : AWS_REGIONS.EAST_US_2 // TO DO, change default to US region for prod export const FLY_REGIONS_DEFAULT = FLY_REGIONS.SOUTHEAST_ASIA export const MANAGED_BY = { VERCEL_MARKETPLACE: 'vercel-marketplace', AWS_MARKETPLACE: 'aws-marketplace', STRIPE_PROJECTS: 'stripe-projects', BRIVEN: 'briven', } export type ManagedBy = (typeof MANAGED_BY)[keyof typeof MANAGED_BY] export const PRICING_TIER_LABELS_ORG = { FREE: 'Free - $0/month', PRO: 'Pro - $25/month', TEAM: 'Team - $599/month', } export const PRICING_TIER_PRODUCT_IDS = { FREE: 'tier_free', PRO: 'tier_pro', PAYG: 'tier_payg', TEAM: 'tier_team', ENTERPRISE: 'tier_enterprise', } export function useDefaultProvider() { const defaultProvider = 'AWS' const { infraCloudProviders: validCloudProviders } = useCustomContent(['infra:cloud_providers']) if (validCloudProviders?.includes(defaultProvider)) { return defaultProvider } return validCloudProviders?.[0] ?? 'AWS' } export const PROVIDERS = { FLY: { id: 'FLY', name: 'Fly.io', default_region: FLY_REGIONS_DEFAULT, regions: { ...FLY_REGIONS }, }, AWS: { id: 'AWS', name: 'AWS', DEFAULT_SSH_KEY: 'briven-app-instance', default_region: AWS_REGIONS_DEFAULT, regions: { ...AWS_REGIONS }, }, AWS_K8S: { id: 'AWS_K8S', name: 'AWS (Revamped)', DEFAULT_SSH_KEY: 'briven-app-instance', default_region: AWS_REGIONS_DEFAULT, regions: { ...AWS_REGIONS }, }, AWS_NIMBUS: { id: 'AWS_NIMBUS', name: 'AWS (Nimbus)', default_region: AWS_REGIONS_DEFAULT, regions: { ...AWS_REGIONS }, }, } as const export const PROJECT_STATUS: { [key: string]: components['schemas']['ProjectDetailResponse']['status'] } = { INACTIVE: 'INACTIVE', ACTIVE_HEALTHY: 'ACTIVE_HEALTHY', ACTIVE_UNHEALTHY: 'ACTIVE_UNHEALTHY', COMING_UP: 'COMING_UP', UNKNOWN: 'UNKNOWN', GOING_DOWN: 'GOING_DOWN', INIT_FAILED: 'INIT_FAILED', REMOVED: 'REMOVED', RESTARTING: 'RESTARTING', RESTORING: 'RESTORING', RESTORE_FAILED: 'RESTORE_FAILED', UPGRADING: 'UPGRADING', PAUSING: 'PAUSING', PAUSE_FAILED: 'PAUSE_FAILED', RESIZING: 'RESIZING', } export const DEFAULT_MINIMUM_PASSWORD_STRENGTH = 4 export const PASSWORD_STRENGTH = { 0: 'This password is not acceptable.', 1: 'This password is not secure enough.', 2: 'This password is not secure enough.', 3: 'Not bad, but your password must be harder to guess.', 4: 'This password is strong.', } export const PASSWORD_STRENGTH_COLOR = { 0: 'bg-red-900', 1: 'bg-red-900', 2: 'bg-yellow-900', 3: 'bg-yellow-900', 4: 'bg-green-900', } export const PASSWORD_STRENGTH_PERCENTAGE = { 0: 10, 1: 30, 2: 50, 3: 80, 4: 100, } export const DEFAULT_PROJECT_API_SERVICE_ID = 1 export type InstanceSpecs = { baseline_disk_io_mbs: number connections_direct: number connections_pooler: number cpu_cores: number | 'Shared' cpu_dedicated: boolean max_disk_io_mbs: number memory_gb: number } export const INSTANCE_NANO_SPECS: InstanceSpecs = { baseline_disk_io_mbs: 43, connections_direct: 30, connections_pooler: 200, cpu_cores: 'Shared', cpu_dedicated: false, max_disk_io_mbs: 2085, memory_gb: 0.5, } export const INSTANCE_MICRO_SPECS: InstanceSpecs = { baseline_disk_io_mbs: 87, connections_direct: 60, connections_pooler: 200, cpu_cores: 2, cpu_dedicated: false, max_disk_io_mbs: 2085, memory_gb: 1, }