diff --git a/apps/console/src/routeTree.gen.ts b/apps/console/src/routeTree.gen.ts index 7cdf6d22e3c..b804a3eecfc 100644 --- a/apps/console/src/routeTree.gen.ts +++ b/apps/console/src/routeTree.gen.ts @@ -87,13 +87,16 @@ import { Route as AuthenticatedOrganizationOrganizationIdClusterClusterIdSetting import { Route as AuthenticatedOrganizationOrganizationIdClusterClusterIdSettingsAdvancedSettingsRouteImport } from './routes/_authenticated/organization/$organizationId/cluster/$clusterId/settings/advanced-settings' import { Route as AuthenticatedOrganizationOrganizationIdClusterClusterIdSettingsAddonsRouteImport } from './routes/_authenticated/organization/$organizationId/cluster/$clusterId/settings/addons' import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdIndexRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/index' -import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables' import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdDeploymentsRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/deployments' import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdDeploymentRulesEditDeploymentRuleIdRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/deployment-rules/edit/$deploymentRuleId' +import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesRouteRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables/route' import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdSettingsRouteRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/settings/route' import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdOverviewRouteRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/overview/route' +import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesIndexRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables/index' import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdSettingsIndexRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/settings/index' import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdOverviewIndexRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/overview/index' +import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesExternalSecretsRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables/external-secrets' +import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesBuiltInRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables/built-in' import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdSettingsPreviewEnvironmentsRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/settings/preview-environments' import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdSettingsGeneralRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/settings/general' import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdSettingsDeploymentRulesRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/settings/deployment-rules' @@ -103,7 +106,6 @@ import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnviron import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateIndexRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/index' import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdIndexRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/index' import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdDeploymentDeploymentIdIndexRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/deployment/$deploymentId/index' -import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables' import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdServiceLogsRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/service-logs' import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdOverviewRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/overview' import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdManifestRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/manifest' @@ -115,6 +117,7 @@ import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnviron import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateDatabaseRouteRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/database/route' import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateCronJobRouteRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/cron-job/route' import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateSlugRouteRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/$slug/route' +import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesRouteRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/route' import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdSettingsRouteRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings/route' import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdMonitoringRouteRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/monitoring/route' import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateTerraformIndexRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/terraform/index' @@ -123,6 +126,7 @@ import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnviron import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateDatabaseIndexRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/database/index' import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateCronJobIndexRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/cron-job/index' import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateSlugIndexRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/$slug/index' +import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesIndexRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/index' import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdSettingsIndexRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings/index' import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdMonitoringIndexRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/monitoring/index' import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdDeploymentsIndexRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/deployments/index' @@ -155,6 +159,8 @@ import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnviron import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateSlugPortsRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/$slug/ports' import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateSlugHealthChecksRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/$slug/health-checks' import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateSlugGeneralRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/$slug/general' +import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesExternalSecretsRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/external-secrets' +import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesBuiltInRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/built-in' import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdSettingsValuesOverrideFileRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings/values-override-file' import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdSettingsValuesOverrideArgumentsRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings/values-override-arguments' import { Route as AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdSettingsTerraformVariablesRouteImport } from './routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings/terraform-variables' @@ -775,14 +781,6 @@ const AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironm getParentRoute: () => AuthenticatedOrganizationOrganizationIdRouteRoute, } as any, ) -const AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesRoute = - AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesRouteImport.update( - { - id: '/project/$projectId/environment/$environmentId/variables', - path: '/project/$projectId/environment/$environmentId/variables', - getParentRoute: () => AuthenticatedOrganizationOrganizationIdRouteRoute, - } as any, - ) const AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdDeploymentsRoute = AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdDeploymentsRouteImport.update( { @@ -799,6 +797,14 @@ const AuthenticatedOrganizationOrganizationIdProjectProjectIdDeploymentRulesEdit getParentRoute: () => AuthenticatedOrganizationOrganizationIdRouteRoute, } as any, ) +const AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesRouteRoute = + AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesRouteRouteImport.update( + { + id: '/project/$projectId/environment/$environmentId/variables', + path: '/project/$projectId/environment/$environmentId/variables', + getParentRoute: () => AuthenticatedOrganizationOrganizationIdRouteRoute, + } as any, + ) const AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdSettingsRouteRoute = AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdSettingsRouteRouteImport.update( { @@ -815,6 +821,15 @@ const AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironm getParentRoute: () => AuthenticatedOrganizationOrganizationIdRouteRoute, } as any, ) +const AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesIndexRoute = + AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesIndexRouteImport.update( + { + id: '/', + path: '/', + getParentRoute: () => + AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesRouteRoute, + } as any, + ) const AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdSettingsIndexRoute = AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdSettingsIndexRouteImport.update( { @@ -833,6 +848,24 @@ const AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironm AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdOverviewRouteRoute, } as any, ) +const AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesExternalSecretsRoute = + AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesExternalSecretsRouteImport.update( + { + id: '/external-secrets', + path: '/external-secrets', + getParentRoute: () => + AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesRouteRoute, + } as any, + ) +const AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesBuiltInRoute = + AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesBuiltInRouteImport.update( + { + id: '/built-in', + path: '/built-in', + getParentRoute: () => + AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesRouteRoute, + } as any, + ) const AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdSettingsPreviewEnvironmentsRoute = AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdSettingsPreviewEnvironmentsRouteImport.update( { @@ -910,14 +943,6 @@ const AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironm getParentRoute: () => AuthenticatedOrganizationOrganizationIdRouteRoute, } as any, ) -const AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesRoute = - AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesRouteImport.update( - { - id: '/project/$projectId/environment/$environmentId/service/$serviceId/variables', - path: '/project/$projectId/environment/$environmentId/service/$serviceId/variables', - getParentRoute: () => AuthenticatedOrganizationOrganizationIdRouteRoute, - } as any, - ) const AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdServiceLogsRoute = AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdServiceLogsRouteImport.update( { @@ -1006,6 +1031,14 @@ const AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironm getParentRoute: () => AuthenticatedOrganizationOrganizationIdRouteRoute, } as any, ) +const AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesRouteRoute = + AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesRouteRouteImport.update( + { + id: '/project/$projectId/environment/$environmentId/service/$serviceId/variables', + path: '/project/$projectId/environment/$environmentId/service/$serviceId/variables', + getParentRoute: () => AuthenticatedOrganizationOrganizationIdRouteRoute, + } as any, + ) const AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdSettingsRouteRoute = AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdSettingsRouteRouteImport.update( { @@ -1076,6 +1109,15 @@ const AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironm AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateSlugRouteRoute, } as any, ) +const AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesIndexRoute = + AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesIndexRouteImport.update( + { + id: '/', + path: '/', + getParentRoute: () => + AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesRouteRoute, + } as any, + ) const AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdSettingsIndexRoute = AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdSettingsIndexRouteImport.update( { @@ -1363,6 +1405,24 @@ const AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironm AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateSlugRouteRoute, } as any, ) +const AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesExternalSecretsRoute = + AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesExternalSecretsRouteImport.update( + { + id: '/external-secrets', + path: '/external-secrets', + getParentRoute: () => + AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesRouteRoute, + } as any, + ) +const AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesBuiltInRoute = + AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesBuiltInRouteImport.update( + { + id: '/built-in', + path: '/built-in', + getParentRoute: () => + AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesRouteRoute, + } as any, + ) const AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdSettingsValuesOverrideFileRoute = AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdSettingsValuesOverrideFileRouteImport.update( { @@ -1640,9 +1700,9 @@ export interface FileRoutesByFullPath { '/organization/$organizationId/project/$projectId/settings/': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdSettingsIndexRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/overview': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdOverviewRouteRouteWithChildren '/organization/$organizationId/project/$projectId/environment/$environmentId/settings': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdSettingsRouteRouteWithChildren + '/organization/$organizationId/project/$projectId/environment/$environmentId/variables': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesRouteRouteWithChildren '/organization/$organizationId/project/$projectId/deployment-rules/edit/$deploymentRuleId': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdDeploymentRulesEditDeploymentRuleIdRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/deployments': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdDeploymentsRoute - '/organization/$organizationId/project/$projectId/environment/$environmentId/variables': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesRoute '/organization/$organizationId/project/$projectId/environment/$environmentId': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdIndexRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/overview/pipeline': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdOverviewPipelineRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/service/new': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceNewRoute @@ -1650,10 +1710,14 @@ export interface FileRoutesByFullPath { '/organization/$organizationId/project/$projectId/environment/$environmentId/settings/deployment-rules': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdSettingsDeploymentRulesRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/settings/general': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdSettingsGeneralRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/settings/preview-environments': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdSettingsPreviewEnvironmentsRoute + '/organization/$organizationId/project/$projectId/environment/$environmentId/variables/built-in': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesBuiltInRoute + '/organization/$organizationId/project/$projectId/environment/$environmentId/variables/external-secrets': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesExternalSecretsRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/overview/': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdOverviewIndexRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/settings/': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdSettingsIndexRoute + '/organization/$organizationId/project/$projectId/environment/$environmentId/variables/': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesIndexRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/monitoring': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdMonitoringRouteRouteWithChildren '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdSettingsRouteRouteWithChildren + '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesRouteRouteWithChildren '/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/$slug': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateSlugRouteRouteWithChildren '/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/cron-job': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateCronJobRouteRouteWithChildren '/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/database': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateDatabaseRouteRouteWithChildren @@ -1665,7 +1729,6 @@ export interface FileRoutesByFullPath { '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/manifest': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdManifestRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/overview': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdOverviewRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/service-logs': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdServiceLogsRoute - '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/deployment/$deploymentId': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdDeploymentDeploymentIdIndexRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdIndexRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/service/create': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateIndexRoute @@ -1688,6 +1751,8 @@ export interface FileRoutesByFullPath { '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings/terraform-variables': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdSettingsTerraformVariablesRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings/values-override-arguments': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdSettingsValuesOverrideArgumentsRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings/values-override-file': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdSettingsValuesOverrideFileRoute + '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/built-in': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesBuiltInRoute + '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/external-secrets': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesExternalSecretsRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/$slug/general': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateSlugGeneralRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/$slug/health-checks': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateSlugHealthChecksRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/$slug/ports': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateSlugPortsRoute @@ -1720,6 +1785,7 @@ export interface FileRoutesByFullPath { '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/deployments': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdDeploymentsIndexRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/monitoring/': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdMonitoringIndexRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings/': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdSettingsIndexRoute + '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesIndexRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/$slug/': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateSlugIndexRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/cron-job/': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateCronJobIndexRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/database/': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateDatabaseIndexRoute @@ -1802,7 +1868,6 @@ export interface FileRoutesByTo { '/organization/$organizationId/project/$projectId/settings': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdSettingsIndexRoute '/organization/$organizationId/project/$projectId/deployment-rules/edit/$deploymentRuleId': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdDeploymentRulesEditDeploymentRuleIdRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/deployments': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdDeploymentsRoute - '/organization/$organizationId/project/$projectId/environment/$environmentId/variables': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesRoute '/organization/$organizationId/project/$projectId/environment/$environmentId': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdIndexRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/overview/pipeline': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdOverviewPipelineRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/service/new': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceNewRoute @@ -1810,14 +1875,16 @@ export interface FileRoutesByTo { '/organization/$organizationId/project/$projectId/environment/$environmentId/settings/deployment-rules': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdSettingsDeploymentRulesRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/settings/general': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdSettingsGeneralRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/settings/preview-environments': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdSettingsPreviewEnvironmentsRoute + '/organization/$organizationId/project/$projectId/environment/$environmentId/variables/built-in': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesBuiltInRoute + '/organization/$organizationId/project/$projectId/environment/$environmentId/variables/external-secrets': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesExternalSecretsRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/overview': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdOverviewIndexRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/settings': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdSettingsIndexRoute + '/organization/$organizationId/project/$projectId/environment/$environmentId/variables': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesIndexRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/deployment/$deploymentId/pre-check-logs': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdDeploymentDeploymentIdPreCheckLogsRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/cloud-shell': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdCloudShellRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/manifest': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdManifestRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/overview': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdOverviewRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/service-logs': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdServiceLogsRoute - '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/deployment/$deploymentId': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdDeploymentDeploymentIdIndexRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdIndexRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/service/create': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateIndexRoute @@ -1840,6 +1907,8 @@ export interface FileRoutesByTo { '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings/terraform-variables': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdSettingsTerraformVariablesRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings/values-override-arguments': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdSettingsValuesOverrideArgumentsRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings/values-override-file': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdSettingsValuesOverrideFileRoute + '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/built-in': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesBuiltInRoute + '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/external-secrets': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesExternalSecretsRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/$slug/general': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateSlugGeneralRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/$slug/health-checks': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateSlugHealthChecksRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/$slug/ports': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateSlugPortsRoute @@ -1872,6 +1941,7 @@ export interface FileRoutesByTo { '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/deployments': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdDeploymentsIndexRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/monitoring': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdMonitoringIndexRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdSettingsIndexRoute + '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesIndexRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/$slug': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateSlugIndexRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/cron-job': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateCronJobIndexRoute '/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/database': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateDatabaseIndexRoute @@ -1963,9 +2033,9 @@ export interface FileRoutesById { '/_authenticated/organization/$organizationId/project/$projectId/settings/': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdSettingsIndexRoute '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/overview': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdOverviewRouteRouteWithChildren '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/settings': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdSettingsRouteRouteWithChildren + '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesRouteRouteWithChildren '/_authenticated/organization/$organizationId/project/$projectId/deployment-rules/edit/$deploymentRuleId': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdDeploymentRulesEditDeploymentRuleIdRoute '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/deployments': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdDeploymentsRoute - '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesRoute '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdIndexRoute '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/overview/pipeline': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdOverviewPipelineRoute '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/new': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceNewRoute @@ -1973,10 +2043,14 @@ export interface FileRoutesById { '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/settings/deployment-rules': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdSettingsDeploymentRulesRoute '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/settings/general': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdSettingsGeneralRoute '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/settings/preview-environments': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdSettingsPreviewEnvironmentsRoute + '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables/built-in': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesBuiltInRoute + '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables/external-secrets': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesExternalSecretsRoute '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/overview/': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdOverviewIndexRoute '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/settings/': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdSettingsIndexRoute + '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables/': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesIndexRoute '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/monitoring': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdMonitoringRouteRouteWithChildren '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdSettingsRouteRouteWithChildren + '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesRouteRouteWithChildren '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/$slug': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateSlugRouteRouteWithChildren '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/cron-job': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateCronJobRouteRouteWithChildren '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/database': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateDatabaseRouteRouteWithChildren @@ -1988,7 +2062,6 @@ export interface FileRoutesById { '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/manifest': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdManifestRoute '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/overview': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdOverviewRoute '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/service-logs': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdServiceLogsRoute - '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesRoute '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/deployment/$deploymentId/': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdDeploymentDeploymentIdIndexRoute '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdIndexRoute '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateIndexRoute @@ -2011,6 +2084,8 @@ export interface FileRoutesById { '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings/terraform-variables': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdSettingsTerraformVariablesRoute '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings/values-override-arguments': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdSettingsValuesOverrideArgumentsRoute '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings/values-override-file': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdSettingsValuesOverrideFileRoute + '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/built-in': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesBuiltInRoute + '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/external-secrets': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesExternalSecretsRoute '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/$slug/general': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateSlugGeneralRoute '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/$slug/health-checks': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateSlugHealthChecksRoute '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/$slug/ports': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateSlugPortsRoute @@ -2043,6 +2118,7 @@ export interface FileRoutesById { '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/deployments/': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdDeploymentsIndexRoute '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/monitoring/': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdMonitoringIndexRoute '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings/': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdSettingsIndexRoute + '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesIndexRoute '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/$slug/': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateSlugIndexRoute '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/cron-job/': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateCronJobIndexRoute '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/database/': typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateDatabaseIndexRoute @@ -2134,9 +2210,9 @@ export interface FileRouteTypes { | '/organization/$organizationId/project/$projectId/settings/' | '/organization/$organizationId/project/$projectId/environment/$environmentId/overview' | '/organization/$organizationId/project/$projectId/environment/$environmentId/settings' + | '/organization/$organizationId/project/$projectId/environment/$environmentId/variables' | '/organization/$organizationId/project/$projectId/deployment-rules/edit/$deploymentRuleId' | '/organization/$organizationId/project/$projectId/environment/$environmentId/deployments' - | '/organization/$organizationId/project/$projectId/environment/$environmentId/variables' | '/organization/$organizationId/project/$projectId/environment/$environmentId' | '/organization/$organizationId/project/$projectId/environment/$environmentId/overview/pipeline' | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/new' @@ -2144,10 +2220,14 @@ export interface FileRouteTypes { | '/organization/$organizationId/project/$projectId/environment/$environmentId/settings/deployment-rules' | '/organization/$organizationId/project/$projectId/environment/$environmentId/settings/general' | '/organization/$organizationId/project/$projectId/environment/$environmentId/settings/preview-environments' + | '/organization/$organizationId/project/$projectId/environment/$environmentId/variables/built-in' + | '/organization/$organizationId/project/$projectId/environment/$environmentId/variables/external-secrets' | '/organization/$organizationId/project/$projectId/environment/$environmentId/overview/' | '/organization/$organizationId/project/$projectId/environment/$environmentId/settings/' + | '/organization/$organizationId/project/$projectId/environment/$environmentId/variables/' | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/monitoring' | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings' + | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables' | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/$slug' | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/cron-job' | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/database' @@ -2159,7 +2239,6 @@ export interface FileRouteTypes { | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/manifest' | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/overview' | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/service-logs' - | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables' | '/organization/$organizationId/project/$projectId/environment/$environmentId/deployment/$deploymentId' | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId' | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/create' @@ -2182,6 +2261,8 @@ export interface FileRouteTypes { | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings/terraform-variables' | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings/values-override-arguments' | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings/values-override-file' + | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/built-in' + | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/external-secrets' | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/$slug/general' | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/$slug/health-checks' | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/$slug/ports' @@ -2214,6 +2295,7 @@ export interface FileRouteTypes { | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/deployments' | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/monitoring/' | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings/' + | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/' | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/$slug/' | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/cron-job/' | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/database/' @@ -2296,7 +2378,6 @@ export interface FileRouteTypes { | '/organization/$organizationId/project/$projectId/settings' | '/organization/$organizationId/project/$projectId/deployment-rules/edit/$deploymentRuleId' | '/organization/$organizationId/project/$projectId/environment/$environmentId/deployments' - | '/organization/$organizationId/project/$projectId/environment/$environmentId/variables' | '/organization/$organizationId/project/$projectId/environment/$environmentId' | '/organization/$organizationId/project/$projectId/environment/$environmentId/overview/pipeline' | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/new' @@ -2304,14 +2385,16 @@ export interface FileRouteTypes { | '/organization/$organizationId/project/$projectId/environment/$environmentId/settings/deployment-rules' | '/organization/$organizationId/project/$projectId/environment/$environmentId/settings/general' | '/organization/$organizationId/project/$projectId/environment/$environmentId/settings/preview-environments' + | '/organization/$organizationId/project/$projectId/environment/$environmentId/variables/built-in' + | '/organization/$organizationId/project/$projectId/environment/$environmentId/variables/external-secrets' | '/organization/$organizationId/project/$projectId/environment/$environmentId/overview' | '/organization/$organizationId/project/$projectId/environment/$environmentId/settings' + | '/organization/$organizationId/project/$projectId/environment/$environmentId/variables' | '/organization/$organizationId/project/$projectId/environment/$environmentId/deployment/$deploymentId/pre-check-logs' | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/cloud-shell' | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/manifest' | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/overview' | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/service-logs' - | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables' | '/organization/$organizationId/project/$projectId/environment/$environmentId/deployment/$deploymentId' | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId' | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/create' @@ -2334,6 +2417,8 @@ export interface FileRouteTypes { | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings/terraform-variables' | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings/values-override-arguments' | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings/values-override-file' + | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/built-in' + | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/external-secrets' | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/$slug/general' | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/$slug/health-checks' | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/$slug/ports' @@ -2366,6 +2451,7 @@ export interface FileRouteTypes { | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/deployments' | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/monitoring' | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings' + | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables' | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/$slug' | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/cron-job' | '/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/database' @@ -2456,9 +2542,9 @@ export interface FileRouteTypes { | '/_authenticated/organization/$organizationId/project/$projectId/settings/' | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/overview' | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/settings' + | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables' | '/_authenticated/organization/$organizationId/project/$projectId/deployment-rules/edit/$deploymentRuleId' | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/deployments' - | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables' | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/' | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/overview/pipeline' | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/new' @@ -2466,10 +2552,14 @@ export interface FileRouteTypes { | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/settings/deployment-rules' | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/settings/general' | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/settings/preview-environments' + | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables/built-in' + | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables/external-secrets' | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/overview/' | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/settings/' + | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables/' | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/monitoring' | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings' + | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables' | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/$slug' | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/cron-job' | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/database' @@ -2481,7 +2571,6 @@ export interface FileRouteTypes { | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/manifest' | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/overview' | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/service-logs' - | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables' | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/deployment/$deploymentId/' | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/' | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/' @@ -2504,6 +2593,8 @@ export interface FileRouteTypes { | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings/terraform-variables' | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings/values-override-arguments' | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings/values-override-file' + | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/built-in' + | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/external-secrets' | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/$slug/general' | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/$slug/health-checks' | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/$slug/ports' @@ -2536,6 +2627,7 @@ export interface FileRouteTypes { | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/deployments/' | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/monitoring/' | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings/' + | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/' | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/$slug/' | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/cron-job/' | '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/create/database/' @@ -3102,13 +3194,6 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdIndexRouteImport parentRoute: typeof AuthenticatedOrganizationOrganizationIdRouteRoute } - '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables': { - id: '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables' - path: '/project/$projectId/environment/$environmentId/variables' - fullPath: '/organization/$organizationId/project/$projectId/environment/$environmentId/variables' - preLoaderRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesRouteImport - parentRoute: typeof AuthenticatedOrganizationOrganizationIdRouteRoute - } '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/deployments': { id: '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/deployments' path: '/project/$projectId/environment/$environmentId/deployments' @@ -3123,6 +3208,13 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdDeploymentRulesEditDeploymentRuleIdRouteImport parentRoute: typeof AuthenticatedOrganizationOrganizationIdRouteRoute } + '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables': { + id: '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables' + path: '/project/$projectId/environment/$environmentId/variables' + fullPath: '/organization/$organizationId/project/$projectId/environment/$environmentId/variables' + preLoaderRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesRouteRouteImport + parentRoute: typeof AuthenticatedOrganizationOrganizationIdRouteRoute + } '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/settings': { id: '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/settings' path: '/project/$projectId/environment/$environmentId/settings' @@ -3137,6 +3229,13 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdOverviewRouteRouteImport parentRoute: typeof AuthenticatedOrganizationOrganizationIdRouteRoute } + '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables/': { + id: '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables/' + path: '/' + fullPath: '/organization/$organizationId/project/$projectId/environment/$environmentId/variables/' + preLoaderRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesIndexRouteImport + parentRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesRouteRoute + } '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/settings/': { id: '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/settings/' path: '/' @@ -3151,6 +3250,20 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdOverviewIndexRouteImport parentRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdOverviewRouteRoute } + '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables/external-secrets': { + id: '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables/external-secrets' + path: '/external-secrets' + fullPath: '/organization/$organizationId/project/$projectId/environment/$environmentId/variables/external-secrets' + preLoaderRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesExternalSecretsRouteImport + parentRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesRouteRoute + } + '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables/built-in': { + id: '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables/built-in' + path: '/built-in' + fullPath: '/organization/$organizationId/project/$projectId/environment/$environmentId/variables/built-in' + preLoaderRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesBuiltInRouteImport + parentRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesRouteRoute + } '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/settings/preview-environments': { id: '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/settings/preview-environments' path: '/preview-environments' @@ -3214,13 +3327,6 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdDeploymentDeploymentIdIndexRouteImport parentRoute: typeof AuthenticatedOrganizationOrganizationIdRouteRoute } - '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables': { - id: '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables' - path: '/project/$projectId/environment/$environmentId/service/$serviceId/variables' - fullPath: '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables' - preLoaderRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesRouteImport - parentRoute: typeof AuthenticatedOrganizationOrganizationIdRouteRoute - } '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/service-logs': { id: '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/service-logs' path: '/project/$projectId/environment/$environmentId/service/$serviceId/service-logs' @@ -3298,6 +3404,13 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateSlugRouteRouteImport parentRoute: typeof AuthenticatedOrganizationOrganizationIdRouteRoute } + '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables': { + id: '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables' + path: '/project/$projectId/environment/$environmentId/service/$serviceId/variables' + fullPath: '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables' + preLoaderRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesRouteRouteImport + parentRoute: typeof AuthenticatedOrganizationOrganizationIdRouteRoute + } '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings': { id: '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings' path: '/project/$projectId/environment/$environmentId/service/$serviceId/settings' @@ -3354,6 +3467,13 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateSlugIndexRouteImport parentRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateSlugRouteRoute } + '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/': { + id: '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/' + path: '/' + fullPath: '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/' + preLoaderRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesIndexRouteImport + parentRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesRouteRoute + } '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings/': { id: '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings/' path: '/' @@ -3578,6 +3698,20 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateSlugGeneralRouteImport parentRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateSlugRouteRoute } + '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/external-secrets': { + id: '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/external-secrets' + path: '/external-secrets' + fullPath: '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/external-secrets' + preLoaderRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesExternalSecretsRouteImport + parentRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesRouteRoute + } + '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/built-in': { + id: '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/built-in' + path: '/built-in' + fullPath: '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/built-in' + preLoaderRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesBuiltInRouteImport + parentRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesRouteRoute + } '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings/values-override-file': { id: '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings/values-override-file' path: '/values-override-file' @@ -3972,6 +4106,27 @@ const AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironm AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdSettingsRouteRouteChildren, ) +interface AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesRouteRouteChildren { + AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesBuiltInRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesBuiltInRoute + AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesExternalSecretsRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesExternalSecretsRoute + AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesIndexRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesIndexRoute +} + +const AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesRouteRouteChildren: AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesRouteRouteChildren = + { + AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesBuiltInRoute: + AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesBuiltInRoute, + AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesExternalSecretsRoute: + AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesExternalSecretsRoute, + AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesIndexRoute: + AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesIndexRoute, + } + +const AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesRouteRouteWithChildren = + AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesRouteRoute._addFileChildren( + AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesRouteRouteChildren, + ) + interface AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdMonitoringAlertsRouteChildren { AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdMonitoringAlertsAlertIdEditRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdMonitoringAlertsAlertIdEditRoute AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdMonitoringAlertsCreateMetricMetricRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdMonitoringAlertsCreateMetricMetricRoute @@ -4077,6 +4232,27 @@ const AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironm AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdSettingsRouteRouteChildren, ) +interface AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesRouteRouteChildren { + AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesBuiltInRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesBuiltInRoute + AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesExternalSecretsRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesExternalSecretsRoute + AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesIndexRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesIndexRoute +} + +const AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesRouteRouteChildren: AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesRouteRouteChildren = + { + AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesBuiltInRoute: + AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesBuiltInRoute, + AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesExternalSecretsRoute: + AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesExternalSecretsRoute, + AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesIndexRoute: + AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesIndexRoute, + } + +const AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesRouteRouteWithChildren = + AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesRouteRoute._addFileChildren( + AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesRouteRouteChildren, + ) + interface AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateSlugRouteRouteChildren { AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateSlugGeneralRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateSlugGeneralRoute AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateSlugHealthChecksRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateSlugHealthChecksRoute @@ -4277,13 +4453,14 @@ interface AuthenticatedOrganizationOrganizationIdRouteRouteChildren { AuthenticatedOrganizationOrganizationIdProjectProjectIdDeploymentRulesIndexRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdDeploymentRulesIndexRoute AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdOverviewRouteRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdOverviewRouteRouteWithChildren AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdSettingsRouteRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdSettingsRouteRouteWithChildren + AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesRouteRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesRouteRouteWithChildren AuthenticatedOrganizationOrganizationIdProjectProjectIdDeploymentRulesEditDeploymentRuleIdRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdDeploymentRulesEditDeploymentRuleIdRoute AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdDeploymentsRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdDeploymentsRoute - AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesRoute AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdIndexRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdIndexRoute AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceNewRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceNewRoute AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdMonitoringRouteRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdMonitoringRouteRouteWithChildren AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdSettingsRouteRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdSettingsRouteRouteWithChildren + AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesRouteRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesRouteRouteWithChildren AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateSlugRouteRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateSlugRouteRouteWithChildren AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateCronJobRouteRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateCronJobRouteRouteWithChildren AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateDatabaseRouteRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateDatabaseRouteRouteWithChildren @@ -4295,7 +4472,6 @@ interface AuthenticatedOrganizationOrganizationIdRouteRouteChildren { AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdManifestRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdManifestRoute AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdOverviewRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdOverviewRoute AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdServiceLogsRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdServiceLogsRoute - AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesRoute AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdDeploymentDeploymentIdIndexRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdDeploymentDeploymentIdIndexRoute AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdIndexRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdIndexRoute AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateIndexRoute: typeof AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateIndexRoute @@ -4349,12 +4525,12 @@ const AuthenticatedOrganizationOrganizationIdRouteRouteChildren: AuthenticatedOr AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdOverviewRouteRouteWithChildren, AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdSettingsRouteRoute: AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdSettingsRouteRouteWithChildren, + AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesRouteRoute: + AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesRouteRouteWithChildren, AuthenticatedOrganizationOrganizationIdProjectProjectIdDeploymentRulesEditDeploymentRuleIdRoute: AuthenticatedOrganizationOrganizationIdProjectProjectIdDeploymentRulesEditDeploymentRuleIdRoute, AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdDeploymentsRoute: AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdDeploymentsRoute, - AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesRoute: - AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdVariablesRoute, AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdIndexRoute: AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdIndexRoute, AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceNewRoute: @@ -4363,6 +4539,8 @@ const AuthenticatedOrganizationOrganizationIdRouteRouteChildren: AuthenticatedOr AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdMonitoringRouteRouteWithChildren, AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdSettingsRouteRoute: AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdSettingsRouteRouteWithChildren, + AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesRouteRoute: + AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesRouteRouteWithChildren, AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateSlugRouteRoute: AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateSlugRouteRouteWithChildren, AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceCreateCronJobRouteRoute: @@ -4385,8 +4563,6 @@ const AuthenticatedOrganizationOrganizationIdRouteRouteChildren: AuthenticatedOr AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdOverviewRoute, AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdServiceLogsRoute: AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdServiceLogsRoute, - AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesRoute: - AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdVariablesRoute, AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdDeploymentDeploymentIdIndexRoute: AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdDeploymentDeploymentIdIndexRoute, AuthenticatedOrganizationOrganizationIdProjectProjectIdEnvironmentEnvironmentIdServiceServiceIdIndexRoute: diff --git a/apps/console/src/routes/_authenticated/organization/$organizationId/cluster/$clusterId/settings/addons.tsx b/apps/console/src/routes/_authenticated/organization/$organizationId/cluster/$clusterId/settings/addons.tsx index c81fe757f3c..f455889b667 100644 --- a/apps/console/src/routes/_authenticated/organization/$organizationId/cluster/$clusterId/settings/addons.tsx +++ b/apps/console/src/routes/_authenticated/organization/$organizationId/cluster/$clusterId/settings/addons.tsx @@ -5,6 +5,7 @@ import { useMemo, useState } from 'react' import { AddonToggleCard, SECRET_MANAGER_OPTIONS, + SecretManagerAssociatedExternalSecretsModal, SecretManagerIntegrationModal, SecretManagerList, getSecretManagerOption, @@ -109,6 +110,21 @@ function RouteComponent() { }) } + const openSecretManagerAssociatedExternalSecretsModal = (integration: SecretManagerAccess) => { + openModal({ + content: ( + + ), + options: { + fakeModal: true, + }, + }) + } + const handleSave = async () => { if (!cluster) return @@ -193,6 +209,7 @@ function RouteComponent() { openSecretManagerModal(getSecretManagerOption(manager.endpoint.mode), manager) } onDelete={handleDeleteSecretManager} + onViewAssociatedExternalSecrets={openSecretManagerAssociatedExternalSecretsModal} /> diff --git a/apps/console/src/routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables.tsx b/apps/console/src/routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables.tsx deleted file mode 100644 index fe5a52c8a81..00000000000 --- a/apps/console/src/routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables.tsx +++ /dev/null @@ -1,152 +0,0 @@ -import { createFileRoute, useParams } from '@tanstack/react-router' -import { Suspense } from 'react' -import { match } from 'ts-pattern' -import { isEditableService } from '@qovery/domains/services/data-access' -import { useDeployService, useService } from '@qovery/domains/services/feature' -import { - ImportEnvironmentVariableModalFeature, - VariableList, - VariablesActionToolbar, -} from '@qovery/domains/variables/feature' -import { Heading, LoaderSpinner, Section, toast, useModal } from '@qovery/shared/ui' -import { useDocumentTitle } from '@qovery/shared/util-hooks' - -export const Route = createFileRoute( - '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables' -)({ - component: RouteComponent, -}) - -function RouteComponent() { - const { organizationId = '', projectId = '', environmentId = '', serviceId = '' } = useParams({ strict: false }) - useDocumentTitle('Service - Variables') - - const { data: service } = useService({ - environmentId, - serviceId, - suspense: true, - }) - - const scope = match(service?.serviceType) - .with('APPLICATION', () => 'APPLICATION' as const) - .with('CONTAINER', () => 'CONTAINER' as const) - .with('JOB', () => 'JOB' as const) - .with('HELM', () => 'HELM' as const) - .with('TERRAFORM', () => 'TERRAFORM' as const) - .otherwise(() => undefined) - - const { mutate: deployService } = useDeployService({ - organizationId, - projectId, - environmentId, - }) - const { openModal, closeModal } = useModal() - - const toasterCallback = () => { - if (!service || !isEditableService(service)) { - return - } - deployService({ - serviceId, - serviceType: service.serviceType, - }) - } - - return ( - - - - } - > -
-
-
-
- Service variables - {scope && ( - - openModal({ - content: ( - - ), - options: { - width: 750, - }, - }) - } - onCreateVariable={() => - toast( - 'success', - 'Creation success', - 'You need to redeploy your service for your changes to be applied.', - toasterCallback, - 'Redeploy' - ) - } - /> - )} -
-
-
- {scope && ( -
- { - toast( - 'success', - 'Creation success', - 'You need to redeploy your service for your changes to be applied.', - toasterCallback, - 'Redeploy' - ) - }} - onEditVariable={() => { - toast( - 'success', - 'Edition success', - 'You need to redeploy your service for your changes to be applied.', - toasterCallback, - 'Redeploy' - ) - }} - onDeleteVariable={(variable) => { - let name = variable.key - if (name && name.length > 30) { - name = name.substring(0, 30) + '...' - } - toast( - 'success', - 'Deletion success', - `${name} has been deleted. You need to redeploy your service for your changes to be applied.`, - toasterCallback, - 'Redeploy' - ) - }} - /> -
- )} -
-
-
- ) -} diff --git a/apps/console/src/routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/built-in.tsx b/apps/console/src/routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/built-in.tsx new file mode 100644 index 00000000000..51479897e65 --- /dev/null +++ b/apps/console/src/routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/built-in.tsx @@ -0,0 +1,12 @@ +import { createFileRoute } from '@tanstack/react-router' +import { BuiltInTab } from '@qovery/domains/services/feature' + +export const Route = createFileRoute( + '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/built-in' +)({ + component: RouteComponent, +}) + +function RouteComponent() { + return +} diff --git a/apps/console/src/routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/external-secrets.tsx b/apps/console/src/routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/external-secrets.tsx new file mode 100644 index 00000000000..ac6f8440b72 --- /dev/null +++ b/apps/console/src/routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/external-secrets.tsx @@ -0,0 +1,38 @@ +import { Navigate, createFileRoute } from '@tanstack/react-router' +import { useFeatureFlagEnabled } from 'posthog-js/react' +import { getServiceVariableScope, useService } from '@qovery/domains/services/feature' +import { ExternalSecretsTab } from '@qovery/domains/variables/feature' + +export const Route = createFileRoute( + '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/external-secrets' +)({ + component: RouteComponent, +}) + +function RouteComponent() { + const { organizationId, projectId, environmentId, serviceId } = Route.useParams() + const secretManagerEnabled = useFeatureFlagEnabled('secret-manager') === true + + if (!secretManagerEnabled) { + return ( + + ) + } + + return +} + +function ExternalSecretsRouteContent({ environmentId, serviceId }: { environmentId: string; serviceId: string }) { + const { data: service } = useService({ environmentId, serviceId, suspense: true }) + const scope = getServiceVariableScope(service?.serviceType) + + if (!scope) { + return null + } + + return +} diff --git a/apps/console/src/routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/index.tsx b/apps/console/src/routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/index.tsx new file mode 100644 index 00000000000..740dbfcc397 --- /dev/null +++ b/apps/console/src/routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/index.tsx @@ -0,0 +1,12 @@ +import { createFileRoute } from '@tanstack/react-router' +import { CustomTab } from '@qovery/domains/services/feature' + +export const Route = createFileRoute( + '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/' +)({ + component: RouteComponent, +}) + +function RouteComponent() { + return +} diff --git a/apps/console/src/routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/route.tsx b/apps/console/src/routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/route.tsx new file mode 100644 index 00000000000..6c23b89d2f5 --- /dev/null +++ b/apps/console/src/routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/route.tsx @@ -0,0 +1,87 @@ +import { type IconName } from '@fortawesome/fontawesome-common-types' +import { Outlet, createFileRoute, useMatchRoute } from '@tanstack/react-router' +import { useFeatureFlagEnabled } from 'posthog-js/react' +import { Suspense } from 'react' +import { Heading, Icon, LoaderSpinner, Navbar, Section } from '@qovery/shared/ui' +import { useDocumentTitle } from '@qovery/shared/util-hooks' + +export const Route = createFileRoute( + '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables' +)({ + component: RouteComponent, +}) + +const tabs = [ + { + id: 'custom', + label: 'Custom', + iconName: 'sliders' as IconName, + routeId: + '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/', + }, + { + id: 'external-secrets', + label: 'External secrets', + iconName: 'lock-keyhole' as IconName, + routeId: + '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/external-secrets', + }, + { + id: 'built-in', + label: 'Built-in', + iconName: 'cube' as IconName, + routeId: + '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/built-in', + }, +] + +const OutletLoader = () => ( +
+ +
+) + +function RouteComponent() { + const matchRoute = useMatchRoute() + const secretManagerEnabled = useFeatureFlagEnabled('secret-manager') === true + const visibleTabs = secretManagerEnabled ? tabs : tabs.filter((tab) => tab.id !== 'external-secrets') + useDocumentTitle('Service - Variables') + + const activeTabId = visibleTabs.find((tab) => matchRoute({ to: tab.routeId }))?.id + + return ( +
+
+
+
+ Service variables +
+
+
+ +
+
+
+ + {visibleTabs.map((tab) => ( + + + {tab.label} + + ))} + +
+
+ +
+
+ }> + + +
+
+
+
+
+ ) +} diff --git a/apps/console/src/routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables.tsx b/apps/console/src/routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables.tsx deleted file mode 100644 index 6f0edd321c6..00000000000 --- a/apps/console/src/routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables.tsx +++ /dev/null @@ -1,103 +0,0 @@ -import { createFileRoute } from '@tanstack/react-router' -import { useParams } from '@tanstack/react-router' -import { Suspense } from 'react' -import { useDeployEnvironment } from '@qovery/domains/environments/feature' -import { VariableList, VariablesActionToolbar } from '@qovery/domains/variables/feature' -import { ENVIRONMENT_LOGS_URL, ENVIRONMENT_STAGES_URL } from '@qovery/shared/routes' -import { Heading, LoaderSpinner, Section, toast } from '@qovery/shared/ui' -import { useDocumentTitle } from '@qovery/shared/util-hooks' - -export const Route = createFileRoute( - '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables' -)({ - component: RouteComponent, -}) - -function RouteComponent() { - const { organizationId = '', projectId = '', environmentId = '' } = useParams({ strict: false }) - - useDocumentTitle('Services - Variables') - - const { mutate: deployEnvironment } = useDeployEnvironment({ - projectId, - logsLink: ENVIRONMENT_LOGS_URL(organizationId, projectId, environmentId) + ENVIRONMENT_STAGES_URL(), - }) - - const toasterCallback = () => { - deployEnvironment({ environmentId }) - } - - return ( - - - - } - > -
-
-
-
- Environment variables - - toast( - 'success', - 'Creation success', - 'You need to redeploy your environment for your changes to be applied.', - toasterCallback, - 'Redeploy' - ) - } - /> -
-
-
-
- { - toast( - 'success', - 'Creation success', - 'You need to redeploy your environment for your changes to be applied.', - toasterCallback, - 'Redeploy' - ) - }} - onEditVariable={() => { - toast( - 'success', - 'Edition success', - 'You need to redeploy your environment for your changes to be applied.', - toasterCallback, - 'Redeploy' - ) - }} - onDeleteVariable={(variable) => { - let name = variable.key - if (name && name.length > 30) { - name = name.substring(0, 30) + '...' - } - toast( - 'success', - 'Deletion success', - `${name} has been deleted. You need to redeploy your environment for your changes to be applied.`, - toasterCallback, - 'Redeploy' - ) - }} - /> -
-
-
-
- ) -} diff --git a/apps/console/src/routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables/built-in.tsx b/apps/console/src/routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables/built-in.tsx new file mode 100644 index 00000000000..7b4d57ef8d8 --- /dev/null +++ b/apps/console/src/routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables/built-in.tsx @@ -0,0 +1,67 @@ +import { createFileRoute } from '@tanstack/react-router' +import { useDeployEnvironment } from '@qovery/domains/environments/feature' +import { VariableList } from '@qovery/domains/variables/feature' +import { ENVIRONMENT_LOGS_URL, ENVIRONMENT_STAGES_URL } from '@qovery/shared/routes' +import { toast } from '@qovery/shared/ui' + +export const Route = createFileRoute( + '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables/built-in' +)({ + component: RouteComponent, +}) + +function RouteComponent() { + const { organizationId, projectId, environmentId } = Route.useParams() + + const { mutate: deployEnvironment } = useDeployEnvironment({ + projectId, + logsLink: ENVIRONMENT_LOGS_URL(organizationId, projectId, environmentId) + ENVIRONMENT_STAGES_URL(), + }) + + const toasterCallback = () => { + deployEnvironment({ environmentId }) + } + + const onCreateVariableToast = () => + toast( + 'success', + 'Creation success', + 'You need to redeploy your environment for your changes to be applied.', + toasterCallback, + 'Redeploy' + ) + + const onEditVariableToast = () => + toast( + 'success', + 'Edition success', + 'You need to redeploy your environment for your changes to be applied.', + toasterCallback, + 'Redeploy' + ) + + const onDeleteVariableToast = () => { + toast( + 'success', + 'Deletion success', + 'Your variable has been deleted. You need to redeploy your environment for your changes to be applied.', + toasterCallback, + 'Redeploy' + ) + } + + return ( + } + scope="ENVIRONMENT" + organizationId={organizationId} + projectId={projectId} + environmentId={environmentId} + onCreateVariable={onCreateVariableToast} + onEditVariable={onEditVariableToast} + onDeleteVariable={onDeleteVariableToast} + /> + ) +} diff --git a/apps/console/src/routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables/external-secrets.tsx b/apps/console/src/routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables/external-secrets.tsx new file mode 100644 index 00000000000..0fc81b2b406 --- /dev/null +++ b/apps/console/src/routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables/external-secrets.tsx @@ -0,0 +1,26 @@ +import { Navigate, createFileRoute } from '@tanstack/react-router' +import { useFeatureFlagEnabled } from 'posthog-js/react' +import { ExternalSecretsTab } from '@qovery/domains/variables/feature' + +export const Route = createFileRoute( + '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables/external-secrets' +)({ + component: RouteComponent, +}) + +function RouteComponent() { + const { organizationId, projectId, environmentId } = Route.useParams() + const secretManagerEnabled = useFeatureFlagEnabled('secret-manager') === true + + if (!secretManagerEnabled) { + return ( + + ) + } + + return +} diff --git a/apps/console/src/routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables/index.tsx b/apps/console/src/routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables/index.tsx new file mode 100644 index 00000000000..10ad4f720c7 --- /dev/null +++ b/apps/console/src/routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables/index.tsx @@ -0,0 +1,75 @@ +import { createFileRoute } from '@tanstack/react-router' +import { useDeployEnvironment } from '@qovery/domains/environments/feature' +import { VariableList, VariablesActionToolbar } from '@qovery/domains/variables/feature' +import { ENVIRONMENT_LOGS_URL, ENVIRONMENT_STAGES_URL } from '@qovery/shared/routes' +import { toast } from '@qovery/shared/ui' + +export const Route = createFileRoute( + '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables/' +)({ + component: RouteComponent, +}) + +function RouteComponent() { + const { organizationId, projectId, environmentId } = Route.useParams() + + const { mutate: deployEnvironment } = useDeployEnvironment({ + projectId, + logsLink: ENVIRONMENT_LOGS_URL(organizationId, projectId, environmentId) + ENVIRONMENT_STAGES_URL(), + }) + + const toasterCallback = () => { + deployEnvironment({ environmentId }) + } + + const onCreateVariableToast = () => + toast( + 'success', + 'Creation success', + 'You need to redeploy your environment for your changes to be applied.', + toasterCallback, + 'Redeploy' + ) + + const onEditVariableToast = () => + toast( + 'success', + 'Edition success', + 'You need to redeploy your environment for your changes to be applied.', + toasterCallback, + 'Redeploy' + ) + + const onDeleteVariableToast = () => { + toast( + 'success', + 'Deletion success', + 'Your variable has been deleted. You need to redeploy your environment for your changes to be applied.', + toasterCallback, + 'Redeploy' + ) + } + + return ( + + } + scope="ENVIRONMENT" + organizationId={organizationId} + projectId={projectId} + environmentId={environmentId} + onCreateVariable={onCreateVariableToast} + onEditVariable={onEditVariableToast} + onDeleteVariable={onDeleteVariableToast} + /> + ) +} diff --git a/apps/console/src/routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables/route.tsx b/apps/console/src/routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables/route.tsx new file mode 100644 index 00000000000..88aa02173fc --- /dev/null +++ b/apps/console/src/routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables/route.tsx @@ -0,0 +1,84 @@ +import { type IconName } from '@fortawesome/fontawesome-common-types' +import { Outlet, createFileRoute, useMatchRoute } from '@tanstack/react-router' +import { useFeatureFlagEnabled } from 'posthog-js/react' +import { Suspense } from 'react' +import { Heading, Icon, LoaderSpinner, Navbar, Section } from '@qovery/shared/ui' +import { useDocumentTitle } from '@qovery/shared/util-hooks' + +export const Route = createFileRoute( + '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/variables' +)({ + component: RouteComponent, +}) + +const tabs = [ + { + id: 'custom', + label: 'Custom', + iconName: 'sliders' as IconName, + routeId: '/organization/$organizationId/project/$projectId/environment/$environmentId/variables/', + }, + { + id: 'external-secrets', + label: 'External secrets', + iconName: 'lock-keyhole' as IconName, + routeId: '/organization/$organizationId/project/$projectId/environment/$environmentId/variables/external-secrets', + }, + { + id: 'built-in', + label: 'Built-in', + iconName: 'cube' as IconName, + routeId: '/organization/$organizationId/project/$projectId/environment/$environmentId/variables/built-in', + }, +] + +const OutletLoader = () => ( +
+ +
+) + +function RouteComponent() { + const matchRoute = useMatchRoute() + const secretManagerEnabled = useFeatureFlagEnabled('secret-manager') === true + const visibleTabs = secretManagerEnabled ? tabs : tabs.filter((tab) => tab.id !== 'external-secrets') + useDocumentTitle('Environment - Variables') + + const activeTabId = visibleTabs.find((tab) => matchRoute({ to: tab.routeId }))?.id + + return ( +
+
+
+
+ Environment variables +
+
+
+ +
+
+
+ + {visibleTabs.map((tab) => ( + + + {tab.label} + + ))} + +
+
+ +
+
+ }> + + +
+
+
+
+
+ ) +} diff --git a/apps/console/src/routes/_authenticated/organization/$organizationId/project/$projectId/variables.tsx b/apps/console/src/routes/_authenticated/organization/$organizationId/project/$projectId/variables.tsx index 3bdef0f648f..c1a798efb5f 100644 --- a/apps/console/src/routes/_authenticated/organization/$organizationId/project/$projectId/variables.tsx +++ b/apps/console/src/routes/_authenticated/organization/$organizationId/project/$projectId/variables.tsx @@ -1,7 +1,9 @@ import { createFileRoute, useParams } from '@tanstack/react-router' -import { Suspense } from 'react' +import { Suspense, useState } from 'react' import { VariableList, VariablesActionToolbar } from '@qovery/domains/variables/feature' -import { Heading, LoaderSpinner, Section, toast } from '@qovery/shared/ui' +import { Heading, Icon, LoaderSpinner, Navbar, Section, toast } from '@qovery/shared/ui' + +type VariableTab = 'custom' | 'built-in' export const Route = createFileRoute('/_authenticated/organization/$organizationId/project/$projectId/variables')({ component: RouteComponent, @@ -9,6 +11,7 @@ export const Route = createFileRoute('/_authenticated/organization/$organization function RouteComponent() { const { projectId = '' } = useParams({ strict: false }) + const [activeTab, setActiveTab] = useState('custom') return (
Project variables - toast('success', 'Creation success')} - />

-
- { - toast('success', 'Creation success') - }} - onEditVariable={() => { - toast('success', 'Edition success') - }} - onDeleteVariable={() => { - toast('success', 'Deletion success') - }} - /> + +
+
+
+ + setActiveTab('custom')}> + + Custom + + setActiveTab('built-in')}> + + Built-in + + +
+
+ +
+
+ {activeTab === 'custom' && ( + toast('success', 'Creation success')} + /> + } + scope="PROJECT" + projectId={projectId} + onCreateVariable={() => { + toast('success', 'Creation success') + }} + onEditVariable={() => { + toast('success', 'Edition success') + }} + onDeleteVariable={() => { + toast('success', 'Deletion success') + }} + /> + )} + {activeTab === 'built-in' && ( + } + scope="PROJECT" + projectId={projectId} + onCreateVariable={() => { + toast('success', 'Creation success') + }} + onEditVariable={() => { + toast('success', 'Edition success') + }} + onDeleteVariable={() => { + toast('success', 'Deletion success') + }} + /> + )} +
+
diff --git a/libs/domains/clusters/feature/src/index.ts b/libs/domains/clusters/feature/src/index.ts index 52224bdcd5f..5620205fa58 100644 --- a/libs/domains/clusters/feature/src/index.ts +++ b/libs/domains/clusters/feature/src/index.ts @@ -36,6 +36,7 @@ export * from './lib/cluster-creation-flow/step-addons/step-addons' export * from './lib/cluster-creation-flow/step-summary/step-summary' export * from './lib/cluster-creation-flow/cluster-creation-flow' export * from './lib/cluster-addons' +export * from './lib/secret-manager-modals/secret-manager-associated-external-secrets-modal' export * from './lib/secret-manager-modals/secret-manager-integration-modal' export * from './lib/cluster-general-settings/cluster-general-settings' export * from './lib/cluster-credentials-settings/cluster-credentials-settings' diff --git a/libs/domains/clusters/feature/src/lib/cluster-credentials-modal/cluster-credentials-modal.tsx b/libs/domains/clusters/feature/src/lib/cluster-credentials-modal/cluster-credentials-modal.tsx index e6af204788d..90e0599de98 100644 --- a/libs/domains/clusters/feature/src/lib/cluster-credentials-modal/cluster-credentials-modal.tsx +++ b/libs/domains/clusters/feature/src/lib/cluster-credentials-modal/cluster-credentials-modal.tsx @@ -9,7 +9,6 @@ import { useDeleteCloudProviderCredential, useEditCloudProviderCredential, } from '@qovery/domains/cloud-providers/feature' -import { CLUSTER_SETTINGS_IMAGE_REGISTRY_URL, CLUSTER_SETTINGS_URL, CLUSTER_URL } from '@qovery/shared/routes' import { Button, Callout, @@ -172,7 +171,7 @@ function CalloutEdit({ {clusterId && ( Go to mirroring registry section diff --git a/libs/domains/clusters/feature/src/lib/cluster-credentials-settings/cluster-credentials-settings.tsx b/libs/domains/clusters/feature/src/lib/cluster-credentials-settings/cluster-credentials-settings.tsx index 95603ab63ab..af134d2ed28 100644 --- a/libs/domains/clusters/feature/src/lib/cluster-credentials-settings/cluster-credentials-settings.tsx +++ b/libs/domains/clusters/feature/src/lib/cluster-credentials-settings/cluster-credentials-settings.tsx @@ -3,7 +3,6 @@ import { type ClusterCredentials } from 'qovery-typescript-axios' import { useCallback } from 'react' import { Controller, useFormContext } from 'react-hook-form' import { useCloudProviderCredentials } from '@qovery/domains/cloud-providers/feature' -import { CLUSTER_SETTINGS_IMAGE_REGISTRY_URL, CLUSTER_SETTINGS_URL, CLUSTER_URL } from '@qovery/shared/routes' import { Callout, ExternalLink, Icon, InputSelect, Link, LoaderSpinner, useModal } from '@qovery/shared/ui' import { ClusterCredentialsModal, @@ -127,11 +126,7 @@ export function ClusterCredentialsSettings({ cloudProvider, isSetting }: Cluster the credentials properly in this cluster's mirroring registry section. Go to mirroring registry section diff --git a/libs/domains/clusters/feature/src/lib/secret-manager-modals/secret-manager-associated-external-secrets-modal.spec.tsx b/libs/domains/clusters/feature/src/lib/secret-manager-modals/secret-manager-associated-external-secrets-modal.spec.tsx new file mode 100644 index 00000000000..35a774573e6 --- /dev/null +++ b/libs/domains/clusters/feature/src/lib/secret-manager-modals/secret-manager-associated-external-secrets-modal.spec.tsx @@ -0,0 +1,134 @@ +import { APIVariableScopeEnum, type ExternalSecretAssociatedServiceResponse } from 'qovery-typescript-axios' +import { renderWithProviders, screen } from '@qovery/shared/util-tests' +import * as useSecretManagerAssociatedServices from '../hooks/use-secret-manager-associated-services/use-secret-manager-associated-services' +import SecretManagerAssociatedExternalSecretsModal, { + type SecretManagerAssociatedExternalSecretsModalProps, + groupExternalSecretsByProjectEnvironment, +} from './secret-manager-associated-external-secrets-modal' + +const useSecretManagerAssociatedServicesMockSpy = jest.spyOn( + useSecretManagerAssociatedServices, + 'useSecretManagerAssociatedServices' +) as jest.Mock + +const props: SecretManagerAssociatedExternalSecretsModalProps = { + organizationId: '0000-0000-0000', + secretManagerAccessId: 'secret-manager-access-id', + onClose: jest.fn(), +} + +const data: ExternalSecretAssociatedServiceResponse[] = [ + { + project_id: 'project-1', + project_name: 'Project 1', + environment_id: 'environment-1', + environment_name: 'Development', + variable_name: 'ENV_EXT_DATABASE', + external_secret_name: 'staging/application/database', + }, + { + project_id: 'project-1', + project_name: 'Project 1', + environment_id: 'environment-1', + environment_name: 'Development', + service_id: 'service-1', + service_name: 'Backend API', + service_type: APIVariableScopeEnum.APPLICATION, + variable_name: 'CREDENTIALS', + external_secret_name: 'staging/database/credentials', + }, + { + project_id: 'project-1', + project_name: 'Project 1', + environment_id: 'environment-1', + environment_name: 'Development', + service_id: 'service-1', + service_name: 'Backend API', + service_type: APIVariableScopeEnum.APPLICATION, + variable_name: 'DATABASE', + external_secret_name: 'staging/application/database', + }, +] + +describe('SecretManagerAssociatedExternalSecretsModal', () => { + beforeEach(() => { + jest.clearAllMocks() + useSecretManagerAssociatedServicesMockSpy.mockReturnValue({ + data, + isLoading: false, + }) + }) + + it('should group external secrets by project, environment, and service', () => { + const result = groupExternalSecretsByProjectEnvironment(data) + + expect(result).toHaveLength(1) + expect(result[0].environments[0].externalSecrets).toHaveLength(1) + expect(result[0].environments[0].services).toHaveLength(1) + expect(result[0].environments[0].services[0]).toMatchObject({ + service_id: 'service-1', + service_name: 'Backend API', + externalSecrets: [ + { + variable_name: 'CREDENTIALS', + external_secret_name: 'staging/database/credentials', + }, + { + variable_name: 'DATABASE', + external_secret_name: 'staging/application/database', + }, + ], + }) + }) + + it('should render environment and service sections with service depth', async () => { + const { userEvent } = renderWithProviders() + + expect(screen.getByRole('heading', { name: 'Associated external secrets' })).toBeInTheDocument() + expect(screen.getByRole('heading', { name: 'Environment external secret' })).toBeInTheDocument() + expect(screen.getByRole('heading', { name: 'Service external secrets' })).toBeInTheDocument() + + await userEvent.click(screen.getAllByRole('button')[0]) + await userEvent.click(screen.getAllByRole('button')[1]) + + expect(screen.getByText('ENV_EXT_DATABASE')).toBeInTheDocument() + expect(screen.getByText('staging/application/database')).toBeInTheDocument() + + await userEvent.click(screen.getAllByRole('button')[2]) + await userEvent.click(screen.getAllByRole('button')[3]) + await userEvent.click(screen.getAllByRole('button')[4]) + + expect(screen.getByText('Backend API')).toBeInTheDocument() + expect(screen.getByText('CREDENTIALS')).toBeInTheDocument() + expect(screen.getByText('DATABASE')).toBeInTheDocument() + }) + + it('should search by service name', () => { + const result = groupExternalSecretsByProjectEnvironment(data, 'backend') + + expect(result).toHaveLength(1) + expect(result[0].environments[0].externalSecrets).toHaveLength(0) + expect(result[0].environments[0].services[0]).toMatchObject({ + service_name: 'Backend API', + externalSecrets: [ + { + variable_name: 'CREDENTIALS', + }, + { + variable_name: 'DATABASE', + }, + ], + }) + }) + + it('should show loading spinner when loading', () => { + useSecretManagerAssociatedServicesMockSpy.mockReturnValue({ + data: [], + isLoading: true, + }) + + renderWithProviders() + + expect(screen.queryByPlaceholderText(/search/i)).not.toBeInTheDocument() + }) +}) diff --git a/libs/domains/clusters/feature/src/lib/secret-manager-modals/secret-manager-associated-external-secrets-modal.tsx b/libs/domains/clusters/feature/src/lib/secret-manager-modals/secret-manager-associated-external-secrets-modal.tsx new file mode 100644 index 00000000000..76a6bb24214 --- /dev/null +++ b/libs/domains/clusters/feature/src/lib/secret-manager-modals/secret-manager-associated-external-secrets-modal.tsx @@ -0,0 +1,426 @@ +import { type APIVariableScopeEnum, type ExternalSecretAssociatedServiceResponse } from 'qovery-typescript-axios' +import { useMemo, useState } from 'react' +import { match } from 'ts-pattern' +import { IconEnum } from '@qovery/shared/enums' +import { Heading, Icon, InputSearch, Link, LoaderSpinner, Section, TreeView } from '@qovery/shared/ui' +import { pluralize } from '@qovery/shared/util-js' +import { useSecretManagerAssociatedServices } from '../hooks/use-secret-manager-associated-services/use-secret-manager-associated-services' + +export interface SecretManagerAssociatedExternalSecretsModalProps { + secretManagerAccessId: string + organizationId: string + onClose: () => void +} + +interface ExternalSecret { + id: string + variable_name: string + external_secret_name: string +} + +interface Service { + service_id: string + service_name: string + service_type?: APIVariableScopeEnum + externalSecrets: ExternalSecret[] +} + +interface Environment { + environment_id: string + environment_name: string + externalSecrets: ExternalSecret[] + services: Service[] +} + +interface Project { + project_id: string + project_name: string + environments: Environment[] +} + +function buildExternalSecretId({ + environment_id, + service_id, + variable_name, + external_secret_name, +}: ExternalSecretAssociatedServiceResponse): string { + return [service_id ?? environment_id, variable_name, external_secret_name].filter(Boolean).join('-') +} + +function matchesSearch({ + item, + searchValue, +}: { + item: ExternalSecretAssociatedServiceResponse + searchValue?: string +}): boolean { + if (!searchValue) { + return true + } + + const search = searchValue.toLowerCase() + + return [ + item.project_name, + item.environment_name, + item.service_name, + item.variable_name, + item.external_secret_name, + ].some((value) => value?.toLowerCase().includes(search)) +} + +function getServiceIconName(serviceType?: APIVariableScopeEnum): IconEnum { + return match(serviceType) + .with('APPLICATION', () => IconEnum.APPLICATION) + .with('CONTAINER', () => IconEnum.CONTAINER) + .with('HELM', () => IconEnum.HELM) + .with('TERRAFORM', () => IconEnum.TERRAFORM) + .with('JOB', () => IconEnum.CRON_JOB) + .otherwise(() => IconEnum.SERVICES) +} + +export function groupExternalSecretsByProjectEnvironment( + data: ExternalSecretAssociatedServiceResponse[], + searchValue?: string +): Project[] { + const projects: Project[] = [] + + data.forEach((item) => { + if (!matchesSearch({ item, searchValue })) { + return + } + + let project = projects.find((proj) => proj.project_id === item.project_id) + if (!project) { + project = { + project_id: item.project_id, + project_name: item.project_name, + environments: [], + } + projects.push(project) + } + + let environment = project.environments.find((env) => env.environment_id === item.environment_id) + if (!environment) { + environment = { + environment_id: item.environment_id, + environment_name: item.environment_name, + externalSecrets: [], + services: [], + } + project.environments.push(environment) + } + + const externalSecret = { + id: buildExternalSecretId(item), + variable_name: item.variable_name, + external_secret_name: item.external_secret_name, + } + + if (!item.service_id) { + environment.externalSecrets.push(externalSecret) + return + } + + let service = environment.services.find((service) => service.service_id === item.service_id) + if (!service) { + service = { + service_id: item.service_id, + service_name: item.service_name ?? item.service_id, + service_type: item.service_type, + externalSecrets: [], + } + environment.services.push(service) + } + + service.externalSecrets.push(externalSecret) + }) + + return projects +} + +function getProjectsWithEnvironmentExternalSecrets(projects: Project[]): Project[] { + return projects + .map((project) => ({ + ...project, + environments: project.environments + .filter((environment) => environment.externalSecrets.length > 0) + .map((environment) => ({ ...environment, services: [] })), + })) + .filter((project) => project.environments.length > 0) +} + +function getProjectsWithServiceExternalSecrets(projects: Project[]): Project[] { + return projects + .map((project) => ({ + ...project, + environments: project.environments + .filter((environment) => environment.services.length > 0) + .map((environment) => ({ ...environment, externalSecrets: [] })), + })) + .filter((project) => project.environments.length > 0) +} + +function EmptyState() { + return ( +
+ +

No value found

+
+ ) +} + +export function SecretManagerAssociatedExternalSecretsModal({ + secretManagerAccessId, + organizationId, + onClose, +}: SecretManagerAssociatedExternalSecretsModalProps) { + const { data: associatedExternalSecrets = [], isLoading } = useSecretManagerAssociatedServices({ + secretManagerAccessId, + }) + const [searchValue, setSearchValue] = useState() + const normalizedSearch = searchValue?.trim() || undefined + + const groupedExternalSecrets = useMemo( + () => groupExternalSecretsByProjectEnvironment(associatedExternalSecrets, normalizedSearch), + [associatedExternalSecrets, normalizedSearch] + ) + + const environmentExternalSecrets = useMemo( + () => associatedExternalSecrets.filter((externalSecret) => !externalSecret.service_id), + [associatedExternalSecrets] + ) + const serviceExternalSecrets = useMemo( + () => associatedExternalSecrets.filter((externalSecret) => externalSecret.service_id), + [associatedExternalSecrets] + ) + + const environmentTreeData = useMemo( + () => getProjectsWithEnvironmentExternalSecrets(groupedExternalSecrets), + [groupedExternalSecrets] + ) + const serviceTreeData = useMemo( + () => getProjectsWithServiceExternalSecrets(groupedExternalSecrets), + [groupedExternalSecrets] + ) + + const hasEnvironmentExternalSecrets = environmentExternalSecrets.length > 0 + const hasServiceExternalSecrets = serviceExternalSecrets.length > 0 + const hasAnyExternalSecrets = associatedExternalSecrets.length > 0 + const noSearchResults = + Boolean(normalizedSearch) && + hasAnyExternalSecrets && + environmentTreeData.length === 0 && + serviceTreeData.length === 0 + + return ( +
+ + Associated {pluralize(associatedExternalSecrets.length, 'external secret')} + + {isLoading ? ( +
+ +
+ ) : ( + <> + setSearchValue(value)} + /> + {noSearchResults || !hasAnyExternalSecrets ? ( + + ) : ( +
+ {hasEnvironmentExternalSecrets && ( +
+ + {pluralize(environmentExternalSecrets.length, 'Environment external secret')} + + {environmentTreeData.length > 0 ? ( + + {environmentTreeData.map((project) => ( + + {project.project_name} + + {project.environments.map((environment) => ( + + + + onClose()} + to="/organization/$organizationId/project/$projectId/environment/$environmentId/variables/external-secrets" + params={{ + organizationId, + projectId: project.project_id, + environmentId: environment.environment_id, + }} + className="text-sm" + > + {environment.environment_name} + + + +
    + {environment.externalSecrets.map((externalSecret) => ( +
  • + onClose()} + to="/organization/$organizationId/project/$projectId/environment/$environmentId/variables/external-secrets" + params={{ + organizationId, + projectId: project.project_id, + environmentId: environment.environment_id, + }} + className="flex items-center py-1.5 pl-5 text-sm" + > + + + {externalSecret.variable_name} + + {externalSecret.external_secret_name} + + + +
  • + ))} +
+
+
+
+ ))} +
+
+ ))} +
+ ) : ( +

+ No matching {pluralize(environmentExternalSecrets.length, 'environment external secret')}. +

+ )} +
+ )} + {hasServiceExternalSecrets && ( +
+ + {pluralize(serviceExternalSecrets.length, 'Service external secret')} + + {serviceTreeData.length > 0 ? ( + + {serviceTreeData.map((project) => ( + + {project.project_name} + + {project.environments.map((environment) => ( + + + + onClose()} + to="/organization/$organizationId/project/$projectId/environment/$environmentId/variables/external-secrets" + params={{ + organizationId, + projectId: project.project_id, + environmentId: environment.environment_id, + }} + className="text-sm" + > + {environment.environment_name} + + + + {environment.services.map((service) => ( + + + + onClose()} + to="/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/external-secrets" + params={{ + organizationId, + projectId: project.project_id, + environmentId: environment.environment_id, + serviceId: service.service_id, + }} + className="flex items-center text-sm" + > + + {service.service_name} + + + +
    + {service.externalSecrets.map((externalSecret) => ( +
  • + onClose()} + to="/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/variables/external-secrets" + params={{ + organizationId, + projectId: project.project_id, + environmentId: environment.environment_id, + serviceId: service.service_id, + }} + className="flex items-center py-1.5 pl-5 text-sm" + > + + + {externalSecret.variable_name} + + {externalSecret.external_secret_name} + + + +
  • + ))} +
+
+
+
+ ))} +
+
+
+ ))} +
+
+ ))} +
+ ) : ( +

+ No matching {pluralize(serviceExternalSecrets.length, 'service external secret')}. +

+ )} +
+ )} +
+ )} + + )} +
+ ) +} + +export default SecretManagerAssociatedExternalSecretsModal diff --git a/libs/domains/organizations/feature/src/index.ts b/libs/domains/organizations/feature/src/index.ts index bacd8532db6..3f537da6808 100644 --- a/libs/domains/organizations/feature/src/index.ts +++ b/libs/domains/organizations/feature/src/index.ts @@ -1,7 +1,7 @@ export * from './lib/annotation-setting/annotation-setting' export * from './lib/annotation-create-edit-modal/annotation-create-edit-modal' export * from './lib/add-credit-card-modal/add-credit-card-modal' -export * from './lib/label-annotation-items-list-modal/label-annotation-items-list-modal' +export * from './lib/associated-items-modal/associated-items-modal' export * from './lib/git-branch-settings/git-branch-settings' export * from './lib/git-provider-setting/git-provider-setting' export * from './lib/git-repository-setting/git-repository-setting' diff --git a/libs/domains/organizations/feature/src/lib/associated-items-modal/__snapshots__/associated-items-modal.spec.tsx.snap b/libs/domains/organizations/feature/src/lib/associated-items-modal/__snapshots__/associated-items-modal.spec.tsx.snap new file mode 100644 index 00000000000..938979a3388 --- /dev/null +++ b/libs/domains/organizations/feature/src/lib/associated-items-modal/__snapshots__/associated-items-modal.spec.tsx.snap @@ -0,0 +1,166 @@ +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing + +exports[`AssociatedItemsModal should match snapshot with services 1`] = ` + +
+
+

+ Associated items (3) +

+
+