Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
update kubernetesresource to be babel instead of string
  • Loading branch information
Anmol1696 committed Sep 24, 2025
commit f3529127b575f285d9966d2979bedb56eac0dd0b
101 changes: 1 addition & 100 deletions __fixtures__/output/swagger-extended-client-full-name-strategy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42678,103 +42678,4 @@ export interface ResourceTypeMap {
"authorization.k8s.io/v1/SelfSubjectRulesReview": AuthorizationK8sIoV1SelfSubjectRulesReview;
"authorization.k8s.io/v1/SubjectAccessReview": AuthorizationK8sIoV1SubjectAccessReview;
}
export type KubernetesResource =
| ComponentStatus
| ConfigMap
| Endpoints
| Event
| LimitRange
| Namespace
| Binding
| Status
| PersistentVolumeClaim
| Pod
| PodTemplate
| ReplicationController
| ResourceQuota
| Secret
| ServiceAccount
| Service
| Node
| PersistentVolume
| AcmeCertManagerIoV1Challenge
| AcmeCertManagerIoV1Order
| AdmissionregistrationK8sIoV1MutatingWebhookConfiguration
| AdmissionregistrationK8sIoV1ValidatingAdmissionPolicy
| AdmissionregistrationK8sIoV1ValidatingAdmissionPolicyBinding
| AdmissionregistrationK8sIoV1ValidatingWebhookConfiguration
| ApiextensionsK8sIoV1CustomResourceDefinition
| ApiregistrationK8sIoV1APIService
| AppsV1ControllerRevision
| AppsV1DaemonSet
| AppsV1Deployment
| AppsV1ReplicaSet
| AppsV1StatefulSet
| AutoscalingInternalKnativeDevV1alpha1Metric
| AutoscalingInternalKnativeDevV1alpha1PodAutoscaler
| AutoscalingV1HorizontalPodAutoscaler
| AutoscalingV2HorizontalPodAutoscaler
| BatchV1CronJob
| BatchV1Job
| CachingInternalKnativeDevV1alpha1Image
| CertManagerIoV1ClusterIssuer
| CertManagerIoV1CertificateRequest
| CertManagerIoV1Certificate
| CertManagerIoV1Issuer
| CertificatesK8sIoV1CertificateSigningRequest
| CoordinationK8sIoV1Lease
| DiscoveryK8sIoV1EndpointSlice
| EventsK8sIoV1Event
| FlowcontrolApiserverK8sIoV1FlowSchema
| FlowcontrolApiserverK8sIoV1PriorityLevelConfiguration
| MonitoringCoreosComV1Alertmanager
| MonitoringCoreosComV1PodMonitor
| MonitoringCoreosComV1Probe
| MonitoringCoreosComV1Prometheus
| MonitoringCoreosComV1PrometheusRule
| MonitoringCoreosComV1ServiceMonitor
| MonitoringCoreosComV1ThanosRuler
| MonitoringCoreosComV1alpha1AlertmanagerConfig
| MonitoringCoreosComV1alpha1PrometheusAgent
| MonitoringCoreosComV1alpha1ScrapeConfig
| NetworkingInternalKnativeDevV1alpha1ClusterDomainClaim
| NetworkingInternalKnativeDevV1alpha1Certificate
| NetworkingInternalKnativeDevV1alpha1Ingress
| NetworkingInternalKnativeDevV1alpha1ServerlessService
| NetworkingK8sIoV1IngressClass
| NetworkingK8sIoV1Ingress
| NetworkingK8sIoV1NetworkPolicy
| NodeK8sIoV1RuntimeClass
| PolicyV1PodDisruptionBudget
| PostgresqlCnpgIoV1ClusterImageCatalog
| PostgresqlCnpgIoV1Backup
| PostgresqlCnpgIoV1Cluster
| PostgresqlCnpgIoV1Database
| PostgresqlCnpgIoV1ImageCatalog
| PostgresqlCnpgIoV1Pooler
| PostgresqlCnpgIoV1Publication
| PostgresqlCnpgIoV1ScheduledBackup
| PostgresqlCnpgIoV1Subscription
| RbacAuthorizationK8sIoV1ClusterRoleBinding
| RbacAuthorizationK8sIoV1ClusterRole
| RbacAuthorizationK8sIoV1RoleBinding
| RbacAuthorizationK8sIoV1Role
| SchedulingK8sIoV1PriorityClass
| ServingKnativeDevV1Configuration
| ServingKnativeDevV1Revision
| ServingKnativeDevV1Route
| ServingKnativeDevV1Service
| StorageK8sIoV1CSIDriver
| StorageK8sIoV1CSINode
| StorageK8sIoV1CSIStorageCapacity
| StorageK8sIoV1StorageClass
| StorageK8sIoV1VolumeAttachment
| PolicyV1Eviction
| AutoscalingV1Scale
| AuthenticationK8sIoV1TokenRequest
| AuthenticationK8sIoV1SelfSubjectReview
| AuthenticationK8sIoV1TokenReview
| AuthorizationK8sIoV1LocalSubjectAccessReview
| AuthorizationK8sIoV1SelfSubjectAccessReview
| AuthorizationK8sIoV1SelfSubjectRulesReview
| AuthorizationK8sIoV1SubjectAccessReview;
export type KubernetesResource = ComponentStatus | ConfigMap | Endpoints | Event | LimitRange | Namespace | Binding | Status | PersistentVolumeClaim | Pod | PodTemplate | ReplicationController | ResourceQuota | Secret | ServiceAccount | Service | Node | PersistentVolume | AcmeCertManagerIoV1Challenge | AcmeCertManagerIoV1Order | AdmissionregistrationK8sIoV1MutatingWebhookConfiguration | AdmissionregistrationK8sIoV1ValidatingAdmissionPolicy | AdmissionregistrationK8sIoV1ValidatingAdmissionPolicyBinding | AdmissionregistrationK8sIoV1ValidatingWebhookConfiguration | ApiextensionsK8sIoV1CustomResourceDefinition | ApiregistrationK8sIoV1APIService | AppsV1ControllerRevision | AppsV1DaemonSet | AppsV1Deployment | AppsV1ReplicaSet | AppsV1StatefulSet | AutoscalingInternalKnativeDevV1alpha1Metric | AutoscalingInternalKnativeDevV1alpha1PodAutoscaler | AutoscalingV1HorizontalPodAutoscaler | AutoscalingV2HorizontalPodAutoscaler | BatchV1CronJob | BatchV1Job | CachingInternalKnativeDevV1alpha1Image | CertManagerIoV1ClusterIssuer | CertManagerIoV1CertificateRequest | CertManagerIoV1Certificate | CertManagerIoV1Issuer | CertificatesK8sIoV1CertificateSigningRequest | CoordinationK8sIoV1Lease | DiscoveryK8sIoV1EndpointSlice | EventsK8sIoV1Event | FlowcontrolApiserverK8sIoV1FlowSchema | FlowcontrolApiserverK8sIoV1PriorityLevelConfiguration | MonitoringCoreosComV1Alertmanager | MonitoringCoreosComV1PodMonitor | MonitoringCoreosComV1Probe | MonitoringCoreosComV1Prometheus | MonitoringCoreosComV1PrometheusRule | MonitoringCoreosComV1ServiceMonitor | MonitoringCoreosComV1ThanosRuler | MonitoringCoreosComV1alpha1AlertmanagerConfig | MonitoringCoreosComV1alpha1PrometheusAgent | MonitoringCoreosComV1alpha1ScrapeConfig | NetworkingInternalKnativeDevV1alpha1ClusterDomainClaim | NetworkingInternalKnativeDevV1alpha1Certificate | NetworkingInternalKnativeDevV1alpha1Ingress | NetworkingInternalKnativeDevV1alpha1ServerlessService | NetworkingK8sIoV1IngressClass | NetworkingK8sIoV1Ingress | NetworkingK8sIoV1NetworkPolicy | NodeK8sIoV1RuntimeClass | PolicyV1PodDisruptionBudget | PostgresqlCnpgIoV1ClusterImageCatalog | PostgresqlCnpgIoV1Backup | PostgresqlCnpgIoV1Cluster | PostgresqlCnpgIoV1Database | PostgresqlCnpgIoV1ImageCatalog | PostgresqlCnpgIoV1Pooler | PostgresqlCnpgIoV1Publication | PostgresqlCnpgIoV1ScheduledBackup | PostgresqlCnpgIoV1Subscription | RbacAuthorizationK8sIoV1ClusterRoleBinding | RbacAuthorizationK8sIoV1ClusterRole | RbacAuthorizationK8sIoV1RoleBinding | RbacAuthorizationK8sIoV1Role | SchedulingK8sIoV1PriorityClass | ServingKnativeDevV1Configuration | ServingKnativeDevV1Revision | ServingKnativeDevV1Route | ServingKnativeDevV1Service | StorageK8sIoV1CSIDriver | StorageK8sIoV1CSINode | StorageK8sIoV1CSIStorageCapacity | StorageK8sIoV1StorageClass | StorageK8sIoV1VolumeAttachment | PolicyV1Eviction | AutoscalingV1Scale | AuthenticationK8sIoV1TokenRequest | AuthenticationK8sIoV1SelfSubjectReview | AuthenticationK8sIoV1TokenReview | AuthorizationK8sIoV1LocalSubjectAccessReview | AuthorizationK8sIoV1SelfSubjectAccessReview | AuthorizationK8sIoV1SelfSubjectRulesReview | AuthorizationK8sIoV1SubjectAccessReview;
101 changes: 1 addition & 100 deletions __fixtures__/output/swagger-extended-client.swagger.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41319,103 +41319,4 @@ export interface ResourceTypeMap {
"authorization.k8s.io/v1/SelfSubjectRulesReview": AuthorizationK8sIoV1SelfSubjectRulesReview;
"authorization.k8s.io/v1/SubjectAccessReview": AuthorizationK8sIoV1SubjectAccessReview;
}
export type KubernetesResource =
| ComponentStatus
| ConfigMap
| Endpoints
| Event
| LimitRange
| Namespace
| Binding
| Status
| PersistentVolumeClaim
| Pod
| PodTemplate
| ReplicationController
| ResourceQuota
| Secret
| ServiceAccount
| Service
| Node
| PersistentVolume
| AcmeCertManagerIoV1Challenge
| AcmeCertManagerIoV1Order
| AdmissionregistrationK8sIoV1MutatingWebhookConfiguration
| AdmissionregistrationK8sIoV1ValidatingAdmissionPolicy
| AdmissionregistrationK8sIoV1ValidatingAdmissionPolicyBinding
| AdmissionregistrationK8sIoV1ValidatingWebhookConfiguration
| ApiextensionsK8sIoV1CustomResourceDefinition
| ApiregistrationK8sIoV1APIService
| AppsV1ControllerRevision
| AppsV1DaemonSet
| AppsV1Deployment
| AppsV1ReplicaSet
| AppsV1StatefulSet
| AutoscalingInternalKnativeDevV1alpha1Metric
| AutoscalingInternalKnativeDevV1alpha1PodAutoscaler
| AutoscalingV1HorizontalPodAutoscaler
| AutoscalingV2HorizontalPodAutoscaler
| BatchV1CronJob
| BatchV1Job
| CachingInternalKnativeDevV1alpha1Image
| CertManagerIoV1ClusterIssuer
| CertManagerIoV1CertificateRequest
| CertManagerIoV1Certificate
| CertManagerIoV1Issuer
| CertificatesK8sIoV1CertificateSigningRequest
| CoordinationK8sIoV1Lease
| DiscoveryK8sIoV1EndpointSlice
| EventsK8sIoV1Event
| FlowcontrolApiserverK8sIoV1FlowSchema
| FlowcontrolApiserverK8sIoV1PriorityLevelConfiguration
| MonitoringCoreosComV1Alertmanager
| MonitoringCoreosComV1PodMonitor
| MonitoringCoreosComV1Probe
| MonitoringCoreosComV1Prometheus
| MonitoringCoreosComV1PrometheusRule
| MonitoringCoreosComV1ServiceMonitor
| MonitoringCoreosComV1ThanosRuler
| MonitoringCoreosComV1alpha1AlertmanagerConfig
| MonitoringCoreosComV1alpha1PrometheusAgent
| MonitoringCoreosComV1alpha1ScrapeConfig
| NetworkingInternalKnativeDevV1alpha1ClusterDomainClaim
| NetworkingInternalKnativeDevV1alpha1Certificate
| NetworkingInternalKnativeDevV1alpha1Ingress
| NetworkingInternalKnativeDevV1alpha1ServerlessService
| NetworkingK8sIoV1IngressClass
| NetworkingK8sIoV1Ingress
| NetworkingK8sIoV1NetworkPolicy
| NodeK8sIoV1RuntimeClass
| PolicyV1PodDisruptionBudget
| PostgresqlCnpgIoV1ClusterImageCatalog
| PostgresqlCnpgIoV1Backup
| PostgresqlCnpgIoV1Cluster
| PostgresqlCnpgIoV1Database
| PostgresqlCnpgIoV1ImageCatalog
| PostgresqlCnpgIoV1Pooler
| PostgresqlCnpgIoV1Publication
| PostgresqlCnpgIoV1ScheduledBackup
| PostgresqlCnpgIoV1Subscription
| RbacAuthorizationK8sIoV1ClusterRoleBinding
| RbacAuthorizationK8sIoV1ClusterRole
| RbacAuthorizationK8sIoV1RoleBinding
| RbacAuthorizationK8sIoV1Role
| SchedulingK8sIoV1PriorityClass
| ServingKnativeDevV1Configuration
| ServingKnativeDevV1Revision
| ServingKnativeDevV1Route
| ServingKnativeDevV1Service
| StorageK8sIoV1CSIDriver
| StorageK8sIoV1CSINode
| StorageK8sIoV1CSIStorageCapacity
| StorageK8sIoV1StorageClass
| StorageK8sIoV1VolumeAttachment
| PolicyV1Eviction
| AutoscalingV1Scale
| AuthenticationK8sIoV1TokenRequest
| AuthenticationK8sIoV1SelfSubjectReview
| AuthenticationK8sIoV1TokenReview
| AuthorizationK8sIoV1LocalSubjectAccessReview
| AuthorizationK8sIoV1SelfSubjectAccessReview
| AuthorizationK8sIoV1SelfSubjectRulesReview
| AuthorizationK8sIoV1SubjectAccessReview;
export type KubernetesResource = ComponentStatus | ConfigMap | Endpoints | Event | LimitRange | Namespace | Binding | Status | PersistentVolumeClaim | Pod | PodTemplate | ReplicationController | ResourceQuota | Secret | ServiceAccount | Service | Node | PersistentVolume | AcmeCertManagerIoV1Challenge | AcmeCertManagerIoV1Order | AdmissionregistrationK8sIoV1MutatingWebhookConfiguration | AdmissionregistrationK8sIoV1ValidatingAdmissionPolicy | AdmissionregistrationK8sIoV1ValidatingAdmissionPolicyBinding | AdmissionregistrationK8sIoV1ValidatingWebhookConfiguration | ApiextensionsK8sIoV1CustomResourceDefinition | ApiregistrationK8sIoV1APIService | AppsV1ControllerRevision | AppsV1DaemonSet | AppsV1Deployment | AppsV1ReplicaSet | AppsV1StatefulSet | AutoscalingInternalKnativeDevV1alpha1Metric | AutoscalingInternalKnativeDevV1alpha1PodAutoscaler | AutoscalingV1HorizontalPodAutoscaler | AutoscalingV2HorizontalPodAutoscaler | BatchV1CronJob | BatchV1Job | CachingInternalKnativeDevV1alpha1Image | CertManagerIoV1ClusterIssuer | CertManagerIoV1CertificateRequest | CertManagerIoV1Certificate | CertManagerIoV1Issuer | CertificatesK8sIoV1CertificateSigningRequest | CoordinationK8sIoV1Lease | DiscoveryK8sIoV1EndpointSlice | EventsK8sIoV1Event | FlowcontrolApiserverK8sIoV1FlowSchema | FlowcontrolApiserverK8sIoV1PriorityLevelConfiguration | MonitoringCoreosComV1Alertmanager | MonitoringCoreosComV1PodMonitor | MonitoringCoreosComV1Probe | MonitoringCoreosComV1Prometheus | MonitoringCoreosComV1PrometheusRule | MonitoringCoreosComV1ServiceMonitor | MonitoringCoreosComV1ThanosRuler | MonitoringCoreosComV1alpha1AlertmanagerConfig | MonitoringCoreosComV1alpha1PrometheusAgent | MonitoringCoreosComV1alpha1ScrapeConfig | NetworkingInternalKnativeDevV1alpha1ClusterDomainClaim | NetworkingInternalKnativeDevV1alpha1Certificate | NetworkingInternalKnativeDevV1alpha1Ingress | NetworkingInternalKnativeDevV1alpha1ServerlessService | NetworkingK8sIoV1IngressClass | NetworkingK8sIoV1Ingress | NetworkingK8sIoV1NetworkPolicy | NodeK8sIoV1RuntimeClass | PolicyV1PodDisruptionBudget | PostgresqlCnpgIoV1ClusterImageCatalog | PostgresqlCnpgIoV1Backup | PostgresqlCnpgIoV1Cluster | PostgresqlCnpgIoV1Database | PostgresqlCnpgIoV1ImageCatalog | PostgresqlCnpgIoV1Pooler | PostgresqlCnpgIoV1Publication | PostgresqlCnpgIoV1ScheduledBackup | PostgresqlCnpgIoV1Subscription | RbacAuthorizationK8sIoV1ClusterRoleBinding | RbacAuthorizationK8sIoV1ClusterRole | RbacAuthorizationK8sIoV1RoleBinding | RbacAuthorizationK8sIoV1Role | SchedulingK8sIoV1PriorityClass | ServingKnativeDevV1Configuration | ServingKnativeDevV1Revision | ServingKnativeDevV1Route | ServingKnativeDevV1Service | StorageK8sIoV1CSIDriver | StorageK8sIoV1CSINode | StorageK8sIoV1CSIStorageCapacity | StorageK8sIoV1StorageClass | StorageK8sIoV1VolumeAttachment | PolicyV1Eviction | AutoscalingV1Scale | AuthenticationK8sIoV1TokenRequest | AuthenticationK8sIoV1SelfSubjectReview | AuthenticationK8sIoV1TokenReview | AuthorizationK8sIoV1LocalSubjectAccessReview | AuthorizationK8sIoV1SelfSubjectAccessReview | AuthorizationK8sIoV1SelfSubjectRulesReview | AuthorizationK8sIoV1SubjectAccessReview;
51 changes: 16 additions & 35 deletions packages/schema-sdk/src/openapi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -510,32 +510,27 @@ function generateResourceTypeMapUtilities(entries: { key: string; typeName: stri
);

const uniqueTypeNames = Array.from(new Set(entries.map((entry) => entry.typeName)));

let kubernetesResourceType: t.TSType;
if (uniqueTypeNames.length === 0) {
statements.push(
template.statement('export type KubernetesResource = never;', {
plugins: ['typescript'],
placeholderPattern: false,
})()
);
kubernetesResourceType = t.tsNeverKeyword();
} else if (uniqueTypeNames.length === 1) {
statements.push(
template.statement(`export type KubernetesResource = ${uniqueTypeNames[0]};`, {
plugins: ['typescript'],
placeholderPattern: false,
})()
);
kubernetesResourceType = t.tsTypeReference(t.identifier(uniqueTypeNames[0]));
} else {
const unionLines = uniqueTypeNames.map((name) => ` | ${name}`).join('\n');
statements.push(
template.statement(
`export type KubernetesResource =\n${unionLines};`,
{
plugins: ['typescript'],
placeholderPattern: false,
}
)()
kubernetesResourceType = t.tsUnionType(
uniqueTypeNames.map((name) => t.tsTypeReference(t.identifier(name)))
);
}

statements.push(
t.exportNamedDeclaration(
t.tsTypeAliasDeclaration(
t.identifier('KubernetesResource'),
null,
kubernetesResourceType
)
)
);

return statements;
}
Expand Down Expand Up @@ -1092,20 +1087,6 @@ export function generateOpenApiClient(
)
).code;

code = code.replace(
/export type KubernetesResource = ([^;]+);/,
(full, types) => {
const parts = types
.split('|')
.map((part: string) => part.trim())
.filter(Boolean);
if (parts.length <= 1) {
return full;
}
const union = parts.map((part: string) => ` | ${part}`).join('\n');
return `export type KubernetesResource =\n${union};`;
}
);

return code;
}
Expand Down
Loading