@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.
Files changed (416) hide show
  1. package/README.md +7 -0
  2. package/dist/cjs/Kinobi.js +28 -0
  3. package/dist/cjs/Kinobi.js.map +1 -0
  4. package/dist/cjs/idl/Idl.js +3 -0
  5. package/dist/cjs/idl/Idl.js.map +1 -0
  6. package/dist/cjs/idl/IdlAccount.js +3 -0
  7. package/dist/cjs/idl/IdlAccount.js.map +1 -0
  8. package/dist/cjs/idl/IdlDefinedType.js +3 -0
  9. package/dist/cjs/idl/IdlDefinedType.js.map +1 -0
  10. package/dist/cjs/idl/IdlError.js +3 -0
  11. package/dist/cjs/idl/IdlError.js.map +1 -0
  12. package/dist/cjs/idl/IdlInstruction.js +3 -0
  13. package/dist/cjs/idl/IdlInstruction.js.map +1 -0
  14. package/dist/cjs/idl/IdlType.js +3 -0
  15. package/dist/cjs/idl/IdlType.js.map +1 -0
  16. package/dist/cjs/idl/index.js +23 -0
  17. package/dist/cjs/idl/index.js.map +1 -0
  18. package/dist/cjs/index.js +22 -0
  19. package/dist/cjs/index.js.map +1 -0
  20. package/dist/cjs/logs.js +64 -0
  21. package/dist/cjs/logs.js.map +1 -0
  22. package/dist/cjs/nodes/AccountNode.js +89 -0
  23. package/dist/cjs/nodes/AccountNode.js.map +1 -0
  24. package/dist/cjs/nodes/DefinedTypeNode.js +43 -0
  25. package/dist/cjs/nodes/DefinedTypeNode.js.map +1 -0
  26. package/dist/cjs/nodes/ErrorNode.js +43 -0
  27. package/dist/cjs/nodes/ErrorNode.js.map +1 -0
  28. package/dist/cjs/nodes/InstructionNode.js +128 -0
  29. package/dist/cjs/nodes/InstructionNode.js.map +1 -0
  30. package/dist/cjs/nodes/Node.js +15 -0
  31. package/dist/cjs/nodes/Node.js.map +1 -0
  32. package/dist/cjs/nodes/ProgramNode.js +64 -0
  33. package/dist/cjs/nodes/ProgramNode.js.map +1 -0
  34. package/dist/cjs/nodes/RootNode.js +48 -0
  35. package/dist/cjs/nodes/RootNode.js.map +1 -0
  36. package/dist/cjs/nodes/TypeArrayNode.js +31 -0
  37. package/dist/cjs/nodes/TypeArrayNode.js.map +1 -0
  38. package/dist/cjs/nodes/TypeDefinedLinkNode.js +30 -0
  39. package/dist/cjs/nodes/TypeDefinedLinkNode.js.map +1 -0
  40. package/dist/cjs/nodes/TypeEnumEmptyVariantNode.js +30 -0
  41. package/dist/cjs/nodes/TypeEnumEmptyVariantNode.js.map +1 -0
  42. package/dist/cjs/nodes/TypeEnumNode.js +52 -0
  43. package/dist/cjs/nodes/TypeEnumNode.js.map +1 -0
  44. package/dist/cjs/nodes/TypeEnumStructVariantNode.js +37 -0
  45. package/dist/cjs/nodes/TypeEnumStructVariantNode.js.map +1 -0
  46. package/dist/cjs/nodes/TypeEnumTupleVariantNode.js +33 -0
  47. package/dist/cjs/nodes/TypeEnumTupleVariantNode.js.map +1 -0
  48. package/dist/cjs/nodes/TypeEnumVariantNode.js +20 -0
  49. package/dist/cjs/nodes/TypeEnumVariantNode.js.map +1 -0
  50. package/dist/cjs/nodes/TypeLeafNode.js +61 -0
  51. package/dist/cjs/nodes/TypeLeafNode.js.map +1 -0
  52. package/dist/cjs/nodes/TypeLeafWrapperNode.js +26 -0
  53. package/dist/cjs/nodes/TypeLeafWrapperNode.js.map +1 -0
  54. package/dist/cjs/nodes/TypeMapNode.js +35 -0
  55. package/dist/cjs/nodes/TypeMapNode.js.map +1 -0
  56. package/dist/cjs/nodes/TypeNode.js +103 -0
  57. package/dist/cjs/nodes/TypeNode.js.map +1 -0
  58. package/dist/cjs/nodes/TypeOptionNode.js +32 -0
  59. package/dist/cjs/nodes/TypeOptionNode.js.map +1 -0
  60. package/dist/cjs/nodes/TypeSetNode.js +32 -0
  61. package/dist/cjs/nodes/TypeSetNode.js.map +1 -0
  62. package/dist/cjs/nodes/TypeStructFieldNode.js +42 -0
  63. package/dist/cjs/nodes/TypeStructFieldNode.js.map +1 -0
  64. package/dist/cjs/nodes/TypeStructNode.js +32 -0
  65. package/dist/cjs/nodes/TypeStructNode.js.map +1 -0
  66. package/dist/cjs/nodes/TypeTupleNode.js +29 -0
  67. package/dist/cjs/nodes/TypeTupleNode.js.map +1 -0
  68. package/dist/cjs/nodes/TypeVecNode.js +29 -0
  69. package/dist/cjs/nodes/TypeVecNode.js.map +1 -0
  70. package/dist/cjs/nodes/ValueNode.js +57 -0
  71. package/dist/cjs/nodes/ValueNode.js.map +1 -0
  72. package/dist/cjs/nodes/index.js +42 -0
  73. package/dist/cjs/nodes/index.js.map +1 -0
  74. package/dist/cjs/renderers/RenderMap.js +35 -0
  75. package/dist/cjs/renderers/RenderMap.js.map +1 -0
  76. package/dist/cjs/renderers/WriteRenderMapVisitor.js +16 -0
  77. package/dist/cjs/renderers/WriteRenderMapVisitor.js.map +1 -0
  78. package/dist/cjs/renderers/index.js +21 -0
  79. package/dist/cjs/renderers/index.js.map +1 -0
  80. package/dist/cjs/renderers/js/GetJavaScriptRenderMapVisitor.js +360 -0
  81. package/dist/cjs/renderers/js/GetJavaScriptRenderMapVisitor.js.map +1 -0
  82. package/dist/cjs/renderers/js/GetJavaScriptTypeManifestVisitor.js +439 -0
  83. package/dist/cjs/renderers/js/GetJavaScriptTypeManifestVisitor.js.map +1 -0
  84. package/dist/cjs/renderers/js/GetJavaScriptValidatorBagVisitor.js +198 -0
  85. package/dist/cjs/renderers/js/GetJavaScriptValidatorBagVisitor.js.map +1 -0
  86. package/dist/cjs/renderers/js/JavaScriptImportMap.js +83 -0
  87. package/dist/cjs/renderers/js/JavaScriptImportMap.js.map +1 -0
  88. package/dist/cjs/renderers/js/RenderJavaScriptValueNode.js +125 -0
  89. package/dist/cjs/renderers/js/RenderJavaScriptValueNode.js.map +1 -0
  90. package/dist/cjs/renderers/js/RenderJavaScriptVisitor.js +28 -0
  91. package/dist/cjs/renderers/js/RenderJavaScriptVisitor.js.map +1 -0
  92. package/dist/cjs/renderers/js/index.js +23 -0
  93. package/dist/cjs/renderers/js/index.js.map +1 -0
  94. package/dist/cjs/renderers/js/templates/accountsIndex.njk +9 -0
  95. package/dist/cjs/renderers/js/templates/accountsPage.njk +122 -0
  96. package/dist/cjs/renderers/js/templates/definedTypesIndex.njk +9 -0
  97. package/dist/cjs/renderers/js/templates/definedTypesPage.njk +13 -0
  98. package/dist/cjs/renderers/js/templates/definedTypesPageDataEnums.njk +26 -0
  99. package/dist/cjs/renderers/js/templates/errorsIndex.njk +9 -0
  100. package/dist/cjs/renderers/js/templates/errorsPage.njk +43 -0
  101. package/dist/cjs/renderers/js/templates/instructionsIndex.njk +9 -0
  102. package/dist/cjs/renderers/js/templates/instructionsPage.njk +71 -0
  103. package/dist/cjs/renderers/js/templates/instructionsPageAccountMetas.njk +61 -0
  104. package/dist/cjs/renderers/js/templates/instructionsPageAccounts.njk +12 -0
  105. package/dist/cjs/renderers/js/templates/instructionsPageArgs.njk +7 -0
  106. package/dist/cjs/renderers/js/templates/layout.njk +9 -0
  107. package/dist/cjs/renderers/js/templates/macros.njk +40 -0
  108. package/dist/cjs/renderers/js/templates/programsIndex.njk +9 -0
  109. package/dist/cjs/renderers/js/templates/programsPage.njk +23 -0
  110. package/dist/cjs/renderers/js/templates/rootIndex.njk +23 -0
  111. package/dist/cjs/renderers/utils.js +42 -0
  112. package/dist/cjs/renderers/utils.js.map +1 -0
  113. package/dist/cjs/utils.js +47 -0
  114. package/dist/cjs/utils.js.map +1 -0
  115. package/dist/cjs/visitors/BaseDelegateVisitor.js +73 -0
  116. package/dist/cjs/visitors/BaseDelegateVisitor.js.map +1 -0
  117. package/dist/cjs/visitors/BaseNodeOrNullVisitor.js +183 -0
  118. package/dist/cjs/visitors/BaseNodeOrNullVisitor.js.map +1 -0
  119. package/dist/cjs/visitors/BaseNodeVisitor.js +144 -0
  120. package/dist/cjs/visitors/BaseNodeVisitor.js.map +1 -0
  121. package/dist/cjs/visitors/BaseThrowVisitor.js +70 -0
  122. package/dist/cjs/visitors/BaseThrowVisitor.js.map +1 -0
  123. package/dist/cjs/visitors/BaseVoidVisitor.js +81 -0
  124. package/dist/cjs/visitors/BaseVoidVisitor.js.map +1 -0
  125. package/dist/cjs/visitors/DefaultVisitor.js +53 -0
  126. package/dist/cjs/visitors/DefaultVisitor.js.map +1 -0
  127. package/dist/cjs/visitors/Dependency.js +3 -0
  128. package/dist/cjs/visitors/Dependency.js.map +1 -0
  129. package/dist/cjs/visitors/NodeSelector.js +79 -0
  130. package/dist/cjs/visitors/NodeSelector.js.map +1 -0
  131. package/dist/cjs/visitors/NodeStack.js +98 -0
  132. package/dist/cjs/visitors/NodeStack.js.map +1 -0
  133. package/dist/cjs/visitors/ValidatorBag.js +64 -0
  134. package/dist/cjs/visitors/ValidatorBag.js.map +1 -0
  135. package/dist/cjs/visitors/Visitable.js +3 -0
  136. package/dist/cjs/visitors/Visitable.js.map +1 -0
  137. package/dist/cjs/visitors/Visitor.js +3 -0
  138. package/dist/cjs/visitors/Visitor.js.map +1 -0
  139. package/dist/cjs/visitors/aggregators/GetByteSizeVisitor.js +130 -0
  140. package/dist/cjs/visitors/aggregators/GetByteSizeVisitor.js.map +1 -0
  141. package/dist/cjs/visitors/aggregators/GetDefaultValidatorBagVisitor.js +300 -0
  142. package/dist/cjs/visitors/aggregators/GetDefaultValidatorBagVisitor.js.map +1 -0
  143. package/dist/cjs/visitors/aggregators/GetDefinedTypeHistogramVisitor.js +157 -0
  144. package/dist/cjs/visitors/aggregators/GetDefinedTypeHistogramVisitor.js.map +1 -0
  145. package/dist/cjs/visitors/aggregators/GetNodeInlineStringVisitor.js +111 -0
  146. package/dist/cjs/visitors/aggregators/GetNodeInlineStringVisitor.js.map +1 -0
  147. package/dist/cjs/visitors/aggregators/GetNodeTreeStringVisitor.js +219 -0
  148. package/dist/cjs/visitors/aggregators/GetNodeTreeStringVisitor.js.map +1 -0
  149. package/dist/cjs/visitors/aggregators/GetResolvedInstructionAccountsVisitor.js +121 -0
  150. package/dist/cjs/visitors/aggregators/GetResolvedInstructionAccountsVisitor.js.map +1 -0
  151. package/dist/cjs/visitors/aggregators/index.js +23 -0
  152. package/dist/cjs/visitors/aggregators/index.js.map +1 -0
  153. package/dist/cjs/visitors/index.js +31 -0
  154. package/dist/cjs/visitors/index.js.map +1 -0
  155. package/dist/cjs/visitors/transformers/AutoSetAnchorDiscriminatorsVisitor.js +94 -0
  156. package/dist/cjs/visitors/transformers/AutoSetAnchorDiscriminatorsVisitor.js.map +1 -0
  157. package/dist/cjs/visitors/transformers/AutoSetFixedAccountSizesVisitor.js +56 -0
  158. package/dist/cjs/visitors/transformers/AutoSetFixedAccountSizesVisitor.js.map +1 -0
  159. package/dist/cjs/visitors/transformers/CreateSubInstructionsFromEnumArgsVisitor.js +100 -0
  160. package/dist/cjs/visitors/transformers/CreateSubInstructionsFromEnumArgsVisitor.js.map +1 -0
  161. package/dist/cjs/visitors/transformers/DeduplicateIdenticalDefinedTypesVisitor.js +83 -0
  162. package/dist/cjs/visitors/transformers/DeduplicateIdenticalDefinedTypesVisitor.js.map +1 -0
  163. package/dist/cjs/visitors/transformers/DeleteNodesVisitor.js +14 -0
  164. package/dist/cjs/visitors/transformers/DeleteNodesVisitor.js.map +1 -0
  165. package/dist/cjs/visitors/transformers/SetAccountDiscriminatorFromFieldVisitor.js +62 -0
  166. package/dist/cjs/visitors/transformers/SetAccountDiscriminatorFromFieldVisitor.js.map +1 -0
  167. package/dist/cjs/visitors/transformers/SetInstructionAccountDefaultValuesVisitor.js +202 -0
  168. package/dist/cjs/visitors/transformers/SetInstructionAccountDefaultValuesVisitor.js.map +1 -0
  169. package/dist/cjs/visitors/transformers/SetInstructionDiscriminatorsVisitor.js +59 -0
  170. package/dist/cjs/visitors/transformers/SetInstructionDiscriminatorsVisitor.js.map +1 -0
  171. package/dist/cjs/visitors/transformers/SetLeafWrappersVisitor.js +43 -0
  172. package/dist/cjs/visitors/transformers/SetLeafWrappersVisitor.js.map +1 -0
  173. package/dist/cjs/visitors/transformers/SetMissingDefinedTypesVisitor.js +85 -0
  174. package/dist/cjs/visitors/transformers/SetMissingDefinedTypesVisitor.js.map +1 -0
  175. package/dist/cjs/visitors/transformers/SetStructDefaultValuesVisitor.js +62 -0
  176. package/dist/cjs/visitors/transformers/SetStructDefaultValuesVisitor.js.map +1 -0
  177. package/dist/cjs/visitors/transformers/TransformNodesVisitor.js +156 -0
  178. package/dist/cjs/visitors/transformers/TransformNodesVisitor.js.map +1 -0
  179. package/dist/cjs/visitors/transformers/TransformU8ArraysToBytesVisitor.js +49 -0
  180. package/dist/cjs/visitors/transformers/TransformU8ArraysToBytesVisitor.js.map +1 -0
  181. package/dist/cjs/visitors/transformers/UnwrapDefinedTypesVisitor.js +69 -0
  182. package/dist/cjs/visitors/transformers/UnwrapDefinedTypesVisitor.js.map +1 -0
  183. package/dist/cjs/visitors/transformers/UnwrapInstructionArgsDefinedTypesVisitor.js +59 -0
  184. package/dist/cjs/visitors/transformers/UnwrapInstructionArgsDefinedTypesVisitor.js.map +1 -0
  185. package/dist/cjs/visitors/transformers/UnwrapInstructionArgsStructVisitor.js +44 -0
  186. package/dist/cjs/visitors/transformers/UnwrapInstructionArgsStructVisitor.js.map +1 -0
  187. package/dist/cjs/visitors/transformers/UnwrapStructVisitor.js +74 -0
  188. package/dist/cjs/visitors/transformers/UnwrapStructVisitor.js.map +1 -0
  189. package/dist/cjs/visitors/transformers/UpdateAccountsVisitor.js +57 -0
  190. package/dist/cjs/visitors/transformers/UpdateAccountsVisitor.js.map +1 -0
  191. package/dist/cjs/visitors/transformers/UpdateDefinedTypesVisitor.js +72 -0
  192. package/dist/cjs/visitors/transformers/UpdateDefinedTypesVisitor.js.map +1 -0
  193. package/dist/cjs/visitors/transformers/UpdateErrorsVisitor.js +50 -0
  194. package/dist/cjs/visitors/transformers/UpdateErrorsVisitor.js.map +1 -0
  195. package/dist/cjs/visitors/transformers/UpdateInstructionsVisitor.js +97 -0
  196. package/dist/cjs/visitors/transformers/UpdateInstructionsVisitor.js.map +1 -0
  197. package/dist/cjs/visitors/transformers/UpdateProgramsVisitor.js +49 -0
  198. package/dist/cjs/visitors/transformers/UpdateProgramsVisitor.js.map +1 -0
  199. package/dist/cjs/visitors/transformers/_renameHelpers.js +49 -0
  200. package/dist/cjs/visitors/transformers/_renameHelpers.js.map +1 -0
  201. package/dist/cjs/visitors/transformers/index.js +39 -0
  202. package/dist/cjs/visitors/transformers/index.js.map +1 -0
  203. package/dist/cjs/visitors/workers/ConsoleLogVisitor.js +12 -0
  204. package/dist/cjs/visitors/workers/ConsoleLogVisitor.js.map +1 -0
  205. package/dist/cjs/visitors/workers/ThrowValidatorItemsVisitor.js +38 -0
  206. package/dist/cjs/visitors/workers/ThrowValidatorItemsVisitor.js.map +1 -0
  207. package/dist/cjs/visitors/workers/index.js +19 -0
  208. package/dist/cjs/visitors/workers/index.js.map +1 -0
  209. package/dist/types/Kinobi.d.ts +9 -0
  210. package/dist/types/idl/Idl.d.ts +18 -0
  211. package/dist/types/idl/IdlAccount.d.ts +19 -0
  212. package/dist/types/idl/IdlDefinedType.d.ts +6 -0
  213. package/dist/types/idl/IdlError.d.ts +6 -0
  214. package/dist/types/idl/IdlInstruction.d.ts +25 -0
  215. package/dist/types/idl/IdlType.d.ts +60 -0
  216. package/dist/types/idl/index.d.ts +6 -0
  217. package/dist/types/index.d.ts +5 -0
  218. package/dist/types/logs.d.ts +9 -0
  219. package/dist/types/nodes/AccountNode.d.ts +51 -0
  220. package/dist/types/nodes/DefinedTypeNode.d.ts +24 -0
  221. package/dist/types/nodes/ErrorNode.d.ts +21 -0
  222. package/dist/types/nodes/InstructionNode.d.ts +88 -0
  223. package/dist/types/nodes/Node.d.ts +12 -0
  224. package/dist/types/nodes/ProgramNode.d.ts +31 -0
  225. package/dist/types/nodes/RootNode.d.ts +23 -0
  226. package/dist/types/nodes/TypeArrayNode.d.ts +14 -0
  227. package/dist/types/nodes/TypeDefinedLinkNode.d.ts +12 -0
  228. package/dist/types/nodes/TypeEnumEmptyVariantNode.d.ts +12 -0
  229. package/dist/types/nodes/TypeEnumNode.d.ts +16 -0
  230. package/dist/types/nodes/TypeEnumStructVariantNode.d.ts +14 -0
  231. package/dist/types/nodes/TypeEnumTupleVariantNode.d.ts +14 -0
  232. package/dist/types/nodes/TypeEnumVariantNode.d.ts +7 -0
  233. package/dist/types/nodes/TypeLeafNode.d.ts +18 -0
  234. package/dist/types/nodes/TypeLeafWrapperNode.d.ts +21 -0
  235. package/dist/types/nodes/TypeMapNode.d.ts +15 -0
  236. package/dist/types/nodes/TypeNode.d.ts +19 -0
  237. package/dist/types/nodes/TypeOptionNode.d.ts +14 -0
  238. package/dist/types/nodes/TypeSetNode.d.ts +14 -0
  239. package/dist/types/nodes/TypeStructFieldNode.d.ts +24 -0
  240. package/dist/types/nodes/TypeStructNode.d.ts +14 -0
  241. package/dist/types/nodes/TypeTupleNode.d.ts +13 -0
  242. package/dist/types/nodes/TypeVecNode.d.ts +13 -0
  243. package/dist/types/nodes/ValueNode.d.ts +59 -0
  244. package/dist/types/nodes/index.d.ts +25 -0
  245. package/dist/types/renderers/RenderMap.d.ts +8 -0
  246. package/dist/types/renderers/WriteRenderMapVisitor.d.ts +8 -0
  247. package/dist/types/renderers/index.d.ts +4 -0
  248. package/dist/types/renderers/js/GetJavaScriptRenderMapVisitor.d.ts +34 -0
  249. package/dist/types/renderers/js/GetJavaScriptTypeManifestVisitor.d.ts +44 -0
  250. package/dist/types/renderers/js/GetJavaScriptValidatorBagVisitor.d.ts +19 -0
  251. package/dist/types/renderers/js/JavaScriptImportMap.d.ts +11 -0
  252. package/dist/types/renderers/js/RenderJavaScriptValueNode.d.ts +6 -0
  253. package/dist/types/renderers/js/RenderJavaScriptVisitor.d.ts +14 -0
  254. package/dist/types/renderers/js/index.d.ts +6 -0
  255. package/dist/types/renderers/utils.d.ts +5 -0
  256. package/dist/types/utils.d.ts +8 -0
  257. package/dist/types/visitors/BaseDelegateVisitor.d.ts +28 -0
  258. package/dist/types/visitors/BaseNodeOrNullVisitor.d.ts +25 -0
  259. package/dist/types/visitors/BaseNodeVisitor.d.ts +25 -0
  260. package/dist/types/visitors/BaseThrowVisitor.d.ts +25 -0
  261. package/dist/types/visitors/BaseVoidVisitor.d.ts +25 -0
  262. package/dist/types/visitors/DefaultVisitor.d.ts +5 -0
  263. package/dist/types/visitors/Dependency.d.ts +17 -0
  264. package/dist/types/visitors/NodeSelector.d.ts +11 -0
  265. package/dist/types/visitors/NodeStack.d.ts +14 -0
  266. package/dist/types/visitors/ValidatorBag.d.ts +22 -0
  267. package/dist/types/visitors/Visitable.d.ts +4 -0
  268. package/dist/types/visitors/Visitor.d.ts +24 -0
  269. package/dist/types/visitors/aggregators/GetByteSizeVisitor.d.ts +27 -0
  270. package/dist/types/visitors/aggregators/GetDefaultValidatorBagVisitor.d.ts +32 -0
  271. package/dist/types/visitors/aggregators/GetDefinedTypeHistogramVisitor.d.ts +37 -0
  272. package/dist/types/visitors/aggregators/GetNodeInlineStringVisitor.d.ts +25 -0
  273. package/dist/types/visitors/aggregators/GetNodeTreeStringVisitor.d.ts +29 -0
  274. package/dist/types/visitors/aggregators/GetResolvedInstructionAccountsVisitor.d.ts +19 -0
  275. package/dist/types/visitors/aggregators/index.d.ts +6 -0
  276. package/dist/types/visitors/index.d.ts +14 -0
  277. package/dist/types/visitors/transformers/AutoSetAnchorDiscriminatorsVisitor.d.ts +8 -0
  278. package/dist/types/visitors/transformers/AutoSetFixedAccountSizesVisitor.d.ts +5 -0
  279. package/dist/types/visitors/transformers/CreateSubInstructionsFromEnumArgsVisitor.d.ts +8 -0
  280. package/dist/types/visitors/transformers/DeduplicateIdenticalDefinedTypesVisitor.d.ts +5 -0
  281. package/dist/types/visitors/transformers/DeleteNodesVisitor.d.ts +5 -0
  282. package/dist/types/visitors/transformers/SetAccountDiscriminatorFromFieldVisitor.d.ts +12 -0
  283. package/dist/types/visitors/transformers/SetInstructionAccountDefaultValuesVisitor.d.ts +27 -0
  284. package/dist/types/visitors/transformers/SetInstructionDiscriminatorsVisitor.d.ts +18 -0
  285. package/dist/types/visitors/transformers/SetLeafWrappersVisitor.d.ts +8 -0
  286. package/dist/types/visitors/transformers/SetMissingDefinedTypesVisitor.d.ts +7 -0
  287. package/dist/types/visitors/transformers/SetStructDefaultValuesVisitor.d.ts +11 -0
  288. package/dist/types/visitors/transformers/TransformNodesVisitor.d.ts +37 -0
  289. package/dist/types/visitors/transformers/TransformU8ArraysToBytesVisitor.d.ts +8 -0
  290. package/dist/types/visitors/transformers/UnwrapDefinedTypesVisitor.d.ts +11 -0
  291. package/dist/types/visitors/transformers/UnwrapInstructionArgsDefinedTypesVisitor.d.ts +5 -0
  292. package/dist/types/visitors/transformers/UnwrapInstructionArgsStructVisitor.d.ts +4 -0
  293. package/dist/types/visitors/transformers/UnwrapStructVisitor.d.ts +8 -0
  294. package/dist/types/visitors/transformers/UpdateAccountsVisitor.d.ts +11 -0
  295. package/dist/types/visitors/transformers/UpdateDefinedTypesVisitor.d.ts +11 -0
  296. package/dist/types/visitors/transformers/UpdateErrorsVisitor.d.ts +12 -0
  297. package/dist/types/visitors/transformers/UpdateInstructionsVisitor.d.ts +41 -0
  298. package/dist/types/visitors/transformers/UpdateProgramsVisitor.d.ts +9 -0
  299. package/dist/types/visitors/transformers/_renameHelpers.d.ts +3 -0
  300. package/dist/types/visitors/transformers/index.d.ts +22 -0
  301. package/dist/types/visitors/workers/ConsoleLogVisitor.d.ts +4 -0
  302. package/dist/types/visitors/workers/ThrowValidatorItemsVisitor.d.ts +9 -0
  303. package/dist/types/visitors/workers/index.d.ts +2 -0
  304. package/package.json +72 -0
  305. package/src/Kinobi.ts +28 -0
  306. package/src/idl/Idl.ts +19 -0
  307. package/src/idl/IdlAccount.ts +14 -0
  308. package/src/idl/IdlDefinedType.ts +7 -0
  309. package/src/idl/IdlError.ts +6 -0
  310. package/src/idl/IdlInstruction.ts +29 -0
  311. package/src/idl/IdlType.ts +72 -0
  312. package/src/idl/index.ts +6 -0
  313. package/src/index.ts +5 -0
  314. package/src/logs.ts +77 -0
  315. package/src/nodes/AccountNode.ts +126 -0
  316. package/src/nodes/DefinedTypeNode.ts +69 -0
  317. package/src/nodes/ErrorNode.ts +57 -0
  318. package/src/nodes/InstructionNode.ts +215 -0
  319. package/src/nodes/Node.ts +40 -0
  320. package/src/nodes/ProgramNode.ts +101 -0
  321. package/src/nodes/RootNode.ts +64 -0
  322. package/src/nodes/TypeArrayNode.ts +40 -0
  323. package/src/nodes/TypeDefinedLinkNode.ts +40 -0
  324. package/src/nodes/TypeEnumEmptyVariantNode.ts +38 -0
  325. package/src/nodes/TypeEnumNode.ts +67 -0
  326. package/src/nodes/TypeEnumStructVariantNode.ts +50 -0
  327. package/src/nodes/TypeEnumTupleVariantNode.ts +46 -0
  328. package/src/nodes/TypeEnumVariantNode.ts +32 -0
  329. package/src/nodes/TypeLeafNode.ts +73 -0
  330. package/src/nodes/TypeLeafWrapperNode.ts +41 -0
  331. package/src/nodes/TypeMapNode.ts +48 -0
  332. package/src/nodes/TypeNode.ts +138 -0
  333. package/src/nodes/TypeOptionNode.ts +41 -0
  334. package/src/nodes/TypeSetNode.ts +39 -0
  335. package/src/nodes/TypeStructFieldNode.ts +63 -0
  336. package/src/nodes/TypeStructNode.ts +43 -0
  337. package/src/nodes/TypeTupleNode.ts +36 -0
  338. package/src/nodes/TypeVecNode.ts +34 -0
  339. package/src/nodes/ValueNode.ts +92 -0
  340. package/src/nodes/index.ts +25 -0
  341. package/src/renderers/RenderMap.ts +34 -0
  342. package/src/renderers/WriteRenderMapVisitor.ts +15 -0
  343. package/src/renderers/index.ts +4 -0
  344. package/src/renderers/js/GetJavaScriptRenderMapVisitor.ts +437 -0
  345. package/src/renderers/js/GetJavaScriptTypeManifestVisitor.ts +522 -0
  346. package/src/renderers/js/GetJavaScriptValidatorBagVisitor.ts +202 -0
  347. package/src/renderers/js/JavaScriptImportMap.ts +89 -0
  348. package/src/renderers/js/RenderJavaScriptValueNode.ts +110 -0
  349. package/src/renderers/js/RenderJavaScriptVisitor.ts +45 -0
  350. package/src/renderers/js/index.ts +6 -0
  351. package/src/renderers/js/templates/accountsIndex.njk +9 -0
  352. package/src/renderers/js/templates/accountsPage.njk +122 -0
  353. package/src/renderers/js/templates/definedTypesIndex.njk +9 -0
  354. package/src/renderers/js/templates/definedTypesPage.njk +13 -0
  355. package/src/renderers/js/templates/definedTypesPageDataEnums.njk +26 -0
  356. package/src/renderers/js/templates/errorsIndex.njk +9 -0
  357. package/src/renderers/js/templates/errorsPage.njk +43 -0
  358. package/src/renderers/js/templates/instructionsIndex.njk +9 -0
  359. package/src/renderers/js/templates/instructionsPage.njk +71 -0
  360. package/src/renderers/js/templates/instructionsPageAccountMetas.njk +61 -0
  361. package/src/renderers/js/templates/instructionsPageAccounts.njk +12 -0
  362. package/src/renderers/js/templates/instructionsPageArgs.njk +7 -0
  363. package/src/renderers/js/templates/layout.njk +9 -0
  364. package/src/renderers/js/templates/macros.njk +40 -0
  365. package/src/renderers/js/templates/programsIndex.njk +9 -0
  366. package/src/renderers/js/templates/programsPage.njk +23 -0
  367. package/src/renderers/js/templates/rootIndex.njk +23 -0
  368. package/src/renderers/utils.ts +46 -0
  369. package/src/utils.ts +41 -0
  370. package/src/visitors/BaseDelegateVisitor.ts +98 -0
  371. package/src/visitors/BaseNodeOrNullVisitor.ts +202 -0
  372. package/src/visitors/BaseNodeVisitor.ts +173 -0
  373. package/src/visitors/BaseThrowVisitor.ts +101 -0
  374. package/src/visitors/BaseVoidVisitor.ts +104 -0
  375. package/src/visitors/DefaultVisitor.ts +45 -0
  376. package/src/visitors/Dependency.ts +23 -0
  377. package/src/visitors/NodeSelector.ts +82 -0
  378. package/src/visitors/NodeStack.ts +109 -0
  379. package/src/visitors/ValidatorBag.ts +90 -0
  380. package/src/visitors/Visitable.ts +5 -0
  381. package/src/visitors/Visitor.ts +36 -0
  382. package/src/visitors/aggregators/GetByteSizeVisitor.ts +167 -0
  383. package/src/visitors/aggregators/GetDefaultValidatorBagVisitor.ts +332 -0
  384. package/src/visitors/aggregators/GetDefinedTypeHistogramVisitor.ts +213 -0
  385. package/src/visitors/aggregators/GetNodeInlineStringVisitor.ts +140 -0
  386. package/src/visitors/aggregators/GetNodeTreeStringVisitor.ts +260 -0
  387. package/src/visitors/aggregators/GetResolvedInstructionAccountsVisitor.ts +153 -0
  388. package/src/visitors/aggregators/index.ts +6 -0
  389. package/src/visitors/index.ts +15 -0
  390. package/src/visitors/transformers/AutoSetAnchorDiscriminatorsVisitor.ts +90 -0
  391. package/src/visitors/transformers/AutoSetFixedAccountSizesVisitor.ts +31 -0
  392. package/src/visitors/transformers/CreateSubInstructionsFromEnumArgsVisitor.ts +117 -0
  393. package/src/visitors/transformers/DeduplicateIdenticalDefinedTypesVisitor.ts +72 -0
  394. package/src/visitors/transformers/DeleteNodesVisitor.ts +13 -0
  395. package/src/visitors/transformers/SetAccountDiscriminatorFromFieldVisitor.ts +52 -0
  396. package/src/visitors/transformers/SetInstructionAccountDefaultValuesVisitor.ts +236 -0
  397. package/src/visitors/transformers/SetInstructionDiscriminatorsVisitor.ts +54 -0
  398. package/src/visitors/transformers/SetLeafWrappersVisitor.ts +20 -0
  399. package/src/visitors/transformers/SetMissingDefinedTypesVisitor.ts +73 -0
  400. package/src/visitors/transformers/SetStructDefaultValuesVisitor.ts +45 -0
  401. package/src/visitors/transformers/TransformNodesVisitor.ts +215 -0
  402. package/src/visitors/transformers/TransformU8ArraysToBytesVisitor.ts +27 -0
  403. package/src/visitors/transformers/UnwrapDefinedTypesVisitor.ts +65 -0
  404. package/src/visitors/transformers/UnwrapInstructionArgsDefinedTypesVisitor.ts +35 -0
  405. package/src/visitors/transformers/UnwrapInstructionArgsStructVisitor.ts +22 -0
  406. package/src/visitors/transformers/UnwrapStructVisitor.ts +62 -0
  407. package/src/visitors/transformers/UpdateAccountsVisitor.ts +45 -0
  408. package/src/visitors/transformers/UpdateDefinedTypesVisitor.ts +71 -0
  409. package/src/visitors/transformers/UpdateErrorsVisitor.ts +41 -0
  410. package/src/visitors/transformers/UpdateInstructionsVisitor.ts +135 -0
  411. package/src/visitors/transformers/UpdateProgramsVisitor.ts +39 -0
  412. package/src/visitors/transformers/_renameHelpers.ts +47 -0
  413. package/src/visitors/transformers/index.ts +22 -0
  414. package/src/visitors/workers/ConsoleLogVisitor.ts +8 -0
  415. package/src/visitors/workers/ThrowValidatorItemsVisitor.ts +42 -0
  416. package/src/visitors/workers/index.ts +2 -0
