Skip to content

Commit 5054c79

Browse files
author
svolkov
committed
fix: required fields of object type was not required
1 parent 92c2344 commit 5054c79

File tree

11 files changed

+64
-55
lines changed

11 files changed

+64
-55
lines changed

src/schema.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ const getObjectTypeContent = (properties) => {
3737

3838

3939
const complexTypeGetter = ({description, ...schema}) => parseSchema(schema, null, inlineExtraFormatters).content
40+
4041
const complexSchemaParsers = {
4142
'oneOf': (schema) => {
4243
// T1 | T2
@@ -83,6 +84,14 @@ const schemaParsers = {
8384
}
8485
},
8586
'object': (schema, typeName) => {
87+
if (_.isArray(schema.required) && schema.properties) {
88+
schema.required.forEach(requiredFieldName => {
89+
if (schema.properties[requiredFieldName]) {
90+
schema.properties[requiredFieldName].required = true
91+
}
92+
})
93+
}
94+
8695
return {
8796
type: 'object',
8897
typeIdentifier: 'interface',

tests/generated/v2.0/petstore-expanded.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,16 @@
1111
*/
1212

1313

14-
export type Pet = NewPet & { id?: number }
14+
export type Pet = NewPet & { id: number }
1515

1616
export interface NewPet {
17-
name?: string;
17+
name: string;
1818
tag?: string;
1919
}
2020

2121
export interface Error {
22-
code?: number;
23-
message?: string;
22+
code: number;
23+
message: string;
2424
}
2525

2626
export type RequestParams = Omit<RequestInit, "body" | "method"> & {

tests/generated/v2.0/petstore-minimal.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212

1313

1414
export interface Pet {
15-
id?: number;
16-
name?: string;
15+
id: number;
16+
name: string;
1717
tag?: string;
1818
}
1919

tests/generated/v2.0/petstore-simple.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,16 @@
1111
*/
1212

1313

14-
export type Pet = NewPet & { id?: number }
14+
export type Pet = NewPet & { id: number }
1515

1616
export interface NewPet {
17-
name?: string;
17+
name: string;
1818
tag?: string;
1919
}
2020

2121
export interface ErrorModel {
22-
code?: number;
23-
message?: string;
22+
code: number;
23+
message: string;
2424
}
2525

2626
export type RequestParams = Omit<RequestInit, "body" | "method"> & {

tests/generated/v2.0/petstore-with-external-docs.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,16 @@
1111
*/
1212

1313

14-
export type Pet = NewPet & { id?: number }
14+
export type Pet = NewPet & { id: number }
1515

1616
export interface NewPet {
17-
name?: string;
17+
name: string;
1818
tag?: string;
1919
}
2020

2121
export interface ErrorModel {
22-
code?: number;
23-
message?: string;
22+
code: number;
23+
message: string;
2424
}
2525

2626
export type RequestParams = Omit<RequestInit, "body" | "method"> & {

tests/generated/v2.0/petstore.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,16 @@
1212

1313

1414
export interface Pet {
15-
id?: number;
16-
name?: string;
15+
id: number;
16+
name: string;
1717
tag?: string;
1818
}
1919

2020
export type Pets = Pet[]
2121

2222
export interface Error {
23-
code?: number;
24-
message?: string;
23+
code: number;
24+
message: string;
2525
}
2626

2727
export type RequestParams = Omit<RequestInit, "body" | "method"> & {

tests/generated/v3.0/anyof-example.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@
1212

1313

1414
export interface PetByAge {
15-
age?: number;
15+
age: number;
1616
nickname?: string;
1717
}
1818

1919
export interface PetByType {
20-
pet_type?: "Cat" | "Dog";
20+
pet_type: "Cat" | "Dog";
2121
hunts?: boolean;
2222
}
2323

tests/generated/v3.0/callback-example.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ export class Api<SecurityDataType> {
109109
* @request POST:/streams
110110
*/
111111
post: (query: { callbackUrl: string }, params?: RequestParams) =>
112-
this.request<{ subscriptionId?: string }>(`/streams${this.addQueryParams(query)}`, "POST", params, null),
112+
this.request<{ subscriptionId: string }>(`/streams${this.addQueryParams(query)}`, "POST", params, null),
113113
}
114114

115115
}

tests/generated/v3.0/personal-api-example.ts

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212

1313

1414
export interface AuthUser {
15-
username?: string;
16-
password?: string;
15+
username: string;
16+
password: string;
1717
}
1818

1919
export enum Kind {
@@ -24,8 +24,8 @@ export enum Kind {
2424
}
2525

2626
export interface Job {
27-
id?: string;
28-
kind?: Kind;
27+
id: string;
28+
kind: Kind;
2929
name?: string;
3030
link?: string;
3131
github?: string;
@@ -35,7 +35,7 @@ export interface Job {
3535
}
3636

3737
export interface JobUpdate {
38-
kind?: Kind;
38+
kind: Kind;
3939
name?: string;
4040
link?: string;
4141
github?: string;
@@ -45,8 +45,8 @@ export interface JobUpdate {
4545
}
4646

4747
export interface UpdatedJob {
48-
id?: string;
49-
kind?: Kind;
48+
id: string;
49+
kind: Kind;
5050
name?: string;
5151
link?: string;
5252
github?: string;
@@ -56,43 +56,43 @@ export interface UpdatedJob {
5656
}
5757

5858
export interface Project {
59-
id?: string;
60-
year?: number;
61-
description?: string;
62-
job?: Job;
59+
id: string;
60+
year: number;
61+
description: string;
62+
job: Job;
6363
name?: string;
6464
notImportant?: boolean;
6565
prefix?: string;
66-
tags?: string[];
67-
teamSize?: string;
66+
tags: string[];
67+
teamSize: string;
6868
}
6969

7070
export interface ProjectUpdate {
71-
year?: number;
72-
description?: string;
71+
year: number;
72+
description: string;
7373
name?: string;
7474
notImportant?: boolean;
7575
prefix?: string;
76-
tags?: string[];
77-
teamSize?: string;
78-
job?: string;
76+
tags: string[];
77+
teamSize: string;
78+
job: string;
7979
}
8080

8181
export interface UpdatedProject {
82-
id?: string;
83-
year?: number;
84-
description?: string;
82+
id: string;
83+
year: number;
84+
description: string;
8585
name?: string;
8686
notImportant?: boolean;
8787
prefix?: string;
88-
tags?: string[];
89-
teamSize?: string;
90-
job?: string;
88+
tags: string[];
89+
teamSize: string;
90+
job: string;
9191
}
9292

9393
export interface User {
94-
id?: string;
95-
username?: string;
94+
id: string;
95+
username: string;
9696
}
9797

9898
export interface UserUpdate {

tests/generated/v3.0/petstore-expanded.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,16 @@
1111
*/
1212

1313

14-
export type Pet = NewPet & { id?: number }
14+
export type Pet = NewPet & { id: number }
1515

1616
export interface NewPet {
17-
name?: string;
17+
name: string;
1818
tag?: string;
1919
}
2020

2121
export interface Error {
22-
code?: number;
23-
message?: string;
22+
code: number;
23+
message: string;
2424
}
2525

2626
export type RequestParams = Omit<RequestInit, "body" | "method"> & {

0 commit comments

Comments
 (0)