Changing default case of schema properties
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 25/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Stack tecnológico
- typescript
- Área
- tooling
Línea de trabajo
Start with config.ts and the ConfigBase type, then trace how generateSchemaTypes and generateFetchers consume schema properties and required names. Decide whether casing belongs in configuration or a generation step, and define the expected behavior for both property and required names. The issue is done when the chosen behavior is implemented consistently and its scope is agreed.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Hi,
I have a question about changing the case of generated schema properties.
Our OpenApi specification is generated from .NET API. Since all exported object properties have pascal case by default, generated schemas have also pascal, which is not TS/JS convention. It can be solved by these suggestions.
- Changing the case in
config.tsfile. This method is not ideal, but works.
to: async (context) => {
const filenamePrefix = 'api';
const { openAPIDocument: { components } } = context;
for (const schema of Object.values(components?.schemas || {})) {
if (!isSchemaObject(schema)) {
continue;
}
const { properties, required } = schema;
if (properties == null) {
continue;
}
for (const propertyName of Object.keys(properties)) {
const stored = properties[propertyName];
delete properties[propertyName]
properties[_.camelCase(propertyName)] = stored;
}
if (required != null) {
for (let i = 0; i < required.length; i++) {
const propertyName = required[i];
required[i] = _.camelCase(propertyName);
}
}
}
const { schemasFiles } = await generateSchemaTypes(context, {
filenamePrefix,
});
await generateFetchers(context, {
filenamePrefix,
schemasFiles,
});
},
- Adding a new config parameter to override casings. It may look like the example below. I can make a PR for that if necessary.
export type ConfigBase = {
...
filenameCase?: keyof Pick<typeof c, "snake" | "camel" | "kebab" | "pascal">;
casing?: {
schema?: {
property?: keyof Pick<typeof c, "snake" | "camel" | "kebab" | "pascal">;
}
}
};
Which option is better? If none, how should solve this issue?
Thx for your answers.
- Lenguaje dominante
- TypeScript
- Estrellas
- 634
- Forks
- 83
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de fabien0102/openapi-codegen
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
fabien0102/openapi-codegen#343 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
fabien0102/openapi-codegen#342 ·
-
deepMerge mutates its arguments, corrupting request payloads across callsPosiblemente ocupada @richard-willis-chevin la tomó hace 43 días. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 72/100
fabien0102/openapi-codegen#349 ·
-
Error when migrating to typesrcipt v7Posiblemente ocupada @fujikky la tomó hace 42 días. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
fabien0102/openapi-codegen#348 ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
fabien0102/openapi-codegen#344 ·
Todos los issues de fabien0102/openapi-codegen
Issues similares
-
feat(subscription): add Manage Subscription (Stripe portal) to the Subscription tab plan cardAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
Los mantenedores suelen responder en 1 día
-
[Feature] 通知栏合并重复消息并显示次数Abiertoarea:ui enhancement issue-form:feature platform:cross-platform review: high
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
1lck/Lithe-IDEA#1092 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
developmentseed/deck.gl-raster#693 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
Marker-Inc-Korea/AutoRAG#1801 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
iii-hq/iii#2278 · 1 comentario ·
Los mantenedores suelen responder en 1 día