Skip to content

Commit 7448720

Browse files
authored
fix: fix path to utils file when using date types (#131)
closes #117
1 parent 93640cf commit 7448720

File tree

7 files changed

+50
-32
lines changed

7 files changed

+50
-32
lines changed

src/language/typescript/2.0/serializers/items-object.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ export const serializeItemsObject = (from: Ref, itemsObject: ItemsObject): Eithe
1818
return pipe(serializeItemsObject(from, itemsObject.items), either.map(getSerializedArrayType()));
1919
}
2020
case 'string': {
21-
return right(getSerializedStringType(itemsObject.format));
21+
return getSerializedStringType(from, itemsObject.format);
2222
}
2323
case 'number': {
2424
return right(SERIALIZED_NUMBER_TYPE);

src/language/typescript/2.0/serializers/parameter-object.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,10 @@ export const serializeParameterObject = (
2828
case 'formData': {
2929
switch (parameterObject.type) {
3030
case 'string': {
31-
return right(toSerializedParameter(getSerializedStringType(parameterObject.format)));
31+
return pipe(
32+
getSerializedStringType(from, parameterObject.format),
33+
either.map(toSerializedParameter),
34+
);
3235
}
3336
case 'number': {
3437
return right(toSerializedParameter(SERIALIZED_NUMBER_TYPE));

src/language/typescript/2.0/serializers/schema-object.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ const serializePrimitive = (from: Ref, schemaObject: PrimitiveSchemaObject): Eit
139139
return right(SERIALIZED_NULL_TYPE);
140140
}
141141
case 'string': {
142-
return right(getSerializedStringType(schemaObject.format));
142+
return getSerializedStringType(from, schemaObject.format);
143143
}
144144
case 'number': {
145145
return right(SERIALIZED_NUMBER_TYPE);

src/language/typescript/3.0/serializers/schema-object.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ const serializeSchemaObjectWithRecursion = (from: Ref, shouldTrackRecursion: boo
8080
case 'boolean':
8181
case 'integer':
8282
case 'number': {
83-
return pipe(serializePrimitive(from, schemaObject), getSerializedNullableType(isNullable), right);
83+
return pipe(serializePrimitive(from, schemaObject), either.map(getSerializedNullableType(isNullable)));
8484
}
8585
case 'array': {
8686
const { items } = schemaObject;
@@ -182,19 +182,19 @@ const serializeChildren = (
182182
: serializeSchemaObjectWithRecursion(from, false)(item),
183183
);
184184

185-
const serializePrimitive = (from: Ref, schemaObject: PrimitiveSchemaObject): SerializedType => {
185+
const serializePrimitive = (from: Ref, schemaObject: PrimitiveSchemaObject): Either<Error, SerializedType> => {
186186
switch (schemaObject.type) {
187187
case 'string': {
188-
return getSerializedStringType(schemaObject.format);
188+
return getSerializedStringType(from, schemaObject.format);
189189
}
190190
case 'number': {
191-
return SERIALIZED_NUMBER_TYPE;
191+
return right(SERIALIZED_NUMBER_TYPE);
192192
}
193193
case 'integer': {
194-
return SERIALIZED_INTEGER_TYPE;
194+
return right(SERIALIZED_INTEGER_TYPE);
195195
}
196196
case 'boolean': {
197-
return SERIALIZED_BOOLEAN_TYPE;
197+
return right(SERIALIZED_BOOLEAN_TYPE);
198198
}
199199
}
200200
};

src/language/typescript/asyncapi-2.0.0/serializers/schema-object.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ const serializeSchemaObjectWithRecursion = (
7070
return right(SERIALIZED_NULL_TYPE);
7171
}
7272
case 'string': {
73-
return right(getSerializedStringType(schemaObject.format));
73+
return getSerializedStringType(from, schemaObject.format);
7474
}
7575
case 'number': {
7676
return right(SERIALIZED_NUMBER_TYPE);

src/language/typescript/common/data/serialized-type.ts

+28-22
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ import { JSONPrimitive } from '../../../../utils/io-ts';
1919
import { pipe } from 'fp-ts/lib/pipeable';
2020
import { nonEmptyArray, option } from 'fp-ts';
2121
import { none, Option, some } from 'fp-ts/lib/Option';
22+
import { utilsRef } from '../bundled/utils';
23+
import { Either } from 'fp-ts/lib/Either';
24+
import { combineEither } from '@devexperts/utils/dist/adt/either.utils';
2225

2326
export interface SerializedType {
2427
readonly type: string;
@@ -79,30 +82,33 @@ export const SERIALIZED_DATETIME_TYPE = serializedType(
7982
[serializedDependency('DateFromISOString', 'io-ts-types/lib/DateFromISOString')],
8083
[],
8184
);
82-
export const SERIALIZED_DATE_TYPE = serializedType(
83-
'Date',
84-
'DateFromISODateStringIO',
85-
[serializedDependency('DateFromISODateStringIO', '../utils/utils')],
86-
[],
87-
);
8885
export const SERIALIZED_STRING_TYPE = serializedType('string', 'string', [serializedDependency('string', 'io-ts')], []);
89-
export const getSerializedStringType = (format: Option<string>): SerializedType => {
90-
return pipe(
91-
format,
92-
option.chain(format => {
93-
// https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#anchor14
94-
switch (format) {
95-
case 'date-time': {
96-
return some(SERIALIZED_DATETIME_TYPE);
86+
export const getSerializedStringType = (from: Ref, format: Option<string>): Either<Error, SerializedType> => {
87+
return combineEither(utilsRef, utilsRef => {
88+
return pipe(
89+
format,
90+
option.chain(format => {
91+
// https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#anchor14
92+
switch (format) {
93+
case 'date-time': {
94+
return some(SERIALIZED_DATETIME_TYPE);
95+
}
96+
case 'date': {
97+
return some(
98+
serializedType(
99+
'Date',
100+
'DateFromISODateStringIO',
101+
[serializedDependency('DateFromISODateStringIO', getRelativePath(from, utilsRef))],
102+
[],
103+
),
104+
);
105+
}
97106
}
98-
case 'date': {
99-
return some(SERIALIZED_DATE_TYPE);
100-
}
101-
}
102-
return none;
103-
}),
104-
option.getOrElse(() => SERIALIZED_STRING_TYPE),
105-
);
107+
return none;
108+
}),
109+
option.getOrElse(() => SERIALIZED_STRING_TYPE),
110+
);
111+
});
106112
};
107113
export const SERIALIZED_NULL_TYPE = serializedType('null', 'nullType', [serializedDependency('nullType', 'io-ts')], []);
108114
export const getSerializedNullableType = (isNullable: boolean) => (type: SerializedType): SerializedType =>

test/specs/3.0/demo.yml

+9
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,15 @@ components:
126126
items:
127127
type: string
128128
nullable: true
129+
TestDate:
130+
type: object
131+
properties:
132+
foo:
133+
type: string
134+
format: date
135+
bar:
136+
type: string
137+
format: date-time
129138
requestBodies:
130139
RefRequestBody:
131140
description: ref request body

0 commit comments

Comments
 (0)