diff --git a/packages/openapi-generator/src/knownImports.ts b/packages/openapi-generator/src/knownImports.ts index 6ba3f7c6..cd1bae50 100644 --- a/packages/openapi-generator/src/knownImports.ts +++ b/packages/openapi-generator/src/knownImports.ts @@ -206,13 +206,14 @@ export const KNOWN_IMPORTS: KnownImports = { if (schema.type !== 'object') { return E.left('httpRoute parameter must be object'); } - const props = Object.entries(schema.properties).reduce((acc, [key, prop]) => { - const derefedE = deref(prop); + const props: Record = {}; + for (const [key, value] of Object.entries(schema.properties)) { + const derefedE = deref(value); if (E.isLeft(derefedE)) { - return acc; + return derefedE; } - return { ...acc, [key]: derefedE.right }; - }, {}); + props[key] = derefedE.right; + } return E.right({ type: 'object', properties: props, diff --git a/packages/openapi-generator/test/apiSpec.test.ts b/packages/openapi-generator/test/apiSpec.test.ts index e4e14f61..960e80a2 100644 --- a/packages/openapi-generator/test/apiSpec.test.ts +++ b/packages/openapi-generator/test/apiSpec.test.ts @@ -265,3 +265,28 @@ test('api spec comment parser', async () => { assert(commentParsed); }); + +const MISSING_REFERENCE = { + '/index.ts': ` + import * as t from 'io-ts'; + import * as h from '@api-ts/io-ts-http'; + + import { Foo } from 'foo'; + + export const test = h.apiSpec({ + 'api.test': { + get: h.httpRoute({ + path: '/test', + method: 'GET', + request: Foo, + response: { + 200: t.string, + }, + }) + } + });`, +}; + +testCase('missing reference', MISSING_REFERENCE, '/index.ts', {}, [ + "Cannot find 'Foo' from 'foo'", +]);