- Working on updates

This commit is contained in:
Ferdi Koomen 2019-12-03 10:45:39 +01:00
parent 5cee14a8ee
commit 15b5052490
51 changed files with 201 additions and 252 deletions

View File

@ -1,6 +1,7 @@
export enum PrimaryType {
FILE = 'File',
OBJECT = 'any',
ARRAY = 'any[]',
BOOLEAN = 'boolean',
NUMBER = 'number',
STRING = 'string',
@ -10,9 +11,9 @@ export enum PrimaryType {
export const TYPE_MAPPINGS = new Map<string, PrimaryType>([
['file', PrimaryType.FILE],
['binary', PrimaryType.FILE],
['any', PrimaryType.OBJECT],
['object', PrimaryType.OBJECT],
['array', PrimaryType.ARRAY],
['boolean', PrimaryType.BOOLEAN],
['byte', PrimaryType.NUMBER],
['int', PrimaryType.NUMBER],

View File

@ -40,6 +40,7 @@ export function getOperationParameter(openApi: OpenApi, parameter: OpenApiParame
operationParameter.template = definitionRef.template;
operationParameter.imports.push(...definitionRef.imports);
operationParameter.default = getOperationParameterDefault(parameter, operationParameter);
operationParameter.isRequired = operationParameter.default || operationParameter.isRequired;
return operationParameter;
}
@ -51,6 +52,7 @@ export function getOperationParameter(openApi: OpenApi, parameter: OpenApiParame
operationParameter.base = PrimaryType.STRING;
operationParameter.enum.push(...enumerators);
operationParameter.default = getOperationParameterDefault(parameter, operationParameter);
operationParameter.isRequired = operationParameter.default || operationParameter.isRequired;
return operationParameter;
}
}
@ -63,6 +65,7 @@ export function getOperationParameter(openApi: OpenApi, parameter: OpenApiParame
operationParameter.base = PrimaryType.NUMBER;
operationParameter.enum.push(...enumerators);
operationParameter.default = getOperationParameterDefault(parameter, operationParameter);
operationParameter.isRequired = operationParameter.default || operationParameter.isRequired;
return operationParameter;
}
}
@ -75,6 +78,7 @@ export function getOperationParameter(openApi: OpenApi, parameter: OpenApiParame
operationParameter.template = items.template;
operationParameter.imports.push(...items.imports);
operationParameter.default = getOperationParameterDefault(parameter, operationParameter);
operationParameter.isRequired = operationParameter.default || operationParameter.isRequired;
return operationParameter;
}
@ -87,6 +91,7 @@ export function getOperationParameter(openApi: OpenApi, parameter: OpenApiParame
operationParameter.imports.push(...items.imports);
operationParameter.imports.push('Dictionary');
operationParameter.default = getOperationParameterDefault(parameter, operationParameter);
operationParameter.isRequired = operationParameter.default || operationParameter.isRequired;
return operationParameter;
}
@ -99,6 +104,7 @@ export function getOperationParameter(openApi: OpenApi, parameter: OpenApiParame
operationParameter.template = model.template;
operationParameter.imports.push(...model.imports);
operationParameter.default = getOperationParameterDefault(parameter, operationParameter);
operationParameter.isRequired = operationParameter.default || operationParameter.isRequired;
return operationParameter;
} else {
const model = getModel(openApi, parameter.schema);
@ -113,6 +119,7 @@ export function getOperationParameter(openApi: OpenApi, parameter: OpenApiParame
operationParameter.enums.push(...model.enums);
operationParameter.properties.push(...model.properties);
operationParameter.default = getOperationParameterDefault(parameter, operationParameter);
operationParameter.isRequired = operationParameter.default || operationParameter.isRequired;
return operationParameter;
}
}
@ -126,6 +133,7 @@ export function getOperationParameter(openApi: OpenApi, parameter: OpenApiParame
operationParameter.template = definitionType.template;
operationParameter.imports.push(...definitionType.imports);
operationParameter.default = getOperationParameterDefault(parameter, operationParameter);
operationParameter.isRequired = operationParameter.default || operationParameter.isRequired;
return operationParameter;
}

View File

@ -1,6 +1,7 @@
export enum PrimaryType {
FILE = 'File',
OBJECT = 'any',
ARRAY = 'any[]',
BOOLEAN = 'boolean',
NUMBER = 'number',
STRING = 'string',
@ -10,9 +11,9 @@ export enum PrimaryType {
export const TYPE_MAPPINGS = new Map<string, PrimaryType>([
['file', PrimaryType.FILE],
['binary', PrimaryType.FILE],
['any', PrimaryType.OBJECT],
['object', PrimaryType.OBJECT],
['array', PrimaryType.ARRAY],
['boolean', PrimaryType.BOOLEAN],
['byte', PrimaryType.NUMBER],
['int', PrimaryType.NUMBER],

View File

@ -9,16 +9,10 @@
{{/if}}
import * as yup from 'yup';
{{#equals export 'reference'}}
{{>exportReference}}
{{else equals export 'generic'}}
{{>exportGeneric}}
{{#equals export 'interface'}}
{{>exportInterface}}
{{else equals export 'enum'}}
{{>exportEnum}}
{{else equals export 'array'}}
{{>exportArray}}
{{else equals export 'dictionary'}}
{{>exportDictionary}}
{{else equals export 'interface'}}
{{>exportInterface}}
{{else}}
{{>exportGeneric}}
{{/equals}}

View File

@ -0,0 +1 @@
{{#unless @last}},{{/unless}}

View File

@ -0,0 +1 @@
{{#if default}} = {{{default}}}{{/if}}

View File

@ -1,19 +0,0 @@
{{#if description}}
/**
* {{{description}}}
*/
{{/if}}
export let {{{name}}};
(function ({{{name}}}) {
{{{name}}}.schema = {{>validation}};
{{{name}}}.validate = async function(value) {
return {{{name}}}.schema.validate(value, { strict: true });
};
{{{name}}}.validateSync = function(value) {
return {{{name}}}.schema.validateSync(value, { strict: true });
};
})({{{name}}} || ({{{name}}} = {}));

View File

@ -1,19 +0,0 @@
{{#if description}}
/**
* {{{description}}}
*/
{{/if}}
export let {{{name}}};
(function ({{{name}}}) {
{{{name}}}.schema = {{>validation}};
{{{name}}}.validate = async function(value) {
return {{{name}}}.schema.validate(value, { strict: true });
};
{{{name}}}.validateSync = function(value) {
return {{{name}}}.schema.validateSync(value, { strict: true });
};
})({{{name}}} || ({{{name}}} = {}));

View File

@ -14,12 +14,12 @@ export let {{{name}}};
{{/if}}
{{{../name}}}.{{{name}}} = {
{{#each enum}}
{{{name}}}: {{{value}}}{{#unless @last}},{{/unless}}
{{{name}}}: {{{value}}}{{>comma}}
{{/each}}
};
{{/each}}
{{{name}}}.schema = {{>validation}};
{{{name}}}.schema = {{>validation parent=name}};
{{{name}}}.validate = async function(value) {
return {{{name}}}.schema.validate(value, { strict: true });

View File

@ -1,19 +0,0 @@
{{#if description}}
/**
* {{{description}}}
*/
{{/if}}
export let {{{name}}};
(function ({{{name}}}) {
{{{name}}}.schema = {{>validation}};
{{{name}}}.validate = async function(value) {
return {{{name}}}.schema.validate(value, { strict: true });
};
{{{name}}}.validateSync = function(value) {
return {{{name}}}.schema.validateSync(value, { strict: true });
};
})({{{name}}} || ({{{name}}} = {}));

View File

@ -1,13 +1,13 @@
{{#equals export 'reference'}}
{{#equals export 'interface'}}
{{>validationInterface}}
{{else equals export 'reference'}}
{{>validationReference}}
{{else equals export 'generic'}}
{{>validationGeneric}}
{{else equals export 'enum'}}
{{>validationEnum}}
{{else equals export 'array'}}
{{>validationArray}}
{{else equals export 'dictionary'}}
{{>validationDictionary}}
{{else equals export 'interface'}}
{{>validationInterface}}
{{else}}
{{>validationGeneric}}
{{/equals}}

View File

@ -1,5 +1,5 @@
{{~#if link~}}
yup.array().of({{>validation link}})
yup.array().of({{>validation link}}){{#if isNullable}}.nullable(){{/if}}{{#if isRequired}}.required(){{/if}}
{{~else~}}
yup.array().of({{{base}}}.schema)
yup.array().of({{{base}}}.schema){{#if isNullable}}.nullable(){{/if}}{{#if isRequired}}.required(){{/if}}
{{~/if~}}

View File

@ -1,19 +1,19 @@
{{~#if link~}}
yup.lazy(value => {
return yup.object().shape(
Object.entries(value).reduce((obj, item) => ({
...obj,
[item[0]]: {{>validation link}}
Object.keys(value).reduce((object, key) => ({
...object,
[key]: {{>validation link}}
}), {})
);
).noUnknown();
})
{{~else~}}
yup.lazy(value => {
return yup.object().shape(
Object.entries(value).reduce((obj, item) => ({
...obj,
[item[0]]: {{{base}}}.schema
Object.keys(value).reduce((key, item) => ({
...object,
[key]: {{{base}}}.schema
}), {})
);
).noUnknown();
})
{{~/if~}}

View File

@ -1,13 +1,13 @@
{{~#equals parent name~}}
yup.mixed().oneOf([
{{#each enum}}
{{{../parent}}}.{{{name}}}{{#unless @last}},{{/unless}}
{{{../parent}}}.{{{name}}}{{>comma}}
{{/each}}
])
]){{#if isNullable}}.nullable(){{/if}}{{#if isRequired}}.required(){{/if}}
{{~else~}}
yup.mixed().oneOf([
{{#each enum}}
{{{value}}}{{#unless @last}},{{/unless}}
{{{value}}}{{>comma}}
{{/each}}
])
]){{#if isNullable}}.nullable(){{/if}}{{#if isRequired}}.required(){{/if}}
{{~/equals~}}

View File

@ -1,9 +1,9 @@
{{~#equals type 'boolean'~}}
yup.boolean()
yup.boolean(){{#if isNullable}}.nullable(){{/if}}{{#if isRequired}}.required(){{/if}}
{{~else equals type 'number'~}}
yup.number()
yup.number(){{#if isNullable}}.nullable(){{/if}}{{#if isRequired}}.required(){{/if}}
{{~else equals type 'string'~}}
yup.string()
yup.string(){{#if isNullable}}.nullable(){{/if}}{{#if isRequired}}.required(){{/if}}
{{~else~}}
yup.mixed()
yup.mixed(){{#if isNullable}}.nullable(){{/if}}{{#if isRequired}}.required(){{/if}}
{{~/equals~}}

View File

@ -1,4 +1,3 @@
(
{{#if extends}}
{{#each extends}}
{{{this}}}.schema.concat(
@ -7,7 +6,11 @@
{{#if properties}}
yup.object().shape({
{{#each properties}}
{{{name}}}: yup.lazy(() => {{>validation parent=name}}.default(undefined){{#if isNullable}}.isNullable(){{/if}}){{#if isRequired}}.isRequired(){{/if}}{{#unless @last}},{{/unless}}
{{#equals ../parent name}}
{{{name}}}: {{>validation parent=name}}{{>comma}}
{{else}}
{{{name}}}: {{>validation}}{{>comma}}
{{/equals}}
{{/each}}
}).noUnknown()
{{else}}
@ -18,4 +21,4 @@ yup.object()
)
{{/each}}
{{/if}}
)
{{#if isNullable}}.nullable(){{/if}}{{#if isRequired}}.required(){{/if}}

View File

@ -1 +1 @@
{{{base}}}.schema
{{{base}}}.schema{{#if isNullable}}.nullable(){{/if}}{{#if isRequired}}.required(){{/if}}

View File

@ -31,7 +31,7 @@ export class {{{name}}} {
*/
static async {{{name}}}({{#if parameters}}
{{#each parameters}}
{{{name}}}{{#if default}} = {{{default}}}{{/if}}{{#unless @last}},{{/unless}}
{{{name}}}{{>defaultValue}}{{>comma}}
{{/each}}
{{/if}}) {
@ -40,22 +40,22 @@ export class {{{name}}} {
path: `{{{path}}}`{{#if parametersCookie}},
cookies: {
{{#each parametersCookie}}
'{{{prop}}}': {{{name}}}{{#unless @last}},{{/unless}}
'{{{prop}}}': {{{name}}}{{>comma}}
{{/each}}
}{{/if}}{{#if parametersCookie}},
headers: {
{{#each parametersHeader}}
'{{{prop}}}': {{{name}}}{{#unless @last}},{{/unless}}
'{{{prop}}}': {{{name}}}{{>comma}}
{{/each}}
}{{/if}}{{#if parametersQuery}},
query: {
{{#each parametersQuery}}
'{{{prop}}}': {{{name}}}{{#unless @last}},{{/unless}}
'{{{prop}}}': {{{name}}}{{>comma}}
{{/each}}
}{{/if}}{{#if parametersForm}},
formData: {
{{#each parametersForm}}
'{{{prop}}}': {{{name}}}{{#unless @last}},{{/unless}}
'{{{prop}}}': {{{name}}}{{>comma}}
{{/each}}
}{{/if}}{{#if parametersBody}},
body: {{{parametersBody.name}}}{{/if}}

View File

@ -10,16 +10,10 @@ import { {{{this}}} } from '../models/{{{this}}}';
{{/if}}
import * as yup from 'yup';
{{#equals export 'reference'}}
{{>exportReference}}
{{else equals export 'generic'}}
{{>exportGeneric}}
{{#equals export 'interface'}}
{{>exportInterface}}
{{else equals export 'enum'}}
{{>exportEnum}}
{{else equals export 'array'}}
{{>exportArray}}
{{else equals export 'dictionary'}}
{{>exportDictionary}}
{{else equals export 'interface'}}
{{>exportInterface}}
{{else}}
{{>exportGeneric}}
{{/equals}}

View File

@ -0,0 +1 @@
{{#unless @last}},{{/unless}}

View File

@ -0,0 +1 @@
{{#if default}} = {{{default}}}{{/if}}

View File

@ -1,19 +0,0 @@
{{#if description}}
/**
* {{{description}}}
*/
{{/if}}
export type {{{name}}} = {{>type}}{{#if isNullable}} | null{{/if}};
export namespace {{{name}}} {
export const schema = {{>validation}};
export async function validate(value: any): Promise<{{{name}}}{{#if isNullable}} | null{{/if}}> {
return schema.validate(value, { strict: true });
}
export function validateSync(value: any): {{{name}}}{{#if isNullable}} | null{{/if}} {
return schema.validateSync(value, { strict: true });
}
}

View File

@ -1,19 +0,0 @@
{{#if description}}
/**
* {{{description}}}
*/
{{/if}}
export type {{{name}}} = {{>type}}{{#if isNullable}} | null{{/if}};
export namespace {{{name}}} {
export const schema = {{>validation}};
export async function validate(value: any): Promise<{{{name}}}{{#if isNullable}} | null{{/if}}> {
return schema.validate(value, { strict: true });
}
export function validateSync(value: any): {{{name}}}{{#if isNullable}} | null{{/if}} {
return schema.validateSync(value, { strict: true });
}
}

View File

@ -5,7 +5,7 @@
{{/if}}
export enum {{{name}}} {
{{#each enum}}
{{{name}}} = {{{value}}}{{#unless @last}},{{/unless}}
{{{name}}} = {{{value}}}{{>comma}}
{{/each}}
}

View File

@ -3,17 +3,17 @@
* {{{description}}}
*/
{{/if}}
export type {{{name}}} = {{>type}}{{#if isNullable}} | null{{/if}};
export type {{{name}}} = {{>type}};
export namespace {{{name}}} {
export const schema = {{>validation}};
export async function validate(value: any): Promise<{{{name}}}{{#if isNullable}} | null{{/if}}> {
export async function validate(value: any): Promise<{{#>isNullable}}{{{name}}}{{/isNullable}}> {
return schema.validate(value, { strict: true });
}
export function validateSync(value: any): {{{name}}}{{#if isNullable}} | null{{/if}} {
export function validateSync(value: any): {{#>isNullable}}{{{name}}}{{/isNullable}} {
return schema.validateSync(value, { strict: true });
}
}

View File

@ -3,14 +3,14 @@
* {{{description}}}
*/
{{/if}}
export interface {{{name}}}{{#if extends}} extends {{#each extends}}{{{this}}}{{#unless @last}}, {{/unless}}{{/each}}{{/if}} {
export interface {{{name}}}{{>extends}} {
{{#each properties}}
{{#if description}}
/**
* {{{description}}}
*/
{{/if}}
{{#if isReadOnly}}readonly {{/if}}{{{name}}}{{#unless isRequired}}?{{/unless}}: {{>type parent=../name}}{{#if isNullable}} | null{{/if}};
{{>isReadOnly}}{{{name}}}{{>isRequired}}: {{>type parent=../name}};
{{/each}}
}
@ -24,12 +24,12 @@ export namespace {{{name}}} {
{{/if}}
export enum {{{name}}} {
{{#each enum}}
{{{name}}} = {{{value}}}{{#unless @last}},{{/unless}}
{{{name}}} = {{{value}}}{{>comma}}
{{/each}}
}
{{/each}}
export const schema: yup.ObjectSchema<{{{name}}}> = {{>validation}};
export const schema: yup.ObjectSchema<{{{name}}}> = {{>validation parent=name}};
export async function validate(value: any): Promise<{{{name}}}> {
return schema.validate(value, { strict: true });

View File

@ -1,19 +0,0 @@
{{#if description}}
/**
* {{{description}}}
*/
{{/if}}
export type {{{name}}} = {{>type}}{{#if isNullable}} | null{{/if}};
export namespace {{{name}}} {
export const schema = {{>validation}};
export async function validate(value: any): Promise<{{{name}}}{{#if isNullable}} | null{{/if}}> {
return schema.validate(value, { strict: true });
}
export function validateSync(value: any): {{{name}}}{{#if isNullable}} | null{{/if}} {
return schema.validateSync(value, { strict: true });
}
}

View File

@ -0,0 +1 @@
{{#if extends}} extends {{#each extends}}{{{this}}}{{#unless @last}}, {{/unless}}{{/each}}{{/if}}

View File

@ -0,0 +1 @@
{{>@partial-block}}{{#if isNullable}} | null{{/if}}

View File

@ -0,0 +1 @@
{{#if isReadOnly}}readonly {{/if}}

View File

@ -0,0 +1 @@
{{#unless isRequired}}?{{/unless}}

View File

@ -1,13 +1,13 @@
{{#equals export 'reference'}}
{{#equals export 'interface'}}
{{>typeInterface}}
{{else equals export 'reference'}}
{{>typeReference}}
{{else equals export 'generic'}}
{{>typeGeneric}}
{{else equals export 'enum'}}
{{>typeEnum}}
{{else equals export 'array'}}
{{>typeArray}}
{{else equals export 'dictionary'}}
{{>typeDictionary}}
{{else equals export 'interface'}}
{{>typeInterface}}
{{else}}
{{>typeGeneric}}
{{/equals}}

View File

@ -1,5 +1,7 @@
{{~#>isNullable~}}
{{~#if link~}}
Array<{{>type link}}>
{{~else~}}
Array<{{{type}}}>
{{~/if~}}
{{~/isNullable~}}

View File

@ -1,5 +1,7 @@
{{~#>isNullable~}}
{{~#if link~}}
Dictionary<{{>type link}}>
{{~else~}}
Dictionary<{{{type}}}>
{{~/if~}}
{{~/isNullable~}}

View File

@ -1,3 +1,4 @@
{{~#>isNullable~}}
{{~#if parent~}}
{{{parent}}}.{{{name}}}
{{~else~}}
@ -7,3 +8,4 @@
{{~/each~}}
)
{{~/if~}}
{{~/isNullable~}}

View File

@ -1 +1,3 @@
{{~#>isNullable~}}
{{{base}}}
{{~/isNullable~}}

View File

@ -1,3 +1,4 @@
{{~#>isNullable~}}
{{~#if properties~}}
{
{{#each properties}}
@ -6,9 +7,10 @@
* {{{description}}}
*/
{{/if}}
{{#if isReadOnly}}readonly {{/if}}{{{name}}}{{#unless isRequired}}?{{/unless}}: {{>type}}{{#if isNullable}} | null{{/if}}{{#unless @last}},{{/unless}}
{{>isReadOnly}}{{{name}}}{{>isRequired}}: {{>type}}{{>comma}}
{{/each}}
}
{{~else~}}
any
{{~/if~}}
{{~/isNullable~}}

View File

@ -1 +1,3 @@
{{~#>isNullable~}}
{{{base}}}
{{~/isNullable~}}

View File

@ -1,13 +1,13 @@
{{#equals export 'reference'}}
{{#equals export 'interface'}}
{{>validationInterface}}
{{else equals export 'reference'}}
{{>validationReference}}
{{else equals export 'generic'}}
{{>validationGeneric}}
{{else equals export 'enum'}}
{{>validationEnum}}
{{else equals export 'array'}}
{{>validationArray}}
{{else equals export 'dictionary'}}
{{>validationDictionary}}
{{else equals export 'interface'}}
{{>validationInterface}}
{{else}}
{{>validationGeneric}}
{{/equals}}

View File

@ -1,5 +1,5 @@
{{~#if link~}}
yup.array<{{>type link}}>().of({{>validation link}})
yup.array<{{>type link}}>().of({{>validation link}}){{#if isNullable}}.nullable(){{/if}}{{#if isRequired}}.required(){{/if}}
{{~else~}}
yup.array<{{{type}}}>().of({{{base}}}.schema)
yup.array<{{#>isNullable}}{{{type}}}{{/isNullable}}>().of({{{base}}}.schema){{#if isNullable}}.nullable(){{/if}}{{#if isRequired}}.required(){{/if}}
{{~/if~}}

View File

@ -1,19 +1,19 @@
{{~#if link~}}
yup.lazy<Dictionary<{{>type link}}>>(value => {
return yup.object<Dictionary<{{>type link}}>>().shape(
Object.entries(value).reduce((obj, item) => ({
...obj,
[item[0]]: {{>validation link}}
Object.keys(value).reduce((object, key) => ({
...object,
[key]: {{>validation link}}
}), {})
);
).noUnknown();
})
{{~else~}}
yup.lazy<Dictionary<{{{type}}}>>(value => {
return yup.object<Dictionary<{{{type}}}>>().shape(
Object.entries(value).reduce((obj, item) => ({
...obj,
[item[0]]: {{{base}}}.schema
yup.lazy<Dictionary<{{#>isNullable}}{{{type}}}{{/isNullable}}>>(value => {
return yup.object<Dictionary<{{#>isNullable}}{{{type}}}{{/isNullable}}>>().shape(
Object.keys(value).reduce((object, key) => ({
...object,
[key]: {{{base}}}.schema
}), {})
);
).noUnknown();
})
{{~/if~}}

View File

@ -1,13 +1,13 @@
{{~#equals parent name~}}
yup.mixed<{{{name}}}>().oneOf([
{{#each enum}}
{{{../parent}}}.{{{name}}}{{#unless @last}},{{/unless}}
{{{../parent}}}.{{{name}}}{{>comma}}
{{/each}}
])
]){{#if isNullable}}.nullable(){{/if}}{{#if isRequired}}.required(){{/if}}
{{~else~}}
yup.mixed<{{{type}}}>().oneOf([
yup.mixed<{{#>isNullable}}{{{type}}}{{/isNullable}}>().oneOf([
{{#each enum}}
{{{value}}}{{#unless @last}},{{/unless}}
{{{value}}}{{>comma}}
{{/each}}
])
]){{#if isNullable}}.nullable(){{/if}}{{#if isRequired}}.required(){{/if}}
{{~/equals~}}

View File

@ -1,9 +1,9 @@
{{~#equals type 'boolean'~}}
yup.boolean()
yup.boolean(){{#if isNullable}}.nullable(){{/if}}{{#if isRequired}}.required(){{/if}}
{{~else equals type 'number'~}}
yup.number()
yup.number(){{#if isNullable}}.nullable(){{/if}}{{#if isRequired}}.required(){{/if}}
{{~else equals type 'string'~}}
yup.string()
yup.string(){{#if isNullable}}.nullable(){{/if}}{{#if isRequired}}.required(){{/if}}
{{~else~}}
yup.mixed<{{{type}}}>()
yup.mixed<{{#>isNullable}}{{{type}}}{{/isNullable}}>(){{#if isNullable}}.nullable(){{/if}}{{#if isRequired}}.required(){{/if}}
{{~/equals~}}

View File

@ -1,4 +1,3 @@
(
{{#if extends}}
{{#each extends}}
{{{this}}}.schema.concat(
@ -7,7 +6,11 @@
{{#if properties}}
yup.object{{#unless isProperty}}{{#if name}}<{{{name}}}>{{/if}}{{/unless}}().shape({
{{#each properties}}
{{{name}}}: yup.lazy(() => {{>validation parent=name}}.default(undefined){{#if isNullable}}.nullable(){{/if}}{{#if isRequired}}.required(){{/if}}){{#unless @last}},{{/unless}}
{{#equals ../parent name}}
{{{name}}}: {{>validation parent=name}}{{>comma}}
{{else}}
{{{name}}}: {{>validation}}{{>comma}}
{{/equals}}
{{/each}}
}).noUnknown()
{{else}}
@ -18,4 +21,4 @@ yup.object<any>()
)
{{/each}}
{{/if}}
)
{{#if isNullable}}.nullable(){{/if}}{{#if isRequired}}.required(){{/if}}

View File

@ -1 +1 @@
{{{base}}}.schema
{{{base}}}.schema{{#if isNullable}}.nullable(){{/if}}{{#if isRequired}}.required(){{/if}}

View File

@ -37,7 +37,7 @@ export class {{{name}}} {
*/
public static async {{{name}}}({{#if parameters}}
{{#each parameters}}
{{{name}}}{{#unless isRequired}}{{#unless default}}?{{/unless}}{{/unless}}: {{>type}}{{#if isNullable}} | null{{/if}}{{#if default}} = {{{default}}}{{/if}}{{#unless @last}},{{/unless}}
{{{name}}}{{>isRequired}}: {{>type}}{{>defaultValue}}{{>comma}}
{{/each}}
{{/if}}): Promise<{{>result}}> {
@ -46,22 +46,22 @@ export class {{{name}}} {
path: `{{{path}}}`{{#if parametersCookie}},
cookies: {
{{#each parametersCookie}}
'{{{prop}}}': {{{name}}}{{#unless @last}},{{/unless}}
'{{{prop}}}': {{{name}}}{{>comma}}
{{/each}}
}{{/if}}{{#if parametersCookie}},
headers: {
{{#each parametersHeader}}
'{{{prop}}}': {{{name}}}{{#unless @last}},{{/unless}}
'{{{prop}}}': {{{name}}}{{>comma}}
{{/each}}
}{{/if}}{{#if parametersQuery}},
query: {
{{#each parametersQuery}}
'{{{prop}}}': {{{name}}}{{#unless @last}},{{/unless}}
'{{{prop}}}': {{{name}}}{{>comma}}
{{/each}}
}{{/if}}{{#if parametersForm}},
formData: {
{{#each parametersForm}}
'{{{prop}}}': {{{name}}}{{#unless @last}},{{/unless}}
'{{{prop}}}': {{{name}}}{{>comma}}
{{/each}}
}{{/if}}{{#if parametersBody}},
body: {{{parametersBody.name}}}{{/if}}

View File

@ -18,17 +18,18 @@ import { getServiceNames } from './getServiceNames';
*/
export function writeClientIndex(client: Client, language: Language, templates: Templates, outputPath: string): void {
const fileName = getFileName('index', language);
try {
fs.writeFileSync(
path.resolve(outputPath, fileName),
templates.index({
server: client.server,
version: client.version,
models: getModelNames(client.models),
services: getServiceNames(client.services),
})
);
} catch (e) {
throw new Error(`Could not write index: "${fileName}"`);
}
// try {
console.log(fileName);
fs.writeFileSync(
path.resolve(outputPath, fileName),
templates.index({
server: client.server,
version: client.version,
models: getModelNames(client.models),
services: getServiceNames(client.services),
})
);
// } catch (e) {
// throw new Error(`Could not write index: "${fileName}"`);
// }
}

View File

@ -17,12 +17,13 @@ import { getFileName } from './getFileName';
export function writeClientModels(models: Map<string, Model>, language: Language, templates: Templates, outputPath: string): void {
models.forEach(model => {
const fileName = getFileName(model.name, language);
try {
const templateData = exportModel(model);
const templateResult = templates.model(templateData);
fs.writeFileSync(path.resolve(outputPath, fileName), format(templateResult));
} catch (e) {
throw new Error(`Could not write model: "${fileName}"`);
}
// try {
console.log(fileName);
const templateData = exportModel(model);
const templateResult = templates.model(templateData);
fs.writeFileSync(path.resolve(outputPath, fileName), format(templateResult));
// } catch (e) {
// throw new Error(`Could not write model: "${fileName}"`);
// }
});
}

View File

@ -17,12 +17,13 @@ import { getFileName } from './getFileName';
export function writeClientServices(services: Map<string, Service>, language: Language, templates: Templates, outputPath: string): void {
services.forEach(service => {
const fileName = getFileName(service.name, language);
try {
const templateData = exportService(service);
const templateResult = templates.service(templateData);
fs.writeFileSync(path.resolve(outputPath, fileName), format(templateResult));
} catch (e) {
throw new Error(`Could not write service: "${fileName}"`);
}
// try {
console.log(fileName);
const templateData = exportService(service);
const templateResult = templates.service(templateData);
fs.writeFileSync(path.resolve(outputPath, fileName), format(templateResult));
// } catch (e) {
// throw new Error(`Could not write service: "${fileName}"`);
// }
});
}

View File

@ -649,7 +649,7 @@
},
"arrayWithEnum": {
"type": "array",
"additionalProperties": {
"items": {
"enum": [
"Success",
"Warning",
@ -659,7 +659,7 @@
},
"arrayWithDescription": {
"type": "array",
"additionalProperties": {
"items": {
"type": "integer",
"description": "Success=1,Warning=2,Error=3"
}
@ -743,13 +743,13 @@
"type": "object",
"required": [
"required",
"requiredAndreadOnly"
"requiredAndReadOnly"
],
"properties": {
"required": {
"type": "string"
},
"requiredAndreadOnly": {
"requiredAndReadOnly": {
"type": "string",
"readOnly": true
},

View File

@ -775,7 +775,7 @@
},
"arrayWithEnum": {
"type": "array",
"additionalProperties": {
"items": {
"enum": [
"Success",
"Warning",
@ -785,7 +785,7 @@
},
"arrayWithDescription": {
"type": "array",
"additionalProperties": {
"items": {
"type": "integer",
"description": "Success=1,Warning=2,Error=3"
}
@ -801,6 +801,42 @@
}
}
},
"ProblemDetails": {
"type": "object",
"properties": {
"type": {
"type": "string",
"nullable": true
},
"title": {
"type": "string",
"nullable": true
},
"status": {
"type": "integer",
"format": "int32",
"nullable": true
},
"detail": {
"type": "string",
"nullable": true
},
"instance": {
"type": "string",
"nullable": true
},
"extensions": {
"type": "object",
"additionalProperties": {
"type": "object",
"additionalProperties": false
},
"nullable": true,
"readOnly": true
}
},
"additionalProperties": false
},
"ModelWithArray": {
"description": "This is a model with one property containing an array",
"type": "object",