@metaplex-foundation/kinobi 0.0.1
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.
- package/README.md +7 -0
- package/dist/cjs/Kinobi.js +28 -0
- package/dist/cjs/Kinobi.js.map +1 -0
- package/dist/cjs/idl/Idl.js +3 -0
- package/dist/cjs/idl/Idl.js.map +1 -0
- package/dist/cjs/idl/IdlAccount.js +3 -0
- package/dist/cjs/idl/IdlAccount.js.map +1 -0
- package/dist/cjs/idl/IdlDefinedType.js +3 -0
- package/dist/cjs/idl/IdlDefinedType.js.map +1 -0
- package/dist/cjs/idl/IdlError.js +3 -0
- package/dist/cjs/idl/IdlError.js.map +1 -0
- package/dist/cjs/idl/IdlInstruction.js +3 -0
- package/dist/cjs/idl/IdlInstruction.js.map +1 -0
- package/dist/cjs/idl/IdlType.js +3 -0
- package/dist/cjs/idl/IdlType.js.map +1 -0
- package/dist/cjs/idl/index.js +23 -0
- package/dist/cjs/idl/index.js.map +1 -0
- package/dist/cjs/index.js +22 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/logs.js +64 -0
- package/dist/cjs/logs.js.map +1 -0
- package/dist/cjs/nodes/AccountNode.js +89 -0
- package/dist/cjs/nodes/AccountNode.js.map +1 -0
- package/dist/cjs/nodes/DefinedTypeNode.js +43 -0
- package/dist/cjs/nodes/DefinedTypeNode.js.map +1 -0
- package/dist/cjs/nodes/ErrorNode.js +43 -0
- package/dist/cjs/nodes/ErrorNode.js.map +1 -0
- package/dist/cjs/nodes/InstructionNode.js +128 -0
- package/dist/cjs/nodes/InstructionNode.js.map +1 -0
- package/dist/cjs/nodes/Node.js +15 -0
- package/dist/cjs/nodes/Node.js.map +1 -0
- package/dist/cjs/nodes/ProgramNode.js +64 -0
- package/dist/cjs/nodes/ProgramNode.js.map +1 -0
- package/dist/cjs/nodes/RootNode.js +48 -0
- package/dist/cjs/nodes/RootNode.js.map +1 -0
- package/dist/cjs/nodes/TypeArrayNode.js +31 -0
- package/dist/cjs/nodes/TypeArrayNode.js.map +1 -0
- package/dist/cjs/nodes/TypeDefinedLinkNode.js +30 -0
- package/dist/cjs/nodes/TypeDefinedLinkNode.js.map +1 -0
- package/dist/cjs/nodes/TypeEnumEmptyVariantNode.js +30 -0
- package/dist/cjs/nodes/TypeEnumEmptyVariantNode.js.map +1 -0
- package/dist/cjs/nodes/TypeEnumNode.js +52 -0
- package/dist/cjs/nodes/TypeEnumNode.js.map +1 -0
- package/dist/cjs/nodes/TypeEnumStructVariantNode.js +37 -0
- package/dist/cjs/nodes/TypeEnumStructVariantNode.js.map +1 -0
- package/dist/cjs/nodes/TypeEnumTupleVariantNode.js +33 -0
- package/dist/cjs/nodes/TypeEnumTupleVariantNode.js.map +1 -0
- package/dist/cjs/nodes/TypeEnumVariantNode.js +20 -0
- package/dist/cjs/nodes/TypeEnumVariantNode.js.map +1 -0
- package/dist/cjs/nodes/TypeLeafNode.js +61 -0
- package/dist/cjs/nodes/TypeLeafNode.js.map +1 -0
- package/dist/cjs/nodes/TypeLeafWrapperNode.js +26 -0
- package/dist/cjs/nodes/TypeLeafWrapperNode.js.map +1 -0
- package/dist/cjs/nodes/TypeMapNode.js +35 -0
- package/dist/cjs/nodes/TypeMapNode.js.map +1 -0
- package/dist/cjs/nodes/TypeNode.js +103 -0
- package/dist/cjs/nodes/TypeNode.js.map +1 -0
- package/dist/cjs/nodes/TypeOptionNode.js +32 -0
- package/dist/cjs/nodes/TypeOptionNode.js.map +1 -0
- package/dist/cjs/nodes/TypeSetNode.js +32 -0
- package/dist/cjs/nodes/TypeSetNode.js.map +1 -0
- package/dist/cjs/nodes/TypeStructFieldNode.js +42 -0
- package/dist/cjs/nodes/TypeStructFieldNode.js.map +1 -0
- package/dist/cjs/nodes/TypeStructNode.js +32 -0
- package/dist/cjs/nodes/TypeStructNode.js.map +1 -0
- package/dist/cjs/nodes/TypeTupleNode.js +29 -0
- package/dist/cjs/nodes/TypeTupleNode.js.map +1 -0
- package/dist/cjs/nodes/TypeVecNode.js +29 -0
- package/dist/cjs/nodes/TypeVecNode.js.map +1 -0
- package/dist/cjs/nodes/ValueNode.js +57 -0
- package/dist/cjs/nodes/ValueNode.js.map +1 -0
- package/dist/cjs/nodes/index.js +42 -0
- package/dist/cjs/nodes/index.js.map +1 -0
- package/dist/cjs/renderers/RenderMap.js +35 -0
- package/dist/cjs/renderers/RenderMap.js.map +1 -0
- package/dist/cjs/renderers/WriteRenderMapVisitor.js +16 -0
- package/dist/cjs/renderers/WriteRenderMapVisitor.js.map +1 -0
- package/dist/cjs/renderers/index.js +21 -0
- package/dist/cjs/renderers/index.js.map +1 -0
- package/dist/cjs/renderers/js/GetJavaScriptRenderMapVisitor.js +360 -0
- package/dist/cjs/renderers/js/GetJavaScriptRenderMapVisitor.js.map +1 -0
- package/dist/cjs/renderers/js/GetJavaScriptTypeManifestVisitor.js +439 -0
- package/dist/cjs/renderers/js/GetJavaScriptTypeManifestVisitor.js.map +1 -0
- package/dist/cjs/renderers/js/GetJavaScriptValidatorBagVisitor.js +198 -0
- package/dist/cjs/renderers/js/GetJavaScriptValidatorBagVisitor.js.map +1 -0
- package/dist/cjs/renderers/js/JavaScriptImportMap.js +83 -0
- package/dist/cjs/renderers/js/JavaScriptImportMap.js.map +1 -0
- package/dist/cjs/renderers/js/RenderJavaScriptValueNode.js +125 -0
- package/dist/cjs/renderers/js/RenderJavaScriptValueNode.js.map +1 -0
- package/dist/cjs/renderers/js/RenderJavaScriptVisitor.js +28 -0
- package/dist/cjs/renderers/js/RenderJavaScriptVisitor.js.map +1 -0
- package/dist/cjs/renderers/js/index.js +23 -0
- package/dist/cjs/renderers/js/index.js.map +1 -0
- package/dist/cjs/renderers/js/templates/accountsIndex.njk +9 -0
- package/dist/cjs/renderers/js/templates/accountsPage.njk +122 -0
- package/dist/cjs/renderers/js/templates/definedTypesIndex.njk +9 -0
- package/dist/cjs/renderers/js/templates/definedTypesPage.njk +13 -0
- package/dist/cjs/renderers/js/templates/definedTypesPageDataEnums.njk +26 -0
- package/dist/cjs/renderers/js/templates/errorsIndex.njk +9 -0
- package/dist/cjs/renderers/js/templates/errorsPage.njk +43 -0
- package/dist/cjs/renderers/js/templates/instructionsIndex.njk +9 -0
- package/dist/cjs/renderers/js/templates/instructionsPage.njk +71 -0
- package/dist/cjs/renderers/js/templates/instructionsPageAccountMetas.njk +61 -0
- package/dist/cjs/renderers/js/templates/instructionsPageAccounts.njk +12 -0
- package/dist/cjs/renderers/js/templates/instructionsPageArgs.njk +7 -0
- package/dist/cjs/renderers/js/templates/layout.njk +9 -0
- package/dist/cjs/renderers/js/templates/macros.njk +40 -0
- package/dist/cjs/renderers/js/templates/programsIndex.njk +9 -0
- package/dist/cjs/renderers/js/templates/programsPage.njk +23 -0
- package/dist/cjs/renderers/js/templates/rootIndex.njk +23 -0
- package/dist/cjs/renderers/utils.js +42 -0
- package/dist/cjs/renderers/utils.js.map +1 -0
- package/dist/cjs/utils.js +47 -0
- package/dist/cjs/utils.js.map +1 -0
- package/dist/cjs/visitors/BaseDelegateVisitor.js +73 -0
- package/dist/cjs/visitors/BaseDelegateVisitor.js.map +1 -0
- package/dist/cjs/visitors/BaseNodeOrNullVisitor.js +183 -0
- package/dist/cjs/visitors/BaseNodeOrNullVisitor.js.map +1 -0
- package/dist/cjs/visitors/BaseNodeVisitor.js +144 -0
- package/dist/cjs/visitors/BaseNodeVisitor.js.map +1 -0
- package/dist/cjs/visitors/BaseThrowVisitor.js +70 -0
- package/dist/cjs/visitors/BaseThrowVisitor.js.map +1 -0
- package/dist/cjs/visitors/BaseVoidVisitor.js +81 -0
- package/dist/cjs/visitors/BaseVoidVisitor.js.map +1 -0
- package/dist/cjs/visitors/DefaultVisitor.js +53 -0
- package/dist/cjs/visitors/DefaultVisitor.js.map +1 -0
- package/dist/cjs/visitors/Dependency.js +3 -0
- package/dist/cjs/visitors/Dependency.js.map +1 -0
- package/dist/cjs/visitors/NodeSelector.js +79 -0
- package/dist/cjs/visitors/NodeSelector.js.map +1 -0
- package/dist/cjs/visitors/NodeStack.js +98 -0
- package/dist/cjs/visitors/NodeStack.js.map +1 -0
- package/dist/cjs/visitors/ValidatorBag.js +64 -0
- package/dist/cjs/visitors/ValidatorBag.js.map +1 -0
- package/dist/cjs/visitors/Visitable.js +3 -0
- package/dist/cjs/visitors/Visitable.js.map +1 -0
- package/dist/cjs/visitors/Visitor.js +3 -0
- package/dist/cjs/visitors/Visitor.js.map +1 -0
- package/dist/cjs/visitors/aggregators/GetByteSizeVisitor.js +130 -0
- package/dist/cjs/visitors/aggregators/GetByteSizeVisitor.js.map +1 -0
- package/dist/cjs/visitors/aggregators/GetDefaultValidatorBagVisitor.js +300 -0
- package/dist/cjs/visitors/aggregators/GetDefaultValidatorBagVisitor.js.map +1 -0
- package/dist/cjs/visitors/aggregators/GetDefinedTypeHistogramVisitor.js +157 -0
- package/dist/cjs/visitors/aggregators/GetDefinedTypeHistogramVisitor.js.map +1 -0
- package/dist/cjs/visitors/aggregators/GetNodeInlineStringVisitor.js +111 -0
- package/dist/cjs/visitors/aggregators/GetNodeInlineStringVisitor.js.map +1 -0
- package/dist/cjs/visitors/aggregators/GetNodeTreeStringVisitor.js +219 -0
- package/dist/cjs/visitors/aggregators/GetNodeTreeStringVisitor.js.map +1 -0
- package/dist/cjs/visitors/aggregators/GetResolvedInstructionAccountsVisitor.js +121 -0
- package/dist/cjs/visitors/aggregators/GetResolvedInstructionAccountsVisitor.js.map +1 -0
- package/dist/cjs/visitors/aggregators/index.js +23 -0
- package/dist/cjs/visitors/aggregators/index.js.map +1 -0
- package/dist/cjs/visitors/index.js +31 -0
- package/dist/cjs/visitors/index.js.map +1 -0
- package/dist/cjs/visitors/transformers/AutoSetAnchorDiscriminatorsVisitor.js +94 -0
- package/dist/cjs/visitors/transformers/AutoSetAnchorDiscriminatorsVisitor.js.map +1 -0
- package/dist/cjs/visitors/transformers/AutoSetFixedAccountSizesVisitor.js +56 -0
- package/dist/cjs/visitors/transformers/AutoSetFixedAccountSizesVisitor.js.map +1 -0
- package/dist/cjs/visitors/transformers/CreateSubInstructionsFromEnumArgsVisitor.js +100 -0
- package/dist/cjs/visitors/transformers/CreateSubInstructionsFromEnumArgsVisitor.js.map +1 -0
- package/dist/cjs/visitors/transformers/DeduplicateIdenticalDefinedTypesVisitor.js +83 -0
- package/dist/cjs/visitors/transformers/DeduplicateIdenticalDefinedTypesVisitor.js.map +1 -0
- package/dist/cjs/visitors/transformers/DeleteNodesVisitor.js +14 -0
- package/dist/cjs/visitors/transformers/DeleteNodesVisitor.js.map +1 -0
- package/dist/cjs/visitors/transformers/SetAccountDiscriminatorFromFieldVisitor.js +62 -0
- package/dist/cjs/visitors/transformers/SetAccountDiscriminatorFromFieldVisitor.js.map +1 -0
- package/dist/cjs/visitors/transformers/SetInstructionAccountDefaultValuesVisitor.js +202 -0
- package/dist/cjs/visitors/transformers/SetInstructionAccountDefaultValuesVisitor.js.map +1 -0
- package/dist/cjs/visitors/transformers/SetInstructionDiscriminatorsVisitor.js +59 -0
- package/dist/cjs/visitors/transformers/SetInstructionDiscriminatorsVisitor.js.map +1 -0
- package/dist/cjs/visitors/transformers/SetLeafWrappersVisitor.js +43 -0
- package/dist/cjs/visitors/transformers/SetLeafWrappersVisitor.js.map +1 -0
- package/dist/cjs/visitors/transformers/SetMissingDefinedTypesVisitor.js +85 -0
- package/dist/cjs/visitors/transformers/SetMissingDefinedTypesVisitor.js.map +1 -0
- package/dist/cjs/visitors/transformers/SetStructDefaultValuesVisitor.js +62 -0
- package/dist/cjs/visitors/transformers/SetStructDefaultValuesVisitor.js.map +1 -0
- package/dist/cjs/visitors/transformers/TransformNodesVisitor.js +156 -0
- package/dist/cjs/visitors/transformers/TransformNodesVisitor.js.map +1 -0
- package/dist/cjs/visitors/transformers/TransformU8ArraysToBytesVisitor.js +49 -0
- package/dist/cjs/visitors/transformers/TransformU8ArraysToBytesVisitor.js.map +1 -0
- package/dist/cjs/visitors/transformers/UnwrapDefinedTypesVisitor.js +69 -0
- package/dist/cjs/visitors/transformers/UnwrapDefinedTypesVisitor.js.map +1 -0
- package/dist/cjs/visitors/transformers/UnwrapInstructionArgsDefinedTypesVisitor.js +59 -0
- package/dist/cjs/visitors/transformers/UnwrapInstructionArgsDefinedTypesVisitor.js.map +1 -0
- package/dist/cjs/visitors/transformers/UnwrapInstructionArgsStructVisitor.js +44 -0
- package/dist/cjs/visitors/transformers/UnwrapInstructionArgsStructVisitor.js.map +1 -0
- package/dist/cjs/visitors/transformers/UnwrapStructVisitor.js +74 -0
- package/dist/cjs/visitors/transformers/UnwrapStructVisitor.js.map +1 -0
- package/dist/cjs/visitors/transformers/UpdateAccountsVisitor.js +57 -0
- package/dist/cjs/visitors/transformers/UpdateAccountsVisitor.js.map +1 -0
- package/dist/cjs/visitors/transformers/UpdateDefinedTypesVisitor.js +72 -0
- package/dist/cjs/visitors/transformers/UpdateDefinedTypesVisitor.js.map +1 -0
- package/dist/cjs/visitors/transformers/UpdateErrorsVisitor.js +50 -0
- package/dist/cjs/visitors/transformers/UpdateErrorsVisitor.js.map +1 -0
- package/dist/cjs/visitors/transformers/UpdateInstructionsVisitor.js +97 -0
- package/dist/cjs/visitors/transformers/UpdateInstructionsVisitor.js.map +1 -0
- package/dist/cjs/visitors/transformers/UpdateProgramsVisitor.js +49 -0
- package/dist/cjs/visitors/transformers/UpdateProgramsVisitor.js.map +1 -0
- package/dist/cjs/visitors/transformers/_renameHelpers.js +49 -0
- package/dist/cjs/visitors/transformers/_renameHelpers.js.map +1 -0
- package/dist/cjs/visitors/transformers/index.js +39 -0
- package/dist/cjs/visitors/transformers/index.js.map +1 -0
- package/dist/cjs/visitors/workers/ConsoleLogVisitor.js +12 -0
- package/dist/cjs/visitors/workers/ConsoleLogVisitor.js.map +1 -0
- package/dist/cjs/visitors/workers/ThrowValidatorItemsVisitor.js +38 -0
- package/dist/cjs/visitors/workers/ThrowValidatorItemsVisitor.js.map +1 -0
- package/dist/cjs/visitors/workers/index.js +19 -0
- package/dist/cjs/visitors/workers/index.js.map +1 -0
- package/dist/types/Kinobi.d.ts +9 -0
- package/dist/types/idl/Idl.d.ts +18 -0
- package/dist/types/idl/IdlAccount.d.ts +19 -0
- package/dist/types/idl/IdlDefinedType.d.ts +6 -0
- package/dist/types/idl/IdlError.d.ts +6 -0
- package/dist/types/idl/IdlInstruction.d.ts +25 -0
- package/dist/types/idl/IdlType.d.ts +60 -0
- package/dist/types/idl/index.d.ts +6 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/logs.d.ts +9 -0
- package/dist/types/nodes/AccountNode.d.ts +51 -0
- package/dist/types/nodes/DefinedTypeNode.d.ts +24 -0
- package/dist/types/nodes/ErrorNode.d.ts +21 -0
- package/dist/types/nodes/InstructionNode.d.ts +88 -0
- package/dist/types/nodes/Node.d.ts +12 -0
- package/dist/types/nodes/ProgramNode.d.ts +31 -0
- package/dist/types/nodes/RootNode.d.ts +23 -0
- package/dist/types/nodes/TypeArrayNode.d.ts +14 -0
- package/dist/types/nodes/TypeDefinedLinkNode.d.ts +12 -0
- package/dist/types/nodes/TypeEnumEmptyVariantNode.d.ts +12 -0
- package/dist/types/nodes/TypeEnumNode.d.ts +16 -0
- package/dist/types/nodes/TypeEnumStructVariantNode.d.ts +14 -0
- package/dist/types/nodes/TypeEnumTupleVariantNode.d.ts +14 -0
- package/dist/types/nodes/TypeEnumVariantNode.d.ts +7 -0
- package/dist/types/nodes/TypeLeafNode.d.ts +18 -0
- package/dist/types/nodes/TypeLeafWrapperNode.d.ts +21 -0
- package/dist/types/nodes/TypeMapNode.d.ts +15 -0
- package/dist/types/nodes/TypeNode.d.ts +19 -0
- package/dist/types/nodes/TypeOptionNode.d.ts +14 -0
- package/dist/types/nodes/TypeSetNode.d.ts +14 -0
- package/dist/types/nodes/TypeStructFieldNode.d.ts +24 -0
- package/dist/types/nodes/TypeStructNode.d.ts +14 -0
- package/dist/types/nodes/TypeTupleNode.d.ts +13 -0
- package/dist/types/nodes/TypeVecNode.d.ts +13 -0
- package/dist/types/nodes/ValueNode.d.ts +59 -0
- package/dist/types/nodes/index.d.ts +25 -0
- package/dist/types/renderers/RenderMap.d.ts +8 -0
- package/dist/types/renderers/WriteRenderMapVisitor.d.ts +8 -0
- package/dist/types/renderers/index.d.ts +4 -0
- package/dist/types/renderers/js/GetJavaScriptRenderMapVisitor.d.ts +34 -0
- package/dist/types/renderers/js/GetJavaScriptTypeManifestVisitor.d.ts +44 -0
- package/dist/types/renderers/js/GetJavaScriptValidatorBagVisitor.d.ts +19 -0
- package/dist/types/renderers/js/JavaScriptImportMap.d.ts +11 -0
- package/dist/types/renderers/js/RenderJavaScriptValueNode.d.ts +6 -0
- package/dist/types/renderers/js/RenderJavaScriptVisitor.d.ts +14 -0
- package/dist/types/renderers/js/index.d.ts +6 -0
- package/dist/types/renderers/utils.d.ts +5 -0
- package/dist/types/utils.d.ts +8 -0
- package/dist/types/visitors/BaseDelegateVisitor.d.ts +28 -0
- package/dist/types/visitors/BaseNodeOrNullVisitor.d.ts +25 -0
- package/dist/types/visitors/BaseNodeVisitor.d.ts +25 -0
- package/dist/types/visitors/BaseThrowVisitor.d.ts +25 -0
- package/dist/types/visitors/BaseVoidVisitor.d.ts +25 -0
- package/dist/types/visitors/DefaultVisitor.d.ts +5 -0
- package/dist/types/visitors/Dependency.d.ts +17 -0
- package/dist/types/visitors/NodeSelector.d.ts +11 -0
- package/dist/types/visitors/NodeStack.d.ts +14 -0
- package/dist/types/visitors/ValidatorBag.d.ts +22 -0
- package/dist/types/visitors/Visitable.d.ts +4 -0
- package/dist/types/visitors/Visitor.d.ts +24 -0
- package/dist/types/visitors/aggregators/GetByteSizeVisitor.d.ts +27 -0
- package/dist/types/visitors/aggregators/GetDefaultValidatorBagVisitor.d.ts +32 -0
- package/dist/types/visitors/aggregators/GetDefinedTypeHistogramVisitor.d.ts +37 -0
- package/dist/types/visitors/aggregators/GetNodeInlineStringVisitor.d.ts +25 -0
- package/dist/types/visitors/aggregators/GetNodeTreeStringVisitor.d.ts +29 -0
- package/dist/types/visitors/aggregators/GetResolvedInstructionAccountsVisitor.d.ts +19 -0
- package/dist/types/visitors/aggregators/index.d.ts +6 -0
- package/dist/types/visitors/index.d.ts +14 -0
- package/dist/types/visitors/transformers/AutoSetAnchorDiscriminatorsVisitor.d.ts +8 -0
- package/dist/types/visitors/transformers/AutoSetFixedAccountSizesVisitor.d.ts +5 -0
- package/dist/types/visitors/transformers/CreateSubInstructionsFromEnumArgsVisitor.d.ts +8 -0
- package/dist/types/visitors/transformers/DeduplicateIdenticalDefinedTypesVisitor.d.ts +5 -0
- package/dist/types/visitors/transformers/DeleteNodesVisitor.d.ts +5 -0
- package/dist/types/visitors/transformers/SetAccountDiscriminatorFromFieldVisitor.d.ts +12 -0
- package/dist/types/visitors/transformers/SetInstructionAccountDefaultValuesVisitor.d.ts +27 -0
- package/dist/types/visitors/transformers/SetInstructionDiscriminatorsVisitor.d.ts +18 -0
- package/dist/types/visitors/transformers/SetLeafWrappersVisitor.d.ts +8 -0
- package/dist/types/visitors/transformers/SetMissingDefinedTypesVisitor.d.ts +7 -0
- package/dist/types/visitors/transformers/SetStructDefaultValuesVisitor.d.ts +11 -0
- package/dist/types/visitors/transformers/TransformNodesVisitor.d.ts +37 -0
- package/dist/types/visitors/transformers/TransformU8ArraysToBytesVisitor.d.ts +8 -0
- package/dist/types/visitors/transformers/UnwrapDefinedTypesVisitor.d.ts +11 -0
- package/dist/types/visitors/transformers/UnwrapInstructionArgsDefinedTypesVisitor.d.ts +5 -0
- package/dist/types/visitors/transformers/UnwrapInstructionArgsStructVisitor.d.ts +4 -0
- package/dist/types/visitors/transformers/UnwrapStructVisitor.d.ts +8 -0
- package/dist/types/visitors/transformers/UpdateAccountsVisitor.d.ts +11 -0
- package/dist/types/visitors/transformers/UpdateDefinedTypesVisitor.d.ts +11 -0
- package/dist/types/visitors/transformers/UpdateErrorsVisitor.d.ts +12 -0
- package/dist/types/visitors/transformers/UpdateInstructionsVisitor.d.ts +41 -0
- package/dist/types/visitors/transformers/UpdateProgramsVisitor.d.ts +9 -0
- package/dist/types/visitors/transformers/_renameHelpers.d.ts +3 -0
- package/dist/types/visitors/transformers/index.d.ts +22 -0
- package/dist/types/visitors/workers/ConsoleLogVisitor.d.ts +4 -0
- package/dist/types/visitors/workers/ThrowValidatorItemsVisitor.d.ts +9 -0
- package/dist/types/visitors/workers/index.d.ts +2 -0
- package/package.json +72 -0
- package/src/Kinobi.ts +28 -0
- package/src/idl/Idl.ts +19 -0
- package/src/idl/IdlAccount.ts +14 -0
- package/src/idl/IdlDefinedType.ts +7 -0
- package/src/idl/IdlError.ts +6 -0
- package/src/idl/IdlInstruction.ts +29 -0
- package/src/idl/IdlType.ts +72 -0
- package/src/idl/index.ts +6 -0
- package/src/index.ts +5 -0
- package/src/logs.ts +77 -0
- package/src/nodes/AccountNode.ts +126 -0
- package/src/nodes/DefinedTypeNode.ts +69 -0
- package/src/nodes/ErrorNode.ts +57 -0
- package/src/nodes/InstructionNode.ts +215 -0
- package/src/nodes/Node.ts +40 -0
- package/src/nodes/ProgramNode.ts +101 -0
- package/src/nodes/RootNode.ts +64 -0
- package/src/nodes/TypeArrayNode.ts +40 -0
- package/src/nodes/TypeDefinedLinkNode.ts +40 -0
- package/src/nodes/TypeEnumEmptyVariantNode.ts +38 -0
- package/src/nodes/TypeEnumNode.ts +67 -0
- package/src/nodes/TypeEnumStructVariantNode.ts +50 -0
- package/src/nodes/TypeEnumTupleVariantNode.ts +46 -0
- package/src/nodes/TypeEnumVariantNode.ts +32 -0
- package/src/nodes/TypeLeafNode.ts +73 -0
- package/src/nodes/TypeLeafWrapperNode.ts +41 -0
- package/src/nodes/TypeMapNode.ts +48 -0
- package/src/nodes/TypeNode.ts +138 -0
- package/src/nodes/TypeOptionNode.ts +41 -0
- package/src/nodes/TypeSetNode.ts +39 -0
- package/src/nodes/TypeStructFieldNode.ts +63 -0
- package/src/nodes/TypeStructNode.ts +43 -0
- package/src/nodes/TypeTupleNode.ts +36 -0
- package/src/nodes/TypeVecNode.ts +34 -0
- package/src/nodes/ValueNode.ts +92 -0
- package/src/nodes/index.ts +25 -0
- package/src/renderers/RenderMap.ts +34 -0
- package/src/renderers/WriteRenderMapVisitor.ts +15 -0
- package/src/renderers/index.ts +4 -0
- package/src/renderers/js/GetJavaScriptRenderMapVisitor.ts +437 -0
- package/src/renderers/js/GetJavaScriptTypeManifestVisitor.ts +522 -0
- package/src/renderers/js/GetJavaScriptValidatorBagVisitor.ts +202 -0
- package/src/renderers/js/JavaScriptImportMap.ts +89 -0
- package/src/renderers/js/RenderJavaScriptValueNode.ts +110 -0
- package/src/renderers/js/RenderJavaScriptVisitor.ts +45 -0
- package/src/renderers/js/index.ts +6 -0
- package/src/renderers/js/templates/accountsIndex.njk +9 -0
- package/src/renderers/js/templates/accountsPage.njk +122 -0
- package/src/renderers/js/templates/definedTypesIndex.njk +9 -0
- package/src/renderers/js/templates/definedTypesPage.njk +13 -0
- package/src/renderers/js/templates/definedTypesPageDataEnums.njk +26 -0
- package/src/renderers/js/templates/errorsIndex.njk +9 -0
- package/src/renderers/js/templates/errorsPage.njk +43 -0
- package/src/renderers/js/templates/instructionsIndex.njk +9 -0
- package/src/renderers/js/templates/instructionsPage.njk +71 -0
- package/src/renderers/js/templates/instructionsPageAccountMetas.njk +61 -0
- package/src/renderers/js/templates/instructionsPageAccounts.njk +12 -0
- package/src/renderers/js/templates/instructionsPageArgs.njk +7 -0
- package/src/renderers/js/templates/layout.njk +9 -0
- package/src/renderers/js/templates/macros.njk +40 -0
- package/src/renderers/js/templates/programsIndex.njk +9 -0
- package/src/renderers/js/templates/programsPage.njk +23 -0
- package/src/renderers/js/templates/rootIndex.njk +23 -0
- package/src/renderers/utils.ts +46 -0
- package/src/utils.ts +41 -0
- package/src/visitors/BaseDelegateVisitor.ts +98 -0
- package/src/visitors/BaseNodeOrNullVisitor.ts +202 -0
- package/src/visitors/BaseNodeVisitor.ts +173 -0
- package/src/visitors/BaseThrowVisitor.ts +101 -0
- package/src/visitors/BaseVoidVisitor.ts +104 -0
- package/src/visitors/DefaultVisitor.ts +45 -0
- package/src/visitors/Dependency.ts +23 -0
- package/src/visitors/NodeSelector.ts +82 -0
- package/src/visitors/NodeStack.ts +109 -0
- package/src/visitors/ValidatorBag.ts +90 -0
- package/src/visitors/Visitable.ts +5 -0
- package/src/visitors/Visitor.ts +36 -0
- package/src/visitors/aggregators/GetByteSizeVisitor.ts +167 -0
- package/src/visitors/aggregators/GetDefaultValidatorBagVisitor.ts +332 -0
- package/src/visitors/aggregators/GetDefinedTypeHistogramVisitor.ts +213 -0
- package/src/visitors/aggregators/GetNodeInlineStringVisitor.ts +140 -0
- package/src/visitors/aggregators/GetNodeTreeStringVisitor.ts +260 -0
- package/src/visitors/aggregators/GetResolvedInstructionAccountsVisitor.ts +153 -0
- package/src/visitors/aggregators/index.ts +6 -0
- package/src/visitors/index.ts +15 -0
- package/src/visitors/transformers/AutoSetAnchorDiscriminatorsVisitor.ts +90 -0
- package/src/visitors/transformers/AutoSetFixedAccountSizesVisitor.ts +31 -0
- package/src/visitors/transformers/CreateSubInstructionsFromEnumArgsVisitor.ts +117 -0
- package/src/visitors/transformers/DeduplicateIdenticalDefinedTypesVisitor.ts +72 -0
- package/src/visitors/transformers/DeleteNodesVisitor.ts +13 -0
- package/src/visitors/transformers/SetAccountDiscriminatorFromFieldVisitor.ts +52 -0
- package/src/visitors/transformers/SetInstructionAccountDefaultValuesVisitor.ts +236 -0
- package/src/visitors/transformers/SetInstructionDiscriminatorsVisitor.ts +54 -0
- package/src/visitors/transformers/SetLeafWrappersVisitor.ts +20 -0
- package/src/visitors/transformers/SetMissingDefinedTypesVisitor.ts +73 -0
- package/src/visitors/transformers/SetStructDefaultValuesVisitor.ts +45 -0
- package/src/visitors/transformers/TransformNodesVisitor.ts +215 -0
- package/src/visitors/transformers/TransformU8ArraysToBytesVisitor.ts +27 -0
- package/src/visitors/transformers/UnwrapDefinedTypesVisitor.ts +65 -0
- package/src/visitors/transformers/UnwrapInstructionArgsDefinedTypesVisitor.ts +35 -0
- package/src/visitors/transformers/UnwrapInstructionArgsStructVisitor.ts +22 -0
- package/src/visitors/transformers/UnwrapStructVisitor.ts +62 -0
- package/src/visitors/transformers/UpdateAccountsVisitor.ts +45 -0
- package/src/visitors/transformers/UpdateDefinedTypesVisitor.ts +71 -0
- package/src/visitors/transformers/UpdateErrorsVisitor.ts +41 -0
- package/src/visitors/transformers/UpdateInstructionsVisitor.ts +135 -0
- package/src/visitors/transformers/UpdateProgramsVisitor.ts +39 -0
- package/src/visitors/transformers/_renameHelpers.ts +47 -0
- package/src/visitors/transformers/index.ts +22 -0
- package/src/visitors/workers/ConsoleLogVisitor.ts +8 -0
- package/src/visitors/workers/ThrowValidatorItemsVisitor.ts +42 -0
- package/src/visitors/workers/index.ts +2 -0
package/src/idl/Idl.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { IdlAccount } from './IdlAccount';
|
|
2
|
+
import type { IdlDefinedType } from './IdlDefinedType';
|
|
3
|
+
import type { IdlError } from './IdlError';
|
|
4
|
+
import type { IdlInstruction } from './IdlInstruction';
|
|
5
|
+
|
|
6
|
+
export type Idl = {
|
|
7
|
+
version: string;
|
|
8
|
+
name: string;
|
|
9
|
+
instructions: IdlInstruction[];
|
|
10
|
+
accounts?: IdlAccount[];
|
|
11
|
+
errors?: IdlError[];
|
|
12
|
+
types?: IdlDefinedType[];
|
|
13
|
+
metadata: {
|
|
14
|
+
address: string;
|
|
15
|
+
origin?: 'anchor' | 'shank';
|
|
16
|
+
binaryVersion?: string;
|
|
17
|
+
libVersion?: string;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { IdlTypeLeaf, IdlTypeStruct } from './IdlType';
|
|
2
|
+
|
|
3
|
+
export type IdlAccount = {
|
|
4
|
+
name: string;
|
|
5
|
+
type: IdlTypeStruct;
|
|
6
|
+
docs?: string[];
|
|
7
|
+
seeds?: IdlAccountSeed[];
|
|
8
|
+
size?: number;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export type IdlAccountSeed =
|
|
12
|
+
| { kind: 'programId' }
|
|
13
|
+
| { kind: 'literal'; value: string }
|
|
14
|
+
| { kind: 'variable'; name: string; description: string; type: IdlTypeLeaf };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { IdlType } from './IdlType';
|
|
2
|
+
|
|
3
|
+
export type IdlInstruction = {
|
|
4
|
+
name: string;
|
|
5
|
+
accounts: IdlInstructionAccount[];
|
|
6
|
+
args: IdlInstructionArg[];
|
|
7
|
+
defaultOptionalAccounts?: boolean;
|
|
8
|
+
discriminant?: IdlInstructionDiscriminant;
|
|
9
|
+
docs?: string[];
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export type IdlInstructionAccount = {
|
|
13
|
+
name: string;
|
|
14
|
+
isMut: boolean;
|
|
15
|
+
isSigner: boolean;
|
|
16
|
+
isOptionalSigner?: boolean;
|
|
17
|
+
desc?: string;
|
|
18
|
+
optional?: boolean;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export type IdlInstructionArg = {
|
|
22
|
+
name: string;
|
|
23
|
+
type: IdlType;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export type IdlInstructionDiscriminant = {
|
|
27
|
+
type: IdlType;
|
|
28
|
+
value: number;
|
|
29
|
+
};
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
export type IdlType =
|
|
2
|
+
| IdlTypeDefinedLink
|
|
3
|
+
| IdlTypeOption
|
|
4
|
+
| IdlTypeTuple
|
|
5
|
+
| IdlTypeVec
|
|
6
|
+
| IdlTypeArray
|
|
7
|
+
| IdlTypeMap
|
|
8
|
+
| IdlTypeSet
|
|
9
|
+
| IdlTypeStruct
|
|
10
|
+
| IdlTypeEnum
|
|
11
|
+
| IdlTypeLeaf;
|
|
12
|
+
|
|
13
|
+
// Defined.
|
|
14
|
+
export type IdlTypeDefinedLink = { defined: string };
|
|
15
|
+
|
|
16
|
+
// Options.
|
|
17
|
+
export type IdlTypeOption = { option: IdlType } | { coption: IdlType };
|
|
18
|
+
|
|
19
|
+
// Lists.
|
|
20
|
+
export type IdlTypeTuple = { tuple: IdlType[] };
|
|
21
|
+
export type IdlTypeVec = { vec: IdlType };
|
|
22
|
+
export type IdlTypeArray = { array: [idlType: IdlType, size: number] };
|
|
23
|
+
|
|
24
|
+
// Maps.
|
|
25
|
+
export type IdlTypeMap = IdlTypeHashMap | IdlTypeBTreeMap;
|
|
26
|
+
export type IdlTypeHashMap = { hashMap: [IdlType, IdlType] };
|
|
27
|
+
export type IdlTypeBTreeMap = { bTreeMap: [IdlType, IdlType] };
|
|
28
|
+
|
|
29
|
+
// Sets.
|
|
30
|
+
export type IdlTypeSet = IdlTypeHashSet | IdlTypeBTreeSet;
|
|
31
|
+
export type IdlTypeHashSet = { hashSet: IdlType };
|
|
32
|
+
export type IdlTypeBTreeSet = { bTreeSet: IdlType };
|
|
33
|
+
|
|
34
|
+
// Struct.
|
|
35
|
+
export type IdlTypeStruct = {
|
|
36
|
+
kind: 'struct';
|
|
37
|
+
name?: string;
|
|
38
|
+
fields: IdlTypeStructField[];
|
|
39
|
+
};
|
|
40
|
+
export type IdlTypeStructField = {
|
|
41
|
+
name: string;
|
|
42
|
+
type: IdlType;
|
|
43
|
+
docs?: string[];
|
|
44
|
+
defaultsValue?: any;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
// Enums.
|
|
48
|
+
export type IdlTypeEnum = {
|
|
49
|
+
kind: 'enum';
|
|
50
|
+
name?: string;
|
|
51
|
+
variants: IdlTypeEnumVariant[];
|
|
52
|
+
};
|
|
53
|
+
export type IdlTypeEnumVariant = { name: string; fields?: IdlTypeEnumFields };
|
|
54
|
+
export type IdlTypeEnumFields = IdlTypeEnumField[] | IdlType[];
|
|
55
|
+
export type IdlTypeEnumField = { name: string; type: IdlType; docs?: string[] };
|
|
56
|
+
|
|
57
|
+
// Leaves.
|
|
58
|
+
export type IdlTypeLeaf = IdlTypeNumber | 'string' | 'publicKey' | 'bytes';
|
|
59
|
+
export type IdlTypeNumber =
|
|
60
|
+
| 'bool'
|
|
61
|
+
| 'u8'
|
|
62
|
+
| 'u16'
|
|
63
|
+
| 'u32'
|
|
64
|
+
| 'u64'
|
|
65
|
+
| 'u128'
|
|
66
|
+
| 'i8'
|
|
67
|
+
| 'i16'
|
|
68
|
+
| 'i32'
|
|
69
|
+
| 'i64'
|
|
70
|
+
| 'i128'
|
|
71
|
+
| 'f32'
|
|
72
|
+
| 'f64';
|
package/src/idl/index.ts
ADDED
package/src/index.ts
ADDED
package/src/logs.ts
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/* eslint-disable no-console */
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
|
|
4
|
+
const DEFAULT_LOG_LEVEL = 'info';
|
|
5
|
+
export const LOG_LEVELS = ['debug', 'trace', 'info', 'warn', 'error'] as const;
|
|
6
|
+
export type LogLevel = typeof LOG_LEVELS[number];
|
|
7
|
+
|
|
8
|
+
export const logError = (message: string, hint?: string): void => {
|
|
9
|
+
if (!shouldLogLevel('error')) return;
|
|
10
|
+
logMessageAndHint(
|
|
11
|
+
`${chalk.bgRed.black(' Error ')} ${chalk.redBright(message)}`,
|
|
12
|
+
hint
|
|
13
|
+
);
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export const logWarn = (message: string, hint?: string): void => {
|
|
17
|
+
if (!shouldLogLevel('warn')) return;
|
|
18
|
+
logMessageAndHint(
|
|
19
|
+
`${chalk.bgYellow.black(' Warning ')} ${chalk.yellow(message)}`,
|
|
20
|
+
hint
|
|
21
|
+
);
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export const logInfo = (message: string, hint?: string): void => {
|
|
25
|
+
if (!shouldLogLevel('info')) return;
|
|
26
|
+
logMessageAndHint(
|
|
27
|
+
`${chalk.bgBlue.black(' Info ')} ${chalk.blue(message)}`,
|
|
28
|
+
hint
|
|
29
|
+
);
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export const logTrace = (message: string, hint?: string): void => {
|
|
33
|
+
if (!shouldLogLevel('trace')) return;
|
|
34
|
+
logMessageAndHint(
|
|
35
|
+
`${chalk.bgWhite.black(' Trace ')} ${chalk.white(message)}`,
|
|
36
|
+
hint
|
|
37
|
+
);
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export const logDebug = (message: string, debug?: any, hint?: string): void => {
|
|
41
|
+
if (!shouldLogLevel('debug')) return;
|
|
42
|
+
logMessageAndHint(
|
|
43
|
+
`${chalk.bgMagentaBright.black(' Debug ')} ${chalk.magentaBright(message)}`,
|
|
44
|
+
hint,
|
|
45
|
+
false
|
|
46
|
+
);
|
|
47
|
+
if (debug !== undefined) console.log(debug);
|
|
48
|
+
console.log('\n');
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
export const getLevelIndex = (level: LogLevel): number =>
|
|
52
|
+
LOG_LEVELS.indexOf(level);
|
|
53
|
+
|
|
54
|
+
export const shouldLogLevel = (level: LogLevel): boolean =>
|
|
55
|
+
getLevelIndex(level) >= getLevelIndex(getMinLogLevel());
|
|
56
|
+
|
|
57
|
+
const getMinLogLevel = (): LogLevel => {
|
|
58
|
+
const level = process.env.LOG;
|
|
59
|
+
if (level && LOG_LEVELS.includes(level as LogLevel)) {
|
|
60
|
+
return level as LogLevel;
|
|
61
|
+
}
|
|
62
|
+
return DEFAULT_LOG_LEVEL;
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
const logMessageAndHint = (
|
|
66
|
+
message: string,
|
|
67
|
+
hint?: string,
|
|
68
|
+
lineJump = true
|
|
69
|
+
): void => {
|
|
70
|
+
console.log(message + getDimmedHint(hint) + (lineJump ? '\n' : ''));
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
const getDimmedHint = (hint?: string, prefix = '|> '): string => {
|
|
74
|
+
if (!hint) return '';
|
|
75
|
+
const hintArray = (hint ?? '').split('\n').filter((line) => !!line);
|
|
76
|
+
return chalk.dim(hintArray.map((h) => `\n${prefix}${h}`).join(''));
|
|
77
|
+
};
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { mainCase } from '../utils';
|
|
2
|
+
import type { IdlAccount } from '../idl';
|
|
3
|
+
import type { Visitable, Visitor } from '../visitors';
|
|
4
|
+
import type { Node } from './Node';
|
|
5
|
+
import { createTypeNodeFromIdl, TypeNode } from './TypeNode';
|
|
6
|
+
import { assertTypeStructNode, TypeStructNode } from './TypeStructNode';
|
|
7
|
+
import type { InstructionNodeAccountDefaultsSeed } from './InstructionNode';
|
|
8
|
+
import { isTypeLeafNode } from './TypeLeafNode';
|
|
9
|
+
import { TypeStructFieldNode } from './TypeStructFieldNode';
|
|
10
|
+
|
|
11
|
+
export type AccountNodeMetadata = {
|
|
12
|
+
readonly name: string;
|
|
13
|
+
readonly idlName: string;
|
|
14
|
+
readonly docs: string[];
|
|
15
|
+
readonly internal: boolean;
|
|
16
|
+
readonly size: number | null;
|
|
17
|
+
readonly discriminator: AccountNodeDiscriminator | null;
|
|
18
|
+
readonly seeds: AccountNodeSeed[];
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export type AccountNodeDiscriminator =
|
|
22
|
+
| { kind: 'field'; name: string }
|
|
23
|
+
| { kind: 'size' };
|
|
24
|
+
|
|
25
|
+
export type AccountNodeSeed =
|
|
26
|
+
| { kind: 'programId' }
|
|
27
|
+
| { kind: 'literal'; value: string }
|
|
28
|
+
| { kind: 'variable'; name: string; description: string; type: TypeNode };
|
|
29
|
+
|
|
30
|
+
export class AccountNode implements Visitable {
|
|
31
|
+
readonly nodeClass = 'AccountNode' as const;
|
|
32
|
+
|
|
33
|
+
readonly metadata: AccountNodeMetadata;
|
|
34
|
+
|
|
35
|
+
readonly type: TypeStructNode;
|
|
36
|
+
|
|
37
|
+
constructor(metadata: AccountNodeMetadata, type: TypeStructNode) {
|
|
38
|
+
this.metadata = {
|
|
39
|
+
...metadata,
|
|
40
|
+
name: mainCase(metadata.name),
|
|
41
|
+
seeds: metadata.seeds.map((seed) =>
|
|
42
|
+
'name' in seed ? { ...seed, name: mainCase(seed.name) } : seed
|
|
43
|
+
),
|
|
44
|
+
};
|
|
45
|
+
this.type = type;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
static fromIdl(idl: Partial<IdlAccount>): AccountNode {
|
|
49
|
+
const name = idl.name ?? '';
|
|
50
|
+
const idlStruct = idl.type ?? { kind: 'struct', fields: [] };
|
|
51
|
+
const type = createTypeNodeFromIdl({ name, ...idlStruct });
|
|
52
|
+
assertTypeStructNode(type);
|
|
53
|
+
const seeds = (idl.seeds ?? []).map((seed) => {
|
|
54
|
+
if (seed.kind === 'variable') {
|
|
55
|
+
return { ...seed, type: createTypeNodeFromIdl(seed.type) };
|
|
56
|
+
}
|
|
57
|
+
return seed;
|
|
58
|
+
});
|
|
59
|
+
const metadata = {
|
|
60
|
+
name,
|
|
61
|
+
idlName: name,
|
|
62
|
+
docs: idl.docs ?? [],
|
|
63
|
+
internal: false,
|
|
64
|
+
size: idl.size ?? null,
|
|
65
|
+
discriminator: null,
|
|
66
|
+
seeds,
|
|
67
|
+
};
|
|
68
|
+
return new AccountNode(metadata, type);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
accept<T>(visitor: Visitor<T>): T {
|
|
72
|
+
return visitor.visitAccount(this);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
get name(): string {
|
|
76
|
+
return this.metadata.name;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
get docs(): string[] {
|
|
80
|
+
return this.metadata.docs;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
get discriminatorField(): TypeStructFieldNode | null {
|
|
84
|
+
if (this.metadata.discriminator?.kind !== 'field') return null;
|
|
85
|
+
const { name } = this.metadata.discriminator;
|
|
86
|
+
return name ? this.type.fields.find((f) => f.name === name) ?? null : null;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
get variableSeeds(): Extract<AccountNodeSeed, { kind: 'variable' }>[] {
|
|
90
|
+
return this.metadata.seeds.filter(
|
|
91
|
+
(seed): seed is Extract<AccountNodeSeed, { kind: 'variable' }> =>
|
|
92
|
+
seed.kind === 'variable'
|
|
93
|
+
);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
get hasVariableSeeds(): boolean {
|
|
97
|
+
return this.variableSeeds.length > 0;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
get instructionAccountDefaultSeeds(): Record<
|
|
101
|
+
string,
|
|
102
|
+
InstructionNodeAccountDefaultsSeed
|
|
103
|
+
> {
|
|
104
|
+
return this.metadata.seeds.reduce((acc, seed) => {
|
|
105
|
+
if (seed.kind !== 'variable') return acc;
|
|
106
|
+
if (isTypeLeafNode(seed.type) && seed.type.type === 'publicKey') {
|
|
107
|
+
acc[seed.name] = { kind: 'account', name: seed.name };
|
|
108
|
+
} else {
|
|
109
|
+
acc[seed.name] = { kind: 'arg', name: seed.name };
|
|
110
|
+
}
|
|
111
|
+
return acc;
|
|
112
|
+
}, {} as Record<string, InstructionNodeAccountDefaultsSeed>);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export function isAccountNode(node: Node | null): node is AccountNode {
|
|
117
|
+
return !!node && node.nodeClass === 'AccountNode';
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
export function assertAccountNode(
|
|
121
|
+
node: Node | null
|
|
122
|
+
): asserts node is AccountNode {
|
|
123
|
+
if (!isAccountNode(node)) {
|
|
124
|
+
throw new Error(`Expected AccountNode, got ${node?.nodeClass ?? 'null'}.`);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { mainCase } from '../utils';
|
|
2
|
+
import type { IdlDefinedType } from '../idl';
|
|
3
|
+
import type { Dependency, Visitable, Visitor } from '../visitors';
|
|
4
|
+
import type { Node } from './Node';
|
|
5
|
+
import type { TypeEnumNode } from './TypeEnumNode';
|
|
6
|
+
import { assertTypeStructOrEnumNode, createTypeNodeFromIdl } from './TypeNode';
|
|
7
|
+
import type { TypeStructNode } from './TypeStructNode';
|
|
8
|
+
|
|
9
|
+
export type DefinedTypeNodeMetadata = {
|
|
10
|
+
name: string;
|
|
11
|
+
idlName: string;
|
|
12
|
+
docs: string[];
|
|
13
|
+
importFrom: Dependency;
|
|
14
|
+
internal: boolean;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export class DefinedTypeNode implements Visitable {
|
|
18
|
+
readonly nodeClass = 'DefinedTypeNode' as const;
|
|
19
|
+
|
|
20
|
+
readonly metadata: DefinedTypeNodeMetadata;
|
|
21
|
+
|
|
22
|
+
readonly type: TypeStructNode | TypeEnumNode;
|
|
23
|
+
|
|
24
|
+
constructor(
|
|
25
|
+
metadata: DefinedTypeNodeMetadata,
|
|
26
|
+
type: TypeStructNode | TypeEnumNode
|
|
27
|
+
) {
|
|
28
|
+
this.metadata = { ...metadata, name: mainCase(metadata.name) };
|
|
29
|
+
this.type = type;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
static fromIdl(idl: Partial<IdlDefinedType>): DefinedTypeNode {
|
|
33
|
+
const name = idl.name ?? '';
|
|
34
|
+
const docs = idl.docs ?? [];
|
|
35
|
+
const idlType = idl.type ?? { kind: 'struct', fields: [] };
|
|
36
|
+
const type = createTypeNodeFromIdl({ name, ...idlType });
|
|
37
|
+
assertTypeStructOrEnumNode(type);
|
|
38
|
+
return new DefinedTypeNode(
|
|
39
|
+
{ name, idlName: name, docs, importFrom: 'generated', internal: false },
|
|
40
|
+
type
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
accept<T>(visitor: Visitor<T>): T {
|
|
45
|
+
return visitor.visitDefinedType(this);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
get name(): string {
|
|
49
|
+
return this.metadata.name;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
get docs(): string[] {
|
|
53
|
+
return this.metadata.docs;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export function isDefinedTypeNode(node: Node | null): node is DefinedTypeNode {
|
|
58
|
+
return !!node && node.nodeClass === 'DefinedTypeNode';
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export function assertDefinedTypeNode(
|
|
62
|
+
node: Node | null
|
|
63
|
+
): asserts node is DefinedTypeNode {
|
|
64
|
+
if (!isDefinedTypeNode(node)) {
|
|
65
|
+
throw new Error(
|
|
66
|
+
`Expected DefinedTypeNode, got ${node?.nodeClass ?? 'null'}.`
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { IdlError } from '../idl';
|
|
2
|
+
import { mainCase } from '../utils';
|
|
3
|
+
import type { Visitable, Visitor } from '../visitors';
|
|
4
|
+
import type { Node } from './Node';
|
|
5
|
+
|
|
6
|
+
export type ErrorNodeMetadata = {
|
|
7
|
+
name: string;
|
|
8
|
+
idlName: string;
|
|
9
|
+
docs: string[];
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export class ErrorNode implements Visitable {
|
|
13
|
+
readonly nodeClass = 'ErrorNode' as const;
|
|
14
|
+
|
|
15
|
+
readonly metadata: ErrorNodeMetadata;
|
|
16
|
+
|
|
17
|
+
readonly code: number;
|
|
18
|
+
|
|
19
|
+
readonly message: string;
|
|
20
|
+
|
|
21
|
+
constructor(metadata: ErrorNodeMetadata, code: number, message: string) {
|
|
22
|
+
this.metadata = { ...metadata, name: mainCase(metadata.name) };
|
|
23
|
+
this.code = code;
|
|
24
|
+
this.message = message;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
static fromIdl(idl: Partial<IdlError>): ErrorNode {
|
|
28
|
+
const name = idl.name ?? '';
|
|
29
|
+
const code = idl.code ?? -1;
|
|
30
|
+
const message = idl.msg ?? '';
|
|
31
|
+
const defaultDocs = [`${name}: '${message}'`];
|
|
32
|
+
const docs = idl.docs ?? defaultDocs;
|
|
33
|
+
return new ErrorNode({ name, idlName: name, docs }, code, message);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
accept<T>(visitor: Visitor<T>): T {
|
|
37
|
+
return visitor.visitError(this);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
get name(): string {
|
|
41
|
+
return this.metadata.name;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
get docs(): string[] {
|
|
45
|
+
return this.metadata.docs;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export function isErrorNode(node: Node | null): node is ErrorNode {
|
|
50
|
+
return !!node && node.nodeClass === 'ErrorNode';
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export function assertErrorNode(node: Node | null): asserts node is ErrorNode {
|
|
54
|
+
if (!isErrorNode(node)) {
|
|
55
|
+
throw new Error(`Expected ErrorNode, got ${node?.nodeClass ?? 'null'}.`);
|
|
56
|
+
}
|
|
57
|
+
}
|