mirror of
https://github.com/ferdikoomen/openapi-typescript-codegen.git
synced 2025-12-08 20:16:21 +00:00
- Working on updates
This commit is contained in:
parent
5cee14a8ee
commit
15b5052490
@ -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],
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -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],
|
||||
|
||||
@ -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}}
|
||||
|
||||
1
src/templates/javascript/partials/comma.hbs
Normal file
1
src/templates/javascript/partials/comma.hbs
Normal file
@ -0,0 +1 @@
|
||||
{{#unless @last}},{{/unless}}
|
||||
1
src/templates/javascript/partials/defaultValue.hbs
Normal file
1
src/templates/javascript/partials/defaultValue.hbs
Normal file
@ -0,0 +1 @@
|
||||
{{#if default}} = {{{default}}}{{/if}}
|
||||
@ -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}}} = {}));
|
||||
@ -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}}} = {}));
|
||||
@ -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 });
|
||||
|
||||
@ -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}}} = {}));
|
||||
@ -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}}
|
||||
|
||||
@ -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~}}
|
||||
|
||||
@ -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~}}
|
||||
|
||||
@ -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~}}
|
||||
|
||||
@ -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~}}
|
||||
|
||||
@ -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}}
|
||||
|
||||
@ -1 +1 @@
|
||||
{{{base}}}.schema
|
||||
{{{base}}}.schema{{#if isNullable}}.nullable(){{/if}}{{#if isRequired}}.required(){{/if}}
|
||||
|
||||
@ -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}}
|
||||
|
||||
@ -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}}
|
||||
|
||||
1
src/templates/typescript/partials/comma.hbs
Normal file
1
src/templates/typescript/partials/comma.hbs
Normal file
@ -0,0 +1 @@
|
||||
{{#unless @last}},{{/unless}}
|
||||
1
src/templates/typescript/partials/defaultValue.hbs
Normal file
1
src/templates/typescript/partials/defaultValue.hbs
Normal file
@ -0,0 +1 @@
|
||||
{{#if default}} = {{{default}}}{{/if}}
|
||||
@ -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 });
|
||||
}
|
||||
}
|
||||
@ -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 });
|
||||
}
|
||||
}
|
||||
@ -5,7 +5,7 @@
|
||||
{{/if}}
|
||||
export enum {{{name}}} {
|
||||
{{#each enum}}
|
||||
{{{name}}} = {{{value}}}{{#unless @last}},{{/unless}}
|
||||
{{{name}}} = {{{value}}}{{>comma}}
|
||||
{{/each}}
|
||||
}
|
||||
|
||||
|
||||
@ -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 });
|
||||
}
|
||||
}
|
||||
|
||||
@ -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 });
|
||||
|
||||
@ -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 });
|
||||
}
|
||||
}
|
||||
1
src/templates/typescript/partials/extends.hbs
Normal file
1
src/templates/typescript/partials/extends.hbs
Normal file
@ -0,0 +1 @@
|
||||
{{#if extends}} extends {{#each extends}}{{{this}}}{{#unless @last}}, {{/unless}}{{/each}}{{/if}}
|
||||
1
src/templates/typescript/partials/isNullable.hbs
Normal file
1
src/templates/typescript/partials/isNullable.hbs
Normal file
@ -0,0 +1 @@
|
||||
{{>@partial-block}}{{#if isNullable}} | null{{/if}}
|
||||
1
src/templates/typescript/partials/isReadOnly.hbs
Normal file
1
src/templates/typescript/partials/isReadOnly.hbs
Normal file
@ -0,0 +1 @@
|
||||
{{#if isReadOnly}}readonly {{/if}}
|
||||
1
src/templates/typescript/partials/isRequired.hbs
Normal file
1
src/templates/typescript/partials/isRequired.hbs
Normal file
@ -0,0 +1 @@
|
||||
{{#unless isRequired}}?{{/unless}}
|
||||
@ -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}}
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
{{~#>isNullable~}}
|
||||
{{~#if link~}}
|
||||
Array<{{>type link}}>
|
||||
{{~else~}}
|
||||
Array<{{{type}}}>
|
||||
{{~/if~}}
|
||||
{{~/isNullable~}}
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
{{~#>isNullable~}}
|
||||
{{~#if link~}}
|
||||
Dictionary<{{>type link}}>
|
||||
{{~else~}}
|
||||
Dictionary<{{{type}}}>
|
||||
{{~/if~}}
|
||||
{{~/isNullable~}}
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
{{~#>isNullable~}}
|
||||
{{~#if parent~}}
|
||||
{{{parent}}}.{{{name}}}
|
||||
{{~else~}}
|
||||
@ -7,3 +8,4 @@
|
||||
{{~/each~}}
|
||||
)
|
||||
{{~/if~}}
|
||||
{{~/isNullable~}}
|
||||
|
||||
@ -1 +1,3 @@
|
||||
{{~#>isNullable~}}
|
||||
{{{base}}}
|
||||
{{~/isNullable~}}
|
||||
|
||||
@ -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~}}
|
||||
|
||||
@ -1 +1,3 @@
|
||||
{{~#>isNullable~}}
|
||||
{{{base}}}
|
||||
{{~/isNullable~}}
|
||||
|
||||
@ -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}}
|
||||
|
||||
@ -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~}}
|
||||
|
||||
@ -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~}}
|
||||
|
||||
@ -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~}}
|
||||
|
||||
@ -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~}}
|
||||
|
||||
@ -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}}
|
||||
|
||||
@ -1 +1 @@
|
||||
{{{base}}}.schema
|
||||
{{{base}}}.schema{{#if isNullable}}.nullable(){{/if}}{{#if isRequired}}.required(){{/if}}
|
||||
|
||||
@ -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}}
|
||||
|
||||
@ -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}"`);
|
||||
// }
|
||||
}
|
||||
|
||||
@ -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}"`);
|
||||
// }
|
||||
});
|
||||
}
|
||||
|
||||
@ -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}"`);
|
||||
// }
|
||||
});
|
||||
}
|
||||
|
||||
@ -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
|
||||
},
|
||||
|
||||
@ -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",
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user