Skip to content

Commit f352912

Browse files
committed
update kubernetesresource to be babel instead of string
1 parent 1e1aec4 commit f352912

File tree

3 files changed

+18
-235
lines changed

3 files changed

+18
-235
lines changed

__fixtures__/output/swagger-extended-client-full-name-strategy.ts

Lines changed: 1 addition & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -42678,103 +42678,4 @@ export interface ResourceTypeMap {
4267842678
"authorization.k8s.io/v1/SelfSubjectRulesReview": AuthorizationK8sIoV1SelfSubjectRulesReview;
4267942679
"authorization.k8s.io/v1/SubjectAccessReview": AuthorizationK8sIoV1SubjectAccessReview;
4268042680
}
42681-
export type KubernetesResource =
42682-
| ComponentStatus
42683-
| ConfigMap
42684-
| Endpoints
42685-
| Event
42686-
| LimitRange
42687-
| Namespace
42688-
| Binding
42689-
| Status
42690-
| PersistentVolumeClaim
42691-
| Pod
42692-
| PodTemplate
42693-
| ReplicationController
42694-
| ResourceQuota
42695-
| Secret
42696-
| ServiceAccount
42697-
| Service
42698-
| Node
42699-
| PersistentVolume
42700-
| AcmeCertManagerIoV1Challenge
42701-
| AcmeCertManagerIoV1Order
42702-
| AdmissionregistrationK8sIoV1MutatingWebhookConfiguration
42703-
| AdmissionregistrationK8sIoV1ValidatingAdmissionPolicy
42704-
| AdmissionregistrationK8sIoV1ValidatingAdmissionPolicyBinding
42705-
| AdmissionregistrationK8sIoV1ValidatingWebhookConfiguration
42706-
| ApiextensionsK8sIoV1CustomResourceDefinition
42707-
| ApiregistrationK8sIoV1APIService
42708-
| AppsV1ControllerRevision
42709-
| AppsV1DaemonSet
42710-
| AppsV1Deployment
42711-
| AppsV1ReplicaSet
42712-
| AppsV1StatefulSet
42713-
| AutoscalingInternalKnativeDevV1alpha1Metric
42714-
| AutoscalingInternalKnativeDevV1alpha1PodAutoscaler
42715-
| AutoscalingV1HorizontalPodAutoscaler
42716-
| AutoscalingV2HorizontalPodAutoscaler
42717-
| BatchV1CronJob
42718-
| BatchV1Job
42719-
| CachingInternalKnativeDevV1alpha1Image
42720-
| CertManagerIoV1ClusterIssuer
42721-
| CertManagerIoV1CertificateRequest
42722-
| CertManagerIoV1Certificate
42723-
| CertManagerIoV1Issuer
42724-
| CertificatesK8sIoV1CertificateSigningRequest
42725-
| CoordinationK8sIoV1Lease
42726-
| DiscoveryK8sIoV1EndpointSlice
42727-
| EventsK8sIoV1Event
42728-
| FlowcontrolApiserverK8sIoV1FlowSchema
42729-
| FlowcontrolApiserverK8sIoV1PriorityLevelConfiguration
42730-
| MonitoringCoreosComV1Alertmanager
42731-
| MonitoringCoreosComV1PodMonitor
42732-
| MonitoringCoreosComV1Probe
42733-
| MonitoringCoreosComV1Prometheus
42734-
| MonitoringCoreosComV1PrometheusRule
42735-
| MonitoringCoreosComV1ServiceMonitor
42736-
| MonitoringCoreosComV1ThanosRuler
42737-
| MonitoringCoreosComV1alpha1AlertmanagerConfig
42738-
| MonitoringCoreosComV1alpha1PrometheusAgent
42739-
| MonitoringCoreosComV1alpha1ScrapeConfig
42740-
| NetworkingInternalKnativeDevV1alpha1ClusterDomainClaim
42741-
| NetworkingInternalKnativeDevV1alpha1Certificate
42742-
| NetworkingInternalKnativeDevV1alpha1Ingress
42743-
| NetworkingInternalKnativeDevV1alpha1ServerlessService
42744-
| NetworkingK8sIoV1IngressClass
42745-
| NetworkingK8sIoV1Ingress
42746-
| NetworkingK8sIoV1NetworkPolicy
42747-
| NodeK8sIoV1RuntimeClass
42748-
| PolicyV1PodDisruptionBudget
42749-
| PostgresqlCnpgIoV1ClusterImageCatalog
42750-
| PostgresqlCnpgIoV1Backup
42751-
| PostgresqlCnpgIoV1Cluster
42752-
| PostgresqlCnpgIoV1Database
42753-
| PostgresqlCnpgIoV1ImageCatalog
42754-
| PostgresqlCnpgIoV1Pooler
42755-
| PostgresqlCnpgIoV1Publication
42756-
| PostgresqlCnpgIoV1ScheduledBackup
42757-
| PostgresqlCnpgIoV1Subscription
42758-
| RbacAuthorizationK8sIoV1ClusterRoleBinding
42759-
| RbacAuthorizationK8sIoV1ClusterRole
42760-
| RbacAuthorizationK8sIoV1RoleBinding
42761-
| RbacAuthorizationK8sIoV1Role
42762-
| SchedulingK8sIoV1PriorityClass
42763-
| ServingKnativeDevV1Configuration
42764-
| ServingKnativeDevV1Revision
42765-
| ServingKnativeDevV1Route
42766-
| ServingKnativeDevV1Service
42767-
| StorageK8sIoV1CSIDriver
42768-
| StorageK8sIoV1CSINode
42769-
| StorageK8sIoV1CSIStorageCapacity
42770-
| StorageK8sIoV1StorageClass
42771-
| StorageK8sIoV1VolumeAttachment
42772-
| PolicyV1Eviction
42773-
| AutoscalingV1Scale
42774-
| AuthenticationK8sIoV1TokenRequest
42775-
| AuthenticationK8sIoV1SelfSubjectReview
42776-
| AuthenticationK8sIoV1TokenReview
42777-
| AuthorizationK8sIoV1LocalSubjectAccessReview
42778-
| AuthorizationK8sIoV1SelfSubjectAccessReview
42779-
| AuthorizationK8sIoV1SelfSubjectRulesReview
42780-
| AuthorizationK8sIoV1SubjectAccessReview;
42681+
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;

