Skip to content

Commit d3706a3

Browse files
committed
Allow x-nullable on root props, exposing pattern as regexp
1 parent 45d4c2e commit d3706a3

File tree

13 files changed

+209
-60
lines changed

13 files changed

+209
-60
lines changed

src/openApi/v2/interfaces/OpenApiParameter.d.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
import type { WithEnumExtension } from './Extensions/WithEnumExtension';
2+
import { WithNullableExtension } from './Extensions/WithNullableExtension';
23
import type { OpenApiItems } from './OpenApiItems';
34
import type { OpenApiReference } from './OpenApiReference';
45
import type { OpenApiSchema } from './OpenApiSchema';
56

67
/**
78
* https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#parameterObject
89
*/
9-
export interface OpenApiParameter extends OpenApiReference, WithEnumExtension {
10+
export interface OpenApiParameter extends OpenApiReference, WithEnumExtension, WithNullableExtension {
1011
name: string;
1112
in: 'path' | 'query' | 'header' | 'formData' | 'body';
1213
description?: string;

src/openApi/v2/parser/extendEnum.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,15 @@
11
import type { Enum } from '../../../client/interfaces/Enum';
22
import type { WithEnumExtension } from '../interfaces/Extensions/WithEnumExtension';
33

4-
const KEY_ENUM_NAMES = 'x-enum-varnames';
5-
const KEY_ENUM_DESCRIPTIONS = 'x-enum-descriptions';
6-
74
/**
85
* Extend the enum with the x-enum properties. This adds the capability
96
* to use names and descriptions inside the generated enums.
107
* @param enumerators
118
* @param definition
129
*/
1310
export function extendEnum(enumerators: Enum[], definition: WithEnumExtension): Enum[] {
14-
const names = definition[KEY_ENUM_NAMES];
15-
const descriptions = definition[KEY_ENUM_DESCRIPTIONS];
11+
const names = definition['x-enum-varnames'];
12+
const descriptions = definition['x-enum-descriptions'];
1613

1714
return enumerators.map((enumerator, index) => ({
1815
name: (names && names[index]) || enumerator.name,

src/openApi/v2/parser/getModel.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ export function getModel(openApi: OpenApi, definition: OpenApiSchema, isDefiniti
2020
description: getComment(definition.description),
2121
isDefinition: isDefinition,
2222
isReadOnly: definition.readOnly === true,
23-
isNullable: false,
23+
isNullable: definition['x-nullable'] === true,
2424
isRequired: false,
2525
format: definition.format,
2626
maximum: definition.maximum,

src/openApi/v2/parser/getOperationParameter.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ export function getOperationParameter(openApi: OpenApi, parameter: OpenApiParame
2525
isDefinition: false,
2626
isReadOnly: false,
2727
isRequired: parameter.required === true,
28-
isNullable: false,
28+
isNullable: parameter['x-nullable'] === true,
2929
format: parameter.format,
3030
maximum: parameter.maximum,
3131
exclusiveMaximum: parameter.exclusiveMaximum,

src/openApi/v3/parser/extendEnum.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,15 @@
11
import type { Enum } from '../../../client/interfaces/Enum';
22
import type { WithEnumExtension } from '../interfaces/Extensions/WithEnumExtension';
33

4-
const KEY_ENUM_NAMES = 'x-enum-varnames';
5-
const KEY_ENUM_DESCRIPTIONS = 'x-enum-descriptions';
6-
74
/**
85
* Extend the enum with the x-enum properties. This adds the capability
96
* to use names and descriptions inside the generated enums.
107
* @param enumerators
118
* @param definition
129
*/
1310
export function extendEnum(enumerators: Enum[], definition: WithEnumExtension): Enum[] {
14-
const names = definition[KEY_ENUM_NAMES];
15-
const descriptions = definition[KEY_ENUM_DESCRIPTIONS];
11+
const names = definition['x-enum-varnames'];
12+
const descriptions = definition['x-enum-descriptions'];
1613

1714
return enumerators.map((enumerator, index) => ({
1815
name: (names && names[index]) || enumerator.name,

src/openApi/v3/parser/getModel.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,20 @@ export function getModel(openApi: OpenApi, definition: OpenApiSchema, isDefiniti
2323
isReadOnly: definition.readOnly === true,
2424
isNullable: definition.nullable === true,
2525
isRequired: false,
26+
format: definition.format,
27+
maximum: definition.maximum,
28+
exclusiveMaximum: definition.exclusiveMaximum,
29+
minimum: definition.minimum,
30+
exclusiveMinimum: definition.exclusiveMinimum,
31+
multipleOf: definition.multipleOf,
32+
maxLength: definition.maxLength,
33+
minLength: definition.minLength,
34+
pattern: definition.pattern,
35+
maxItems: definition.maxItems,
36+
minItems: definition.minItems,
37+
uniqueItems: definition.uniqueItems,
38+
maxProperties: definition.maxProperties,
39+
minProperties: definition.minProperties,
2640
imports: [],
2741
extends: [],
2842
enum: [],

src/templates/partials/base.hbs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@
33
{{~#equals @root.httpClient 'xhr'}}Blob{{/equals~}}
44
{{~#equals @root.httpClient 'node'}}Buffer | ArrayBuffer | ArrayBufferView{{/equals~}}
55
{{~else~}}
6-
{{base}}
6+
{{{base}}}
77
{{~/equals~}}

src/templates/partials/schemaArray.hbs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
{
2-
type: 'Array',
2+
array: {
3+
type: '{{>base}}',
4+
},
35
{{#if isReadOnly}}
46
isReadOnly: {{{isReadOnly}}},
57
{{/if}}

src/templates/partials/schemaDictionary.hbs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
{
2-
type: 'Dictionary',
2+
dictionary: {
3+
type: '{{>base}}',
4+
},
35
{{#if isReadOnly}}
46
isReadOnly: {{{isReadOnly}}},
57
{{/if}}

src/templates/partials/schemaGeneric.hbs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
{{#if type}}
3-
type: '{{{base}}}',
3+
type: '{{>base}}',
44
{{/if}}
55
{{#if isReadOnly}}
66
isReadOnly: {{{isReadOnly}}},
@@ -36,7 +36,7 @@
3636
minLength: {{{minLength}}},
3737
{{/if}}
3838
{{#if pattern}}
39-
pattern: '{{{pattern}}}',
39+
pattern: /{{{pattern}}}/,
4040
{{/if}}
4141
{{#if maxItems}}
4242
maxItems: {{{maxItems}}},

0 commit comments

Comments
 (0)