Comments (6)
Hey so I came back to this and my team and I ended up doing exactly what you suggested by extending the renderer. We actually made two versions, one generated the TS, and another generated runtypes
(link) configuration to ensure runtime validity for some of our models.
Here's the sample output. We had to use Runtypes.Lazy()
to support possible recursive types in some of our Contentful models.
import * as Contentful from 'contentful';
import * as Runtypes from 'runtypes';
import { Asset } from '../Asset';
export interface Author {
contentType: 'author';
authorName?: Contentful.EntryFields.Symbol;
authorImage?: Asset;
}
export const Author: Runtypes.Runtype<Author> = Runtypes.Lazy(() =>
Runtypes.Record({
authorName: Runtypes.Optional(Runtypes.String),
authorImage: Runtypes.Optional(Asset),
contentType: Runtypes.Literal('author'),
})
);
Thanks for a great tool!
from cf-content-types-generator.
Hi @tatemz
What input would be relevant for you to compute a custom file name?
Would the ContentType name be enough?
from cf-content-types-generator.
@tatemz
Ok, I looked a bit deeper into this, what you can do:
Create your own Renderer by extending The DefaultContentTypeRenderer and override the createContext method.
Instead of returning the Context created by createDefaultContext, you could return the same context, but use a different implementation for the moduleName function.
Finally you can set your new renderer when instantiating a new CFDefinitionBuilder
here.
This should do the trick :)
from cf-content-types-generator.
closing this for now
from cf-content-types-generator.
@tatemz This seems to be a pretty cool use case 😍
Would you be interested to open a PR and add it to the project?
from cf-content-types-generator.
@tatemz added a simple type-guard generator: #226
from cf-content-types-generator.
Related Issues (20)
- v10 typing includes EntryFieldTypes, but mismatches actual API response HOT 4
- "Type does not satisfy the constraint 'EntrySkeletonType'." HOT 7
- Type error after Contentful `10.0.0-beta-v10.32` HOT 4
- oclif dependencies are deprecated HOT 2
- How to actually use fields? HOT 13
- Use with Contentful GraphQL endpoint? HOT 1
- 2.12.3 introduces bug HOT 2
- Property does not exist on type {} | {} HOT 2
- Include description and help text in JSDoc comments? HOT 5
- Support a config file
- Support custom prefixes of generics and interfaces HOT 2
- Command hangs after generating the export
- Generated TypeScript Models Lack File Extensions in Import Statements When Using Node 16 Module Resolution HOT 1
- Fields not typed correctly HOT 2
- Generated field interface does not satisfy the constraint 'EntrySkeletonType' HOT 5
- Generated types don't seem to match those expected by Contentful v10 HOT 2
- Support EU Data Center HOT 2
- Release a new version with updated contentful and allow minor version differences if possible HOT 1
- Type Not Satisfying Entry Requirements HOT 6
- Why can `EntryFieldTypes.Array<EntryFieldTypes.EntryLink<EntrySkeletonType>>` array include `undefined`?
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 cf-content-types-generator.