diff --git a/packages/renderers-js-umi/src/getRenderMapVisitor.ts b/packages/renderers-js-umi/src/getRenderMapVisitor.ts index 77b6d3f50..41e723ebf 100644 --- a/packages/renderers-js-umi/src/getRenderMapVisitor.ts +++ b/packages/renderers-js-umi/src/getRenderMapVisitor.ts @@ -2,6 +2,7 @@ import { logWarn } from '@codama/errors'; import { camelCase, CamelCaseString, + definedTypeNode, FieldDiscriminatorNode, getAllAccounts, getAllDefinedTypes, @@ -37,7 +38,7 @@ import { } from '@codama/visitors-core'; import { ContextMap } from './ContextMap'; -import { getTypeManifestVisitor as baseGetTypeManifestVisitor } from './getTypeManifestVisitor'; +import { getTypeManifestVisitor } from './getTypeManifestVisitor'; import { ImportMap } from './ImportMap'; import { renderInstructionDefaults } from './renderInstructionDefaults'; import { @@ -88,17 +89,14 @@ export function getRenderMapVisitor(options: GetRenderMapOptions = {}): Visitor< const customInstructionData = parseCustomDataOptions(options.customInstructionData ?? [], 'InstructionData'); const getImportFrom = getImportFromFactory(options.linkOverrides ?? {}, customAccountData, customInstructionData); - const getTypeManifestVisitor = (parentName?: { loose: string; strict: string }) => - baseGetTypeManifestVisitor({ - customAccountData, - customInstructionData, - getImportFrom, - linkables, - nonScalarEnums, - parentName, - stack, - }); - const typeManifestVisitor = getTypeManifestVisitor(); + const typeManifestVisitor = getTypeManifestVisitor({ + customAccountData, + customInstructionData, + getImportFrom, + linkables, + nonScalarEnums, + stack, + }); const resolvedInstructionInputVisitor = getResolvedInstructionInputsVisitor(); const byteSizeVisitor = getByteSizeVisitor(linkables, { stack }); @@ -386,12 +384,11 @@ export function getRenderMapVisitor(options: GetRenderMapOptions = {}): Visitor< } // Extra args. - const extraArgStruct = structTypeNodeFromInstructionArgumentNodes(node.extraArguments ?? []); - const visitor = getTypeManifestVisitor({ - loose: `${node.name}InstructionExtraArgs`, - strict: `${node.name}InstructionExtra`, + const extraArgStruct = definedTypeNode({ + name: `${node.name}InstructionExtra`, + type: structTypeNodeFromInstructionArgumentNodes(node.extraArguments ?? []), }); - const extraArgManifest = visit(extraArgStruct, visitor); + const extraArgManifest = visit(extraArgStruct, typeManifestVisitor); imports.mergeWith(extraArgManifest.looseImports); // Arg defaults. diff --git a/packages/renderers-js-umi/src/getTypeManifestVisitor.ts b/packages/renderers-js-umi/src/getTypeManifestVisitor.ts index 299647d00..5e5e2273d 100644 --- a/packages/renderers-js-umi/src/getTypeManifestVisitor.ts +++ b/packages/renderers-js-umi/src/getTypeManifestVisitor.ts @@ -63,13 +63,12 @@ export function getTypeManifestVisitor(input: { getImportFrom: GetImportFromFunction; linkables: LinkableDictionary; nonScalarEnums: CamelCaseString[]; - parentName?: { loose: string; strict: string }; stack?: NodeStack; }) { const { linkables, nonScalarEnums, customAccountData, customInstructionData, getImportFrom } = input; - let parentName = input.parentName ?? null; - let parentSize: NumberTypeNode | number | null = null; const stack = input.stack ?? new NodeStack(); + let parentName: { loose: string; strict: string } | null = null; + let parentSize: NumberTypeNode | number | null = null; return pipe( staticVisitor( diff --git a/packages/renderers-js/src/getRenderMapVisitor.ts b/packages/renderers-js/src/getRenderMapVisitor.ts index fd087b21c..5659e817c 100644 --- a/packages/renderers-js/src/getRenderMapVisitor.ts +++ b/packages/renderers-js/src/getRenderMapVisitor.ts @@ -4,6 +4,7 @@ import { logWarn } from '@codama/errors'; import { camelCase, CamelCaseString, + definedTypeNode, getAllAccounts, getAllDefinedTypes, getAllInstructionsWithSubs, @@ -47,7 +48,7 @@ import { getTypeDiscriminatedUnionHelpersFragment, getTypeWithCodecFragment, } from './fragments'; -import { getTypeManifestVisitor as baseGetTypeManifestVisitor, TypeManifestVisitor } from './getTypeManifestVisitor'; +import { getTypeManifestVisitor, TypeManifestVisitor } from './getTypeManifestVisitor'; import { ImportMap } from './ImportMap'; import { DEFAULT_NAME_TRANSFORMERS, getNameApi, NameApi, NameTransformers } from './nameTransformers'; import { @@ -105,18 +106,15 @@ export function getRenderMapVisitor(options: GetRenderMapOptions = {}) { const customInstructionData = parseCustomDataOptions(options.customInstructionData ?? [], 'InstructionData'); const getImportFrom = getImportFromFactory(options.linkOverrides ?? {}, customAccountData, customInstructionData); - const getTypeManifestVisitor = (parentName?: { loose: string; strict: string }) => - baseGetTypeManifestVisitor({ - customAccountData, - customInstructionData, - getImportFrom, - linkables, - nameApi, - nonScalarEnums, - parentName, - stack, - }); - const typeManifestVisitor = getTypeManifestVisitor(); + const typeManifestVisitor = getTypeManifestVisitor({ + customAccountData, + customInstructionData, + getImportFrom, + linkables, + nameApi, + nonScalarEnums, + stack, + }); const resolvedInstructionInputVisitor = getResolvedInstructionInputsVisitor(); const globalScope: GlobalFragmentScope = { @@ -233,11 +231,11 @@ export function getRenderMapVisitor(options: GetRenderMapOptions = {}) { ...globalScope, dataArgsManifest: visit(node, typeManifestVisitor), extraArgsManifest: visit( - structTypeNodeFromInstructionArgumentNodes(node.extraArguments ?? []), - getTypeManifestVisitor({ - loose: nameApi.dataArgsType(instructionExtraName), - strict: nameApi.dataType(instructionExtraName), + definedTypeNode({ + name: instructionExtraName, + type: structTypeNodeFromInstructionArgumentNodes(node.extraArguments ?? []), }), + typeManifestVisitor, ), instructionPath, renamedArgs: getRenamedArgsMap(node), diff --git a/packages/renderers-js/src/getTypeManifestVisitor.ts b/packages/renderers-js/src/getTypeManifestVisitor.ts index e5ed56ab9..a91c2bc3f 100644 --- a/packages/renderers-js/src/getTypeManifestVisitor.ts +++ b/packages/renderers-js/src/getTypeManifestVisitor.ts @@ -40,12 +40,11 @@ export function getTypeManifestVisitor(input: { linkables: LinkableDictionary; nameApi: NameApi; nonScalarEnums: CamelCaseString[]; - parentName?: { loose: string; strict: string }; stack?: NodeStack; }) { const { nameApi, linkables, nonScalarEnums, customAccountData, customInstructionData, getImportFrom } = input; const stack = input.stack ?? new NodeStack(); - let parentName = input.parentName ?? null; + let parentName: { loose: string; strict: string } | null = null; return pipe( staticVisitor(