Comments (3)
Same with Union and Literal.
from elysia-swagger.
+1, I've just noticed the same.
from elysia-swagger.
As it seems Typebox won't implement OpenAPI compatible schema, I think it'd be good to have custom Typebox schema for enum in elysia, or elysia-swagger.
For example, here's the way I'm currently handling enums.
import type { StringOptions, TSchema } from '@sinclair/typebox';
import { Kind, TypeGuard, TypeRegistry } from '@sinclair/typebox';
export type StringEnumOption = StringOptions;
export type TStringEnum = TSchema &
StringOptions & {
[Kind]: 'StringEnum';
static: string;
type: 'string';
enum: string[];
};
export const tStringEnum = (
enumStrings: string[],
options: StringEnumOption = {},
): TStringEnum => {
const { ...stringOptions } = options;
return {
...stringOptions,
enum: enumStrings,
[Kind]: 'StringEnum',
type: 'string',
error: `Invalid enum value. Expected: ['${enumStrings.join("','")}']`,
} as TStringEnum;
};
TypeRegistry.Set<TStringEnum>('StringEnum', (schema, value) => {
if (typeof value !== 'string') return false;
if (schema.enum.includes(value)) {
return true;
}
return false;
});
Usage example
const YN = tStringEnum(['Y', 'N'], { maxLength: 1 })
And the result schema
{
"YN": {
"maxLength": 1,
"enum": [
"Y",
"N"
],
"type": "string"
}
}
from elysia-swagger.
Related Issues (20)
- Response Schema Mismatch Error
- Invalid parameters schema keywords location HOT 3
- Swagger APIs don't work when I use scope
- Loads fonts from google HOT 2
- Property set to never is shown in the docs
- Swagger not working with `@elysiajs/cors` HOT 14
- Incorrect type for `t.File` and `t.Files` HOT 1
- Swagger does not generate documentation if path is set to the home directory. HOT 2
- bug: not provided guard json schema to routes
- proposal: package name change to elysiajs/openapi HOT 2
- incorrect work with type recursion
- Swagger unable to detect routes when used in another Elysia instance HOT 5
- bug: `filterPaths` have some questions
- TDate returning wrong values for OpenAI document HOT 1
- hide endpoint HOT 1
- Unable to use local $ref components
- Scalar options aren't applied HOT 1
- `scalarConfig.spec.url` is resolved incorrectly when the `path` option contains a subdirectory. HOT 1
- Empty page on refresh when using global cookie signature
- Empty Response Body When Bad Request HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from elysia-swagger.