__fixtures__/output/swagger-extended-client.swagger.ts

Lines changed: 1 addition & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -41319,103 +41319,4 @@ export interface ResourceTypeMap {
4131941319
"authorization.k8s.io/v1/SelfSubjectRulesReview": AuthorizationK8sIoV1SelfSubjectRulesReview;
4132041320
"authorization.k8s.io/v1/SubjectAccessReview": AuthorizationK8sIoV1SubjectAccessReview;
4132141321
}
41322-
export type KubernetesResource =
41323-
| ComponentStatus
41324-
| ConfigMap
41325-
| Endpoints
41326-
| Event
41327-
| LimitRange
41328-
| Namespace
41329-
| Binding
41330-
| Status
41331-
| PersistentVolumeClaim
41332-
| Pod
41333-
| PodTemplate
41334-
| ReplicationController
41335-
| ResourceQuota
41336-
| Secret
41337-
| ServiceAccount
41338-
| Service
41339-
| Node
41340-
| PersistentVolume
41341-
| AcmeCertManagerIoV1Challenge
41342-
| AcmeCertManagerIoV1Order
41343-
| AdmissionregistrationK8sIoV1MutatingWebhookConfiguration
41344-
| AdmissionregistrationK8sIoV1ValidatingAdmissionPolicy
41345-
| AdmissionregistrationK8sIoV1ValidatingAdmissionPolicyBinding
41346-
| AdmissionregistrationK8sIoV1ValidatingWebhookConfiguration
41347-
| ApiextensionsK8sIoV1CustomResourceDefinition
41348-
| ApiregistrationK8sIoV1APIService
41349-
| AppsV1ControllerRevision
41350-
| AppsV1DaemonSet
41351-
| AppsV1Deployment
41352-
| AppsV1ReplicaSet
41353-
| AppsV1StatefulSet
41354-
| AutoscalingInternalKnativeDevV1alpha1Metric
41355-
| AutoscalingInternalKnativeDevV1alpha1PodAutoscaler
41356-
| AutoscalingV1HorizontalPodAutoscaler
41357-
| AutoscalingV2HorizontalPodAutoscaler
41358-
| BatchV1CronJob
41359-
| BatchV1Job
41360-
| CachingInternalKnativeDevV1alpha1Image
41361-
| CertManagerIoV1ClusterIssuer
41362-
| CertManagerIoV1CertificateRequest
41363-
| CertManagerIoV1Certificate
41364-
| CertManagerIoV1Issuer
41365-
| CertificatesK8sIoV1CertificateSigningRequest
41366-
| CoordinationK8sIoV1Lease
41367-
| DiscoveryK8sIoV1EndpointSlice
41368-
| EventsK8sIoV1Event
41369-
| FlowcontrolApiserverK8sIoV1FlowSchema
41370-
| FlowcontrolApiserverK8sIoV1PriorityLevelConfiguration
41371-
| MonitoringCoreosComV1Alertmanager
41372-
| MonitoringCoreosComV1PodMonitor
41373-
| MonitoringCoreosComV1Probe
41374-
| MonitoringCoreosComV1Prometheus
41375-
| MonitoringCoreosComV1PrometheusRule
41376-
| MonitoringCoreosComV1ServiceMonitor
41377-
| MonitoringCoreosComV1ThanosRuler
41378-
| MonitoringCoreosComV1alpha1AlertmanagerConfig
41379-
| MonitoringCoreosComV1alpha1PrometheusAgent
41380-
| MonitoringCoreosComV1alpha1ScrapeConfig
41381-
| NetworkingInternalKnativeDevV1alpha1ClusterDomainClaim
41382-
| NetworkingInternalKnativeDevV1alpha1Certificate
41383-
| NetworkingInternalKnativeDevV1alpha1Ingress
41384-
| NetworkingInternalKnativeDevV1alpha1ServerlessService
41385-
| NetworkingK8sIoV1IngressClass
41386-
| NetworkingK8sIoV1Ingress
41387-
| NetworkingK8sIoV1NetworkPolicy
41388-
| NodeK8sIoV1RuntimeClass
41389-
| PolicyV1PodDisruptionBudget
41390-
| PostgresqlCnpgIoV1ClusterImageCatalog
41391-
| PostgresqlCnpgIoV1Backup
41392-
| PostgresqlCnpgIoV1Cluster
41393-
| PostgresqlCnpgIoV1Database
41394-
| PostgresqlCnpgIoV1ImageCatalog
41395-
| PostgresqlCnpgIoV1Pooler
41396-
| PostgresqlCnpgIoV1Publication
41397-
| PostgresqlCnpgIoV1ScheduledBackup
41398-
| PostgresqlCnpgIoV1Subscription
41399-
| RbacAuthorizationK8sIoV1ClusterRoleBinding
41400-
| RbacAuthorizationK8sIoV1ClusterRole
41401-
| RbacAuthorizationK8sIoV1RoleBinding
41402-
| RbacAuthorizationK8sIoV1Role
41403-
| SchedulingK8sIoV1PriorityClass
41404-
| ServingKnativeDevV1Configuration
41405-
| ServingKnativeDevV1Revision
41406-
| ServingKnativeDevV1Route
41407-
| ServingKnativeDevV1Service
41408-
| StorageK8sIoV1CSIDriver
41409-
| StorageK8sIoV1CSINode
41410-
| StorageK8sIoV1CSIStorageCapacity
41411-
| StorageK8sIoV1StorageClass
41412-
| StorageK8sIoV1VolumeAttachment
41413-
| PolicyV1Eviction
41414-
| AutoscalingV1Scale
41415-
| AuthenticationK8sIoV1TokenRequest
41416-
| AuthenticationK8sIoV1SelfSubjectReview
41417-
| AuthenticationK8sIoV1TokenReview
41418-
| AuthorizationK8sIoV1LocalSubjectAccessReview
41419-
| AuthorizationK8sIoV1SelfSubjectAccessReview
41420-
| AuthorizationK8sIoV1SelfSubjectRulesReview
41421-
| AuthorizationK8sIoV1SubjectAccessReview;
41322+
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;

