Comments (11)
Yes, it would be possible but I do not intend to support it for now.
from ts-json-schema-generator.
Could you give me some direction to implement it by my own? I might fork your repo and give a try.
from ts-json-schema-generator.
You need to add a parser, type, and formatter for functions. You can look at the existing types we support.
from ts-json-schema-generator.
@apiel, have you considered creating an interface to wrap the input arguments?
Here's what I mean:
export interface GetListInput {
foo: string;
}
// An interface to define the InputParams to the function.
export interface InputParams {
input: GetListInput;
input2: string;
}
export function getList({input, input2}: InputParams) {
// some code
}
If getList
is not a function under your control,
export const wrapGetList = ({input, input2}: InputParams) => getList(input, input2);
from ts-json-schema-generator.
Yes I thought about it but it doesn't really fit with what I want to achieve. I work on a tool to automatically generate the communication protocole between backend and frontend https://github.com/apiel/isomor , and since I am as using a transpiler for it, I though it would be great to check for types in the generated endpoints.
Also I could use the JSON schema to improve the generated swagger documentation.
from ts-json-schema-generator.
I somehow get it to work:
apiel@010ce2d
now I am not so sure about if I need the withCircular
. Also the getTypeId
I am not really sure about what I did...
yarn run run --path ~/test/endpoint.ts --type getList
(I am actually wondering, yarn run run
is a bit strange, do I use it in a wrong way?)
result to:
{
"$ref": "#/definitions/getList",
"$schema": "http://json-schema.org/draft-06/schema#",
"definitions": {
"GetListInput": {
"additionalProperties": false,
"properties": {
"foo": {
"type": "string"
}
},
"required": [
"foo"
],
"type": "object"
},
"getList": {
"additionalProperties": false,
"properties": {
"input": {
"$ref": "#/definitions/GetListInput"
},
"input2": {
"type": "string"
}
},
"required": [
"input",
"input2"
],
"type": "object"
}
}
I will then do the same for arrowFunction (and try as well with class method).
Is there any chance to merged a PR to your repo or would it be out of scope?
from ts-json-schema-generator.
Here is the last version https://github.com/apiel/isomor/blob/master/packages/isomor-json-schema-generator/src/NodeParser/FuncTypeNodeParser.ts
But after making some research, I think I should have used tuple validation: https://json-schema.org/understanding-json-schema/reference/array.html#tuple-validation
Would be great to get this code merge, then I would not need my custom repo. Please let me know which kind of changes I need to do, to make it mergeable...
I was looking at https://github.com/vega/ts-json-schema-generator/blob/master/src/Type/ArrayType.ts but I don't really see how to implement tuple. Is tuple already supported by ts-json-schema-generator ?
from ts-json-schema-generator.
I don't plan to support functions until json schema has support for them and ajv also validates them.
from ts-json-schema-generator.
Make sense ;-) What's about tuple validation for array? https://json-schema.org/understanding-json-schema/reference/array.html#tuple-validation
from ts-json-schema-generator.
That would make sense. I haven't checked, but we may already support it.
from ts-json-schema-generator.
There's something wrong here: you are only mapping the input parameters of the function, not the output
It can be void or something else.
In your schema representation, how do you want to represent it ?
I'm really interested to use or develop it if we found a correct representation of a method / function here
from ts-json-schema-generator.
Related Issues (20)
- Duplicate (nested) discriminator union values not allowed
- Invalid schema generated with circular dependencies - minimal case
- Errors out with mentions of @types/mocha HOT 1
- Function with generic keyof param crashes HOT 2
- Issue Generating JSON Schema for Types with Indexed Access References HOT 1
- Support @required and $data annotations. HOT 5
- Error: Unknown node "Primitive" (ts.SyntaxKind = 162) in specific Type example HOT 8
- Generate a schema with an enum only includes the enums numeric values HOT 4
- Documentation of annotations ? HOT 1
- Enhancement: support polymorphic arrays
- Enhancement: Docusaurus documentation ? HOT 1
- Question about the goal of this package HOT 2
- Failing to create json schemas for Ocktokit types HOT 1
- tsconfig loading issue with monorepo HOT 2
- Generation failing for custom utility type HOT 2
- Support patternProperties HOT 1
- Recursive types crashes HOT 7
- Approach for renaming definition names HOT 1
- bug in vercel production, but development environment is OK HOT 1
- Issue when attempting to generate a schema from a type, conflict with @types/glob dependencies HOT 2
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 ts-json-schema-generator.