From 180fe57531264d8a8ca167bd538f93b61f92ebcf Mon Sep 17 00:00:00 2001 From: Jaco Greeff Date: Thu, 22 Oct 2020 10:04:29 +0200 Subject: [PATCH] Register external types before using (#2759) --- packages/typegen/src/generate/interfaceRegistry.ts | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/packages/typegen/src/generate/interfaceRegistry.ts b/packages/typegen/src/generate/interfaceRegistry.ts index 85cd47f57d..a2639af8af 100644 --- a/packages/typegen/src/generate/interfaceRegistry.ts +++ b/packages/typegen/src/generate/interfaceRegistry.ts @@ -28,12 +28,12 @@ export function generateInterfaceTypes (importDefinitions: { [importPath: string const imports = createImports(importDefinitions); const definitions = imports.definitions; - const items: string[] = []; + // first we create imports for our known classes from the API Object .keys(primitiveClasses) - .filter((name): boolean => !!name.indexOf('Generic')) + .filter((name) => !name.includes('Generic')) .forEach((primitiveName) => { setImports(definitions, imports, [primitiveName]); @@ -42,7 +42,14 @@ export function generateInterfaceTypes (importDefinitions: { [importPath: string const existingTypes: Record = {}; - Object.entries(definitions).forEach(([, { types }]) => { + // ensure we have everything registered since we will get the definition + // form the available types (so any unknown should show after this) + Object.values(definitions).forEach(({ types }) => { + registry.register(types as Record); + }); + + // create imports for everything that we have available + Object.values(definitions).forEach(({ types }) => { setImports(definitions, imports, Object.keys(types)); const uniqueTypes = Object.keys(types).filter((type) => !existingTypes[type]);