acacode / acacode/swagger-typescript-api

`XxMapping` for `discriminator` doesn’t account for `generateUnionEnums`

Abierto
#689 3 comentarios 1 reacción 0 asignados Ver en GitHub
Lenguaje dominante
TypeScript
Estrellas
4.1k
Forks
436
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

## Issue

When setting `generateUnionEnums` to true, the mapping `Key` generics should be set explicitly as strings rather than using the enum mapping.

Found on version `13.0.3`

### Setup

That is, in the following situation:

```yaml
BranchName:
type: string
enum:
- one
- two

Root:
type: object
discriminator:
propertyName: branch
mapping:
one: '#/components/schemas/BranchA'
two: '#/components/schemas/BranchB'
properties:
branch:
$ref: '#/components/schemas/BranchName'
```

### Expected output

```ts
export type BranchName = 'one' | 'two';
export type Root = BaseRoot &
(
| BaseRootBranchMapping<'one', BranchA>
| BaseRootBranchMapping<'two', BranchB>
);
```

### Current output

```ts
export type BranchName = 'one' | 'two';
export type Root = BaseRoot &
(
| BaseRootBranchMapping
| BaseRootBranchMapping
);
```

Minimal full yaml to reproduce

```yaml
openapi: 3.0.0
info:
title: Broken branches
version: 0.0.0

paths: {}

components:
schemas:
BranchName:
type: string
enum:
- one
- two

Root:
type: object
discriminator:
propertyName: branch
mapping:
one: '#/components/schemas/BranchA'
two: '#/components/schemas/BranchB'
properties:
branch:
$ref: '#/components/schemas/BranchName'

BranchA:
type: object

BranchB:
type: object
```

Expected output:

```ts
export type BranchName = 'one' | 'two';

export type Root = BaseRoot & (BaseRootBranchMapping<'one', BranchA> | BaseRootBranchMapping<'two', BranchB>);

export type BranchA = object;

export type BranchB = object;

interface BaseRoot {
branch?: BranchName;
}

type BaseRootBranchMapping = {
branch: Key;
} & Type;
```

Current output:

```ts
export type BranchName = 'one' | 'two';

export type Root = BaseRoot &
(BaseRootBranchMapping | BaseRootBranchMapping);

export type BranchA = object;

export type BranchB = object;

interface BaseRoot {
branch?: BranchName;
}

type BaseRootBranchMapping = {
branch: Key;
} & Type;
```

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.