@@ -0,0 +1,202 @@
1
+ import type { Visitor } from './Visitor';
2
+ import * as nodes from '../nodes';
3
+
4
+ export class BaseNodeOrNullVisitor implements Visitor<nodes.Node | null> {
5
+ visitRoot(root: nodes.RootNode): nodes.Node | null {
6
+ return new nodes.RootNode(
7
+ root.programs
8
+ .map((program) => program.accept(this))
9
+ .filter(nodes.removeNullAndAssertNodeFilter(nodes.assertProgramNode))
10
+ );
11
+ }
12
+
13
+ visitProgram(program: nodes.ProgramNode): nodes.Node | null {
14
+ return new nodes.ProgramNode(
15
+ program.metadata,
16
+ program.accounts
17
+ .map((account) => account.accept(this))
18
+ .filter(nodes.removeNullAndAssertNodeFilter(nodes.assertAccountNode)),
19
+ program.instructions
20
+ .map((instruction) => instruction.accept(this))
21
+ .filter(
22
+ nodes.removeNullAndAssertNodeFilter(nodes.assertInstructionNode)
23
+ ),
24
+ program.definedTypes
25
+ .map((type) => type.accept(this))
26
+ .filter(
27
+ nodes.removeNullAndAssertNodeFilter(nodes.assertDefinedTypeNode)
28
+ ),
29
+ program.errors
30
+ .map((error) => error.accept(this))
31
+ .filter(nodes.removeNullAndAssertNodeFilter(nodes.assertErrorNode))
32
+ );
33
+ }
34
+
35
+ visitAccount(account: nodes.AccountNode): nodes.Node | null {
36
+ const accountType = account.type.accept(this);
37
+ if (accountType === null) return null;
38
+ nodes.assertTypeStructNode(accountType);
39
+ return new nodes.AccountNode(account.metadata, accountType);
40
+ }
41
+
42
+ visitInstruction(instruction: nodes.InstructionNode): nodes.Node | null {
43
+ const args = instruction.args.accept(this);
44
+ if (args === null) return null;
45
+ nodes.assertTypeStructNode(args);
46
+ return new nodes.InstructionNode(
47
+ instruction.metadata,
48
+ instruction.accounts,
49
+ args,
50
+ instruction.subInstructions
51
+ .map((ix) => ix.accept(this))
52
+ .filter(
53
+ nodes.removeNullAndAssertNodeFilter(nodes.assertInstructionNode)
54
+ )
55
+ );
56
+ }
57
+
58
+ visitDefinedType(definedType: nodes.DefinedTypeNode): nodes.Node | null {
59
+ const type = definedType.type.accept(this);
60
+ if (type === null) return null;
61
+ nodes.assertTypeStructOrEnumNode(type);
62
+ return new nodes.DefinedTypeNode(definedType.metadata, type);
63
+ }
64
+
65
+ visitError(error: nodes.ErrorNode): nodes.Node | null {
66
+ return error;
67
+ }
68
+
69
+ visitTypeArray(typeArray: nodes.TypeArrayNode): nodes.Node | null {
70
+ const type = typeArray.itemType.accept(this);
71
+ if (type === null) return null;
72
+ nodes.assertTypeNode(type);
73
+ return new nodes.TypeArrayNode(type, typeArray.size);
74
+ }
75
+
76
+ visitTypeDefinedLink(
77
+ typeDefinedLink: nodes.TypeDefinedLinkNode
78
+ ): nodes.Node | null {
79
+ return typeDefinedLink;
80
+ }
81
+
82
+ visitTypeEnum(typeEnum: nodes.TypeEnumNode): nodes.Node | null {
83
+ const variants = typeEnum.variants
84
+ .map((variant): nodes.TypeEnumVariantNode | null => {
85
+ const newVariant = variant.accept(this);
86
+ if (newVariant === null) return null;
87
+ nodes.assertTypeEnumVariantNode(newVariant);
88
+ return newVariant;
89
+ })
90
+ .filter((v): v is nodes.TypeEnumVariantNode => v !== null);
91
+
92
+ return new nodes.TypeEnumNode(typeEnum.name, variants);
93
+ }
94
+
95
+ visitTypeEnumEmptyVariant(
96
+ typeEnumEmptyVariant: nodes.TypeEnumEmptyVariantNode
97
+ ): nodes.Node | null {
98
+ return typeEnumEmptyVariant;
99
+ }
100
+
101
+ visitTypeEnumStructVariant(
102
+ typeEnumStructVariant: nodes.TypeEnumStructVariantNode
103
+ ): nodes.Node | null {
104
+ const newStruct = typeEnumStructVariant.struct.accept(this);
105
+ if (!newStruct) return null;
106
+ nodes.assertTypeStructNode(newStruct);
107
+ return new nodes.TypeEnumStructVariantNode(
108
+ typeEnumStructVariant.name,
109
+ newStruct
110
+ );
111
+ }
112
+
113
+ visitTypeEnumTupleVariant(
114
+ typeEnumTupleVariant: nodes.TypeEnumTupleVariantNode
115
+ ): nodes.Node | null {
116
+ const newTuple = typeEnumTupleVariant.tuple.accept(this);
117
+ if (!newTuple) return null;
118
+ nodes.assertTypeTupleNode(newTuple);
119
+ return new nodes.TypeEnumTupleVariantNode(
120
+ typeEnumTupleVariant.name,
121
+ newTuple
122
+ );
123
+ }
124
+
125
+ visitTypeLeaf(typeLeaf: nodes.TypeLeafNode): nodes.Node | null {
126
+ return typeLeaf;
127
+ }
128
+
129
+ visitTypeLeafWrapper(
130
+ typeLeafWrapper: nodes.TypeLeafWrapperNode
131
+ ): nodes.Node | null {
132
+ const leaf = typeLeafWrapper.leaf.accept(this);
133
+ if (leaf === null) return null;
134
+ nodes.assertTypeLeafNode(leaf);
135
+ return new nodes.TypeLeafWrapperNode(typeLeafWrapper.wrapper, leaf);
136
+ }
137
+
138
+ visitTypeMap(typeMap: nodes.TypeMapNode): nodes.Node | null {
139
+ const keyType = typeMap.keyType.accept(this);
140
+ const valueType = typeMap.valueType.accept(this);
141
+ if (keyType === null || valueType === null) return null;
142
+ nodes.assertTypeNode(keyType);
143
+ nodes.assertTypeNode(valueType);
144
+ return new nodes.TypeMapNode(typeMap.mapType, keyType, valueType);
145
+ }
146
+
147
+ visitTypeOption(typeOption: nodes.TypeOptionNode): nodes.Node | null {
148
+ const type = typeOption.type.accept(this);
149
+ if (type === null) return null;
150
+ nodes.assertTypeNode(type);
151
+ return new nodes.TypeOptionNode(typeOption.optionType, type);
152
+ }
153
+
154
+ visitTypeSet(typeSet: nodes.TypeSetNode): nodes.Node | null {
155
+ const type = typeSet.type.accept(this);
156
+ if (type === null) return null;
157
+ nodes.assertTypeNode(type);
158
+ return new nodes.TypeSetNode(typeSet.setType, type);
159
+ }
160
+
161
+ visitTypeStruct(typeStruct: nodes.TypeStructNode): nodes.Node | null {
162
+ const fields = typeStruct.fields
163
+ .map((field): nodes.TypeStructFieldNode | null => {
164
+ const newField = field.accept(this);
165
+ if (newField === null) return null;
166
+ nodes.assertTypeStructFieldNode(newField);
167
+ return newField;
168
+ })
169
+ .filter((field): field is nodes.TypeStructFieldNode => field !== null);
170
+
171
+ return new nodes.TypeStructNode(typeStruct.name, fields);
172
+ }
173
+
174
+ visitTypeStructField(
175
+ typeStructField: nodes.TypeStructFieldNode
176
+ ): nodes.Node | null {
177
+ const newType = typeStructField.type.accept(this);
178
+ if (newType === null) return null;
179
+ nodes.assertTypeNode(newType);
180
+ return new nodes.TypeStructFieldNode(typeStructField.metadata, newType);
181
+ }
182
+
183
+ visitTypeTuple(typeTuple: nodes.TypeTupleNode): nodes.Node | null {
184
+ const items = typeTuple.itemTypes
185
+ .map((type) => {
186
+ const newType = type.accept(this);
187
+ if (newType === null) return null;
188
+ nodes.assertTypeNode(newType);
189
+ return newType;
190
+ })
191
+ .filter((type): type is nodes.TypeNode => type !== null);
192
+
193
+ return new nodes.TypeTupleNode(items);
194
+ }
195
+
196
+ visitTypeVec(typeVec: nodes.TypeVecNode): nodes.Node | null {
197
+ const type = typeVec.itemType.accept(this);
198
+ if (type === null) return null;
199
+ nodes.assertTypeNode(type);
200
+ return new nodes.TypeVecNode(type);
201
+ }
202
+ }
@@ -0,0 +1,173 @@
1
+ import type { Visitor } from './Visitor';
2
+ import * as nodes from '../nodes';
3
+
4
+ export class BaseNodeVisitor implements Visitor<nodes.Node> {
5
+ visitRoot(root: nodes.RootNode): nodes.Node {
6
+ return new nodes.RootNode(
7
+ root.programs
8
+ .map((program) => program.accept(this))
9
+ .filter(nodes.assertNodeFilter(nodes.assertProgramNode))
10
+ );
11
+ }
12
+
13
+ visitProgram(program: nodes.ProgramNode): nodes.Node {
14
+ return new nodes.ProgramNode(
15
+ program.metadata,
16
+ program.accounts
17
+ .map((account) => account.accept(this))
18
+ .filter(nodes.assertNodeFilter(nodes.assertAccountNode)),
19
+ program.instructions
20
+ .map((instruction) => instruction.accept(this))
21
+ .filter(nodes.assertNodeFilter(nodes.assertInstructionNode)),
22
+ program.definedTypes
23
+ .map((type) => type.accept(this))
24
+ .filter(nodes.assertNodeFilter(nodes.assertDefinedTypeNode)),
25
+ program.errors
26
+ .map((error) => error.accept(this))
27
+ .filter(nodes.assertNodeFilter(nodes.assertErrorNode))
28
+ );
29
+ }
30
+
31
+ visitAccount(account: nodes.AccountNode): nodes.Node {
32
+ const accountType = account.type.accept(this);
33
+ nodes.assertTypeStructNode(accountType);
34
+ return new nodes.AccountNode(account.metadata, accountType);
35
+ }
36
+
37
+ visitInstruction(instruction: nodes.InstructionNode): nodes.Node {
38
+ const args = instruction.args.accept(this);
39
+ nodes.assertTypeStructNode(args);
40
+ return new nodes.InstructionNode(
41
+ instruction.metadata,
42
+ instruction.accounts,
43
+ args,
44
+ instruction.subInstructions
45
+ .map((ix) => ix.accept(this))
46
+ .filter(
47
+ nodes.removeNullAndAssertNodeFilter(nodes.assertInstructionNode)
48
+ )
49
+ );
50
+ }
51
+
52
+ visitDefinedType(definedType: nodes.DefinedTypeNode): nodes.Node {
53
+ const type = definedType.type.accept(this);
54
+ nodes.assertTypeStructOrEnumNode(type);
55
+ return new nodes.DefinedTypeNode(definedType.metadata, type);
56
+ }
57
+
58
+ visitError(error: nodes.ErrorNode): nodes.Node {
59
+ return error;
60
+ }
61
+
62
+ visitTypeArray(typeArray: nodes.TypeArrayNode): nodes.Node {
63
+ const type = typeArray.itemType.accept(this);
64
+ nodes.assertTypeNode(type);
65
+ return new nodes.TypeArrayNode(type, typeArray.size);
66
+ }
67
+
68
+ visitTypeDefinedLink(typeDefinedLink: nodes.TypeDefinedLinkNode): nodes.Node {
69
+ return typeDefinedLink;
70
+ }
71
+
72
+ visitTypeEnum(typeEnum: nodes.TypeEnumNode): nodes.Node {
73
+ return new nodes.TypeEnumNode(
74
+ typeEnum.name,
75
+ typeEnum.variants.map((variant) => {
76
+ const newVariant = variant.accept(this);
77
+ nodes.assertTypeEnumVariantNode(newVariant);
78
+ return newVariant;
79
+ })
80
+ );
81
+ }
82
+
83
+ visitTypeEnumEmptyVariant(
84
+ typeEnumEmptyVariant: nodes.TypeEnumEmptyVariantNode
85
+ ): nodes.Node {
86
+ return typeEnumEmptyVariant;
87
+ }
88
+
89
+ visitTypeEnumStructVariant(
90
+ typeEnumStructVariant: nodes.TypeEnumStructVariantNode
91
+ ): nodes.Node {
92
+ const newStruct = typeEnumStructVariant.struct.accept(this);
93
+ nodes.assertTypeStructNode(newStruct);
94
+ return new nodes.TypeEnumStructVariantNode(
95
+ typeEnumStructVariant.name,
96
+ newStruct
97
+ );
98
+ }
99
+
100
+ visitTypeEnumTupleVariant(
101
+ typeEnumTupleVariant: nodes.TypeEnumTupleVariantNode
102
+ ): nodes.Node {
103
+ const newTuple = typeEnumTupleVariant.tuple.accept(this);
104
+ nodes.assertTypeTupleNode(newTuple);
105
+ return new nodes.TypeEnumTupleVariantNode(
106
+ typeEnumTupleVariant.name,
107
+ newTuple
108
+ );
109
+ }
110
+
111
+ visitTypeLeaf(typeLeaf: nodes.TypeLeafNode): nodes.Node {
112
+ return typeLeaf;
113
+ }
114
+
115
+ visitTypeLeafWrapper(typeLeafWrapper: nodes.TypeLeafWrapperNode): nodes.Node {
116
+ const leaf = typeLeafWrapper.leaf.accept(this);
117
+ nodes.assertTypeLeafNode(leaf);
118
+ return new nodes.TypeLeafWrapperNode(typeLeafWrapper.wrapper, leaf);
119
+ }
120
+
121
+ visitTypeMap(typeMap: nodes.TypeMapNode): nodes.Node {
122
+ const keyType = typeMap.keyType.accept(this);
123
+ nodes.assertTypeNode(keyType);
124
+ const valueType = typeMap.valueType.accept(this);
125
+ nodes.assertTypeNode(valueType);
126
+ return new nodes.TypeMapNode(typeMap.mapType, keyType, valueType);
127
+ }
128
+
129
+ visitTypeOption(typeOption: nodes.TypeOptionNode): nodes.Node {
130
+ const type = typeOption.type.accept(this);
131
+ nodes.assertTypeNode(type);
132
+ return new nodes.TypeOptionNode(typeOption.optionType, type);
133
+ }
134
+
135
+ visitTypeSet(typeSet: nodes.TypeSetNode): nodes.Node {
136
+ const type = typeSet.type.accept(this);
137
+ nodes.assertTypeNode(type);
138
+ return new nodes.TypeSetNode(typeSet.setType, type);
139
+ }
140
+
141
+ visitTypeStruct(typeStruct: nodes.TypeStructNode): nodes.Node {
142
+ return new nodes.TypeStructNode(
143
+ typeStruct.name,
144
+ typeStruct.fields.map((field): nodes.TypeStructFieldNode => {
145
+ const newField = field.accept(this);
146
+ nodes.assertTypeStructFieldNode(newField);
147
+ return newField;
148
+ })
149
+ );
150
+ }
151
+
152
+ visitTypeStructField(typeStructField: nodes.TypeStructFieldNode): nodes.Node {
153
+ const newType = typeStructField.type.accept(this);
154
+ nodes.assertTypeNode(newType);
155
+ return new nodes.TypeStructFieldNode(typeStructField.metadata, newType);
156
+ }
157
+
158
+ visitTypeTuple(typeTuple: nodes.TypeTupleNode): nodes.Node {
159
+ return new nodes.TypeTupleNode(
160
+ typeTuple.itemTypes.map((type) => {
161
+ const newType = type.accept(this);
162
+ nodes.assertTypeNode(newType);
163
+ return newType;
164
+ })
165
+ );
166
+ }
167
+
168
+ visitTypeVec(typeVec: nodes.TypeVecNode): nodes.Node {
169
+ const type = typeVec.itemType.accept(this);
170
+ nodes.assertTypeNode(type);
171
+ return new nodes.TypeVecNode(type);
172
+ }
173
+ }
@@ -0,0 +1,101 @@
1
+ /* eslint-disable @typescript-eslint/no-unused-vars */
2
+ import * as nodes from '../nodes';
3
+ import type { Visitor } from './Visitor';
4
+
5
+ export class BaseThrowVisitor<T> implements Visitor<T> {
6
+ visitRoot(root: nodes.RootNode): T {
7
+ throw new Error('This visitor does not support Root nodes.');
8
+ }
9
+
10
+ visitProgram(program: nodes.ProgramNode): T {
11
+ throw new Error('This visitor does not support Program nodes.');
12
+ }
13
+
14
+ visitAccount(account: nodes.AccountNode): T {
15
+ throw new Error('This visitor does not support Account nodes.');
16
+ }
17
+
18
+ visitInstruction(instruction: nodes.InstructionNode): T {
19
+ throw new Error('This visitor does not support Instruction nodes.');
20
+ }
21
+
22
+ visitDefinedType(definedType: nodes.DefinedTypeNode): T {
23
+ throw new Error('This visitor does not support DefinedType nodes.');
24
+ }
25
+
26
+ visitError(error: nodes.ErrorNode): T {
27
+ throw new Error('This visitor does not support Error nodes.');
28
+ }
29
+
30
+ visitTypeArray(typeArray: nodes.TypeArrayNode): T {
31
+ throw new Error('This visitor does not support TypeArray nodes.');
32
+ }
33
+
34
+ visitTypeDefinedLink(typeDefinedLink: nodes.TypeDefinedLinkNode): T {
35
+ throw new Error('This visitor does not support TypeDefinedLink nodes.');
36
+ }
37
+
38
+ visitTypeEnum(typeEnum: nodes.TypeEnumNode): T {
39
+ throw new Error('This visitor does not support TypeEnum nodes.');
40
+ }
41
+
42
+ visitTypeEnumEmptyVariant(
43
+ typeEnumEmptyVariant: nodes.TypeEnumEmptyVariantNode
44
+ ): T {
45
+ throw new Error(
46
+ 'This visitor does not support TypeEnumEmptyVariant nodes.'
47
+ );
48
+ }
49
+
50
+ visitTypeEnumStructVariant(
51
+ typeEnumStructVariant: nodes.TypeEnumStructVariantNode
52
+ ): T {
53
+ throw new Error(
54
+ 'This visitor does not support TypeEnumStructVariant nodes.'
55
+ );
56
+ }
57
+
58
+ visitTypeEnumTupleVariant(
59
+ typeEnumTupleVariant: nodes.TypeEnumTupleVariantNode
60
+ ): T {
61
+ throw new Error(
62
+ 'This visitor does not support TypeEnumTupleVariant nodes.'
63
+ );
64
+ }
65
+
66
+ visitTypeLeaf(typeLeaf: nodes.TypeLeafNode): T {
67
+ throw new Error('This visitor does not support TypeLeaf nodes.');
68
+ }
69
+
70
+ visitTypeLeafWrapper(typeLeafWrapper: nodes.TypeLeafWrapperNode): T {
71
+ throw new Error('This visitor does not support TypeLeafWrapper nodes.');
72
+ }
73
+
74
+ visitTypeMap(typeMap: nodes.TypeMapNode): T {
75
+ throw new Error('This visitor does not support TypeMap nodes.');
76
+ }
77
+
78
+ visitTypeOption(typeOption: nodes.TypeOptionNode): T {
79
+ throw new Error('This visitor does not support TypeOption nodes.');
80
+ }
81
+
82
+ visitTypeSet(typeSet: nodes.TypeSetNode): T {
83
+ throw new Error('This visitor does not support TypeSet nodes.');
84
+ }
85
+
86
+ visitTypeStruct(typeStruct: nodes.TypeStructNode): T {
87
+ throw new Error('This visitor does not support TypeStruct nodes.');
88
+ }
89
+
90
+ visitTypeStructField(typeStructField: nodes.TypeStructFieldNode): T {
91
+ throw new Error('This visitor does not support TypeStructField nodes.');
92
+ }
93
+
94
+ visitTypeTuple(typeTuple: nodes.TypeTupleNode): T {
95
+ throw new Error('This visitor does not support TypeTuple nodes.');
96
+ }
97
+
98
+ visitTypeVec(typeVec: nodes.TypeVecNode): T {
99
+ throw new Error('This visitor does not support TypeVec nodes.');
100
+ }
101
+ }
@@ -0,0 +1,104 @@
1
+ import * as nodes from '../nodes';
2
+ import type { Visitor } from './Visitor';
3
+
4
+ export abstract class BaseVoidVisitor implements Visitor<void> {
5
+ visitRoot(root: nodes.RootNode): void {
6
+ root.programs.forEach((program) => program.accept(this));
7
+ }
8
+
9
+ visitProgram(program: nodes.ProgramNode): void {
10
+ program.accounts.forEach((account) => account.accept(this));
11
+ program.instructions.forEach((instruction) => instruction.accept(this));
12
+ program.definedTypes.forEach((type) => type.accept(this));
13
+ program.errors.forEach((type) => type.accept(this));
14
+ }
15
+
16
+ visitAccount(account: nodes.AccountNode): void {
17
+ account.type.accept(this);
18
+ account.variableSeeds.forEach((seed) => seed.type.accept(this));
19
+ }
20
+
21
+ visitInstruction(instruction: nodes.InstructionNode): void {
22
+ instruction.args.accept(this);
23
+ instruction.subInstructions.forEach((ix) => ix.accept(this));
24
+ }
25
+
26
+ visitDefinedType(definedType: nodes.DefinedTypeNode): void {
27
+ definedType.type.accept(this);
28
+ }
29
+
30
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
31
+ visitError(error: nodes.ErrorNode): void {
32
+ //
33
+ }
34
+
35
+ visitTypeArray(typeArray: nodes.TypeArrayNode): void {
36
+ typeArray.itemType.accept(this);
37
+ }
38
+
39
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
40
+ visitTypeDefinedLink(typeDefinedLink: nodes.TypeDefinedLinkNode): void {
41
+ //
42
+ }
43
+
44
+ visitTypeEnum(typeEnum: nodes.TypeEnumNode): void {
45
+ typeEnum.variants.forEach((variant) => variant.accept(this));
46
+ }
47
+
48
+ visitTypeEnumEmptyVariant(
49
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
50
+ typeEnumEmptyVariant: nodes.TypeEnumEmptyVariantNode
51
+ ): void {
52
+ //
53
+ }
54
+
55
+ visitTypeEnumStructVariant(
56
+ typeEnumStructVariant: nodes.TypeEnumStructVariantNode
57
+ ): void {
58
+ typeEnumStructVariant.struct.accept(this);
59
+ }
60
+
61
+ visitTypeEnumTupleVariant(
62
+ typeEnumTupleVariant: nodes.TypeEnumTupleVariantNode
63
+ ): void {
64
+ typeEnumTupleVariant.tuple.accept(this);
65
+ }
66
+
67
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
68
+ visitTypeLeaf(typeLeaf: nodes.TypeLeafNode): void {
69
+ //
70
+ }
71
+
72
+ visitTypeLeafWrapper(typeLeafWrapper: nodes.TypeLeafWrapperNode): void {
73
+ typeLeafWrapper.leaf.accept(this);
74
+ }
75
+
76
+ visitTypeMap(typeMap: nodes.TypeMapNode): void {
77
+ typeMap.keyType.accept(this);
78
+ typeMap.valueType.accept(this);
79
+ }
80
+
81
+ visitTypeOption(typeOption: nodes.TypeOptionNode): void {
82
+ typeOption.type.accept(this);
83
+ }
84
+
85
+ visitTypeSet(typeSet: nodes.TypeSetNode): void {
86
+ typeSet.type.accept(this);
87
+ }
88
+
89
+ visitTypeStruct(typeStruct: nodes.TypeStructNode): void {
90
+ typeStruct.fields.forEach((field) => field.accept(this));
91
+ }
92
+
93
+ visitTypeStructField(typeStructField: nodes.TypeStructFieldNode): void {
94
+ typeStructField.type.accept(this);
95
+ }
96
+
97
+ visitTypeTuple(typeTuple: nodes.TypeTupleNode): void {
98
+ typeTuple.itemTypes.forEach((itemType) => itemType.accept(this));
99
+ }
100
+
101
+ visitTypeVec(typeVec: nodes.TypeVecNode): void {
102
+ typeVec.itemType.accept(this);
103
+ }
104
+ }
@@ -0,0 +1,45 @@
1
+ import * as nodes from '../nodes';
2
+ import { BaseThrowVisitor } from './BaseThrowVisitor';
3
+ import {
4
+ AutoSetAnchorDiscriminatorsVisitor,
5
+ AutoSetFixedAccountSizesVisitor,
6
+ DeduplicateIdenticalDefinedTypesVisitor,
7
+ DEFAULT_INSTRUCTION_ACCOUNT_DEFAULT_RULES,
8
+ SetInstructionAccountDefaultValuesVisitor,
9
+ TransformU8ArraysToBytesVisitor,
10
+ UnwrapInstructionArgsDefinedTypesVisitor,
11
+ UnwrapInstructionArgsStructVisitor,
12
+ } from './transformers';
13
+ import { Visitor } from './Visitor';
14
+
15
+ export class DefaultVisitor extends BaseThrowVisitor<nodes.RootNode> {
16
+ visitRoot(currentRoot: nodes.RootNode): nodes.RootNode {
17
+ let root: nodes.Node = currentRoot;
18
+ const updateRoot = (visitor: Visitor<nodes.Node | null>) => {
19
+ const newRoot = root.accept(visitor);
20
+ nodes.assertRootNode(newRoot);
21
+ root = newRoot;
22
+ };
23
+
24
+ // Defined types.
25
+ updateRoot(new DeduplicateIdenticalDefinedTypesVisitor());
26
+
27
+ // Accounts.
28
+ updateRoot(new AutoSetFixedAccountSizesVisitor());
29
+
30
+ // Instructions.
31
+ updateRoot(new AutoSetAnchorDiscriminatorsVisitor());
32
+ updateRoot(
33
+ new SetInstructionAccountDefaultValuesVisitor(
34
+ DEFAULT_INSTRUCTION_ACCOUNT_DEFAULT_RULES
35
+ )
36
+ );
37
+ updateRoot(new UnwrapInstructionArgsDefinedTypesVisitor());
38
+ updateRoot(new UnwrapInstructionArgsStructVisitor());
39
+
40
+ // Extras.
41
+ updateRoot(new TransformU8ArraysToBytesVisitor());
42
+
43
+ return root;
44
+ }
45
+ }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Tells Kinobi where a dependency is located.
3
+ * This could be a recognized dependency, or any other string
4
+ * as long as renderers know how to map them into real libraries.
5
+ */
6
+ export type Dependency =
7
+ | RelativeDependecy
8
+ | 'core'
9
+ | 'mplEssentials'
10
+ | 'mplDigitalAsset'
11
+ | string;
12
+
13
+ /**
14
+ * Tells Kinobi where a local dependency is located.
15
+ * - `generated` means the dependency is located in the `generated` folder.
16
+ * - `root` means the dependency is located in the source folder, outside of the `generated` folder.
17
+ * - `rootHooked` means the dependency is located outside of the `generated` folder, in a
18
+ * special folder that is used internally by the auto-generated code.
19
+ *
20
+ * These can be interpreted by renderers as they see fit as different languages
21
+ * have different ways of importing local files.
22
+ */
23
+ export type RelativeDependecy = 'generated' | 'root' | 'rootHooked';