Skip to content

Commit 5bde494

Browse files
committed
Add type guards
1 parent ff86c04 commit 5bde494

File tree

1 file changed

+41
-2
lines changed

1 file changed

+41
-2
lines changed

src/schema.ts

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,16 @@
11
import {
22
AnyJsonSchema,
33
ArrayJsonSchema,
4-
BooleanJsonSchema, IntegerJsonSchema, JsonSchema,
4+
BooleanJsonSchema,
5+
IntegerJsonSchema, isAnyJsonSchema, isArrayJsonSchema,
6+
isBooleanJsonSchema, isIntegerJsonSchema,
7+
isNullJsonSchema,
8+
isNumberJsonSchema, isObjectJsonSchema,
9+
isStringJsonSchema,
10+
JsonSchema,
511
NullJsonSchema,
6-
NumberJsonSchema, ObjectJsonSchema,
12+
NumberJsonSchema,
13+
ObjectJsonSchema,
714
StringJsonSchema,
815
} from '@fosfad/json-schema-typescript-definitions';
916
import { Discriminator } from './discriminator';
@@ -23,34 +30,54 @@ export interface NullOasSchema extends NullJsonSchema, OasSchema {
2330
oneOf?: Array<NullOasSchema | Reference>;
2431
}
2532

33+
export function isNullOasSchema(schema: any): schema is NullOasSchema {
34+
return isNullJsonSchema(schema);
35+
}
36+
2637
export interface BooleanOasSchema extends BooleanJsonSchema, OasSchema {
2738
allOf?: Array<BooleanOasSchema | Reference>;
2839
anyOf?: Array<BooleanOasSchema | Reference>;
2940
not?: BooleanOasSchema | Reference;
3041
oneOf?: Array<BooleanOasSchema | Reference>;
3142
}
3243

44+
export function isBooleanOasSchema(schema: any): schema is BooleanOasSchema {
45+
return isBooleanJsonSchema(schema);
46+
}
47+
3348
export interface StringOasSchema extends StringJsonSchema, OasSchema {
3449
allOf?: Array<StringOasSchema | Reference>;
3550
anyOf?: Array<StringOasSchema | Reference>;
3651
not?: StringOasSchema | Reference;
3752
oneOf?: Array<StringOasSchema | Reference>;
3853
}
3954

55+
export function isStringOasSchema(schema: any): schema is StringOasSchema {
56+
return isStringJsonSchema(schema);
57+
}
58+
4059
export interface NumberOasSchema extends NumberJsonSchema, OasSchema {
4160
allOf?: Array<NumberOasSchema | Reference>;
4261
anyOf?: Array<NumberOasSchema | Reference>;
4362
not?: NumberOasSchema | Reference;
4463
oneOf?: Array<NumberOasSchema | Reference>;
4564
}
4665

66+
export function isNumberOasSchema(schema: any): schema is NumberOasSchema {
67+
return isNumberJsonSchema(schema);
68+
}
69+
4770
export interface IntegerOasSchema extends IntegerJsonSchema, OasSchema {
4871
allOf?: Array<IntegerOasSchema | Reference>;
4972
anyOf?: Array<IntegerOasSchema | Reference>;
5073
not?: IntegerOasSchema | Reference;
5174
oneOf?: Array<IntegerOasSchema | Reference>;
5275
}
5376

77+
export function isIntegerOasSchema(schema: any): schema is IntegerOasSchema {
78+
return isIntegerJsonSchema(schema);
79+
}
80+
5481
export interface ArrayOasSchema extends ArrayJsonSchema, OasSchema {
5582
allOf?: Array<ArrayOasSchema | Reference>;
5683
anyOf?: Array<ArrayOasSchema | Reference>;
@@ -61,6 +88,10 @@ export interface ArrayOasSchema extends ArrayJsonSchema, OasSchema {
6188
prefixItems?: Array<OasSchema | Reference>;
6289
}
6390

91+
export function isArrayOasSchema(schema: any): schema is ArrayOasSchema {
92+
return isArrayJsonSchema(schema);
93+
}
94+
6495
export interface ObjectOasSchema extends ObjectJsonSchema, OasSchema {
6596
allOf?: Array<ObjectOasSchema | Reference>;
6697
anyOf?: Array<ObjectOasSchema | Reference>;
@@ -76,9 +107,17 @@ export interface ObjectOasSchema extends ObjectJsonSchema, OasSchema {
76107
propertyNames?: OasSchema | Reference;
77108
}
78109

110+
export function isObjectOasSchema(schema: any): schema is ObjectOasSchema {
111+
return isObjectJsonSchema(schema);
112+
}
113+
79114
export interface AnyOasSchema extends AnyJsonSchema, OasSchema {
80115
allOf?: Array<OasSchema | Reference>;
81116
anyOf?: Array<OasSchema | Reference>;
82117
not?: OasSchema | Reference;
83118
oneOf?: Array<OasSchema | Reference>;
84119
}
120+
121+
export function isAnyOasSchema(schema: any): schema is AnyOasSchema {
122+
return isAnyJsonSchema(schema);
123+
}

0 commit comments

Comments
 (0)