From f7b71adb5d228ee7adcb543edfa45c6338495dbc Mon Sep 17 00:00:00 2001 From: Patrick McLaughlin Date: Wed, 30 Aug 2023 14:23:41 -0400 Subject: [PATCH 1/2] chore: add missing `io-ts-types` known codecs --- packages/openapi-generator/src/knownImports.ts | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/openapi-generator/src/knownImports.ts b/packages/openapi-generator/src/knownImports.ts index 00dfbe33..2d67a167 100644 --- a/packages/openapi-generator/src/knownImports.ts +++ b/packages/openapi-generator/src/knownImports.ts @@ -96,11 +96,19 @@ export const KNOWN_IMPORTS: KnownImports = { brand: (_, arg) => E.right(arg), }, 'io-ts-types': { + BigIntFromString: () => E.right({ type: 'primitive', value: 'string' }), + BooleanFromNumber: () => E.right({ type: 'primitive', value: 'number' }), + BooleanFromString: () => E.right({ type: 'primitive', value: 'string' }), + DateFromISOString: () => E.right({ type: 'primitive', value: 'string' }), + DateFromNumber: () => E.right({ type: 'primitive', value: 'number' }), + DateFromUnixTime: () => E.right({ type: 'primitive', value: 'number' }), + IntFromString: () => E.right({ type: 'primitive', value: 'string' }), + JsonFromString: () => E.right({ type: 'primitive', value: 'string' }), nonEmptyArray: (_, innerSchema) => E.right({ type: 'array', items: innerSchema }), NonEmptyString: () => E.right({ type: 'primitive', value: 'string' }), - DateFromISOString: () => E.right({ type: 'primitive', value: 'string' }), - NumberFromString: () => E.right({ type: 'primitive', value: 'number' }), - BooleanFromString: () => E.right({ type: 'primitive', value: 'boolean' }), + NumberFromString: () => E.right({ type: 'primitive', value: 'string' }), + readonlyNonEmptyArray: (_, innerSchema) => + E.right({ type: 'array', items: innerSchema }), UUID: () => E.right({ type: 'primitive', value: 'string' }), }, '@api-ts/io-ts-http': { From e07064c93b7b75d956ddd90aa41824cbde014403 Mon Sep 17 00:00:00 2001 From: Patrick McLaughlin Date: Wed, 30 Aug 2023 14:25:09 -0400 Subject: [PATCH 2/2] chore: support `t.strict` and `t.exact` --- packages/openapi-generator/src/knownImports.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/packages/openapi-generator/src/knownImports.ts b/packages/openapi-generator/src/knownImports.ts index 2d67a167..94d18eb0 100644 --- a/packages/openapi-generator/src/knownImports.ts +++ b/packages/openapi-generator/src/knownImports.ts @@ -53,6 +53,20 @@ export const KNOWN_IMPORTS: KnownImports = { }, {}); return E.right({ type: 'object', properties: props, required: [] }); }, + strict: (_, schema) => E.right(schema), + exact: (_, schema) => { + if (schema.type !== 'object') { + return E.left('exactC parameter must be object'); + } + const props = Object.entries(schema.properties).reduce((acc, [key, prop]) => { + return { ...acc, [key]: prop }; + }, {}); + return E.right({ + type: 'object', + properties: props, + required: Object.keys(props), + }); + }, record: (_, _domain, codomain) => { if (!codomain) { return E.left('Codomain of record must be specified');