From 266a0dadba631df3c010f551c6838326c710337b Mon Sep 17 00:00:00 2001 From: Ferdi Koomen Date: Tue, 19 Nov 2019 18:40:17 +0100 Subject: [PATCH] - Working new validation --- src/templates/typescript/exportArray.hbs | 7 +++++- src/templates/typescript/exportDictionary.hbs | 5 +++++ src/templates/typescript/exportEnum.hbs | 5 +++++ src/templates/typescript/exportGeneric.hbs | 5 +++++ src/templates/typescript/exportInterface.hbs | 5 +++++ src/templates/typescript/model.hbs | 22 +++++++------------ src/templates/typescript/typeForArray.hbs | 13 +++-------- .../typescript/typeForDictionary.hbs | 13 +++-------- src/templates/typescript/typeForEnum.hbs | 13 +---------- src/templates/typescript/typeForGeneric.hbs | 13 +---------- src/templates/typescript/typeForInterface.hbs | 20 ++++++++--------- src/templates/typescript/typeForReference.hbs | 13 +---------- .../typescript/validationForArray.hbs | 6 ++++- .../typescript/validationForDictionary.hbs | 20 ++++++++++++++++- .../typescript/validationForInterface.hbs | 2 +- 15 files changed, 78 insertions(+), 84 deletions(-) diff --git a/src/templates/typescript/exportArray.hbs b/src/templates/typescript/exportArray.hbs index 2baf5149..61c58e49 100644 --- a/src/templates/typescript/exportArray.hbs +++ b/src/templates/typescript/exportArray.hbs @@ -1,4 +1,9 @@ -export type {{{name}}} = Array<{{>type}}>{{#if nullable}} | null{{/if}}; +{{#if description}} +/** + * {{{description}}} + */ +{{/if}} +export type {{{name}}} = {{>type}}{{#if nullable}} | null{{/if}}; export namespace {{{name}}} { diff --git a/src/templates/typescript/exportDictionary.hbs b/src/templates/typescript/exportDictionary.hbs index 1f71e092..61c58e49 100644 --- a/src/templates/typescript/exportDictionary.hbs +++ b/src/templates/typescript/exportDictionary.hbs @@ -1,3 +1,8 @@ +{{#if description}} +/** + * {{{description}}} + */ +{{/if}} export type {{{name}}} = {{>type}}{{#if nullable}} | null{{/if}}; export namespace {{{name}}} { diff --git a/src/templates/typescript/exportEnum.hbs b/src/templates/typescript/exportEnum.hbs index 67c54a32..b5e75ade 100644 --- a/src/templates/typescript/exportEnum.hbs +++ b/src/templates/typescript/exportEnum.hbs @@ -1,3 +1,8 @@ +{{#if description}} +/** + * {{{description}}} + */ +{{/if}} export enum {{{name}}} { {{#each enum}} {{{name}}} = {{{value}}}, diff --git a/src/templates/typescript/exportGeneric.hbs b/src/templates/typescript/exportGeneric.hbs index 1f71e092..61c58e49 100644 --- a/src/templates/typescript/exportGeneric.hbs +++ b/src/templates/typescript/exportGeneric.hbs @@ -1,3 +1,8 @@ +{{#if description}} +/** + * {{{description}}} + */ +{{/if}} export type {{{name}}} = {{>type}}{{#if nullable}} | null{{/if}}; export namespace {{{name}}} { diff --git a/src/templates/typescript/exportInterface.hbs b/src/templates/typescript/exportInterface.hbs index 4e50fe8e..bc385cd9 100644 --- a/src/templates/typescript/exportInterface.hbs +++ b/src/templates/typescript/exportInterface.hbs @@ -1,3 +1,8 @@ +{{#if description}} +/** + * {{{description}}} + */ +{{/if}} export interface {{{name}}}{{{template}}}{{#if extends}} extends{{#each extends}} {{{this}}}{{/each}}{{/if}} { {{#each properties}} {{#if description}} diff --git a/src/templates/typescript/model.hbs b/src/templates/typescript/model.hbs index 378d0357..770cda77 100644 --- a/src/templates/typescript/model.hbs +++ b/src/templates/typescript/model.hbs @@ -8,25 +8,19 @@ import { {{{this}}} } from '../models/{{{this}}}'; {{/each}} {{/if}} -import Dictionary from '../core/Dictionary'; +import { Dictionary } from '../core/Dictionary'; import * as yup from 'yup'; -{{#if description}} -/** - * {{{description}}} - */ -{{/if}} - -{{~#eq export 'reference'~}} +{{#eq export 'reference'}} {{>exportReference}} -{{~else eq export 'generic'~}} +{{else eq export 'generic'}} {{>exportGeneric}} -{{~else eq export 'enum'~}} +{{else eq export 'enum'}} {{>exportEnum}} -{{~else eq export 'array'~}} +{{else eq export 'array'}} {{>exportArray}} -{{~else eq export 'dictionary'~}} +{{else eq export 'dictionary'}} {{>exportDictionary}} -{{~else eq export 'interface'~}} +{{else eq export 'interface'}} {{>exportInterface}} -{{~/eq~}} +{{/eq}} diff --git a/src/templates/typescript/typeForArray.hbs b/src/templates/typescript/typeForArray.hbs index 9e88f8f9..0fd14c91 100644 --- a/src/templates/typescript/typeForArray.hbs +++ b/src/templates/typescript/typeForArray.hbs @@ -1,12 +1,5 @@ -{{~#if properties~}} -{ -{{#each properties}} -{{#if readOnly}}readonly {{/if}}{{{name}}}{{#unless required}}?{{/unless}}: {{>type}}{{#if nullable}} | null{{/if}}, -{{/each}} -} -{{~else if link~}} -{{{base}}}<{{>type link}}> +{{~#if link~}} +Array<{{>type link}}> {{~else~}} -{{{type}}} +Array<{{{type}}}> {{~/if~}} -// TODO: Per type ook een nette export maken! diff --git a/src/templates/typescript/typeForDictionary.hbs b/src/templates/typescript/typeForDictionary.hbs index 9e88f8f9..413903ee 100644 --- a/src/templates/typescript/typeForDictionary.hbs +++ b/src/templates/typescript/typeForDictionary.hbs @@ -1,12 +1,5 @@ -{{~#if properties~}} -{ -{{#each properties}} -{{#if readOnly}}readonly {{/if}}{{{name}}}{{#unless required}}?{{/unless}}: {{>type}}{{#if nullable}} | null{{/if}}, -{{/each}} -} -{{~else if link~}} -{{{base}}}<{{>type link}}> +{{~#if link~}} +Dictionary<{{>type link}}> {{~else~}} -{{{type}}} +Dictionary<{{{type}}}> {{~/if~}} -// TODO: Per type ook een nette export maken! diff --git a/src/templates/typescript/typeForEnum.hbs b/src/templates/typescript/typeForEnum.hbs index 9e88f8f9..faba42a4 100644 --- a/src/templates/typescript/typeForEnum.hbs +++ b/src/templates/typescript/typeForEnum.hbs @@ -1,12 +1 @@ -{{~#if properties~}} -{ -{{#each properties}} -{{#if readOnly}}readonly {{/if}}{{{name}}}{{#unless required}}?{{/unless}}: {{>type}}{{#if nullable}} | null{{/if}}, -{{/each}} -} -{{~else if link~}} -{{{base}}}<{{>type link}}> -{{~else~}} -{{{type}}} -{{~/if~}} -// TODO: Per type ook een nette export maken! +any diff --git a/src/templates/typescript/typeForGeneric.hbs b/src/templates/typescript/typeForGeneric.hbs index 9e88f8f9..1a5d1239 100644 --- a/src/templates/typescript/typeForGeneric.hbs +++ b/src/templates/typescript/typeForGeneric.hbs @@ -1,12 +1 @@ -{{~#if properties~}} -{ -{{#each properties}} -{{#if readOnly}}readonly {{/if}}{{{name}}}{{#unless required}}?{{/unless}}: {{>type}}{{#if nullable}} | null{{/if}}, -{{/each}} -} -{{~else if link~}} -{{{base}}}<{{>type link}}> -{{~else~}} -{{{type}}} -{{~/if~}} -// TODO: Per type ook een nette export maken! +{{{base}}} diff --git a/src/templates/typescript/typeForInterface.hbs b/src/templates/typescript/typeForInterface.hbs index 9e88f8f9..ae9413a7 100644 --- a/src/templates/typescript/typeForInterface.hbs +++ b/src/templates/typescript/typeForInterface.hbs @@ -1,12 +1,12 @@ -{{~#if properties~}} { -{{#each properties}} -{{#if readOnly}}readonly {{/if}}{{{name}}}{{#unless required}}?{{/unless}}: {{>type}}{{#if nullable}} | null{{/if}}, -{{/each}} + {{#each properties}} + {{#each properties}} + {{#if description}} + /** + * {{{description}}} + */ + {{/if}} + {{#if readOnly}}readonly {{/if}}{{{name}}}{{#unless required}}?{{/unless}}: {{>type}}{{#if nullable}} | null{{/if}}, + {{/each}} + {{/each}} } -{{~else if link~}} -{{{base}}}<{{>type link}}> -{{~else~}} -{{{type}}} -{{~/if~}} -// TODO: Per type ook een nette export maken! diff --git a/src/templates/typescript/typeForReference.hbs b/src/templates/typescript/typeForReference.hbs index 9e88f8f9..1a5d1239 100644 --- a/src/templates/typescript/typeForReference.hbs +++ b/src/templates/typescript/typeForReference.hbs @@ -1,12 +1 @@ -{{~#if properties~}} -{ -{{#each properties}} -{{#if readOnly}}readonly {{/if}}{{{name}}}{{#unless required}}?{{/unless}}: {{>type}}{{#if nullable}} | null{{/if}}, -{{/each}} -} -{{~else if link~}} -{{{base}}}<{{>type link}}> -{{~else~}} -{{{type}}} -{{~/if~}} -// TODO: Per type ook een nette export maken! +{{{base}}} diff --git a/src/templates/typescript/validationForArray.hbs b/src/templates/typescript/validationForArray.hbs index 429f752a..a51849a9 100644 --- a/src/templates/typescript/validationForArray.hbs +++ b/src/templates/typescript/validationForArray.hbs @@ -1 +1,5 @@ -yup.mixed() +{{~#if link~}} +yup.array<{{>type link}}>().of({{>validation link}}) +{{~else~}} +yup.array<{{{type}}}>().of({{{base}}}.schema) +{{~/if~}} diff --git a/src/templates/typescript/validationForDictionary.hbs b/src/templates/typescript/validationForDictionary.hbs index 429f752a..0ab8fcf7 100644 --- a/src/templates/typescript/validationForDictionary.hbs +++ b/src/templates/typescript/validationForDictionary.hbs @@ -1 +1,19 @@ -yup.mixed() +{{~#if link~}} +yup.lazytype link}}>>(value => + yup.objecttype link}}>>().shape( + Object.entries(value).reduce((obj, item) => ({ + ...obj, + [item[0]]: {{>validation link}}, + }), {}) + ) +) +{{~else~}} +yup.lazy>(value => + yup.object>().shape( + Object.entries(value).reduce((obj, item) => ({ + ...obj, + [item[0]]: {{{base}}}.schema, + }), {}) + ) +) +{{~/if~}} diff --git a/src/templates/typescript/validationForInterface.hbs b/src/templates/typescript/validationForInterface.hbs index 79862aac..224a3521 100644 --- a/src/templates/typescript/validationForInterface.hbs +++ b/src/templates/typescript/validationForInterface.hbs @@ -5,7 +5,7 @@ {{~/if~}} yup.object{{#if name}}<{{{name}}}>{{/if}}().shape({ {{#each properties}} - {{{name}}}: yup.lazy(() => {{>validation this}}.default(undefined)){{#if required}}.required(){{/if}}{{#if nullable}}.nullable(){{/if}}, + {{{name}}}: yup.lazy(() => {{>validation}}.default(undefined)){{#if required}}.required(){{/if}}{{#if nullable}}.nullable(){{/if}}, {{/each}} }).noUnknown() {{~#if extends~}}