packages/schema-sdk/src/openapi.ts

Lines changed: 16 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -510,32 +510,27 @@ function generateResourceTypeMapUtilities(entries: { key: string; typeName: stri
510510
);
511511

512512
const uniqueTypeNames = Array.from(new Set(entries.map((entry) => entry.typeName)));
513+
514+
let kubernetesResourceType: t.TSType;
513515
if (uniqueTypeNames.length === 0) {
514-
statements.push(
515-
template.statement('export type KubernetesResource = never;', {
516-
plugins: ['typescript'],
517-
placeholderPattern: false,
518-
})()
519-
);
516+
kubernetesResourceType = t.tsNeverKeyword();
520517
} else if (uniqueTypeNames.length === 1) {
521-
statements.push(
522-
template.statement(`export type KubernetesResource = ${uniqueTypeNames[0]};`, {
523-
plugins: ['typescript'],
524-
placeholderPattern: false,
525-
})()
526-
);
518+
kubernetesResourceType = t.tsTypeReference(t.identifier(uniqueTypeNames[0]));
527519
} else {
528-
const unionLines = uniqueTypeNames.map((name) => ` | ${name}`).join('\n');
529-
statements.push(
530-
template.statement(
531-
`export type KubernetesResource =\n${unionLines};`,
532-
{
533-
plugins: ['typescript'],
534-
placeholderPattern: false,
535-
}
536-
)()
520+
kubernetesResourceType = t.tsUnionType(
521+
uniqueTypeNames.map((name) => t.tsTypeReference(t.identifier(name)))
537522
);
538523
}
524+
525+
statements.push(
526+
t.exportNamedDeclaration(
527+
t.tsTypeAliasDeclaration(
528+
t.identifier('KubernetesResource'),
529+
null,
530+
kubernetesResourceType
531+
)
532+
)
533+
);
539534

540535
return statements;
541536
}
@@ -1092,20 +1087,6 @@ export function generateOpenApiClient(
10921087
)
10931088
).code;
10941089

1095-
code = code.replace(
1096-
/export type KubernetesResource = ([^;]+);/,
1097-
(full, types) => {
1098-
const parts = types
1099-
.split('|')
1100-
.map((part: string) => part.trim())
1101-
.filter(Boolean);
1102-
if (parts.length <= 1) {
1103-
return full;
1104-
}
1105-
const union = parts.map((part: string) => ` | ${part}`).join('\n');
1106-
return `export type KubernetesResource =\n${union};`;
1107-
}
1108-
);
11091090

11101091
return code;
11111092
}

0 commit comments

Comments
 (0)