Skip to content

Commit c6436b6

Browse files
authored
Merge pull request #811 from BitGo/DX-504-default-metadata
feat: add human readable titles to known schemas
2 parents 53e62aa + 7bbe54c commit c6436b6

File tree

2 files changed

+117
-49
lines changed

2 files changed

+117
-49
lines changed

packages/openapi-generator/src/knownImports.ts

Lines changed: 115 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -138,77 +138,143 @@ export const KNOWN_IMPORTS: KnownImports = {
138138
void: () => E.right({ type: 'undefined' }),
139139
},
140140
'io-ts-numbers': {
141-
NumberFromString: () => E.right({ type: 'string', format: 'number' }),
142-
NaturalFromString: () => E.right({ type: 'string', format: 'number' }),
143-
Negative: () => E.right({ type: 'number' }),
144-
NegativeFromString: () => E.right({ type: 'string', format: 'number' }),
145-
NegativeInt: () => E.right({ type: 'number' }),
146-
NegativeIntFromString: () => E.right({ type: 'string', format: 'number' }),
147-
NonNegative: () => E.right({ type: 'number' }),
148-
NonNegativeFromString: () => E.right({ type: 'string', format: 'number' }),
149-
NonNegativeInt: () => E.right({ type: 'number' }),
150-
NonNegativeIntFromString: () => E.right({ type: 'string', format: 'number' }),
151-
NonPositive: () => E.right({ type: 'number' }),
152-
NonPositiveFromString: () => E.right({ type: 'string', format: 'number' }),
153-
NonPositiveInt: () => E.right({ type: 'number' }),
154-
NonPositiveIntFromString: () => E.right({ type: 'string', format: 'number' }),
155-
NonZero: () => E.right({ type: 'number' }),
156-
NonZeroFromString: () => E.right({ type: 'string', format: 'number' }),
157-
NonZeroInt: () => E.right({ type: 'number' }),
158-
NonZeroIntFromString: () => E.right({ type: 'string', format: 'number' }),
159-
Positive: () => E.right({ type: 'number' }),
160-
PositiveFromString: () => E.right({ type: 'string', format: 'number' }),
161-
Zero: () => E.right({ type: 'number' }),
162-
ZeroFromString: () => E.right({ type: 'string', format: 'number' }),
141+
NumberFromString: () =>
142+
E.right({ type: 'string', format: 'number', title: 'Number String' }),
143+
NaturalFromString: () =>
144+
E.right({ type: 'string', format: 'number', title: 'Natural Number String' }),
145+
Negative: () => E.right({ type: 'number', title: 'Negative Number' }),
146+
NegativeFromString: () =>
147+
E.right({ type: 'string', format: 'number', title: 'Negative Number String' }),
148+
NegativeInt: () => E.right({ type: 'number', title: 'Negative Integer' }),
149+
NegativeIntFromString: () =>
150+
E.right({ type: 'string', format: 'number', title: 'Negative Integer String' }),
151+
NonNegative: () => E.right({ type: 'number', title: 'Non-Negative Number' }),
152+
NonNegativeFromString: () =>
153+
E.right({
154+
type: 'string',
155+
format: 'number',
156+
title: 'Non-Negative Number String',
157+
}),
158+
NonNegativeInt: () => E.right({ type: 'number', title: 'Non-Negative Integer' }),
159+
NonNegativeIntFromString: () =>
160+
E.right({
161+
type: 'string',
162+
format: 'number',
163+
title: 'Non-Negative Integer String',
164+
}),
165+
NonPositive: () => E.right({ type: 'number', title: 'Non-Positive Number' }),
166+
NonPositiveFromString: () =>
167+
E.right({
168+
type: 'string',
169+
format: 'number',
170+
title: 'Non-Positive Number String',
171+
}),
172+
NonPositiveInt: () => E.right({ type: 'number', title: 'Non-Positive Integer' }),
173+
NonPositiveIntFromString: () =>
174+
E.right({
175+
type: 'string',
176+
format: 'number',
177+
title: 'Non-Positive Integer String',
178+
}),
179+
NonZero: () => E.right({ type: 'number', title: 'Non-Zero Number' }),
180+
NonZeroFromString: () =>
181+
E.right({ type: 'string', format: 'number', title: 'Non-Zero Number String' }),
182+
NonZeroInt: () => E.right({ type: 'number', title: 'Non-Zero Integer' }),
183+
NonZeroIntFromString: () =>
184+
E.right({ type: 'string', format: 'number', title: 'Non-Zero Integer String' }),
185+
Positive: () => E.right({ type: 'number', title: 'Positive Number' }),
186+
PositiveFromString: () =>
187+
E.right({ type: 'string', format: 'number', title: 'Positive Number String' }),
188+
Zero: () => E.right({ type: 'number', title: 'Zero' }),
189+
ZeroFromString: () =>
190+
E.right({ type: 'string', format: 'number', title: 'Zero String' }),
163191
},
164192
'io-ts-bigint': {
165-
BigIntFromString: () => E.right({ type: 'string', format: 'number' }),
166-
NegativeBigInt: () => E.right({ type: 'number' }),
167-
NegativeBigIntFromString: () => E.right({ type: 'string', format: 'number' }),
168-
NonEmptyString: () => E.right({ type: 'string' }),
169-
NonNegativeBigInt: () => E.right({ type: 'number' }),
170-
NonNegativeBigIntFromString: () => E.right({ type: 'string', format: 'number' }),
171-
NonPositiveBigInt: () => E.right({ type: 'number' }),
172-
NonPositiveBigIntFromString: () => E.right({ type: 'string', format: 'number' }),
173-
NonZeroBigInt: () => E.right({ type: 'number' }),
174-
NonZeroBigIntFromString: () => E.right({ type: 'string', format: 'number' }),
175-
PositiveBigInt: () => E.right({ type: 'number' }),
176-
PositiveBigIntFromString: () => E.right({ type: 'string', format: 'number' }),
177-
ZeroBigInt: () => E.right({ type: 'number' }),
178-
ZeroBigIntFromString: () => E.right({ type: 'string', format: 'number' }),
193+
BigIntFromString: () =>
194+
E.right({ type: 'string', format: 'number', title: 'Big Integer String' }),
195+
NegativeBigInt: () => E.right({ type: 'number', title: 'Negative Big Integer' }),
196+
NegativeBigIntFromString: () =>
197+
E.right({
198+
type: 'string',
199+
format: 'number',
200+
title: 'Negative Big Integer String',
201+
}),
202+
NonEmptyString: () => E.right({ type: 'string', title: 'Non-Empty String' }),
203+
NonNegativeBigInt: () =>
204+
E.right({ type: 'number', title: 'Non-Negative Big Integer' }),
205+
NonNegativeBigIntFromString: () =>
206+
E.right({
207+
type: 'string',
208+
format: 'number',
209+
title: 'Non-Negative Big Integer String',
210+
}),
211+
NonPositiveBigInt: () =>
212+
E.right({ type: 'number', title: 'Non-Positive Big Integer' }),
213+
NonPositiveBigIntFromString: () =>
214+
E.right({
215+
type: 'string',
216+
format: 'number',
217+
title: 'Non-Positive Big Integer String',
218+
}),
219+
NonZeroBigInt: () => E.right({ type: 'number', title: 'Non-Zero Big Integer' }),
220+
NonZeroBigIntFromString: () =>
221+
E.right({
222+
type: 'string',
223+
format: 'number',
224+
title: 'Non-Zero Big Integer String',
225+
}),
226+
PositiveBigInt: () => E.right({ type: 'number', title: 'Positive Big Integer' }),
227+
PositiveBigIntFromString: () =>
228+
E.right({
229+
type: 'string',
230+
format: 'number',
231+
title: 'Positive Big Integer String',
232+
}),
233+
ZeroBigInt: () => E.right({ type: 'number', title: 'Zero Big Integer' }),
234+
ZeroBigIntFromString: () =>
235+
E.right({ type: 'string', format: 'number', title: 'Zero Big Integer String' }),
179236
},
180237
'io-ts-types': {
181-
NumberFromString: () => E.right({ type: 'string', format: 'number' }),
182-
BigIntFromString: () => E.right({ type: 'string', format: 'number' }),
183-
BooleanFromNumber: () => E.right({ type: 'number', enum: [0, 1] }),
184-
BooleanFromString: () => E.right({ type: 'string', enum: ['true', 'false'] }),
185-
DateFromISOString: () => E.right({ type: 'string', format: 'date-time' }),
238+
NumberFromString: () =>
239+
E.right({ type: 'string', format: 'number', title: 'Number String' }),
240+
BigIntFromString: () =>
241+
E.right({ type: 'string', format: 'number', title: 'Big Integer String' }),
242+
BooleanFromNumber: () =>
243+
E.right({ type: 'number', enum: [0, 1], title: 'Boolean Number' }),
244+
BooleanFromString: () =>
245+
E.right({ type: 'string', enum: ['true', 'false'], title: 'Boolean String' }),
246+
DateFromISOString: () =>
247+
E.right({ type: 'string', format: 'date-time', title: 'ISO Date String' }),
186248
DateFromNumber: () =>
187249
E.right({
250+
title: 'Unix Time (milliseconds)',
188251
type: 'number',
189-
format: 'number',
190252
description: 'Number of milliseconds since the Unix epoch',
253+
format: 'number',
191254
}),
192255
DateFromUnixTime: () =>
193256
E.right({
257+
title: 'Unix Time (seconds)',
194258
type: 'number',
195259
format: 'number',
196260
description: 'Number of seconds since the Unix epoch',
197261
}),
198-
IntFromString: () => E.right({ type: 'string', format: 'integer' }),
199-
JsonFromString: () => E.right({ type: 'string' }),
200-
nonEmptyArray: (_, innerSchema) => E.right({ type: 'array', items: innerSchema }),
201-
NonEmptyString: () => E.right({ type: 'string' }),
262+
IntFromString: () =>
263+
E.right({ type: 'string', format: 'integer', title: 'Integer String' }),
264+
JsonFromString: () => E.right({ type: 'string', title: 'JSON String' }),
265+
nonEmptyArray: (_, innerSchema) =>
266+
E.right({ type: 'array', items: innerSchema, title: 'Non-Empty Array' }),
267+
NonEmptyString: () => E.right({ type: 'string', title: 'Non-Empty String' }),
202268
readonlyNonEmptyArray: (_, innerSchema) =>
203269
E.right({ type: 'array', items: innerSchema }),
204-
UUID: () => E.right({ type: 'string' }),
205-
Json: () => E.right({ type: 'any' }),
270+
UUID: () => E.right({ type: 'string', title: 'UUID' }),
271+
Json: () => E.right({ type: 'any', title: 'JSON' }),
206272
JsonRecord: () => E.right({ type: 'record', codomain: { type: 'any' } }),
207273
withFallback: (_, schema, fallback) =>
208274
E.right({ type: 'union', schemas: [schema, fallback] }),
209275
fromNullable: (_, schema) =>
210276
E.right({ type: 'union', schemas: [schema, { type: 'null' }] }),
211-
date: () => E.right({ type: 'string', format: 'date' }),
277+
date: () => E.right({ type: 'string', format: 'date', title: 'Date String' }),
212278
},
213279
'@api-ts/io-ts-http': {
214280
optional: (_, innerSchema) =>

packages/openapi-generator/test/openapi.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3086,6 +3086,7 @@ testCase('route with schema with default metadata', ROUTE_WITH_SCHEMA_WITH_DEFAU
30863086
test: {
30873087
type: 'number',
30883088
format: 'number',
3089+
title: 'Unix Time (milliseconds)',
30893090
description: 'Number of milliseconds since the Unix epoch',
30903091
}
30913092
},
@@ -3160,6 +3161,7 @@ testCase('route with schema with default metadata', ROUTE_WITH_OVERIDDEN_METADAT
31603161
test: {
31613162
type: 'number',
31623163
format: 'string',
3164+
title: 'Unix Time (milliseconds)',
31633165
description: 'Testing overridden metadata',
31643166
}
31653167
},

0 commit comments

Comments
 (0)