@codama/renderers-rust 1.0.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ImportMap.ts","../src/utils/codecs.ts","../src/utils/linkOverrides.ts","../src/utils/render.ts","../src/getTypeManifestVisitor.ts","../src/renderValueNodeVisitor.ts","../src/getRenderMapVisitor.ts","../src/renderVisitor.ts"],"names":["dirname","pathDirname","pascalCase","CodamaError","snakeCase","visit","isNode","pipe","extendVisitor","seedManifest","resolvedType","resolveNestedTypeNode","logWarn"],"mappings":"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","file":"index.node.mjs","sourcesContent":["import { TypeManifest } from './getTypeManifestVisitor';\n\nconst DEFAULT_MODULE_MAP: Record<string, string> = {\n generated: 'crate::generated',\n generatedAccounts: 'crate::generated::accounts',\n generatedErrors: 'crate::generated::errors',\n generatedInstructions: 'crate::generated::instructions',\n generatedTypes: 'crate::generated::types',\n hooked: 'crate::hooked',\n mplEssentials: 'mpl_toolbox',\n mplToolbox: 'mpl_toolbox',\n};\n\nexport class ImportMap {\n protected readonly _imports: Set<string> = new Set();\n\n protected readonly _aliases: Map<string, string> = new Map();\n\n get imports(): Set<string> {\n return this._imports;\n }\n\n get aliases(): Map<string, string> {\n return this._aliases;\n }\n\n add(imports: Set<string> | string[] | string): ImportMap {\n const newImports = typeof imports === 'string' ? [imports] : imports;\n newImports.forEach(i => this._imports.add(i));\n return this;\n }\n\n remove(imports: Set<string> | string[] | string): ImportMap {\n const importsToRemove = typeof imports === 'string' ? [imports] : imports;\n importsToRemove.forEach(i => this._imports.delete(i));\n return this;\n }\n\n mergeWith(...others: ImportMap[]): ImportMap {\n others.forEach(other => {\n this.add(other._imports);\n other._aliases.forEach((alias, importName) => this.addAlias(importName, alias));\n });\n return this;\n }\n\n mergeWithManifest(manifest: TypeManifest): ImportMap {\n return this.mergeWith(manifest.imports);\n }\n\n addAlias(importName: string, alias: string): ImportMap {\n this._aliases.set(importName, alias);\n return this;\n }\n\n isEmpty(): boolean {\n return this._imports.size === 0;\n }\n\n resolveDependencyMap(dependencies: Record<string, string>): ImportMap {\n const dependencyMap = { ...DEFAULT_MODULE_MAP, ...dependencies };\n const newImportMap = new ImportMap();\n const resolveDependency = (i: string): string => {\n const dependencyKey = Object.keys(dependencyMap).find(key => i.startsWith(`${key}::`));\n if (!dependencyKey) return i;\n const dependencyValue = dependencyMap[dependencyKey];\n return dependencyValue + i.slice(dependencyKey.length);\n };\n this._imports.forEach(i => newImportMap.add(resolveDependency(i)));\n this._aliases.forEach((alias, i) => newImportMap.addAlias(resolveDependency(i), alias));\n return newImportMap;\n }\n\n toString(dependencies: Record<string, string>): string {\n const resolvedMap = this.resolveDependencyMap(dependencies);\n const importStatements = [...resolvedMap.imports].map(i => {\n const alias = resolvedMap.aliases.get(i);\n if (alias) return `use ${i} as ${alias};`;\n return `use ${i};`;\n });\n return importStatements.join('\\n');\n }\n}\n","import { BytesValueNode } from '@codama/nodes';\nimport { getBase16Encoder, getBase58Encoder, getBase64Encoder, getUtf8Encoder } from '@solana/codecs-strings';\n\nexport function getBytesFromBytesValueNode(node: BytesValueNode): Uint8Array {\n switch (node.encoding) {\n case 'utf8':\n return getUtf8Encoder().encode(node.data) as Uint8Array;\n case 'base16':\n return getBase16Encoder().encode(node.data) as Uint8Array;\n case 'base58':\n return getBase58Encoder().encode(node.data) as Uint8Array;\n case 'base64':\n default:\n return getBase64Encoder().encode(node.data) as Uint8Array;\n }\n}\n","import { CODAMA_ERROR__UNEXPECTED_NODE_KIND, CodamaError } from '@codama/errors';\nimport {\n AccountLinkNode,\n DefinedTypeLinkNode,\n InstructionLinkNode,\n PdaLinkNode,\n ProgramLinkNode,\n ResolverValueNode,\n} from '@codama/nodes';\n\nexport type LinkOverrides = {\n accounts?: Record<string, string>;\n definedTypes?: Record<string, string>;\n instructions?: Record<string, string>;\n pdas?: Record<string, string>;\n programs?: Record<string, string>;\n resolvers?: Record<string, string>;\n};\n\ntype OverridableNodes =\n | AccountLinkNode\n | DefinedTypeLinkNode\n | InstructionLinkNode\n | PdaLinkNode\n | ProgramLinkNode\n | ResolverValueNode;\n\nexport type GetImportFromFunction = (node: OverridableNodes, fallback?: string) => string;\n\nexport function getImportFromFactory(overrides: LinkOverrides): GetImportFromFunction {\n const linkOverrides = {\n accounts: overrides.accounts ?? {},\n definedTypes: overrides.definedTypes ?? {},\n instructions: overrides.instructions ?? {},\n pdas: overrides.pdas ?? {},\n programs: overrides.programs ?? {},\n resolvers: overrides.resolvers ?? {},\n };\n\n return (node: OverridableNodes) => {\n const kind = node.kind;\n switch (kind) {\n case 'accountLinkNode':\n return linkOverrides.accounts[node.name] ?? 'generatedAccounts';\n case 'definedTypeLinkNode':\n return linkOverrides.definedTypes[node.name] ?? 'generatedTypes';\n case 'instructionLinkNode':\n return linkOverrides.instructions[node.name] ?? 'generatedInstructions';\n case 'pdaLinkNode':\n return linkOverrides.pdas[node.name] ?? 'generatedAccounts';\n case 'programLinkNode':\n return linkOverrides.programs[node.name] ?? 'generatedPrograms';\n case 'resolverValueNode':\n return linkOverrides.resolvers[node.name] ?? 'hooked';\n default:\n throw new CodamaError(CODAMA_ERROR__UNEXPECTED_NODE_KIND, {\n expectedKinds: [\n 'AccountLinkNode',\n 'DefinedTypeLinkNode',\n 'InstructionLinkNode',\n 'PdaLinkNode',\n 'ProgramLinkNode',\n 'resolverValueNode',\n ],\n kind: kind satisfies never,\n node,\n });\n }\n };\n}\n","import { dirname as pathDirname, join } from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nimport { camelCase, kebabCase, pascalCase, snakeCase, titleCase } from '@codama/nodes';\nimport nunjucks, { ConfigureOptions as NunJucksOptions } from 'nunjucks';\n\nexport function rustDocblock(docs: string[]): string {\n if (docs.length <= 0) return '';\n const lines = docs.map(doc => `/// ${doc}`);\n return `${lines.join('\\n')}\\n`;\n}\n\nexport const render = (template: string, context?: object, options?: NunJucksOptions): string => {\n // @ts-expect-error import.meta will be used in the right environment.\n const dirname = __ESM__ ? pathDirname(fileURLToPath(import.meta.url)) : __dirname;\n const templates = __TEST__ ? join(dirname, '..', '..', 'public', 'templates') : join(dirname, 'templates'); // Path to templates from bundled output file.\n const env = nunjucks.configure(templates, { autoescape: false, trimBlocks: true, ...options });\n env.addFilter('pascalCase', pascalCase);\n env.addFilter('camelCase', camelCase);\n env.addFilter('snakeCase', snakeCase);\n env.addFilter('kebabCase', kebabCase);\n env.addFilter('titleCase', titleCase);\n env.addFilter('rustDocblock', rustDocblock);\n return env.render(template, context);\n};\n","import { CODAMA_ERROR__RENDERERS__UNSUPPORTED_NODE, CodamaError } from '@codama/errors';\nimport {\n arrayTypeNode,\n CountNode,\n fixedCountNode,\n isNode,\n isScalarEnum,\n NumberTypeNode,\n numberTypeNode,\n pascalCase,\n prefixedCountNode,\n REGISTERED_TYPE_NODE_KINDS,\n remainderCountNode,\n resolveNestedTypeNode,\n snakeCase,\n} from '@codama/nodes';\nimport { extendVisitor, mergeVisitor, pipe, visit } from '@codama/visitors-core';\n\nimport { ImportMap } from './ImportMap';\nimport { GetImportFromFunction, rustDocblock } from './utils';\n\nexport type TypeManifest = {\n imports: ImportMap;\n nestedStructs: string[];\n type: string;\n};\n\nexport function getTypeManifestVisitor(options: {\n getImportFrom: GetImportFromFunction;\n nestedStruct?: boolean;\n parentName?: string | null;\n}) {\n const { getImportFrom } = options;\n let parentName: string | null = options.parentName ?? null;\n let nestedStruct: boolean = options.nestedStruct ?? false;\n let inlineStruct: boolean = false;\n let parentSize: NumberTypeNode | number | null = null;\n\n return pipe(\n mergeVisitor(\n (): TypeManifest => ({ imports: new ImportMap(), nestedStructs: [], type: '' }),\n (_, values) => ({\n ...mergeManifests(values),\n type: values.map(v => v.type).join('\\n'),\n }),\n [...REGISTERED_TYPE_NODE_KINDS, 'definedTypeLinkNode', 'definedTypeNode', 'accountNode'],\n ),\n v =>\n extendVisitor(v, {\n visitAccount(account, { self }) {\n parentName = pascalCase(account.name);\n const manifest = visit(account.data, self);\n manifest.imports.add(['borsh::BorshSerialize', 'borsh::BorshDeserialize']);\n parentName = null;\n return {\n ...manifest,\n type:\n '#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)]\\n' +\n '#[cfg_attr(feature = \"serde\", derive(serde::Serialize, serde::Deserialize))]\\n' +\n `${manifest.type}`,\n };\n },\n\n visitArrayType(arrayType, { self }) {\n const childManifest = visit(arrayType.item, self);\n\n if (isNode(arrayType.count, 'fixedCountNode')) {\n return {\n ...childManifest,\n type: `[${childManifest.type}; ${arrayType.count.value}]`,\n };\n }\n\n if (isNode(arrayType.count, 'remainderCountNode')) {\n childManifest.imports.add('kaigan::types::RemainderVec');\n return {\n ...childManifest,\n type: `RemainderVec<${childManifest.type}>`,\n };\n }\n\n const prefix = resolveNestedTypeNode(arrayType.count.prefix);\n if (prefix.endian === 'le') {\n switch (prefix.format) {\n case 'u32':\n return {\n ...childManifest,\n type: `Vec<${childManifest.type}>`,\n };\n case 'u8':\n case 'u16':\n case 'u64': {\n const prefixFormat = prefix.format.toUpperCase();\n childManifest.imports.add(`kaigan::types::${prefixFormat}PrefixVec`);\n return {\n ...childManifest,\n type: `${prefixFormat}PrefixVec<${childManifest.type}>`,\n };\n }\n case 'shortU16': {\n childManifest.imports.add('solana_program::short_vec::ShortVec');\n return {\n ...childManifest,\n type: `ShortVec<${childManifest.type}>`,\n };\n }\n default:\n throw new Error(`Array prefix not supported: ${prefix.format}`);\n }\n }\n\n // TODO: Add to the Rust validator.\n throw new Error('Array size not supported by Borsh');\n },\n\n visitBooleanType(booleanType) {\n const resolvedSize = resolveNestedTypeNode(booleanType.size);\n if (resolvedSize.format === 'u8' && resolvedSize.endian === 'le') {\n return {\n imports: new ImportMap(),\n nestedStructs: [],\n type: 'bool',\n };\n }\n\n // TODO: Add to the Rust validator.\n throw new Error('Bool size not supported by Borsh');\n },\n\n visitBytesType(_bytesType, { self }) {\n let arraySize: CountNode = remainderCountNode();\n if (typeof parentSize === 'number') {\n arraySize = fixedCountNode(parentSize);\n } else if (parentSize && typeof parentSize === 'object') {\n arraySize = prefixedCountNode(parentSize);\n }\n const arrayType = arrayTypeNode(numberTypeNode('u8'), arraySize);\n return visit(arrayType, self);\n },\n\n visitDefinedType(definedType, { self }) {\n parentName = pascalCase(definedType.name);\n const manifest = visit(definedType.type, self);\n parentName = null;\n const traits = ['BorshSerialize', 'BorshDeserialize', 'Clone', 'Debug', 'Eq', 'PartialEq'];\n\n if (isNode(definedType.type, 'enumTypeNode') && isScalarEnum(definedType.type)) {\n traits.push('Copy', 'PartialOrd', 'Hash', 'FromPrimitive');\n manifest.imports.add(['num_derive::FromPrimitive']);\n }\n\n const nestedStructs = manifest.nestedStructs.map(\n struct =>\n `#[derive(${traits.join(', ')})]\\n` +\n '#[cfg_attr(feature = \"serde\", derive(serde::Serialize, serde::Deserialize))]\\n' +\n `${struct}`,\n );\n\n if (!isNode(definedType.type, ['enumTypeNode', 'structTypeNode'])) {\n if (nestedStructs.length > 0) {\n manifest.imports.add(['borsh::BorshSerialize', 'borsh::BorshDeserialize']);\n }\n return {\n ...manifest,\n nestedStructs,\n type: `pub type ${pascalCase(definedType.name)} = ${manifest.type};`,\n };\n }\n\n manifest.imports.add(['borsh::BorshSerialize', 'borsh::BorshDeserialize']);\n return {\n ...manifest,\n nestedStructs,\n type:\n `#[derive(${traits.join(', ')})]\\n` +\n '#[cfg_attr(feature = \"serde\", derive(serde::Serialize, serde::Deserialize))]\\n' +\n `${manifest.type}`,\n };\n },\n\n visitDefinedTypeLink(node) {\n const pascalCaseDefinedType = pascalCase(node.name);\n const importFrom = getImportFrom(node);\n return {\n imports: new ImportMap().add(`${importFrom}::${pascalCaseDefinedType}`),\n nestedStructs: [],\n type: pascalCaseDefinedType,\n };\n },\n\n visitEnumEmptyVariantType(enumEmptyVariantType) {\n const name = pascalCase(enumEmptyVariantType.name);\n return {\n imports: new ImportMap(),\n nestedStructs: [],\n type: `${name},`,\n };\n },\n\n visitEnumStructVariantType(enumStructVariantType, { self }) {\n const name = pascalCase(enumStructVariantType.name);\n const originalParentName = parentName;\n\n if (!originalParentName) {\n throw new Error('Enum struct variant type must have a parent name.');\n }\n\n inlineStruct = true;\n parentName = pascalCase(originalParentName) + name;\n const typeManifest = visit(enumStructVariantType.struct, self);\n inlineStruct = false;\n parentName = originalParentName;\n\n return {\n ...typeManifest,\n type: `${name} ${typeManifest.type},`,\n };\n },\n\n visitEnumTupleVariantType(enumTupleVariantType, { self }) {\n const name = pascalCase(enumTupleVariantType.name);\n const originalParentName = parentName;\n\n if (!originalParentName) {\n throw new Error('Enum struct variant type must have a parent name.');\n }\n\n parentName = pascalCase(originalParentName) + name;\n const childManifest = visit(enumTupleVariantType.tuple, self);\n parentName = originalParentName;\n\n let derive = '';\n if (childManifest.type === '(Pubkey)') {\n derive =\n '#[cfg_attr(feature = \"serde\", serde(with = \"serde_with::As::<serde_with::DisplayFromStr>\"))]\\n';\n } else if (childManifest.type === '(Vec<Pubkey>)') {\n derive =\n '#[cfg_attr(feature = \"serde\", serde(with = \"serde_with::As::<Vec<serde_with::DisplayFromStr>>\"))]\\n';\n }\n\n return {\n ...childManifest,\n type: `${derive}${name}${childManifest.type},`,\n };\n },\n\n visitEnumType(enumType, { self }) {\n const originalParentName = parentName;\n if (!originalParentName) {\n // TODO: Add to the Rust validator.\n throw new Error('Enum type must have a parent name.');\n }\n\n const variants = enumType.variants.map(variant => visit(variant, self));\n const variantNames = variants.map(variant => variant.type).join('\\n');\n const mergedManifest = mergeManifests(variants);\n\n return {\n ...mergedManifest,\n type: `pub enum ${pascalCase(originalParentName)} {\\n${variantNames}\\n}`,\n };\n },\n\n visitFixedSizeType(fixedSizeType, { self }) {\n parentSize = fixedSizeType.size;\n const manifest = visit(fixedSizeType.type, self);\n parentSize = null;\n return manifest;\n },\n\n visitMapType(mapType, { self }) {\n const key = visit(mapType.key, self);\n const value = visit(mapType.value, self);\n const mergedManifest = mergeManifests([key, value]);\n mergedManifest.imports.add('std::collections::HashMap');\n return {\n ...mergedManifest,\n type: `HashMap<${key.type}, ${value.type}>`,\n };\n },\n\n visitNumberType(numberType) {\n if (numberType.endian !== 'le') {\n // TODO: Add to the Rust validator.\n throw new Error('Number endianness not supported by Borsh');\n }\n\n if (numberType.format === 'shortU16') {\n return {\n imports: new ImportMap().add('solana_program::short_vec::ShortU16'),\n nestedStructs: [],\n type: 'ShortU16',\n };\n }\n\n return {\n imports: new ImportMap(),\n nestedStructs: [],\n type: numberType.format,\n };\n },\n\n visitOptionType(optionType, { self }) {\n const childManifest = visit(optionType.item, self);\n\n const optionPrefix = resolveNestedTypeNode(optionType.prefix);\n if (optionPrefix.format === 'u8' && optionPrefix.endian === 'le') {\n return {\n ...childManifest,\n type: `Option<${childManifest.type}>`,\n };\n }\n\n // TODO: Add to the Rust validator.\n throw new Error('Option size not supported by Borsh');\n },\n\n visitPublicKeyType() {\n return {\n imports: new ImportMap().add('solana_program::pubkey::Pubkey'),\n nestedStructs: [],\n type: 'Pubkey',\n };\n },\n\n visitRemainderOptionType(node) {\n throw new CodamaError(CODAMA_ERROR__RENDERERS__UNSUPPORTED_NODE, { kind: node.kind, node });\n },\n\n visitSetType(setType, { self }) {\n const childManifest = visit(setType.item, self);\n childManifest.imports.add('std::collections::HashSet');\n return {\n ...childManifest,\n type: `HashSet<${childManifest.type}>`,\n };\n },\n\n visitSizePrefixType(sizePrefixType, { self }) {\n parentSize = resolveNestedTypeNode(sizePrefixType.prefix);\n const manifest = visit(sizePrefixType.type, self);\n parentSize = null;\n return manifest;\n },\n\n visitStringType() {\n if (!parentSize) {\n return {\n imports: new ImportMap().add(`kaigan::types::RemainderStr`),\n nestedStructs: [],\n type: `RemainderStr`,\n };\n }\n\n if (typeof parentSize === 'number') {\n return {\n imports: new ImportMap(),\n nestedStructs: [],\n type: `[u8; ${parentSize}]`,\n };\n }\n\n if (isNode(parentSize, 'numberTypeNode') && parentSize.endian === 'le') {\n switch (parentSize.format) {\n case 'u32':\n return {\n imports: new ImportMap(),\n nestedStructs: [],\n type: 'String',\n };\n case 'u8':\n case 'u16':\n case 'u64': {\n const prefix = parentSize.format.toUpperCase();\n return {\n imports: new ImportMap().add(`kaigan::types::${prefix}PrefixString`),\n nestedStructs: [],\n type: `${prefix}PrefixString`,\n };\n }\n default:\n throw new Error(`'String size not supported: ${parentSize.format}`);\n }\n }\n\n // TODO: Add to the Rust validator.\n throw new Error('String size not supported by Borsh');\n },\n\n visitStructFieldType(structFieldType, { self }) {\n const originalParentName = parentName;\n const originalInlineStruct = inlineStruct;\n const originalNestedStruct = nestedStruct;\n\n if (!originalParentName) {\n throw new Error('Struct field type must have a parent name.');\n }\n\n parentName = pascalCase(originalParentName) + pascalCase(structFieldType.name);\n nestedStruct = true;\n inlineStruct = false;\n\n const fieldManifest = visit(structFieldType.type, self);\n\n parentName = originalParentName;\n inlineStruct = originalInlineStruct;\n nestedStruct = originalNestedStruct;\n\n const fieldName = snakeCase(structFieldType.name);\n const docblock = rustDocblock(structFieldType.docs);\n const resolvedNestedType = resolveNestedTypeNode(structFieldType.type);\n\n let derive = '';\n if (fieldManifest.type === 'Pubkey') {\n derive =\n '#[cfg_attr(feature = \"serde\", serde(with = \"serde_with::As::<serde_with::DisplayFromStr>\"))]\\n';\n } else if (fieldManifest.type === 'Vec<Pubkey>') {\n derive =\n '#[cfg_attr(feature = \"serde\", serde(with = \"serde_with::As::<Vec<serde_with::DisplayFromStr>>\"))]\\n';\n } else if (\n (isNode(resolvedNestedType, 'arrayTypeNode') &&\n isNode(resolvedNestedType.count, 'fixedCountNode') &&\n resolvedNestedType.count.value > 32) ||\n (isNode(resolvedNestedType, ['bytesTypeNode', 'stringTypeNode']) &&\n isNode(structFieldType.type, 'fixedSizeTypeNode') &&\n structFieldType.type.size > 32)\n ) {\n derive =\n '#[cfg_attr(feature = \"serde\", serde(with = \"serde_with::As::<serde_with::Bytes>\"))]\\n';\n }\n\n return {\n ...fieldManifest,\n type: inlineStruct\n ? `${docblock}${derive}${fieldName}: ${fieldManifest.type},`\n : `${docblock}${derive}pub ${fieldName}: ${fieldManifest.type},`,\n };\n },\n\n visitStructType(structType, { self }) {\n const originalParentName = parentName;\n\n if (!originalParentName) {\n // TODO: Add to the Rust validator.\n throw new Error('Struct type must have a parent name.');\n }\n\n const fields = structType.fields.map(field => visit(field, self));\n const fieldTypes = fields.map(field => field.type).join('\\n');\n const mergedManifest = mergeManifests(fields);\n\n if (nestedStruct) {\n return {\n ...mergedManifest,\n nestedStructs: [\n ...mergedManifest.nestedStructs,\n `pub struct ${pascalCase(originalParentName)} {\\n${fieldTypes}\\n}`,\n ],\n type: pascalCase(originalParentName),\n };\n }\n\n if (inlineStruct) {\n return { ...mergedManifest, type: `{\\n${fieldTypes}\\n}` };\n }\n\n return {\n ...mergedManifest,\n type: `pub struct ${pascalCase(originalParentName)} {\\n${fieldTypes}\\n}`,\n };\n },\n\n visitTupleType(tupleType, { self }) {\n const items = tupleType.items.map(item => visit(item, self));\n const mergedManifest = mergeManifests(items);\n\n return {\n ...mergedManifest,\n type: `(${items.map(item => item.type).join(', ')})`,\n };\n },\n\n visitZeroableOptionType(node) {\n throw new CodamaError(CODAMA_ERROR__RENDERERS__UNSUPPORTED_NODE, { kind: node.kind, node });\n },\n }),\n );\n}\n\nfunction mergeManifests(manifests: TypeManifest[]): Pick<TypeManifest, 'imports' | 'nestedStructs'> {\n return {\n imports: new ImportMap().mergeWith(...manifests.map(td => td.imports)),\n nestedStructs: manifests.flatMap(m => m.nestedStructs),\n };\n}\n","import {\n arrayValueNode,\n bytesValueNode,\n isNode,\n numberValueNode,\n pascalCase,\n RegisteredValueNode,\n ValueNode,\n} from '@codama/nodes';\nimport { visit, Visitor } from '@codama/visitors-core';\n\nimport { ImportMap } from './ImportMap';\nimport { getBytesFromBytesValueNode, GetImportFromFunction } from './utils';\n\nexport function renderValueNode(\n value: ValueNode,\n getImportFrom: GetImportFromFunction,\n useStr: boolean = false,\n): {\n imports: ImportMap;\n render: string;\n} {\n return visit(value, renderValueNodeVisitor(getImportFrom, useStr));\n}\n\nexport function renderValueNodeVisitor(\n getImportFrom: GetImportFromFunction,\n useStr: boolean = false,\n): Visitor<\n {\n imports: ImportMap;\n render: string;\n },\n RegisteredValueNode['kind']\n> {\n return {\n visitArrayValue(node) {\n const list = node.items.map(v => visit(v, this));\n return {\n imports: new ImportMap().mergeWith(...list.map(c => c.imports)),\n render: `[${list.map(c => c.render).join(', ')}]`,\n };\n },\n visitBooleanValue(node) {\n return {\n imports: new ImportMap(),\n render: JSON.stringify(node.boolean),\n };\n },\n visitBytesValue(node) {\n const bytes = getBytesFromBytesValueNode(node);\n const numbers = Array.from(bytes).map(numberValueNode);\n return visit(arrayValueNode(numbers), this);\n },\n visitConstantValue(node) {\n if (isNode(node.value, 'bytesValueNode')) {\n return visit(node.value, this);\n }\n if (isNode(node.type, 'stringTypeNode') && isNode(node.value, 'stringValueNode')) {\n return visit(bytesValueNode(node.type.encoding, node.value.string), this);\n }\n if (isNode(node.type, 'numberTypeNode') && isNode(node.value, 'numberValueNode')) {\n const numberManifest = visit(node.value, this);\n const { format, endian } = node.type;\n const byteFunction = endian === 'le' ? 'to_le_bytes' : 'to_be_bytes';\n numberManifest.render = `${numberManifest.render}${format}.${byteFunction}()`;\n return numberManifest;\n }\n throw new Error('Unsupported constant value type.');\n },\n visitEnumValue(node) {\n const imports = new ImportMap();\n const enumName = pascalCase(node.enum.name);\n const variantName = pascalCase(node.variant);\n const importFrom = getImportFrom(node.enum);\n imports.add(`${importFrom}::${enumName}`);\n if (!node.value) {\n return { imports, render: `${enumName}::${variantName}` };\n }\n const enumValue = visit(node.value, this);\n const fields = enumValue.render;\n return {\n imports: imports.mergeWith(enumValue.imports),\n render: `${enumName}::${variantName} ${fields}`,\n };\n },\n visitMapEntryValue(node) {\n const mapKey = visit(node.key, this);\n const mapValue = visit(node.value, this);\n return {\n imports: mapKey.imports.mergeWith(mapValue.imports),\n render: `[${mapKey.render}, ${mapValue.render}]`,\n };\n },\n visitMapValue(node) {\n const map = node.entries.map(entry => visit(entry, this));\n const imports = new ImportMap().add('std::collection::HashMap');\n return {\n imports: imports.mergeWith(...map.map(c => c.imports)),\n render: `HashMap::from([${map.map(c => c.render).join(', ')}])`,\n };\n },\n visitNoneValue() {\n return {\n imports: new ImportMap(),\n render: 'None',\n };\n },\n visitNumberValue(node) {\n return {\n imports: new ImportMap(),\n render: node.number.toString(),\n };\n },\n visitPublicKeyValue(node) {\n return {\n imports: new ImportMap().add('solana_program::pubkey'),\n render: `pubkey!(\"${node.publicKey}\")`,\n };\n },\n visitSetValue(node) {\n const set = node.items.map(v => visit(v, this));\n const imports = new ImportMap().add('std::collection::HashSet');\n return {\n imports: imports.mergeWith(...set.map(c => c.imports)),\n render: `HashSet::from([${set.map(c => c.render).join(', ')}])`,\n };\n },\n visitSomeValue(node) {\n const child = visit(node.value, this);\n return {\n ...child,\n render: `Some(${child.render})`,\n };\n },\n visitStringValue(node) {\n return {\n imports: new ImportMap(),\n render: useStr ? `${JSON.stringify(node.string)}` : `String::from(${JSON.stringify(node.string)})`,\n };\n },\n visitStructFieldValue(node) {\n const structValue = visit(node.value, this);\n return {\n imports: structValue.imports,\n render: `${node.name}: ${structValue.render}`,\n };\n },\n visitStructValue(node) {\n const struct = node.fields.map(field => visit(field, this));\n return {\n imports: new ImportMap().mergeWith(...struct.map(c => c.imports)),\n render: `{ ${struct.map(c => c.render).join(', ')} }`,\n };\n },\n visitTupleValue(node) {\n const tuple = node.items.map(v => visit(v, this));\n return {\n imports: new ImportMap().mergeWith(...tuple.map(c => c.imports)),\n render: `(${tuple.map(c => c.render).join(', ')})`,\n };\n },\n };\n}\n","import { logWarn } from '@codama/errors';\nimport {\n getAllAccounts,\n getAllDefinedTypes,\n getAllInstructionsWithSubs,\n getAllPrograms,\n InstructionNode,\n isNode,\n isNodeFilter,\n pascalCase,\n ProgramNode,\n resolveNestedTypeNode,\n snakeCase,\n structTypeNodeFromInstructionArgumentNodes,\n VALUE_NODES,\n} from '@codama/nodes';\nimport { RenderMap } from '@codama/renderers-core';\nimport {\n extendVisitor,\n LinkableDictionary,\n pipe,\n recordLinkablesVisitor,\n staticVisitor,\n visit,\n} from '@codama/visitors-core';\n\nimport { getTypeManifestVisitor } from './getTypeManifestVisitor';\nimport { ImportMap } from './ImportMap';\nimport { renderValueNode } from './renderValueNodeVisitor';\nimport { getImportFromFactory, LinkOverrides, render } from './utils';\n\nexport type GetRenderMapOptions = {\n dependencyMap?: Record<string, string>;\n linkOverrides?: LinkOverrides;\n renderParentInstructions?: boolean;\n};\n\nexport function getRenderMapVisitor(options: GetRenderMapOptions = {}) {\n const linkables = new LinkableDictionary();\n let program: ProgramNode | null = null;\n\n const renderParentInstructions = options.renderParentInstructions ?? false;\n const dependencyMap = options.dependencyMap ?? {};\n const getImportFrom = getImportFromFactory(options.linkOverrides ?? {});\n const typeManifestVisitor = getTypeManifestVisitor({ getImportFrom });\n\n return pipe(\n staticVisitor(\n () => new RenderMap(),\n ['rootNode', 'programNode', 'instructionNode', 'accountNode', 'definedTypeNode'],\n ),\n v =>\n extendVisitor(v, {\n visitAccount(node) {\n const typeManifest = visit(node, typeManifestVisitor);\n\n // Seeds.\n const seedsImports = new ImportMap();\n const pda = node.pda ? linkables.get(node.pda) : undefined;\n const pdaSeeds = pda?.seeds ?? [];\n const seeds = pdaSeeds.map(seed => {\n if (isNode(seed, 'variablePdaSeedNode')) {\n const seedManifest = visit(seed.type, typeManifestVisitor);\n seedsImports.mergeWith(seedManifest.imports);\n const resolvedType = resolveNestedTypeNode(seed.type);\n return { ...seed, resolvedType, typeManifest: seedManifest };\n }\n if (isNode(seed.value, 'programIdValueNode')) {\n return seed;\n }\n const seedManifest = visit(seed.type, typeManifestVisitor);\n const valueManifest = renderValueNode(seed.value, getImportFrom, true);\n seedsImports.mergeWith(valueManifest.imports);\n const resolvedType = resolveNestedTypeNode(seed.type);\n return { ...seed, resolvedType, typeManifest: seedManifest, valueManifest };\n });\n const hasVariableSeeds = pdaSeeds.filter(isNodeFilter('variablePdaSeedNode')).length > 0;\n const constantSeeds = seeds\n .filter(isNodeFilter('constantPdaSeedNode'))\n .filter(seed => !isNode(seed.value, 'programIdValueNode'));\n\n const { imports } = typeManifest;\n\n if (hasVariableSeeds) {\n imports.mergeWith(seedsImports);\n }\n\n return new RenderMap().add(\n `accounts/${snakeCase(node.name)}.rs`,\n render('accountsPage.njk', {\n account: node,\n constantSeeds,\n hasVariableSeeds,\n imports: imports\n .remove(`generatedAccounts::${pascalCase(node.name)}`)\n .toString(dependencyMap),\n pda,\n program,\n seeds,\n typeManifest,\n }),\n );\n },\n\n visitDefinedType(node) {\n const typeManifest = visit(node, typeManifestVisitor);\n const imports = new ImportMap().mergeWithManifest(typeManifest);\n\n return new RenderMap().add(\n `types/${snakeCase(node.name)}.rs`,\n render('definedTypesPage.njk', {\n definedType: node,\n imports: imports.remove(`generatedTypes::${pascalCase(node.name)}`).toString(dependencyMap),\n typeManifest,\n }),\n );\n },\n\n visitInstruction(node) {\n // Imports.\n const imports = new ImportMap();\n imports.add(['borsh::BorshDeserialize', 'borsh::BorshSerialize']);\n\n // canMergeAccountsAndArgs\n const accountsAndArgsConflicts = getConflictsForInstructionAccountsAndArgs(node);\n if (accountsAndArgsConflicts.length > 0) {\n logWarn(\n `[Rust] Accounts and args of instruction [${node.name}] have the following ` +\n `conflicting attributes [${accountsAndArgsConflicts.join(', ')}]. ` +\n `Thus, the conflicting arguments will be suffixed with \"_arg\". ` +\n 'You may want to rename the conflicting attributes.',\n );\n }\n\n // Instruction args.\n const instructionArgs: {\n default: boolean;\n innerOptionType: string | null;\n name: string;\n optional: boolean;\n type: string;\n value: string | null;\n }[] = [];\n let hasArgs = false;\n let hasOptional = false;\n\n node.arguments.forEach(argument => {\n const argumentVisitor = getTypeManifestVisitor({\n getImportFrom,\n nestedStruct: true,\n parentName: `${pascalCase(node.name)}InstructionData`,\n });\n const manifest = visit(argument.type, argumentVisitor);\n imports.mergeWith(manifest.imports);\n const innerOptionType = isNode(argument.type, 'optionTypeNode')\n ? manifest.type.slice('Option<'.length, -1)\n : null;\n\n const hasDefaultValue = !!argument.defaultValue && isNode(argument.defaultValue, VALUE_NODES);\n let renderValue: string | null = null;\n if (hasDefaultValue) {\n const { imports: argImports, render: value } = renderValueNode(\n argument.defaultValue,\n getImportFrom,\n );\n imports.mergeWith(argImports);\n renderValue = value;\n }\n\n hasArgs = hasArgs || argument.defaultValueStrategy !== 'omitted';\n hasOptional = hasOptional || (hasDefaultValue && argument.defaultValueStrategy !== 'omitted');\n\n const name = accountsAndArgsConflicts.includes(argument.name)\n ? `${argument.name}_arg`\n : argument.name;\n\n instructionArgs.push({\n default: hasDefaultValue && argument.defaultValueStrategy === 'omitted',\n innerOptionType,\n name,\n optional: hasDefaultValue && argument.defaultValueStrategy !== 'omitted',\n type: manifest.type,\n value: renderValue,\n });\n });\n\n const struct = structTypeNodeFromInstructionArgumentNodes(node.arguments);\n const structVisitor = getTypeManifestVisitor({\n getImportFrom,\n parentName: `${pascalCase(node.name)}InstructionData`,\n });\n const typeManifest = visit(struct, structVisitor);\n\n return new RenderMap().add(\n `instructions/${snakeCase(node.name)}.rs`,\n render('instructionsPage.njk', {\n hasArgs,\n hasOptional,\n imports: imports\n .remove(`generatedInstructions::${pascalCase(node.name)}`)\n .toString(dependencyMap),\n instruction: node,\n instructionArgs,\n program,\n typeManifest,\n }),\n );\n },\n\n visitProgram(node, { self }) {\n program = node;\n const renderMap = new RenderMap()\n .mergeWith(...node.accounts.map(account => visit(account, self)))\n .mergeWith(...node.definedTypes.map(type => visit(type, self)))\n .mergeWith(\n ...getAllInstructionsWithSubs(node, {\n leavesOnly: !renderParentInstructions,\n }).map(ix => visit(ix, self)),\n );\n\n // Errors.\n if (node.errors.length > 0) {\n renderMap.add(\n `errors/${snakeCase(node.name)}.rs`,\n render('errorsPage.njk', {\n errors: node.errors,\n imports: new ImportMap().toString(dependencyMap),\n program: node,\n }),\n );\n }\n\n program = null;\n return renderMap;\n },\n\n visitRoot(node, { self }) {\n const programsToExport = getAllPrograms(node);\n const accountsToExport = getAllAccounts(node);\n const instructionsToExport = getAllInstructionsWithSubs(node, {\n leavesOnly: !renderParentInstructions,\n });\n const definedTypesToExport = getAllDefinedTypes(node);\n const hasAnythingToExport =\n programsToExport.length > 0 ||\n accountsToExport.length > 0 ||\n instructionsToExport.length > 0 ||\n definedTypesToExport.length > 0;\n\n const ctx = {\n accountsToExport,\n definedTypesToExport,\n hasAnythingToExport,\n instructionsToExport,\n programsToExport,\n root: node,\n };\n\n const map = new RenderMap();\n if (programsToExport.length > 0) {\n map.add('programs.rs', render('programsMod.njk', ctx)).add(\n 'errors/mod.rs',\n render('errorsMod.njk', ctx),\n );\n }\n if (accountsToExport.length > 0) {\n map.add('accounts/mod.rs', render('accountsMod.njk', ctx));\n }\n if (instructionsToExport.length > 0) {\n map.add('instructions/mod.rs', render('instructionsMod.njk', ctx));\n }\n if (definedTypesToExport.length > 0) {\n map.add('types/mod.rs', render('definedTypesMod.njk', ctx));\n }\n\n return map\n .add('mod.rs', render('rootMod.njk', ctx))\n .mergeWith(...getAllPrograms(node).map(p => visit(p, self)));\n },\n }),\n v => recordLinkablesVisitor(v, linkables),\n );\n}\n\nfunction getConflictsForInstructionAccountsAndArgs(instruction: InstructionNode): string[] {\n const allNames = [\n ...instruction.accounts.map(account => account.name),\n ...instruction.arguments.map(argument => argument.name),\n ];\n const duplicates = allNames.filter((e, i, a) => a.indexOf(e) !== i);\n return [...new Set(duplicates)];\n}\n","import { logError, logWarn } from '@codama/errors';\nimport { deleteDirectory, writeRenderMapVisitor } from '@codama/renderers-core';\nimport { rootNodeVisitor, visit } from '@codama/visitors-core';\nimport { spawnSync } from 'child_process';\n\nimport { GetRenderMapOptions, getRenderMapVisitor } from './getRenderMapVisitor';\n\nexport type RenderOptions = GetRenderMapOptions & {\n crateFolder?: string;\n deleteFolderBeforeRendering?: boolean;\n formatCode?: boolean;\n toolchain?: string;\n};\n\nexport function renderVisitor(path: string, options: RenderOptions = {}) {\n return rootNodeVisitor(root => {\n // Delete existing generated folder.\n if (options.deleteFolderBeforeRendering ?? true) {\n deleteDirectory(path);\n }\n\n // Render the new files.\n visit(root, writeRenderMapVisitor(getRenderMapVisitor(options), path));\n\n // format the code\n if (options.formatCode) {\n if (options.crateFolder) {\n const toolchain = options.toolchain ?? '+stable';\n runFormatter('cargo', [toolchain, 'fmt', '--manifest-path', `${options.crateFolder}/Cargo.toml`]);\n } else {\n logWarn('No crate folder specified, skipping formatting.');\n }\n }\n });\n}\n\nfunction runFormatter(cmd: string, args: string[]) {\n const { stdout, stderr, error } = spawnSync(cmd, args);\n if (error?.message?.includes('ENOENT')) {\n logWarn(`Could not find ${cmd}, skipping formatting.`);\n return;\n }\n if (stdout.length > 0) {\n logWarn(`(cargo-fmt) ${stdout || error}`);\n }\n if (stderr.length > 0) {\n logError(`(cargo-fmt) ${stderr || error}`);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/ImportMap.ts","../src/utils/codecs.ts","../src/utils/linkOverrides.ts","../src/utils/render.ts","../src/utils/traitOptions.ts","../src/getTypeManifestVisitor.ts","../src/renderValueNodeVisitor.ts","../src/getRenderMapVisitor.ts","../src/renderVisitor.ts"],"names":["dirname","pathDirname","camelCase","traits","getTraitsFromNode","pascalCase","isNode","CodamaError","snakeCase","visit","pipe","extendVisitor","seedManifest","resolvedType","resolveNestedTypeNode","logWarn"],"mappings":"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","file":"index.node.mjs","sourcesContent":["import { TypeManifest } from './getTypeManifestVisitor';\n\nconst DEFAULT_MODULE_MAP: Record<string, string> = {\n generated: 'crate::generated',\n generatedAccounts: 'crate::generated::accounts',\n generatedErrors: 'crate::generated::errors',\n generatedInstructions: 'crate::generated::instructions',\n generatedTypes: 'crate::generated::types',\n hooked: 'crate::hooked',\n mplEssentials: 'mpl_toolbox',\n mplToolbox: 'mpl_toolbox',\n};\n\nexport class ImportMap {\n protected readonly _imports: Set<string> = new Set();\n\n protected readonly _aliases: Map<string, string> = new Map();\n\n get imports(): Set<string> {\n return this._imports;\n }\n\n get aliases(): Map<string, string> {\n return this._aliases;\n }\n\n add(imports: Set<string> | string[] | string): ImportMap {\n const newImports = typeof imports === 'string' ? [imports] : imports;\n newImports.forEach(i => this._imports.add(i));\n return this;\n }\n\n remove(imports: Set<string> | string[] | string): ImportMap {\n const importsToRemove = typeof imports === 'string' ? [imports] : imports;\n importsToRemove.forEach(i => this._imports.delete(i));\n return this;\n }\n\n mergeWith(...others: ImportMap[]): ImportMap {\n others.forEach(other => {\n this.add(other._imports);\n other._aliases.forEach((alias, importName) => this.addAlias(importName, alias));\n });\n return this;\n }\n\n mergeWithManifest(manifest: TypeManifest): ImportMap {\n return this.mergeWith(manifest.imports);\n }\n\n addAlias(importName: string, alias: string): ImportMap {\n this._aliases.set(importName, alias);\n return this;\n }\n\n isEmpty(): boolean {\n return this._imports.size === 0;\n }\n\n resolveDependencyMap(dependencies: Record<string, string>): ImportMap {\n const dependencyMap = { ...DEFAULT_MODULE_MAP, ...dependencies };\n const newImportMap = new ImportMap();\n const resolveDependency = (i: string): string => {\n const dependencyKey = Object.keys(dependencyMap).find(key => i.startsWith(`${key}::`));\n if (!dependencyKey) return i;\n const dependencyValue = dependencyMap[dependencyKey];\n return dependencyValue + i.slice(dependencyKey.length);\n };\n this._imports.forEach(i => newImportMap.add(resolveDependency(i)));\n this._aliases.forEach((alias, i) => newImportMap.addAlias(resolveDependency(i), alias));\n return newImportMap;\n }\n\n toString(dependencies: Record<string, string>): string {\n const resolvedMap = this.resolveDependencyMap(dependencies);\n const importStatements = [...resolvedMap.imports].map(i => {\n const alias = resolvedMap.aliases.get(i);\n if (alias) return `use ${i} as ${alias};`;\n return `use ${i};`;\n });\n return importStatements.join('\\n');\n }\n}\n","import { BytesValueNode } from '@codama/nodes';\nimport { getBase16Encoder, getBase58Encoder, getBase64Encoder, getUtf8Encoder } from '@solana/codecs-strings';\n\nexport function getBytesFromBytesValueNode(node: BytesValueNode): Uint8Array {\n switch (node.encoding) {\n case 'utf8':\n return getUtf8Encoder().encode(node.data) as Uint8Array;\n case 'base16':\n return getBase16Encoder().encode(node.data) as Uint8Array;\n case 'base58':\n return getBase58Encoder().encode(node.data) as Uint8Array;\n case 'base64':\n default:\n return getBase64Encoder().encode(node.data) as Uint8Array;\n }\n}\n","import { CODAMA_ERROR__UNEXPECTED_NODE_KIND, CodamaError } from '@codama/errors';\nimport {\n AccountLinkNode,\n DefinedTypeLinkNode,\n InstructionLinkNode,\n PdaLinkNode,\n ProgramLinkNode,\n ResolverValueNode,\n} from '@codama/nodes';\n\nexport type LinkOverrides = {\n accounts?: Record<string, string>;\n definedTypes?: Record<string, string>;\n instructions?: Record<string, string>;\n pdas?: Record<string, string>;\n programs?: Record<string, string>;\n resolvers?: Record<string, string>;\n};\n\ntype OverridableNodes =\n | AccountLinkNode\n | DefinedTypeLinkNode\n | InstructionLinkNode\n | PdaLinkNode\n | ProgramLinkNode\n | ResolverValueNode;\n\nexport type GetImportFromFunction = (node: OverridableNodes, fallback?: string) => string;\n\nexport function getImportFromFactory(overrides: LinkOverrides): GetImportFromFunction {\n const linkOverrides = {\n accounts: overrides.accounts ?? {},\n definedTypes: overrides.definedTypes ?? {},\n instructions: overrides.instructions ?? {},\n pdas: overrides.pdas ?? {},\n programs: overrides.programs ?? {},\n resolvers: overrides.resolvers ?? {},\n };\n\n return (node: OverridableNodes) => {\n const kind = node.kind;\n switch (kind) {\n case 'accountLinkNode':\n return linkOverrides.accounts[node.name] ?? 'generatedAccounts';\n case 'definedTypeLinkNode':\n return linkOverrides.definedTypes[node.name] ?? 'generatedTypes';\n case 'instructionLinkNode':\n return linkOverrides.instructions[node.name] ?? 'generatedInstructions';\n case 'pdaLinkNode':\n return linkOverrides.pdas[node.name] ?? 'generatedAccounts';\n case 'programLinkNode':\n return linkOverrides.programs[node.name] ?? 'generatedPrograms';\n case 'resolverValueNode':\n return linkOverrides.resolvers[node.name] ?? 'hooked';\n default:\n throw new CodamaError(CODAMA_ERROR__UNEXPECTED_NODE_KIND, {\n expectedKinds: [\n 'AccountLinkNode',\n 'DefinedTypeLinkNode',\n 'InstructionLinkNode',\n 'PdaLinkNode',\n 'ProgramLinkNode',\n 'resolverValueNode',\n ],\n kind: kind satisfies never,\n node,\n });\n }\n };\n}\n","import { dirname as pathDirname, join } from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nimport { camelCase, kebabCase, pascalCase, snakeCase, titleCase } from '@codama/nodes';\nimport nunjucks, { ConfigureOptions as NunJucksOptions } from 'nunjucks';\n\nexport function rustDocblock(docs: string[]): string {\n if (docs.length <= 0) return '';\n const lines = docs.map(doc => `/// ${doc}`);\n return `${lines.join('\\n')}\\n`;\n}\n\nexport const render = (template: string, context?: object, options?: NunJucksOptions): string => {\n // @ts-expect-error import.meta will be used in the right environment.\n const dirname = __ESM__ ? pathDirname(fileURLToPath(import.meta.url)) : __dirname;\n const templates = __TEST__ ? join(dirname, '..', '..', 'public', 'templates') : join(dirname, 'templates'); // Path to templates from bundled output file.\n const env = nunjucks.configure(templates, { autoescape: false, trimBlocks: true, ...options });\n env.addFilter('pascalCase', pascalCase);\n env.addFilter('camelCase', camelCase);\n env.addFilter('snakeCase', snakeCase);\n env.addFilter('kebabCase', kebabCase);\n env.addFilter('titleCase', titleCase);\n env.addFilter('rustDocblock', rustDocblock);\n return env.render(template, context);\n};\n","import { AccountNode, assertIsNode, camelCase, DefinedTypeNode, isNode, isScalarEnum } from '@codama/nodes';\n\nimport { ImportMap } from '../ImportMap';\n\nexport type TraitOptions = {\n /** The default traits to implement for all types. */\n baseDefaults?: string[];\n /**\n * The default traits to implement for data enums only — on top of the base defaults.\n * Data enums are enums with at least one non-unit variant.\n */\n dataEnumDefaults?: string[];\n /**\n * The mapping of feature flags to traits.\n * For each entry, the traits will be rendered within a\n * `#[cfg_attr(feature = \"feature_name\", derive(Traits))]` attribute.\n */\n featureFlags?: Record<string, string[]>;\n /** The complete trait overrides of specific types. */\n overrides?: Record<string, string[]>;\n /**\n * The default traits to implement for scalar enums only — on top of the base defaults.\n * Scalar enums are enums with no variants or only unit variants.\n */\n scalarEnumDefaults?: string[];\n /** The default traits to implement for structs only — on top of the base defaults. */\n structDefaults?: string[];\n /** Whether or not to use the fully qualified name for traits, instead of importing them. */\n useFullyQualifiedName?: boolean;\n};\n\nexport const DEFAULT_TRAIT_OPTIONS: Required<TraitOptions> = {\n baseDefaults: [\n 'borsh::BorshSerialize',\n 'borsh::BorshDeserialize',\n 'serde::Serialize',\n 'serde::Deserialize',\n 'Clone',\n 'Debug',\n 'Eq',\n 'PartialEq',\n ],\n dataEnumDefaults: [],\n featureFlags: { serde: ['serde::Serialize', 'serde::Deserialize'] },\n overrides: {},\n scalarEnumDefaults: ['Copy', 'PartialOrd', 'Hash', 'num_derive::FromPrimitive'],\n structDefaults: [],\n useFullyQualifiedName: false,\n};\n\nexport type GetTraitsFromNodeFunction = (node: AccountNode | DefinedTypeNode) => { imports: ImportMap; render: string };\n\nexport function getTraitsFromNodeFactory(options: TraitOptions = {}): GetTraitsFromNodeFunction {\n return node => getTraitsFromNode(node, options);\n}\n\nexport function getTraitsFromNode(\n node: AccountNode | DefinedTypeNode,\n userOptions: TraitOptions = {},\n): { imports: ImportMap; render: string } {\n assertIsNode(node, ['accountNode', 'definedTypeNode']);\n const options: Required<TraitOptions> = { ...DEFAULT_TRAIT_OPTIONS, ...userOptions };\n\n // Get the node type and return early if it's a type alias.\n const nodeType = getNodeType(node);\n if (nodeType === 'alias') {\n return { imports: new ImportMap(), render: '' };\n }\n\n // Find all the FQN traits for the node.\n const sanitizedOverrides = Object.fromEntries(\n Object.entries(options.overrides).map(([key, value]) => [camelCase(key), value]),\n );\n const nodeOverrides: string[] | undefined = sanitizedOverrides[node.name];\n const allTraits = nodeOverrides === undefined ? getDefaultTraits(nodeType, options) : nodeOverrides;\n\n // Wrap the traits in feature flags if necessary.\n const partitionedTraits = partitionTraitsInFeatures(allTraits, options.featureFlags);\n let unfeaturedTraits = partitionedTraits[0];\n const featuredTraits = partitionedTraits[1];\n\n // Import the traits if necessary.\n const imports = new ImportMap();\n if (!options.useFullyQualifiedName) {\n unfeaturedTraits = extractFullyQualifiedNames(unfeaturedTraits, imports);\n }\n\n // Render the trait lines.\n const traitLines: string[] = [\n ...(unfeaturedTraits.length > 0 ? [`#[derive(${unfeaturedTraits.join(', ')})]\\n`] : []),\n ...Object.entries(featuredTraits).map(([feature, traits]) => {\n return `#[cfg_attr(feature = \"${feature}\", derive(${traits.join(', ')}))]\\n`;\n }),\n ];\n\n return { imports, render: traitLines.join('') };\n}\n\nfunction getNodeType(node: AccountNode | DefinedTypeNode): 'alias' | 'dataEnum' | 'scalarEnum' | 'struct' {\n if (isNode(node, 'accountNode')) return 'struct';\n if (isNode(node.type, 'structTypeNode')) return 'struct';\n if (isNode(node.type, 'enumTypeNode')) {\n return isScalarEnum(node.type) ? 'scalarEnum' : 'dataEnum';\n }\n return 'alias';\n}\n\nfunction getDefaultTraits(\n nodeType: 'dataEnum' | 'scalarEnum' | 'struct',\n options: Pick<\n Required<TraitOptions>,\n 'baseDefaults' | 'dataEnumDefaults' | 'scalarEnumDefaults' | 'structDefaults'\n >,\n): string[] {\n switch (nodeType) {\n case 'dataEnum':\n return [...options.baseDefaults, ...options.dataEnumDefaults];\n case 'scalarEnum':\n return [...options.baseDefaults, ...options.scalarEnumDefaults];\n case 'struct':\n return [...options.baseDefaults, ...options.structDefaults];\n }\n}\n\nfunction partitionTraitsInFeatures(\n traits: string[],\n featureFlags: Record<string, string[]>,\n): [string[], Record<string, string[]>] {\n // Reverse the feature flags option for quick lookup.\n // If there are any duplicate traits, the first one encountered will be used.\n const reverseFeatureFlags = Object.entries(featureFlags).reduce(\n (acc, [feature, traits]) => {\n for (const trait of traits) {\n if (!acc[trait]) acc[trait] = feature;\n }\n return acc;\n },\n {} as Record<string, string>,\n );\n\n const unfeaturedTraits: string[] = [];\n const featuredTraits: Record<string, string[]> = {};\n for (const trait of traits) {\n const feature: string | undefined = reverseFeatureFlags[trait];\n if (feature === undefined) {\n unfeaturedTraits.push(trait);\n } else {\n if (!featuredTraits[feature]) featuredTraits[feature] = [];\n featuredTraits[feature].push(trait);\n }\n }\n\n return [unfeaturedTraits, featuredTraits];\n}\n\nfunction extractFullyQualifiedNames(traits: string[], imports: ImportMap): string[] {\n return traits.map(trait => {\n const index = trait.lastIndexOf('::');\n if (index === -1) return trait;\n imports.add(trait);\n return trait.slice(index + 2);\n });\n}\n","import { CODAMA_ERROR__RENDERERS__UNSUPPORTED_NODE, CodamaError } from '@codama/errors';\nimport {\n arrayTypeNode,\n CountNode,\n definedTypeNode,\n fixedCountNode,\n isNode,\n NumberTypeNode,\n numberTypeNode,\n pascalCase,\n prefixedCountNode,\n REGISTERED_TYPE_NODE_KINDS,\n remainderCountNode,\n resolveNestedTypeNode,\n snakeCase,\n} from '@codama/nodes';\nimport { extendVisitor, mergeVisitor, pipe, visit } from '@codama/visitors-core';\n\nimport { ImportMap } from './ImportMap';\nimport { GetImportFromFunction, GetTraitsFromNodeFunction, rustDocblock } from './utils';\n\nexport type TypeManifest = {\n imports: ImportMap;\n nestedStructs: string[];\n type: string;\n};\n\nexport function getTypeManifestVisitor(options: {\n getImportFrom: GetImportFromFunction;\n getTraitsFromNode: GetTraitsFromNodeFunction;\n nestedStruct?: boolean;\n parentName?: string | null;\n}) {\n const { getImportFrom, getTraitsFromNode } = options;\n let parentName: string | null = options.parentName ?? null;\n let nestedStruct: boolean = options.nestedStruct ?? false;\n let inlineStruct: boolean = false;\n let parentSize: NumberTypeNode | number | null = null;\n\n return pipe(\n mergeVisitor(\n (): TypeManifest => ({ imports: new ImportMap(), nestedStructs: [], type: '' }),\n (_, values) => ({\n ...mergeManifests(values),\n type: values.map(v => v.type).join('\\n'),\n }),\n [...REGISTERED_TYPE_NODE_KINDS, 'definedTypeLinkNode', 'definedTypeNode', 'accountNode'],\n ),\n v =>\n extendVisitor(v, {\n visitAccount(account, { self }) {\n parentName = pascalCase(account.name);\n const manifest = visit(account.data, self);\n const traits = getTraitsFromNode(account);\n manifest.imports.mergeWith(traits.imports);\n parentName = null;\n return {\n ...manifest,\n type: traits.render + manifest.type,\n };\n },\n\n visitArrayType(arrayType, { self }) {\n const childManifest = visit(arrayType.item, self);\n\n if (isNode(arrayType.count, 'fixedCountNode')) {\n return {\n ...childManifest,\n type: `[${childManifest.type}; ${arrayType.count.value}]`,\n };\n }\n\n if (isNode(arrayType.count, 'remainderCountNode')) {\n childManifest.imports.add('kaigan::types::RemainderVec');\n return {\n ...childManifest,\n type: `RemainderVec<${childManifest.type}>`,\n };\n }\n\n const prefix = resolveNestedTypeNode(arrayType.count.prefix);\n if (prefix.endian === 'le') {\n switch (prefix.format) {\n case 'u32':\n return {\n ...childManifest,\n type: `Vec<${childManifest.type}>`,\n };\n case 'u8':\n case 'u16':\n case 'u64': {\n const prefixFormat = prefix.format.toUpperCase();\n childManifest.imports.add(`kaigan::types::${prefixFormat}PrefixVec`);\n return {\n ...childManifest,\n type: `${prefixFormat}PrefixVec<${childManifest.type}>`,\n };\n }\n case 'shortU16': {\n childManifest.imports.add('solana_program::short_vec::ShortVec');\n return {\n ...childManifest,\n type: `ShortVec<${childManifest.type}>`,\n };\n }\n default:\n throw new Error(`Array prefix not supported: ${prefix.format}`);\n }\n }\n\n // TODO: Add to the Rust validator.\n throw new Error('Array size not supported by Borsh');\n },\n\n visitBooleanType(booleanType) {\n const resolvedSize = resolveNestedTypeNode(booleanType.size);\n if (resolvedSize.format === 'u8' && resolvedSize.endian === 'le') {\n return {\n imports: new ImportMap(),\n nestedStructs: [],\n type: 'bool',\n };\n }\n\n // TODO: Add to the Rust validator.\n throw new Error('Bool size not supported by Borsh');\n },\n\n visitBytesType(_bytesType, { self }) {\n let arraySize: CountNode = remainderCountNode();\n if (typeof parentSize === 'number') {\n arraySize = fixedCountNode(parentSize);\n } else if (parentSize && typeof parentSize === 'object') {\n arraySize = prefixedCountNode(parentSize);\n }\n const arrayType = arrayTypeNode(numberTypeNode('u8'), arraySize);\n return visit(arrayType, self);\n },\n\n visitDefinedType(definedType, { self }) {\n parentName = pascalCase(definedType.name);\n const manifest = visit(definedType.type, self);\n const traits = getTraitsFromNode(definedType);\n manifest.imports.mergeWith(traits.imports);\n parentName = null;\n\n const renderedType = isNode(definedType.type, ['enumTypeNode', 'structTypeNode'])\n ? manifest.type\n : `pub type ${pascalCase(definedType.name)} = ${manifest.type};`;\n\n return { ...manifest, type: `${traits.render}${renderedType}` };\n },\n\n visitDefinedTypeLink(node) {\n const pascalCaseDefinedType = pascalCase(node.name);\n const importFrom = getImportFrom(node);\n return {\n imports: new ImportMap().add(`${importFrom}::${pascalCaseDefinedType}`),\n nestedStructs: [],\n type: pascalCaseDefinedType,\n };\n },\n\n visitEnumEmptyVariantType(enumEmptyVariantType) {\n const name = pascalCase(enumEmptyVariantType.name);\n return {\n imports: new ImportMap(),\n nestedStructs: [],\n type: `${name},`,\n };\n },\n\n visitEnumStructVariantType(enumStructVariantType, { self }) {\n const name = pascalCase(enumStructVariantType.name);\n const originalParentName = parentName;\n\n if (!originalParentName) {\n throw new Error('Enum struct variant type must have a parent name.');\n }\n\n inlineStruct = true;\n parentName = pascalCase(originalParentName) + name;\n const typeManifest = visit(enumStructVariantType.struct, self);\n inlineStruct = false;\n parentName = originalParentName;\n\n return {\n ...typeManifest,\n type: `${name} ${typeManifest.type},`,\n };\n },\n\n visitEnumTupleVariantType(enumTupleVariantType, { self }) {\n const name = pascalCase(enumTupleVariantType.name);\n const originalParentName = parentName;\n\n if (!originalParentName) {\n throw new Error('Enum struct variant type must have a parent name.');\n }\n\n parentName = pascalCase(originalParentName) + name;\n const childManifest = visit(enumTupleVariantType.tuple, self);\n parentName = originalParentName;\n\n let derive = '';\n if (childManifest.type === '(Pubkey)') {\n derive =\n '#[cfg_attr(feature = \"serde\", serde(with = \"serde_with::As::<serde_with::DisplayFromStr>\"))]\\n';\n } else if (childManifest.type === '(Vec<Pubkey>)') {\n derive =\n '#[cfg_attr(feature = \"serde\", serde(with = \"serde_with::As::<Vec<serde_with::DisplayFromStr>>\"))]\\n';\n }\n\n return {\n ...childManifest,\n type: `${derive}${name}${childManifest.type},`,\n };\n },\n\n visitEnumType(enumType, { self }) {\n const originalParentName = parentName;\n if (!originalParentName) {\n // TODO: Add to the Rust validator.\n throw new Error('Enum type must have a parent name.');\n }\n\n const variants = enumType.variants.map(variant => visit(variant, self));\n const variantNames = variants.map(variant => variant.type).join('\\n');\n const mergedManifest = mergeManifests(variants);\n\n return {\n ...mergedManifest,\n type: `pub enum ${pascalCase(originalParentName)} {\\n${variantNames}\\n}`,\n };\n },\n\n visitFixedSizeType(fixedSizeType, { self }) {\n parentSize = fixedSizeType.size;\n const manifest = visit(fixedSizeType.type, self);\n parentSize = null;\n return manifest;\n },\n\n visitMapType(mapType, { self }) {\n const key = visit(mapType.key, self);\n const value = visit(mapType.value, self);\n const mergedManifest = mergeManifests([key, value]);\n mergedManifest.imports.add('std::collections::HashMap');\n return {\n ...mergedManifest,\n type: `HashMap<${key.type}, ${value.type}>`,\n };\n },\n\n visitNumberType(numberType) {\n if (numberType.endian !== 'le') {\n // TODO: Add to the Rust validator.\n throw new Error('Number endianness not supported by Borsh');\n }\n\n if (numberType.format === 'shortU16') {\n return {\n imports: new ImportMap().add('solana_program::short_vec::ShortU16'),\n nestedStructs: [],\n type: 'ShortU16',\n };\n }\n\n return {\n imports: new ImportMap(),\n nestedStructs: [],\n type: numberType.format,\n };\n },\n\n visitOptionType(optionType, { self }) {\n const childManifest = visit(optionType.item, self);\n\n const optionPrefix = resolveNestedTypeNode(optionType.prefix);\n if (optionPrefix.format === 'u8' && optionPrefix.endian === 'le') {\n return {\n ...childManifest,\n type: `Option<${childManifest.type}>`,\n };\n }\n\n // TODO: Add to the Rust validator.\n throw new Error('Option size not supported by Borsh');\n },\n\n visitPublicKeyType() {\n return {\n imports: new ImportMap().add('solana_program::pubkey::Pubkey'),\n nestedStructs: [],\n type: 'Pubkey',\n };\n },\n\n visitRemainderOptionType(node) {\n throw new CodamaError(CODAMA_ERROR__RENDERERS__UNSUPPORTED_NODE, { kind: node.kind, node });\n },\n\n visitSetType(setType, { self }) {\n const childManifest = visit(setType.item, self);\n childManifest.imports.add('std::collections::HashSet');\n return {\n ...childManifest,\n type: `HashSet<${childManifest.type}>`,\n };\n },\n\n visitSizePrefixType(sizePrefixType, { self }) {\n parentSize = resolveNestedTypeNode(sizePrefixType.prefix);\n const manifest = visit(sizePrefixType.type, self);\n parentSize = null;\n return manifest;\n },\n\n visitStringType() {\n if (!parentSize) {\n return {\n imports: new ImportMap().add(`kaigan::types::RemainderStr`),\n nestedStructs: [],\n type: `RemainderStr`,\n };\n }\n\n if (typeof parentSize === 'number') {\n return {\n imports: new ImportMap(),\n nestedStructs: [],\n type: `[u8; ${parentSize}]`,\n };\n }\n\n if (isNode(parentSize, 'numberTypeNode') && parentSize.endian === 'le') {\n switch (parentSize.format) {\n case 'u32':\n return {\n imports: new ImportMap(),\n nestedStructs: [],\n type: 'String',\n };\n case 'u8':\n case 'u16':\n case 'u64': {\n const prefix = parentSize.format.toUpperCase();\n return {\n imports: new ImportMap().add(`kaigan::types::${prefix}PrefixString`),\n nestedStructs: [],\n type: `${prefix}PrefixString`,\n };\n }\n default:\n throw new Error(`'String size not supported: ${parentSize.format}`);\n }\n }\n\n // TODO: Add to the Rust validator.\n throw new Error('String size not supported by Borsh');\n },\n\n visitStructFieldType(structFieldType, { self }) {\n const originalParentName = parentName;\n const originalInlineStruct = inlineStruct;\n const originalNestedStruct = nestedStruct;\n\n if (!originalParentName) {\n throw new Error('Struct field type must have a parent name.');\n }\n\n parentName = pascalCase(originalParentName) + pascalCase(structFieldType.name);\n nestedStruct = true;\n inlineStruct = false;\n\n const fieldManifest = visit(structFieldType.type, self);\n\n parentName = originalParentName;\n inlineStruct = originalInlineStruct;\n nestedStruct = originalNestedStruct;\n\n const fieldName = snakeCase(structFieldType.name);\n const docblock = rustDocblock(structFieldType.docs);\n const resolvedNestedType = resolveNestedTypeNode(structFieldType.type);\n\n let derive = '';\n if (fieldManifest.type === 'Pubkey') {\n derive =\n '#[cfg_attr(feature = \"serde\", serde(with = \"serde_with::As::<serde_with::DisplayFromStr>\"))]\\n';\n } else if (fieldManifest.type === 'Vec<Pubkey>') {\n derive =\n '#[cfg_attr(feature = \"serde\", serde(with = \"serde_with::As::<Vec<serde_with::DisplayFromStr>>\"))]\\n';\n } else if (\n (isNode(resolvedNestedType, 'arrayTypeNode') &&\n isNode(resolvedNestedType.count, 'fixedCountNode') &&\n resolvedNestedType.count.value > 32) ||\n (isNode(resolvedNestedType, ['bytesTypeNode', 'stringTypeNode']) &&\n isNode(structFieldType.type, 'fixedSizeTypeNode') &&\n structFieldType.type.size > 32)\n ) {\n derive =\n '#[cfg_attr(feature = \"serde\", serde(with = \"serde_with::As::<serde_with::Bytes>\"))]\\n';\n }\n\n return {\n ...fieldManifest,\n type: inlineStruct\n ? `${docblock}${derive}${fieldName}: ${fieldManifest.type},`\n : `${docblock}${derive}pub ${fieldName}: ${fieldManifest.type},`,\n };\n },\n\n visitStructType(structType, { self }) {\n const originalParentName = parentName;\n\n if (!originalParentName) {\n // TODO: Add to the Rust validator.\n throw new Error('Struct type must have a parent name.');\n }\n\n const fields = structType.fields.map(field => visit(field, self));\n const fieldTypes = fields.map(field => field.type).join('\\n');\n const mergedManifest = mergeManifests(fields);\n\n if (nestedStruct) {\n const nestedTraits = getTraitsFromNode(\n definedTypeNode({ name: originalParentName, type: structType }),\n );\n mergedManifest.imports.mergeWith(nestedTraits.imports);\n return {\n ...mergedManifest,\n nestedStructs: [\n ...mergedManifest.nestedStructs,\n `${nestedTraits.render}pub struct ${pascalCase(originalParentName)} {\\n${fieldTypes}\\n}`,\n ],\n type: pascalCase(originalParentName),\n };\n }\n\n if (inlineStruct) {\n return { ...mergedManifest, type: `{\\n${fieldTypes}\\n}` };\n }\n\n return {\n ...mergedManifest,\n type: `pub struct ${pascalCase(originalParentName)} {\\n${fieldTypes}\\n}`,\n };\n },\n\n visitTupleType(tupleType, { self }) {\n const items = tupleType.items.map(item => visit(item, self));\n const mergedManifest = mergeManifests(items);\n\n return {\n ...mergedManifest,\n type: `(${items.map(item => item.type).join(', ')})`,\n };\n },\n\n visitZeroableOptionType(node) {\n throw new CodamaError(CODAMA_ERROR__RENDERERS__UNSUPPORTED_NODE, { kind: node.kind, node });\n },\n }),\n );\n}\n\nfunction mergeManifests(manifests: TypeManifest[]): Pick<TypeManifest, 'imports' | 'nestedStructs'> {\n return {\n imports: new ImportMap().mergeWith(...manifests.map(td => td.imports)),\n nestedStructs: manifests.flatMap(m => m.nestedStructs),\n };\n}\n","import {\n arrayValueNode,\n bytesValueNode,\n isNode,\n numberValueNode,\n pascalCase,\n RegisteredValueNode,\n ValueNode,\n} from '@codama/nodes';\nimport { visit, Visitor } from '@codama/visitors-core';\n\nimport { ImportMap } from './ImportMap';\nimport { getBytesFromBytesValueNode, GetImportFromFunction } from './utils';\n\nexport function renderValueNode(\n value: ValueNode,\n getImportFrom: GetImportFromFunction,\n useStr: boolean = false,\n): {\n imports: ImportMap;\n render: string;\n} {\n return visit(value, renderValueNodeVisitor(getImportFrom, useStr));\n}\n\nexport function renderValueNodeVisitor(\n getImportFrom: GetImportFromFunction,\n useStr: boolean = false,\n): Visitor<\n {\n imports: ImportMap;\n render: string;\n },\n RegisteredValueNode['kind']\n> {\n return {\n visitArrayValue(node) {\n const list = node.items.map(v => visit(v, this));\n return {\n imports: new ImportMap().mergeWith(...list.map(c => c.imports)),\n render: `[${list.map(c => c.render).join(', ')}]`,\n };\n },\n visitBooleanValue(node) {\n return {\n imports: new ImportMap(),\n render: JSON.stringify(node.boolean),\n };\n },\n visitBytesValue(node) {\n const bytes = getBytesFromBytesValueNode(node);\n const numbers = Array.from(bytes).map(numberValueNode);\n return visit(arrayValueNode(numbers), this);\n },\n visitConstantValue(node) {\n if (isNode(node.value, 'bytesValueNode')) {\n return visit(node.value, this);\n }\n if (isNode(node.type, 'stringTypeNode') && isNode(node.value, 'stringValueNode')) {\n return visit(bytesValueNode(node.type.encoding, node.value.string), this);\n }\n if (isNode(node.type, 'numberTypeNode') && isNode(node.value, 'numberValueNode')) {\n const numberManifest = visit(node.value, this);\n const { format, endian } = node.type;\n const byteFunction = endian === 'le' ? 'to_le_bytes' : 'to_be_bytes';\n numberManifest.render = `${numberManifest.render}${format}.${byteFunction}()`;\n return numberManifest;\n }\n throw new Error('Unsupported constant value type.');\n },\n visitEnumValue(node) {\n const imports = new ImportMap();\n const enumName = pascalCase(node.enum.name);\n const variantName = pascalCase(node.variant);\n const importFrom = getImportFrom(node.enum);\n imports.add(`${importFrom}::${enumName}`);\n if (!node.value) {\n return { imports, render: `${enumName}::${variantName}` };\n }\n const enumValue = visit(node.value, this);\n const fields = enumValue.render;\n return {\n imports: imports.mergeWith(enumValue.imports),\n render: `${enumName}::${variantName} ${fields}`,\n };\n },\n visitMapEntryValue(node) {\n const mapKey = visit(node.key, this);\n const mapValue = visit(node.value, this);\n return {\n imports: mapKey.imports.mergeWith(mapValue.imports),\n render: `[${mapKey.render}, ${mapValue.render}]`,\n };\n },\n visitMapValue(node) {\n const map = node.entries.map(entry => visit(entry, this));\n const imports = new ImportMap().add('std::collection::HashMap');\n return {\n imports: imports.mergeWith(...map.map(c => c.imports)),\n render: `HashMap::from([${map.map(c => c.render).join(', ')}])`,\n };\n },\n visitNoneValue() {\n return {\n imports: new ImportMap(),\n render: 'None',\n };\n },\n visitNumberValue(node) {\n return {\n imports: new ImportMap(),\n render: node.number.toString(),\n };\n },\n visitPublicKeyValue(node) {\n return {\n imports: new ImportMap().add('solana_program::pubkey'),\n render: `pubkey!(\"${node.publicKey}\")`,\n };\n },\n visitSetValue(node) {\n const set = node.items.map(v => visit(v, this));\n const imports = new ImportMap().add('std::collection::HashSet');\n return {\n imports: imports.mergeWith(...set.map(c => c.imports)),\n render: `HashSet::from([${set.map(c => c.render).join(', ')}])`,\n };\n },\n visitSomeValue(node) {\n const child = visit(node.value, this);\n return {\n ...child,\n render: `Some(${child.render})`,\n };\n },\n visitStringValue(node) {\n return {\n imports: new ImportMap(),\n render: useStr ? `${JSON.stringify(node.string)}` : `String::from(${JSON.stringify(node.string)})`,\n };\n },\n visitStructFieldValue(node) {\n const structValue = visit(node.value, this);\n return {\n imports: structValue.imports,\n render: `${node.name}: ${structValue.render}`,\n };\n },\n visitStructValue(node) {\n const struct = node.fields.map(field => visit(field, this));\n return {\n imports: new ImportMap().mergeWith(...struct.map(c => c.imports)),\n render: `{ ${struct.map(c => c.render).join(', ')} }`,\n };\n },\n visitTupleValue(node) {\n const tuple = node.items.map(v => visit(v, this));\n return {\n imports: new ImportMap().mergeWith(...tuple.map(c => c.imports)),\n render: `(${tuple.map(c => c.render).join(', ')})`,\n };\n },\n };\n}\n","import { logWarn } from '@codama/errors';\nimport {\n getAllAccounts,\n getAllDefinedTypes,\n getAllInstructionsWithSubs,\n getAllPrograms,\n InstructionNode,\n isNode,\n isNodeFilter,\n pascalCase,\n ProgramNode,\n resolveNestedTypeNode,\n snakeCase,\n structTypeNodeFromInstructionArgumentNodes,\n VALUE_NODES,\n} from '@codama/nodes';\nimport { RenderMap } from '@codama/renderers-core';\nimport {\n extendVisitor,\n LinkableDictionary,\n pipe,\n recordLinkablesVisitor,\n staticVisitor,\n visit,\n} from '@codama/visitors-core';\n\nimport { getTypeManifestVisitor } from './getTypeManifestVisitor';\nimport { ImportMap } from './ImportMap';\nimport { renderValueNode } from './renderValueNodeVisitor';\nimport { getImportFromFactory, getTraitsFromNodeFactory, LinkOverrides, render, TraitOptions } from './utils';\n\nexport type GetRenderMapOptions = {\n anchorTraits?: boolean;\n defaultTraitOverrides?: string[];\n dependencyMap?: Record<string, string>;\n linkOverrides?: LinkOverrides;\n renderParentInstructions?: boolean;\n traitOptions?: TraitOptions;\n};\n\nexport function getRenderMapVisitor(options: GetRenderMapOptions = {}) {\n const linkables = new LinkableDictionary();\n let program: ProgramNode | null = null;\n\n const renderParentInstructions = options.renderParentInstructions ?? false;\n const dependencyMap = options.dependencyMap ?? {};\n const getImportFrom = getImportFromFactory(options.linkOverrides ?? {});\n const getTraitsFromNode = getTraitsFromNodeFactory(options.traitOptions);\n const typeManifestVisitor = getTypeManifestVisitor({ getImportFrom, getTraitsFromNode });\n const anchorTraits = options.anchorTraits ?? true;\n\n return pipe(\n staticVisitor(\n () => new RenderMap(),\n ['rootNode', 'programNode', 'instructionNode', 'accountNode', 'definedTypeNode'],\n ),\n v =>\n extendVisitor(v, {\n visitAccount(node) {\n const typeManifest = visit(node, typeManifestVisitor);\n\n // Seeds.\n const seedsImports = new ImportMap();\n const pda = node.pda ? linkables.get(node.pda) : undefined;\n const pdaSeeds = pda?.seeds ?? [];\n const seeds = pdaSeeds.map(seed => {\n if (isNode(seed, 'variablePdaSeedNode')) {\n const seedManifest = visit(seed.type, typeManifestVisitor);\n seedsImports.mergeWith(seedManifest.imports);\n const resolvedType = resolveNestedTypeNode(seed.type);\n return { ...seed, resolvedType, typeManifest: seedManifest };\n }\n if (isNode(seed.value, 'programIdValueNode')) {\n return seed;\n }\n const seedManifest = visit(seed.type, typeManifestVisitor);\n const valueManifest = renderValueNode(seed.value, getImportFrom, true);\n seedsImports.mergeWith(valueManifest.imports);\n const resolvedType = resolveNestedTypeNode(seed.type);\n return { ...seed, resolvedType, typeManifest: seedManifest, valueManifest };\n });\n const hasVariableSeeds = pdaSeeds.filter(isNodeFilter('variablePdaSeedNode')).length > 0;\n const constantSeeds = seeds\n .filter(isNodeFilter('constantPdaSeedNode'))\n .filter(seed => !isNode(seed.value, 'programIdValueNode'));\n\n const { imports } = typeManifest;\n\n if (hasVariableSeeds) {\n imports.mergeWith(seedsImports);\n }\n\n return new RenderMap().add(\n `accounts/${snakeCase(node.name)}.rs`,\n render('accountsPage.njk', {\n account: node,\n anchorTraits,\n constantSeeds,\n hasVariableSeeds,\n imports: imports\n .remove(`generatedAccounts::${pascalCase(node.name)}`)\n .toString(dependencyMap),\n pda,\n program,\n seeds,\n typeManifest,\n }),\n );\n },\n\n visitDefinedType(node) {\n const typeManifest = visit(node, typeManifestVisitor);\n const imports = new ImportMap().mergeWithManifest(typeManifest);\n\n return new RenderMap().add(\n `types/${snakeCase(node.name)}.rs`,\n render('definedTypesPage.njk', {\n definedType: node,\n imports: imports.remove(`generatedTypes::${pascalCase(node.name)}`).toString(dependencyMap),\n typeManifest,\n }),\n );\n },\n\n visitInstruction(node) {\n // Imports.\n const imports = new ImportMap();\n imports.add(['borsh::BorshDeserialize', 'borsh::BorshSerialize']);\n\n // canMergeAccountsAndArgs\n const accountsAndArgsConflicts = getConflictsForInstructionAccountsAndArgs(node);\n if (accountsAndArgsConflicts.length > 0) {\n logWarn(\n `[Rust] Accounts and args of instruction [${node.name}] have the following ` +\n `conflicting attributes [${accountsAndArgsConflicts.join(', ')}]. ` +\n `Thus, the conflicting arguments will be suffixed with \"_arg\". ` +\n 'You may want to rename the conflicting attributes.',\n );\n }\n\n // Instruction args.\n const instructionArgs: {\n default: boolean;\n innerOptionType: string | null;\n name: string;\n optional: boolean;\n type: string;\n value: string | null;\n }[] = [];\n let hasArgs = false;\n let hasOptional = false;\n\n node.arguments.forEach(argument => {\n const argumentVisitor = getTypeManifestVisitor({\n getImportFrom,\n getTraitsFromNode,\n nestedStruct: true,\n parentName: `${pascalCase(node.name)}InstructionData`,\n });\n const manifest = visit(argument.type, argumentVisitor);\n imports.mergeWith(manifest.imports);\n const innerOptionType = isNode(argument.type, 'optionTypeNode')\n ? manifest.type.slice('Option<'.length, -1)\n : null;\n\n const hasDefaultValue = !!argument.defaultValue && isNode(argument.defaultValue, VALUE_NODES);\n let renderValue: string | null = null;\n if (hasDefaultValue) {\n const { imports: argImports, render: value } = renderValueNode(\n argument.defaultValue,\n getImportFrom,\n );\n imports.mergeWith(argImports);\n renderValue = value;\n }\n\n hasArgs = hasArgs || argument.defaultValueStrategy !== 'omitted';\n hasOptional = hasOptional || (hasDefaultValue && argument.defaultValueStrategy !== 'omitted');\n\n const name = accountsAndArgsConflicts.includes(argument.name)\n ? `${argument.name}_arg`\n : argument.name;\n\n instructionArgs.push({\n default: hasDefaultValue && argument.defaultValueStrategy === 'omitted',\n innerOptionType,\n name,\n optional: hasDefaultValue && argument.defaultValueStrategy !== 'omitted',\n type: manifest.type,\n value: renderValue,\n });\n });\n\n const struct = structTypeNodeFromInstructionArgumentNodes(node.arguments);\n const structVisitor = getTypeManifestVisitor({\n getImportFrom,\n getTraitsFromNode,\n parentName: `${pascalCase(node.name)}InstructionData`,\n });\n const typeManifest = visit(struct, structVisitor);\n\n return new RenderMap().add(\n `instructions/${snakeCase(node.name)}.rs`,\n render('instructionsPage.njk', {\n hasArgs,\n hasOptional,\n imports: imports\n .remove(`generatedInstructions::${pascalCase(node.name)}`)\n .toString(dependencyMap),\n instruction: node,\n instructionArgs,\n program,\n typeManifest,\n }),\n );\n },\n\n visitProgram(node, { self }) {\n program = node;\n const renderMap = new RenderMap()\n .mergeWith(...node.accounts.map(account => visit(account, self)))\n .mergeWith(...node.definedTypes.map(type => visit(type, self)))\n .mergeWith(\n ...getAllInstructionsWithSubs(node, {\n leavesOnly: !renderParentInstructions,\n }).map(ix => visit(ix, self)),\n );\n\n // Errors.\n if (node.errors.length > 0) {\n renderMap.add(\n `errors/${snakeCase(node.name)}.rs`,\n render('errorsPage.njk', {\n errors: node.errors,\n imports: new ImportMap().toString(dependencyMap),\n program: node,\n }),\n );\n }\n\n program = null;\n return renderMap;\n },\n\n visitRoot(node, { self }) {\n const programsToExport = getAllPrograms(node);\n const accountsToExport = getAllAccounts(node);\n const instructionsToExport = getAllInstructionsWithSubs(node, {\n leavesOnly: !renderParentInstructions,\n });\n const definedTypesToExport = getAllDefinedTypes(node);\n const hasAnythingToExport =\n programsToExport.length > 0 ||\n accountsToExport.length > 0 ||\n instructionsToExport.length > 0 ||\n definedTypesToExport.length > 0;\n\n const ctx = {\n accountsToExport,\n definedTypesToExport,\n hasAnythingToExport,\n instructionsToExport,\n programsToExport,\n root: node,\n };\n\n const map = new RenderMap();\n if (programsToExport.length > 0) {\n map.add('programs.rs', render('programsMod.njk', ctx)).add(\n 'errors/mod.rs',\n render('errorsMod.njk', ctx),\n );\n }\n if (accountsToExport.length > 0) {\n map.add('accounts/mod.rs', render('accountsMod.njk', ctx));\n }\n if (instructionsToExport.length > 0) {\n map.add('instructions/mod.rs', render('instructionsMod.njk', ctx));\n }\n if (definedTypesToExport.length > 0) {\n map.add('types/mod.rs', render('definedTypesMod.njk', ctx));\n }\n\n return map\n .add('mod.rs', render('rootMod.njk', ctx))\n .mergeWith(...getAllPrograms(node).map(p => visit(p, self)));\n },\n }),\n v => recordLinkablesVisitor(v, linkables),\n );\n}\n\nfunction getConflictsForInstructionAccountsAndArgs(instruction: InstructionNode): string[] {\n const allNames = [\n ...instruction.accounts.map(account => account.name),\n ...instruction.arguments.map(argument => argument.name),\n ];\n const duplicates = allNames.filter((e, i, a) => a.indexOf(e) !== i);\n return [...new Set(duplicates)];\n}\n","import { logError, logWarn } from '@codama/errors';\nimport { deleteDirectory, writeRenderMapVisitor } from '@codama/renderers-core';\nimport { rootNodeVisitor, visit } from '@codama/visitors-core';\nimport { spawnSync } from 'child_process';\n\nimport { GetRenderMapOptions, getRenderMapVisitor } from './getRenderMapVisitor';\n\nexport type RenderOptions = GetRenderMapOptions & {\n crateFolder?: string;\n deleteFolderBeforeRendering?: boolean;\n formatCode?: boolean;\n toolchain?: string;\n};\n\nexport function renderVisitor(path: string, options: RenderOptions = {}) {\n return rootNodeVisitor(root => {\n // Delete existing generated folder.\n if (options.deleteFolderBeforeRendering ?? true) {\n deleteDirectory(path);\n }\n\n // Render the new files.\n visit(root, writeRenderMapVisitor(getRenderMapVisitor(options), path));\n\n // format the code\n if (options.formatCode) {\n if (options.crateFolder) {\n const toolchain = options.toolchain ?? '+stable';\n runFormatter('cargo', [toolchain, 'fmt', '--manifest-path', `${options.crateFolder}/Cargo.toml`]);\n } else {\n logWarn('No crate folder specified, skipping formatting.');\n }\n }\n });\n}\n\nfunction runFormatter(cmd: string, args: string[]) {\n const { stdout, stderr, error } = spawnSync(cmd, args);\n if (error?.message?.includes('ENOENT')) {\n logWarn(`Could not find ${cmd}, skipping formatting.`);\n return;\n }\n if (stdout.length > 0) {\n logWarn(`(cargo-fmt) ${stdout || error}`);\n }\n if (stderr.length > 0) {\n logError(`(cargo-fmt) ${stderr || error}`);\n }\n}\n"]}
@@ -128,33 +128,35 @@ impl<'a> TryFrom<&solana_program::account_info::AccountInfo<'a>> for {{ account.
128
128
  }
129
129
  }
130
130
 
131
- #[cfg(feature = "anchor")]
132
- impl anchor_lang::AccountDeserialize for {{ account.name | pascalCase }} {
133
- fn try_deserialize_unchecked(buf: &mut &[u8]) -> anchor_lang::Result<Self> {
134
- Ok(Self::deserialize(buf)?)
135
- }
136
- }
131
+ {% if anchorTraits %}
132
+ #[cfg(feature = "anchor")]
133
+ impl anchor_lang::AccountDeserialize for {{ account.name | pascalCase }} {
134
+ fn try_deserialize_unchecked(buf: &mut &[u8]) -> anchor_lang::Result<Self> {
135
+ Ok(Self::deserialize(buf)?)
136
+ }
137
+ }
137
138
 
138
- #[cfg(feature = "anchor")]
139
- impl anchor_lang::AccountSerialize for {{ account.name | pascalCase }} {}
139
+ #[cfg(feature = "anchor")]
140
+ impl anchor_lang::AccountSerialize for {{ account.name | pascalCase }} {}
140
141
 
141
- #[cfg(feature = "anchor")]
142
- impl anchor_lang::Owner for {{ account.name | pascalCase }} {
143
- fn owner() -> Pubkey {
144
- crate::{{ program.name | snakeCase | upper }}_ID
145
- }
146
- }
142
+ #[cfg(feature = "anchor")]
143
+ impl anchor_lang::Owner for {{ account.name | pascalCase }} {
144
+ fn owner() -> Pubkey {
145
+ crate::{{ program.name | snakeCase | upper }}_ID
146
+ }
147
+ }
147
148
 
148
- #[cfg(feature = "anchor-idl-build")]
149
- impl anchor_lang::IdlBuild for {{ account.name | pascalCase }} {}
149
+ #[cfg(feature = "anchor-idl-build")]
150
+ impl anchor_lang::IdlBuild for {{ account.name | pascalCase }} {}
150
151
 
151
- {#
152
- This is not used for the IDL generation since default `IdlBuild` impl doesn't include
153
- the type in the IDL but it stil needs to be added in order to make compilation work.
154
- #}
155
- #[cfg(feature = "anchor-idl-build")]
156
- impl anchor_lang::Discriminator for {{ account.name | pascalCase }} {
157
- const DISCRIMINATOR: [u8; 8] = [0; 8];
158
- }
152
+ {#
153
+ This is not used for the IDL generation since default `IdlBuild` impl doesn't include
154
+ the type in the IDL but it stil needs to be added in order to make compilation work.
155
+ #}
156
+ #[cfg(feature = "anchor-idl-build")]
157
+ impl anchor_lang::Discriminator for {{ account.name | pascalCase }} {
158
+ const DISCRIMINATOR: [u8; 8] = [0; 8];
159
+ }
160
+ {% endif %}
159
161
 
160
162
  {% endblock %}
@@ -87,7 +87,7 @@ impl<'a, 'b> {{ instruction.name | pascalCase }}Cpi<'a, 'b> {
87
87
  signers_seeds: &[&[&[u8]]],
88
88
  remaining_accounts: &[(&'b solana_program::account_info::AccountInfo<'a>, bool, bool)]
89
89
  ) -> solana_program::entrypoint::ProgramResult {
90
- let mut accounts = Vec::with_capacity({{ instruction.accounts.length }} + remaining_accounts.len());
90
+ let mut accounts = Vec::with_capacity({{ instruction.accounts.length + '+' if instruction.accounts.length > 0}} remaining_accounts.len());
91
91
  {% for account in instruction.accounts %}
92
92
  {% if account.isSigner === 'either' %}
93
93
  {% if account.isOptional and instruction.optionalAccountStrategy === 'programId' %}
@@ -161,7 +161,7 @@ impl<'a, 'b> {{ instruction.name | pascalCase }}Cpi<'a, 'b> {
161
161
  accounts,
162
162
  data,
163
163
  };
164
- let mut account_infos = Vec::with_capacity({{ instruction.accounts.length }} + 1 + remaining_accounts.len());
164
+ let mut account_infos = Vec::with_capacity({{ instruction.accounts.length + 1 }} + remaining_accounts.len());
165
165
  account_infos.push(self.__program.clone());
166
166
  {% for account in instruction.accounts %}
167
167
  {% if account.isOptional %}
@@ -32,7 +32,7 @@ impl {{ instruction.name | pascalCase }} {
32
32
  }
33
33
  #[allow(clippy::vec_init_then_push)]
34
34
  pub fn instruction_with_remaining_accounts(&self{{ ', args: ' + instruction.name | pascalCase + 'InstructionArgs' if hasArgs }}, remaining_accounts: &[solana_program::instruction::AccountMeta]) -> solana_program::instruction::Instruction {
35
- let mut accounts = Vec::with_capacity({{ instruction.accounts.length }} + remaining_accounts.len());
35
+ let mut accounts = Vec::with_capacity({{ instruction.accounts.length + '+' if instruction.accounts.length > 0}} remaining_accounts.len());
36
36
  {% for account in instruction.accounts %}
37
37
  {% if account.isSigner === 'either' %}
38
38
  {% if account.isOptional %}
@@ -1,9 +1,12 @@
1
1
  import { RenderMap } from '@codama/renderers-core';
2
- import { LinkOverrides } from './utils';
2
+ import { LinkOverrides, TraitOptions } from './utils';
3
3
  export type GetRenderMapOptions = {
4
+ anchorTraits?: boolean;
5
+ defaultTraitOverrides?: string[];
4
6
  dependencyMap?: Record<string, string>;
5
7
  linkOverrides?: LinkOverrides;
6
8
  renderParentInstructions?: boolean;
9
+ traitOptions?: TraitOptions;
7
10
  };
8
- export declare function getRenderMapVisitor(options?: GetRenderMapOptions): import("@codama/visitors-core").Visitor<RenderMap, "accountNode" | "definedTypeNode" | "instructionNode" | "programNode" | "rootNode">;
11
+ export declare function getRenderMapVisitor(options?: GetRenderMapOptions): import("@codama/visitors-core").Visitor<RenderMap, "definedTypeNode" | "accountNode" | "instructionNode" | "programNode" | "rootNode">;
9
12
  //# sourceMappingURL=getRenderMapVisitor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getRenderMapVisitor.d.ts","sourceRoot":"","sources":["../../src/getRenderMapVisitor.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAanD,OAAO,EAAwB,aAAa,EAAU,MAAM,SAAS,CAAC;AAEtE,MAAM,MAAM,mBAAmB,GAAG;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACtC,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,mBAAwB,0IAqPpE"}
1
+ {"version":3,"file":"getRenderMapVisitor.d.ts","sourceRoot":"","sources":["../../src/getRenderMapVisitor.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAanD,OAAO,EAAkD,aAAa,EAAU,YAAY,EAAE,MAAM,SAAS,CAAC;AAE9G,MAAM,MAAM,mBAAmB,GAAG;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,YAAY,CAAC,EAAE,YAAY,CAAC;CAC/B,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,mBAAwB,0IA0PpE"}
@@ -1,5 +1,5 @@
1
1
  import { ImportMap } from './ImportMap';
2
- import { GetImportFromFunction } from './utils';
2
+ import { GetImportFromFunction, GetTraitsFromNodeFunction } from './utils';
3
3
  export type TypeManifest = {
4
4
  imports: ImportMap;
5
5
  nestedStructs: string[];
@@ -7,7 +7,8 @@ export type TypeManifest = {
7
7
  };
8
8
  export declare function getTypeManifestVisitor(options: {
9
9
  getImportFrom: GetImportFromFunction;
10
+ getTraitsFromNode: GetTraitsFromNodeFunction;
10
11
  nestedStruct?: boolean;
11
12
  parentName?: string | null;
12
- }): import("@codama/visitors-core").Visitor<TypeManifest, "definedTypeLinkNode" | "accountNode" | "definedTypeNode" | "enumEmptyVariantTypeNode" | "enumStructVariantTypeNode" | "enumTupleVariantTypeNode" | "amountTypeNode" | "arrayTypeNode" | "booleanTypeNode" | "bytesTypeNode" | "dateTimeTypeNode" | "enumTypeNode" | "fixedSizeTypeNode" | "hiddenPrefixTypeNode" | "hiddenSuffixTypeNode" | "mapTypeNode" | "numberTypeNode" | "optionTypeNode" | "postOffsetTypeNode" | "preOffsetTypeNode" | "publicKeyTypeNode" | "remainderOptionTypeNode" | "sentinelTypeNode" | "setTypeNode" | "sizePrefixTypeNode" | "solAmountTypeNode" | "stringTypeNode" | "structTypeNode" | "tupleTypeNode" | "zeroableOptionTypeNode" | "structFieldTypeNode">;
13
+ }): import("@codama/visitors-core").Visitor<TypeManifest, "definedTypeLinkNode" | "definedTypeNode" | "amountTypeNode" | "mapTypeNode" | "optionTypeNode" | "postOffsetTypeNode" | "preOffsetTypeNode" | "accountNode" | "fixedSizeTypeNode" | "hiddenPrefixTypeNode" | "hiddenSuffixTypeNode" | "sentinelTypeNode" | "sizePrefixTypeNode" | "structTypeNode" | "structFieldTypeNode" | "enumStructVariantTypeNode" | "enumTupleVariantTypeNode" | "arrayTypeNode" | "booleanTypeNode" | "dateTimeTypeNode" | "enumTypeNode" | "numberTypeNode" | "remainderOptionTypeNode" | "setTypeNode" | "solAmountTypeNode" | "stringTypeNode" | "tupleTypeNode" | "zeroableOptionTypeNode" | "bytesTypeNode" | "publicKeyTypeNode" | "enumEmptyVariantTypeNode">;
13
14
  //# sourceMappingURL=getTypeManifestVisitor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getTypeManifestVisitor.d.ts","sourceRoot":"","sources":["../../src/getTypeManifestVisitor.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAgB,MAAM,SAAS,CAAC;AAE9D,MAAM,MAAM,YAAY,GAAG;IACvB,OAAO,EAAE,SAAS,CAAC;IACnB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,OAAO,EAAE;IAC5C,aAAa,EAAE,qBAAqB,CAAC;IACrC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,utBAwcA"}
1
+ {"version":3,"file":"getTypeManifestVisitor.d.ts","sourceRoot":"","sources":["../../src/getTypeManifestVisitor.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAgB,MAAM,SAAS,CAAC;AAEzF,MAAM,MAAM,YAAY,GAAG;IACvB,OAAO,EAAE,SAAS,CAAC;IACnB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,OAAO,EAAE;IAC5C,aAAa,EAAE,qBAAqB,CAAC;IACrC,iBAAiB,EAAE,yBAAyB,CAAC;IAC7C,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,utBAgbA"}
@@ -1,4 +1,5 @@
1
1
  export * from './codecs';
2
2
  export * from './linkOverrides';
3
3
  export * from './render';
4
+ export * from './traitOptions';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC"}