Skip to content

Commit fe72845

Browse files
committed
Refactor JS type manifest visitors
1 parent ce4936c commit fe72845

File tree

4 files changed

+32
-39
lines changed

4 files changed

+32
-39
lines changed

packages/renderers-js-umi/src/getRenderMapVisitor.ts

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { logWarn } from '@codama/errors';
22
import {
33
camelCase,
44
CamelCaseString,
5+
definedTypeNode,
56
FieldDiscriminatorNode,
67
getAllAccounts,
78
getAllDefinedTypes,
@@ -37,7 +38,7 @@ import {
3738
} from '@codama/visitors-core';
3839

3940
import { ContextMap } from './ContextMap';
40-
import { getTypeManifestVisitor as baseGetTypeManifestVisitor } from './getTypeManifestVisitor';
41+
import { getTypeManifestVisitor } from './getTypeManifestVisitor';
4142
import { ImportMap } from './ImportMap';
4243
import { renderInstructionDefaults } from './renderInstructionDefaults';
4344
import {
@@ -88,17 +89,14 @@ export function getRenderMapVisitor(options: GetRenderMapOptions = {}): Visitor<
8889
const customInstructionData = parseCustomDataOptions(options.customInstructionData ?? [], 'InstructionData');
8990
const getImportFrom = getImportFromFactory(options.linkOverrides ?? {}, customAccountData, customInstructionData);
9091

91-
const getTypeManifestVisitor = (parentName?: { loose: string; strict: string }) =>
92-
baseGetTypeManifestVisitor({
93-
customAccountData,
94-
customInstructionData,
95-
getImportFrom,
96-
linkables,
97-
nonScalarEnums,
98-
parentName,
99-
stack,
100-
});
101-
const typeManifestVisitor = getTypeManifestVisitor();
92+
const typeManifestVisitor = getTypeManifestVisitor({
93+
customAccountData,
94+
customInstructionData,
95+
getImportFrom,
96+
linkables,
97+
nonScalarEnums,
98+
stack,
99+
});
102100
const resolvedInstructionInputVisitor = getResolvedInstructionInputsVisitor();
103101
const byteSizeVisitor = getByteSizeVisitor(linkables, { stack });
104102

@@ -386,12 +384,11 @@ export function getRenderMapVisitor(options: GetRenderMapOptions = {}): Visitor<
386384
}
387385

388386
// Extra args.
389-
const extraArgStruct = structTypeNodeFromInstructionArgumentNodes(node.extraArguments ?? []);
390-
const visitor = getTypeManifestVisitor({
391-
loose: `${node.name}InstructionExtraArgs`,
392-
strict: `${node.name}InstructionExtra`,
387+
const extraArgStruct = definedTypeNode({
388+
name: `${node.name}InstructionExtra`,
389+
type: structTypeNodeFromInstructionArgumentNodes(node.extraArguments ?? []),
393390
});
394-
const extraArgManifest = visit(extraArgStruct, visitor);
391+
const extraArgManifest = visit(extraArgStruct, typeManifestVisitor);
395392
imports.mergeWith(extraArgManifest.looseImports);
396393

397394
// Arg defaults.

packages/renderers-js-umi/src/getTypeManifestVisitor.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,13 +63,12 @@ export function getTypeManifestVisitor(input: {
6363
getImportFrom: GetImportFromFunction;
6464
linkables: LinkableDictionary;
6565
nonScalarEnums: CamelCaseString[];
66-
parentName?: { loose: string; strict: string };
6766
stack?: NodeStack;
6867
}) {
6968
const { linkables, nonScalarEnums, customAccountData, customInstructionData, getImportFrom } = input;
70-
let parentName = input.parentName ?? null;
71-
let parentSize: NumberTypeNode | number | null = null;
7269
const stack = input.stack ?? new NodeStack();
70+
let parentName: { loose: string; strict: string } | null = null;
71+
let parentSize: NumberTypeNode | number | null = null;
7372

7473
return pipe(
7574
staticVisitor(

packages/renderers-js/src/getRenderMapVisitor.ts

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { logWarn } from '@codama/errors';
44
import {
55
camelCase,
66
CamelCaseString,
7+
definedTypeNode,
78
getAllAccounts,
89
getAllDefinedTypes,
910
getAllInstructionsWithSubs,
@@ -47,7 +48,7 @@ import {
4748
getTypeDiscriminatedUnionHelpersFragment,
4849
getTypeWithCodecFragment,
4950
} from './fragments';
50-
import { getTypeManifestVisitor as baseGetTypeManifestVisitor, TypeManifestVisitor } from './getTypeManifestVisitor';
51+
import { getTypeManifestVisitor, TypeManifestVisitor } from './getTypeManifestVisitor';
5152
import { ImportMap } from './ImportMap';
5253
import { DEFAULT_NAME_TRANSFORMERS, getNameApi, NameApi, NameTransformers } from './nameTransformers';
5354
import {
@@ -105,18 +106,15 @@ export function getRenderMapVisitor(options: GetRenderMapOptions = {}) {
105106
const customInstructionData = parseCustomDataOptions(options.customInstructionData ?? [], 'InstructionData');
106107
const getImportFrom = getImportFromFactory(options.linkOverrides ?? {}, customAccountData, customInstructionData);
107108

108-
const getTypeManifestVisitor = (parentName?: { loose: string; strict: string }) =>
109-
baseGetTypeManifestVisitor({
110-
customAccountData,
111-
customInstructionData,
112-
getImportFrom,
113-
linkables,
114-
nameApi,
115-
nonScalarEnums,
116-
parentName,
117-
stack,
118-
});
119-
const typeManifestVisitor = getTypeManifestVisitor();
109+
const typeManifestVisitor = getTypeManifestVisitor({
110+
customAccountData,
111+
customInstructionData,
112+
getImportFrom,
113+
linkables,
114+
nameApi,
115+
nonScalarEnums,
116+
stack,
117+
});
120118
const resolvedInstructionInputVisitor = getResolvedInstructionInputsVisitor();
121119

122120
const globalScope: GlobalFragmentScope = {
@@ -233,11 +231,11 @@ export function getRenderMapVisitor(options: GetRenderMapOptions = {}) {
233231
...globalScope,
234232
dataArgsManifest: visit(node, typeManifestVisitor),
235233
extraArgsManifest: visit(
236-
structTypeNodeFromInstructionArgumentNodes(node.extraArguments ?? []),
237-
getTypeManifestVisitor({
238-
loose: nameApi.dataArgsType(instructionExtraName),
239-
strict: nameApi.dataType(instructionExtraName),
234+
definedTypeNode({
235+
name: instructionExtraName,
236+
type: structTypeNodeFromInstructionArgumentNodes(node.extraArguments ?? []),
240237
}),
238+
typeManifestVisitor,
241239
),
242240
instructionPath,
243241
renamedArgs: getRenamedArgsMap(node),

packages/renderers-js/src/getTypeManifestVisitor.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,11 @@ export function getTypeManifestVisitor(input: {
4040
linkables: LinkableDictionary;
4141
nameApi: NameApi;
4242
nonScalarEnums: CamelCaseString[];
43-
parentName?: { loose: string; strict: string };
4443
stack?: NodeStack;
4544
}) {
4645
const { nameApi, linkables, nonScalarEnums, customAccountData, customInstructionData, getImportFrom } = input;
4746
const stack = input.stack ?? new NodeStack();
48-
let parentName = input.parentName ?? null;
47+
let parentName: { loose: string; strict: string } | null = null;
4948

5049
return pipe(
5150
staticVisitor(

0 commit comments

Comments
 (0)