@account-kit/plugingen 4.35.0 → 4.36.0

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 (45) hide show
  1. package/dist/esm/cli.js.map +1 -1
  2. package/dist/esm/commands/generate/index.js.map +1 -1
  3. package/dist/esm/commands/generate/phases/contract-abi-gen.js.map +1 -1
  4. package/dist/esm/commands/generate/phases/contract-addresses-gen.js.map +1 -1
  5. package/dist/esm/commands/generate/phases/execution-abi-gen.js.map +1 -1
  6. package/dist/esm/commands/generate/phases/plugin-actions/index.js.map +1 -1
  7. package/dist/esm/commands/generate/phases/plugin-actions/management-actions.js.map +1 -1
  8. package/dist/esm/commands/generate/phases/plugin-actions/read-actions.js.map +1 -1
  9. package/dist/esm/commands/generate/phases/plugin-generator/index.js.map +1 -1
  10. package/dist/esm/commands/generate/types.js.map +1 -1
  11. package/dist/esm/commands/generate/utils.js.map +1 -1
  12. package/dist/esm/commands/init.js.map +1 -1
  13. package/dist/esm/config.js.map +1 -1
  14. package/dist/esm/errors.d.ts +2 -2
  15. package/dist/esm/errors.js.map +1 -1
  16. package/dist/esm/utils/isUsingTypescript.js.map +1 -1
  17. package/dist/esm/utils/loadEnv.js.map +1 -1
  18. package/dist/esm/utils/resolveConfig.js.map +1 -1
  19. package/dist/esm/version.d.ts +1 -1
  20. package/dist/esm/version.js +1 -1
  21. package/dist/esm/version.js.map +1 -1
  22. package/dist/types/commands/generate/utils.d.ts.map +1 -1
  23. package/dist/types/config.d.ts.map +1 -1
  24. package/dist/types/errors.d.ts +2 -2
  25. package/dist/types/errors.d.ts.map +1 -1
  26. package/dist/types/version.d.ts +1 -1
  27. package/package.json +5 -7
  28. package/src/cli.ts +1 -1
  29. package/src/commands/generate/index.ts +5 -5
  30. package/src/commands/generate/phases/contract-abi-gen.ts +2 -2
  31. package/src/commands/generate/phases/contract-addresses-gen.ts +2 -2
  32. package/src/commands/generate/phases/execution-abi-gen.ts +3 -3
  33. package/src/commands/generate/phases/plugin-actions/index.ts +9 -9
  34. package/src/commands/generate/phases/plugin-actions/management-actions.ts +8 -8
  35. package/src/commands/generate/phases/plugin-actions/read-actions.ts +4 -4
  36. package/src/commands/generate/phases/plugin-generator/index.ts +2 -2
  37. package/src/commands/generate/types.ts +1 -1
  38. package/src/commands/generate/utils.ts +2 -2
  39. package/src/commands/init.ts +2 -2
  40. package/src/config.ts +2 -2
  41. package/src/errors.ts +6 -6
  42. package/src/utils/isUsingTypescript.ts +1 -1
  43. package/src/utils/loadEnv.ts +5 -5
  44. package/src/utils/resolveConfig.ts +1 -1
  45. package/src/version.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAwB,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,IAAI,EAAoB,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC;AAE7B,GAAG;KACA,OAAO,CAAC,MAAM,EAAE,mCAAmC,CAAC;KACpD,MAAM,CAAC,qBAAqB,EAAE,8BAA8B,CAAC;KAC7D,MAAM,CAAC,mBAAmB,EAAE,2CAA2C,CAAC;KACxE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,OAAO,CAAC;KACjC,MAAM,CAAC,KAAK,EAAE,OAAoB,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAEzD,GAAG;KACA,OAAO,CACN,UAAU,EACV,6EAA6E,CAC9E;KACA,MAAM,CAAC,qBAAqB,EAAE,8BAA8B,CAAC;KAC7D,MAAM,CAAC,mBAAmB,EAAE,2CAA2C,CAAC;KACxE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,WAAW,CAAC;KACrC,MAAM,CAAC,KAAK,EAAE,OAAwB,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAEjE,GAAG,CAAC,IAAI,EAAE,CAAC;AACX,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAErB,KAAK,CAAC,KAAK,IAAI,EAAE;IACf,IAAI,CAAC;QACH,yCAAyC;QACzC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO;oBAAE,GAAG,CAAC,UAAU,EAAE,CAAC;YAClE,CAAC;;gBAAM,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,MAAM,GAAG,CAAC,iBAAiB,EAAE,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,KAAM,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,EAAE,CAAC","sourcesContent":["#!/usr/bin/env node\nimport { cac } from \"cac\";\nimport { generate, type GenerateOptions } from \"./commands/generate/index.js\";\nimport { init, type InitOptions } from \"./commands/init.js\";\nimport * as logger from \"./logger.js\";\nimport { VERSION } from \"./version.js\";\n\nconst cli = cac(\"plugingen\");\n\ncli\n .command(\"init\", \"Initialize a new plugingen config\")\n .option(\"-c, --config <path>\", \"[string] path to config file\")\n .option(\"-r, --root <path>\", \"[string] root path to resolve config from\")\n .example((name) => `${name} init`)\n .action(async (options: InitOptions) => init(options));\n\ncli\n .command(\n \"generate\",\n \"Generate code for all of the plugins configured within the plugingen config\"\n )\n .option(\"-c, --config <path>\", \"[string] path to config file\")\n .option(\"-r, --root <path>\", \"[string] root path to resolve config from\")\n .example((name) => `${name} generate`)\n .action(async (options: GenerateOptions) => generate(options));\n\ncli.help();\ncli.version(VERSION);\n\nvoid (async () => {\n try {\n // Parse CLI args without running command\n cli.parse(process.argv, { run: false });\n if (!cli.matchedCommand) {\n if (cli.args.length === 0) {\n if (!cli.options.help && !cli.options.version) cli.outputHelp();\n } else throw new Error(`Unknown command: ${cli.args.join(\" \")}`);\n }\n await cli.runMatchedCommand();\n } catch (error) {\n logger.error(`\\n${(error as Error).message}`);\n process.exit(1);\n }\n})();\n"]}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAwB,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,IAAI,EAAoB,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC;AAE7B,GAAG;KACA,OAAO,CAAC,MAAM,EAAE,mCAAmC,CAAC;KACpD,MAAM,CAAC,qBAAqB,EAAE,8BAA8B,CAAC;KAC7D,MAAM,CAAC,mBAAmB,EAAE,2CAA2C,CAAC;KACxE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,OAAO,CAAC;KACjC,MAAM,CAAC,KAAK,EAAE,OAAoB,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAEzD,GAAG;KACA,OAAO,CACN,UAAU,EACV,6EAA6E,CAC9E;KACA,MAAM,CAAC,qBAAqB,EAAE,8BAA8B,CAAC;KAC7D,MAAM,CAAC,mBAAmB,EAAE,2CAA2C,CAAC;KACxE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,WAAW,CAAC;KACrC,MAAM,CAAC,KAAK,EAAE,OAAwB,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAEjE,GAAG,CAAC,IAAI,EAAE,CAAC;AACX,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAErB,KAAK,CAAC,KAAK,IAAI,EAAE;IACf,IAAI,CAAC;QACH,yCAAyC;QACzC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO;oBAAE,GAAG,CAAC,UAAU,EAAE,CAAC;YAClE,CAAC;;gBAAM,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,MAAM,GAAG,CAAC,iBAAiB,EAAE,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,KAAM,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,EAAE,CAAC","sourcesContent":["#!/usr/bin/env node\nimport { cac } from \"cac\";\nimport { generate, type GenerateOptions } from \"./commands/generate/index.js\";\nimport { init, type InitOptions } from \"./commands/init.js\";\nimport * as logger from \"./logger.js\";\nimport { VERSION } from \"./version.js\";\n\nconst cli = cac(\"plugingen\");\n\ncli\n .command(\"init\", \"Initialize a new plugingen config\")\n .option(\"-c, --config <path>\", \"[string] path to config file\")\n .option(\"-r, --root <path>\", \"[string] root path to resolve config from\")\n .example((name) => `${name} init`)\n .action(async (options: InitOptions) => init(options));\n\ncli\n .command(\n \"generate\",\n \"Generate code for all of the plugins configured within the plugingen config\",\n )\n .option(\"-c, --config <path>\", \"[string] path to config file\")\n .option(\"-r, --root <path>\", \"[string] root path to resolve config from\")\n .example((name) => `${name} generate`)\n .action(async (options: GenerateOptions) => generate(options));\n\ncli.help();\ncli.version(VERSION);\n\nvoid (async () => {\n try {\n // Parse CLI args without running command\n cli.parse(process.argv, { run: false });\n if (!cli.matchedCommand) {\n if (cli.args.length === 0) {\n if (!cli.options.help && !cli.options.version) cli.outputHelp();\n } else throw new Error(`Unknown command: ${cli.args.join(\" \")}`);\n }\n await cli.runMatchedCommand();\n } catch (error) {\n logger.error(`\\n${(error as Error).message}`);\n process.exit(1);\n }\n})();\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/generate/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { asyncPipe } from \"@aa-sdk/core\";\nimport { kebabCase } from \"change-case\";\nimport dedent from \"dedent\";\nimport { default as fs } from \"fs-extra\";\nimport { basename, dirname, resolve } from \"pathe\";\nimport pc from \"picocolors\";\nimport {\n createPublicClient,\n getContract,\n http,\n type GetContractReturnType,\n type PublicClient,\n} from \"viem\";\nimport z from \"zod\";\nimport type { Config, PluginConfig } from \"../../config.js\";\nimport { IPluginAbi } from \"../../IPlugin.js\";\nimport * as logger from \"../../logger.js\";\nimport { findConfig } from \"../../utils/findConfig.js\";\nimport { format } from \"../../utils/format.js\";\nimport { getIsUsingTypeScript } from \"../../utils/isUsingTypescript.js\";\nimport { resolveConfig } from \"../../utils/resolveConfig.js\";\nimport { ContractAbiGenPhase } from \"./phases/contract-abi-gen.js\";\nimport { ContractAddressesGenPhase } from \"./phases/contract-addresses-gen.js\";\nimport { ExecutionAbiGenPhase } from \"./phases/execution-abi-gen.js\";\nimport { PluginActionsGenPhase } from \"./phases/plugin-actions/index.js\";\nimport { PluginGeneratorPhase } from \"./phases/plugin-generator/index.js\";\nimport type { Phase, PhaseInput } from \"./types.js\";\n\nconst GenerateSchema = z.object({\n /** Path to config file */\n config: z.string().optional(),\n /** Directory to search for config file */\n root: z.string().optional(),\n});\n\nexport type GenerateOptions = z.infer<typeof GenerateSchema>;\n\nexport async function generate(options: GenerateOptions = {}) {\n try {\n options = await GenerateSchema.parseAsync(options);\n } catch (error) {\n if (error instanceof z.ZodError) throw error;\n throw error;\n }\n\n // Get cli config file\n const configPath = await findConfig(options);\n if (!configPath) {\n if (options.config) {\n throw new Error(`Config not found at ${pc.gray(options.config)}`);\n }\n\n throw new Error(\"Config not found\");\n }\n\n const resolvedConfigs = await resolveConfig({ configPath });\n // TODO: need to use this in the phases below and add support for JS within the generated code\n // To support that we will likely need to:\n // 1. generate a types.ts file instead of appending the types to the top of the generated code\n // 2. in generated plugin.(ts|js) files we will either import the types or use the type reference comment\n // 3. in generated plugin files we need to check if TS when specifying the types of methods\n const isTypeScript = await getIsUsingTypeScript();\n if (!isTypeScript) {\n throw new Error(\"Only typescript is supported at the moment.\");\n }\n\n const outNames = new Set<string>();\n const isArrayConfig = Array.isArray(resolvedConfigs);\n const configs = isArrayConfig ? resolvedConfigs : [resolvedConfigs];\n\n for (const config of configs) {\n if (isArrayConfig)\n logger.log(`Using config ${pc.gray(basename(configPath))}`);\n\n // group configs by out dir\n if (!config.outDir) throw new Error(\"outDir is required.\");\n if (outNames.has(config.outDir))\n throw new Error(`outDir \"${config.outDir}\" must be unique.`);\n outNames.add(config.outDir);\n const spinner = logger.spinner();\n const pluginConfigs = config.plugins;\n\n // Get contracts from config\n spinner.start(\"Resolving plugin contracts\");\n if (!pluginConfigs || !pluginConfigs.length) {\n logger.warn(\"no plugins found in config\");\n spinner.fail();\n return;\n }\n\n // TODO: check that plugins are unique\n const plugins = pluginConfigs.map((plugin) => {\n const chain = plugin.chain ?? config.chain;\n const transport = http(plugin.rpcUrl ?? config.rpcUrl);\n\n const client = createPublicClient({\n chain,\n transport,\n });\n\n if (!(chain.id in plugin.addresses)) {\n spinner.fail();\n throw new Error(\n `contract address missing for the reference chain ${chain.id}`\n );\n }\n\n return {\n contract: getContract({\n address: plugin.addresses[chain.id],\n abi: IPluginAbi,\n client,\n }),\n pluginConfig: plugin,\n };\n });\n spinner.succeed();\n\n // Generate plugin files\n await Promise.all(\n plugins.map((plugin) =>\n generatePlugin({\n pluginConfig: plugin.pluginConfig,\n contract: plugin.contract,\n config,\n })\n )\n );\n }\n}\n\n// Add more phases here if needed\nconst phases: Phase[] = [\n ContractAddressesGenPhase,\n PluginGeneratorPhase,\n PluginActionsGenPhase,\n ExecutionAbiGenPhase,\n ContractAbiGenPhase,\n];\n\nconst generatePlugin = async ({\n pluginConfig,\n contract,\n config,\n}: {\n pluginConfig: PluginConfig;\n contract: GetContractReturnType<typeof IPluginAbi, PublicClient>;\n config: Config;\n}) => {\n const spinner = logger.spinner();\n spinner.start(`Generating plugin ${pc.gray(pluginConfig.name)}`);\n // Setup plugin generator\n const imports: Map<\n string,\n {\n types: Set<string>;\n members: Set<string>;\n }\n > = new Map();\n const addImport: PhaseInput[\"addImport\"] = (moduleName, member) => {\n if (!imports.has(moduleName)) {\n imports.set(moduleName, {\n types: new Set(),\n members: new Set(),\n });\n }\n\n const module = imports.get(moduleName)!;\n if (member.isType) {\n module.types.add(member.name);\n } else {\n module.members.add(member.name);\n }\n };\n const content: string[] = [];\n const types: Map<string, { definition: string; isPublic: boolean }> =\n new Map();\n const addType: PhaseInput[\"addType\"] = (typeName, typeDef, isPublic) => {\n if (types.has(typeName)) {\n throw new Error(`Type ${typeName} already exists`);\n }\n\n types.set(typeName, {\n definition: typeDef.replace(\";\", \"\"),\n isPublic: isPublic ?? false,\n });\n };\n\n // TODO: we need to handle the case where this isn't typescript because right now we generate types in here\n const result = await asyncPipe(...phases)({\n addImport,\n addType,\n content,\n config,\n contract,\n pluginConfig,\n });\n\n // Aggregate Result of phase\n const finalContent = dedent`\n ${Array.from(types.entries())\n .map(\n ([name, type]) =>\n `${type.isPublic ? \"export\" : \"\"} type ${name} = ${type.definition};`\n )\n .join(\"\\n\\n\")}\n\n ${result.content.join(\"\\n\\n\")}\n`;\n\n const finalImports = Array.from(imports.entries())\n .map(([moduleName, { members, types }]) => {\n return dedent`\n import { ${Array.from(members.values()).join(\",\")} ${\n members.size > 0 ? \",\" : \"\"\n } ${Array.from(types.values())\n .map((x) => `type ${x}`)\n .join(\",\")} } from \"${moduleName}\";\n `;\n })\n .join(\"\\n\");\n spinner.succeed();\n await writePlugin({\n config,\n content: finalContent,\n imports: finalImports,\n pluginConfig,\n });\n};\n\nconst writePlugin = async ({\n config,\n content,\n imports,\n pluginConfig,\n}: {\n pluginConfig: PluginConfig;\n config: Config;\n content: string;\n imports: string;\n}) => {\n const isTypeScript = await getIsUsingTypeScript();\n\n const pluginRegEx: RegExp = /[pP]lugin/g;\n // TODO: because we are now generating these ourselves, we have a lot more flexibility\n // We could:\n // 1. generate a types.ts file containing the type defs intead of merging them with content\n // 2. generate an extensions.ts file which doesn't get overwritten on each generation\n // 3. generate an index.ts file which correctly exports all of the types + exports the output of extensions.ts\n // so that it's easier to extend and import without conflicts\n const pluginPath = `${config.outDir}/${kebabCase(\n pluginConfig.name.replaceAll(pluginRegEx, \"\")\n )}/plugin.${isTypeScript ? \"ts\" : \"js\"}`;\n\n const code = dedent`\n ${imports}\n\n ${content}\n`;\n\n const spinner = logger.spinner();\n spinner.start(`Writing plugin to ${pc.gray(pluginPath)}`);\n // Format and write output\n const cwd = process.cwd();\n const outPath = resolve(cwd, pluginPath);\n await fs.ensureDir(dirname(outPath));\n const formatted = await format(code);\n await fs.writeFile(outPath, formatted);\n spinner.succeed();\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/generate/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { asyncPipe } from \"@aa-sdk/core\";\nimport { kebabCase } from \"change-case\";\nimport dedent from \"dedent\";\nimport { default as fs } from \"fs-extra\";\nimport { basename, dirname, resolve } from \"pathe\";\nimport pc from \"picocolors\";\nimport {\n createPublicClient,\n getContract,\n http,\n type GetContractReturnType,\n type PublicClient,\n} from \"viem\";\nimport z from \"zod\";\nimport type { Config, PluginConfig } from \"../../config.js\";\nimport { IPluginAbi } from \"../../IPlugin.js\";\nimport * as logger from \"../../logger.js\";\nimport { findConfig } from \"../../utils/findConfig.js\";\nimport { format } from \"../../utils/format.js\";\nimport { getIsUsingTypeScript } from \"../../utils/isUsingTypescript.js\";\nimport { resolveConfig } from \"../../utils/resolveConfig.js\";\nimport { ContractAbiGenPhase } from \"./phases/contract-abi-gen.js\";\nimport { ContractAddressesGenPhase } from \"./phases/contract-addresses-gen.js\";\nimport { ExecutionAbiGenPhase } from \"./phases/execution-abi-gen.js\";\nimport { PluginActionsGenPhase } from \"./phases/plugin-actions/index.js\";\nimport { PluginGeneratorPhase } from \"./phases/plugin-generator/index.js\";\nimport type { Phase, PhaseInput } from \"./types.js\";\n\nconst GenerateSchema = z.object({\n /** Path to config file */\n config: z.string().optional(),\n /** Directory to search for config file */\n root: z.string().optional(),\n});\n\nexport type GenerateOptions = z.infer<typeof GenerateSchema>;\n\nexport async function generate(options: GenerateOptions = {}) {\n try {\n options = await GenerateSchema.parseAsync(options);\n } catch (error) {\n if (error instanceof z.ZodError) throw error;\n throw error;\n }\n\n // Get cli config file\n const configPath = await findConfig(options);\n if (!configPath) {\n if (options.config) {\n throw new Error(`Config not found at ${pc.gray(options.config)}`);\n }\n\n throw new Error(\"Config not found\");\n }\n\n const resolvedConfigs = await resolveConfig({ configPath });\n // TODO: need to use this in the phases below and add support for JS within the generated code\n // To support that we will likely need to:\n // 1. generate a types.ts file instead of appending the types to the top of the generated code\n // 2. in generated plugin.(ts|js) files we will either import the types or use the type reference comment\n // 3. in generated plugin files we need to check if TS when specifying the types of methods\n const isTypeScript = await getIsUsingTypeScript();\n if (!isTypeScript) {\n throw new Error(\"Only typescript is supported at the moment.\");\n }\n\n const outNames = new Set<string>();\n const isArrayConfig = Array.isArray(resolvedConfigs);\n const configs = isArrayConfig ? resolvedConfigs : [resolvedConfigs];\n\n for (const config of configs) {\n if (isArrayConfig)\n logger.log(`Using config ${pc.gray(basename(configPath))}`);\n\n // group configs by out dir\n if (!config.outDir) throw new Error(\"outDir is required.\");\n if (outNames.has(config.outDir))\n throw new Error(`outDir \"${config.outDir}\" must be unique.`);\n outNames.add(config.outDir);\n const spinner = logger.spinner();\n const pluginConfigs = config.plugins;\n\n // Get contracts from config\n spinner.start(\"Resolving plugin contracts\");\n if (!pluginConfigs || !pluginConfigs.length) {\n logger.warn(\"no plugins found in config\");\n spinner.fail();\n return;\n }\n\n // TODO: check that plugins are unique\n const plugins = pluginConfigs.map((plugin) => {\n const chain = plugin.chain ?? config.chain;\n const transport = http(plugin.rpcUrl ?? config.rpcUrl);\n\n const client = createPublicClient({\n chain,\n transport,\n });\n\n if (!(chain.id in plugin.addresses)) {\n spinner.fail();\n throw new Error(\n `contract address missing for the reference chain ${chain.id}`,\n );\n }\n\n return {\n contract: getContract({\n address: plugin.addresses[chain.id],\n abi: IPluginAbi,\n client,\n }),\n pluginConfig: plugin,\n };\n });\n spinner.succeed();\n\n // Generate plugin files\n await Promise.all(\n plugins.map((plugin) =>\n generatePlugin({\n pluginConfig: plugin.pluginConfig,\n contract: plugin.contract,\n config,\n }),\n ),\n );\n }\n}\n\n// Add more phases here if needed\nconst phases: Phase[] = [\n ContractAddressesGenPhase,\n PluginGeneratorPhase,\n PluginActionsGenPhase,\n ExecutionAbiGenPhase,\n ContractAbiGenPhase,\n];\n\nconst generatePlugin = async ({\n pluginConfig,\n contract,\n config,\n}: {\n pluginConfig: PluginConfig;\n contract: GetContractReturnType<typeof IPluginAbi, PublicClient>;\n config: Config;\n}) => {\n const spinner = logger.spinner();\n spinner.start(`Generating plugin ${pc.gray(pluginConfig.name)}`);\n // Setup plugin generator\n const imports: Map<\n string,\n {\n types: Set<string>;\n members: Set<string>;\n }\n > = new Map();\n const addImport: PhaseInput[\"addImport\"] = (moduleName, member) => {\n if (!imports.has(moduleName)) {\n imports.set(moduleName, {\n types: new Set(),\n members: new Set(),\n });\n }\n\n const module = imports.get(moduleName)!;\n if (member.isType) {\n module.types.add(member.name);\n } else {\n module.members.add(member.name);\n }\n };\n const content: string[] = [];\n const types: Map<string, { definition: string; isPublic: boolean }> =\n new Map();\n const addType: PhaseInput[\"addType\"] = (typeName, typeDef, isPublic) => {\n if (types.has(typeName)) {\n throw new Error(`Type ${typeName} already exists`);\n }\n\n types.set(typeName, {\n definition: typeDef.replace(\";\", \"\"),\n isPublic: isPublic ?? false,\n });\n };\n\n // TODO: we need to handle the case where this isn't typescript because right now we generate types in here\n const result = await asyncPipe(...phases)({\n addImport,\n addType,\n content,\n config,\n contract,\n pluginConfig,\n });\n\n // Aggregate Result of phase\n const finalContent = dedent`\n ${Array.from(types.entries())\n .map(\n ([name, type]) =>\n `${type.isPublic ? \"export\" : \"\"} type ${name} = ${type.definition};`,\n )\n .join(\"\\n\\n\")}\n\n ${result.content.join(\"\\n\\n\")}\n`;\n\n const finalImports = Array.from(imports.entries())\n .map(([moduleName, { members, types }]) => {\n return dedent`\n import { ${Array.from(members.values()).join(\",\")} ${\n members.size > 0 ? \",\" : \"\"\n } ${Array.from(types.values())\n .map((x) => `type ${x}`)\n .join(\",\")} } from \"${moduleName}\";\n `;\n })\n .join(\"\\n\");\n spinner.succeed();\n await writePlugin({\n config,\n content: finalContent,\n imports: finalImports,\n pluginConfig,\n });\n};\n\nconst writePlugin = async ({\n config,\n content,\n imports,\n pluginConfig,\n}: {\n pluginConfig: PluginConfig;\n config: Config;\n content: string;\n imports: string;\n}) => {\n const isTypeScript = await getIsUsingTypeScript();\n\n const pluginRegEx: RegExp = /[pP]lugin/g;\n // TODO: because we are now generating these ourselves, we have a lot more flexibility\n // We could:\n // 1. generate a types.ts file containing the type defs intead of merging them with content\n // 2. generate an extensions.ts file which doesn't get overwritten on each generation\n // 3. generate an index.ts file which correctly exports all of the types + exports the output of extensions.ts\n // so that it's easier to extend and import without conflicts\n const pluginPath = `${config.outDir}/${kebabCase(\n pluginConfig.name.replaceAll(pluginRegEx, \"\"),\n )}/plugin.${isTypeScript ? \"ts\" : \"js\"}`;\n\n const code = dedent`\n ${imports}\n\n ${content}\n`;\n\n const spinner = logger.spinner();\n spinner.start(`Writing plugin to ${pc.gray(pluginPath)}`);\n // Format and write output\n const cwd = process.cwd();\n const outPath = resolve(cwd, pluginPath);\n await fs.ensureDir(dirname(outPath));\n const formatted = await format(code);\n await fs.writeFile(outPath, formatted);\n spinner.succeed();\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"contract-abi-gen.js","sourceRoot":"","sources":["../../../../../src/commands/generate/phases/contract-abi-gen.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAG5B,MAAM,CAAC,MAAM,mBAAmB,GAAU,KAAK,EAAE,KAAK,EAAE,EAAE;IACxD,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IACxC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAA;mBACF,YAAY,CAAC,IAAI,SAAS,IAAI,CAAC,SAAS,CACvD,YAAY,CAAC,GAAG,CACjB;GACA,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC,CAAC","sourcesContent":["import dedent from \"dedent\";\nimport type { Phase } from \"../types\";\n\nexport const ContractAbiGenPhase: Phase = async (input) => {\n const { content, pluginConfig } = input;\n content.push(dedent`\n export const ${pluginConfig.name}Abi = ${JSON.stringify(\n pluginConfig.abi\n )} as const;\n `);\n return input;\n};\n"]}
1
+ {"version":3,"file":"contract-abi-gen.js","sourceRoot":"","sources":["../../../../../src/commands/generate/phases/contract-abi-gen.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAG5B,MAAM,CAAC,MAAM,mBAAmB,GAAU,KAAK,EAAE,KAAK,EAAE,EAAE;IACxD,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IACxC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAA;mBACF,YAAY,CAAC,IAAI,SAAS,IAAI,CAAC,SAAS,CACrD,YAAY,CAAC,GAAG,CACjB;GACF,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC,CAAC","sourcesContent":["import dedent from \"dedent\";\nimport type { Phase } from \"../types\";\n\nexport const ContractAbiGenPhase: Phase = async (input) => {\n const { content, pluginConfig } = input;\n content.push(dedent`\n export const ${pluginConfig.name}Abi = ${JSON.stringify(\n pluginConfig.abi,\n )} as const;\n `);\n return input;\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"contract-addresses-gen.js","sourceRoot":"","sources":["../../../../../src/commands/generate/phases/contract-addresses-gen.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAI5B,MAAM,CAAC,MAAM,yBAAyB,GAAU,KAAK,EAAE,KAAK,EAAE,EAAE;IAC9D,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAEnD,SAAS,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAA;yBACI,MAAM,CAAC,OAAO,CACjC,YAAY,CAAC,SAAoC,CAClD,CAAC,MAAM,CACN,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,GAAG,OAAO,MAAM,IAAI,gBAAgB,CAAC,EACzE,EAAE,CACH;GACF,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC,CAAC","sourcesContent":["import dedent from \"dedent\";\nimport type { Address } from \"viem\";\nimport type { Phase } from \"../types\";\n\nexport const ContractAddressesGenPhase: Phase = async (input) => {\n const { pluginConfig, content, addImport } = input;\n\n addImport(\"viem\", { name: \"Address\", isType: true });\n content.push(dedent`\n const addresses = {${Object.entries(\n pluginConfig.addresses as Record<number, Address>\n ).reduce(\n (prev, [chainId, addr]) => (prev += `${chainId}: \"${addr}\" as Address, `),\n \"\"\n )}} as Record<number, Address>;\n `);\n return input;\n};\n"]}
1
+ {"version":3,"file":"contract-addresses-gen.js","sourceRoot":"","sources":["../../../../../src/commands/generate/phases/contract-addresses-gen.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAI5B,MAAM,CAAC,MAAM,yBAAyB,GAAU,KAAK,EAAE,KAAK,EAAE,EAAE;IAC9D,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAEnD,SAAS,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAA;yBACI,MAAM,CAAC,OAAO,CACjC,YAAY,CAAC,SAAoC,CAClD,CAAC,MAAM,CACN,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,GAAG,OAAO,MAAM,IAAI,gBAAgB,CAAC,EACzE,EAAE,CACH;GACF,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC,CAAC","sourcesContent":["import dedent from \"dedent\";\nimport type { Address } from \"viem\";\nimport type { Phase } from \"../types\";\n\nexport const ContractAddressesGenPhase: Phase = async (input) => {\n const { pluginConfig, content, addImport } = input;\n\n addImport(\"viem\", { name: \"Address\", isType: true });\n content.push(dedent`\n const addresses = {${Object.entries(\n pluginConfig.addresses as Record<number, Address>,\n ).reduce(\n (prev, [chainId, addr]) => (prev += `${chainId}: \"${addr}\" as Address, `),\n \"\",\n )}} as Record<number, Address>;\n `);\n return input;\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"execution-abi-gen.js","sourceRoot":"","sources":["../../../../../src/commands/generate/phases/execution-abi-gen.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAErE,MAAM,CAAC,MAAM,oBAAoB,GAAU,KAAK,EAAE,KAAK,EAAE,EAAE;IACzD,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IAElD,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;IACpE,MAAM,YAAY,GAAG,mBAAmB,CACtC,kBAAkB,EAClB,YAAY,CAAC,GAAG,CACjB,CAAC;IAEF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAA;mBACF,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS,CACvE,YAAY,CACb;GACA,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC,CAAC","sourcesContent":["import dedent from \"dedent\";\nimport type { Phase } from \"../types\";\nimport { executionAbiConst, extractExecutionAbi } from \"../utils.js\";\n\nexport const ExecutionAbiGenPhase: Phase = async (input) => {\n const { contract, content, pluginConfig } = input;\n\n const { executionFunctions } = await contract.read.pluginManifest();\n const executionAbi = extractExecutionAbi(\n executionFunctions,\n pluginConfig.abi\n );\n\n content.push(dedent`\n export const ${executionAbiConst(pluginConfig.name)} = ${JSON.stringify(\n executionAbi\n )} as const;\n `);\n return input;\n};\n"]}
1
+ {"version":3,"file":"execution-abi-gen.js","sourceRoot":"","sources":["../../../../../src/commands/generate/phases/execution-abi-gen.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAErE,MAAM,CAAC,MAAM,oBAAoB,GAAU,KAAK,EAAE,KAAK,EAAE,EAAE;IACzD,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IAElD,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;IACpE,MAAM,YAAY,GAAG,mBAAmB,CACtC,kBAAkB,EAClB,YAAY,CAAC,GAAG,CACjB,CAAC;IAEF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAA;mBACF,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS,CACrE,YAAY,CACb;GACF,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC,CAAC","sourcesContent":["import dedent from \"dedent\";\nimport type { Phase } from \"../types\";\nimport { executionAbiConst, extractExecutionAbi } from \"../utils.js\";\n\nexport const ExecutionAbiGenPhase: Phase = async (input) => {\n const { contract, content, pluginConfig } = input;\n\n const { executionFunctions } = await contract.read.pluginManifest();\n const executionAbi = extractExecutionAbi(\n executionFunctions,\n pluginConfig.abi,\n );\n\n content.push(dedent`\n export const ${executionAbiConst(pluginConfig.name)} = ${JSON.stringify(\n executionAbi,\n )} as const;\n `);\n return input;\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/commands/generate/phases/plugin-actions/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { asyncPipe } from \"@aa-sdk/core\";\nimport { camelCase } from \"change-case\";\nimport dedent from \"dedent\";\nimport type { Phase } from \"../../types\";\nimport { extractExecutionAbi } from \"../../utils.js\";\nimport { ManagementActionsGenPhase } from \"./management-actions.js\";\nimport { AccountReadActionsGenPhase } from \"./read-actions.js\";\n\nexport const PluginActionsGenPhase: Phase = async (input) => {\n const { pluginConfig, contract, addImport, addType } = input;\n const { executionFunctions } = await contract.read.pluginManifest();\n const executionAbiConst = `${pluginConfig.name}ExecutionFunctionAbi`;\n const executionAbi = extractExecutionAbi(\n executionFunctions,\n pluginConfig.abi\n );\n\n addImport(\"viem\", { name: \"EncodeFunctionDataParameters\", isType: true });\n addImport(\"viem\", { name: \"Transport\", isType: true });\n addImport(\"viem\", { name: \"Chain\", isType: true });\n addImport(\"viem\", { name: \"Client\", isType: true });\n addImport(\"@aa-sdk/core\", {\n name: \"SmartContractAccount\",\n isType: true,\n });\n addImport(\"@aa-sdk/core\", {\n name: \"GetAccountParameter\",\n isType: true,\n });\n addImport(\"@aa-sdk/core\", {\n name: \"SendUserOperationResult\",\n isType: true,\n });\n addImport(\"@aa-sdk/core\", {\n name: \"GetEntryPointFromAccount\",\n isType: true,\n });\n addImport(\"@aa-sdk/core\", {\n name: \"UserOperationOverridesParameter\",\n isType: true,\n });\n addImport(\"@aa-sdk/core\", {\n name: \"UserOperationContext\",\n isType: true,\n });\n addImport(\"@aa-sdk/core\", { name: \"AccountNotFoundError\" });\n addImport(\"@aa-sdk/core\", { name: \"isSmartAccountClient\" });\n addImport(\"@aa-sdk/core\", { name: \"IncompatibleClientError\" });\n addImport(\"@aa-sdk/core\", { name: \"GetContextParameter\", isType: true });\n\n const providerFunctionDefs: string[] = [];\n const providerFunctions = executionAbi\n .filter((n) => n.stateMutability !== \"view\")\n .map((n) => {\n const argsParamString =\n n.inputs.length > 0\n ? dedent`{\n args,\n overrides,\n context,\n account = client.account\n }`\n : dedent`{\n overrides,\n context,\n account = client.account\n }`;\n const argsEncodeString = n.inputs.length > 0 ? \"args,\" : \"\";\n\n providerFunctionDefs.push(dedent`\n ${camelCase(\n n.name\n )}: (args: Pick<EncodeFunctionDataParameters<typeof ${executionAbiConst}, \"${\n n.name\n }\">, \"args\"> & UserOperationOverridesParameter<TEntryPointVersion> &\n GetAccountParameter<TAccount> & GetContextParameter<TContext>) =>\n Promise<SendUserOperationResult<TEntryPointVersion>>\n `);\n const methodName = camelCase(n.name);\n return dedent`\n ${methodName}(${argsParamString}) {\n if (!account) {\n throw new AccountNotFoundError();\n }\n if (!isSmartAccountClient(client)) {\n throw new IncompatibleClientError(\"SmartAccountClient\", \"${methodName}\", client);\n }\n\n const uo = encodeFunctionData({\n abi: ${executionAbiConst},\n functionName: \"${n.name}\",\n ${argsEncodeString}\n });\n\n return client.sendUserOperation({ uo, overrides, account, context });\n }\n `;\n });\n\n addType(\n `ExecutionActions<\n TAccount extends SmartContractAccount | undefined = SmartContractAccount | undefined,\n TContext extends UserOperationContext | undefined = UserOperationContext | undefined,\n TEntryPointVersion extends GetEntryPointFromAccount<TAccount> = GetEntryPointFromAccount<TAccount>\n >`,\n dedent`{\n ${providerFunctionDefs.join(\";\\n\\n\")}\n }`\n );\n\n const { hasReadMethods } = await asyncPipe(\n ManagementActionsGenPhase,\n AccountReadActionsGenPhase\n )({\n ...input,\n content: providerFunctions,\n });\n\n addType(\n `${pluginConfig.name}Actions<\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined,\n TContext extends UserOperationContext | undefined = UserOperationContext | undefined>`,\n dedent`\n ExecutionActions<TAccount, TContext> & ManagementActions<TAccount, TContext> & ReadAndEncodeActions${\n hasReadMethods ? \"<TAccount>\" : \"\"\n }\n `,\n true\n );\n\n input.content.push(dedent`\n export const ${camelCase(pluginConfig.name)}Actions: <\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined,\n TContext extends UserOperationContext | undefined = UserOperationContext | undefined\n >(\n client: Client<TTransport, TChain, TAccount>\n ) => ${\n pluginConfig.name\n }Actions<TAccount, TContext> = (client) => ({ ${providerFunctions.join(\n \",\\n\"\n )} });\n `);\n\n return input;\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/commands/generate/phases/plugin-actions/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { asyncPipe } from \"@aa-sdk/core\";\nimport { camelCase } from \"change-case\";\nimport dedent from \"dedent\";\nimport type { Phase } from \"../../types\";\nimport { extractExecutionAbi } from \"../../utils.js\";\nimport { ManagementActionsGenPhase } from \"./management-actions.js\";\nimport { AccountReadActionsGenPhase } from \"./read-actions.js\";\n\nexport const PluginActionsGenPhase: Phase = async (input) => {\n const { pluginConfig, contract, addImport, addType } = input;\n const { executionFunctions } = await contract.read.pluginManifest();\n const executionAbiConst = `${pluginConfig.name}ExecutionFunctionAbi`;\n const executionAbi = extractExecutionAbi(\n executionFunctions,\n pluginConfig.abi,\n );\n\n addImport(\"viem\", { name: \"EncodeFunctionDataParameters\", isType: true });\n addImport(\"viem\", { name: \"Transport\", isType: true });\n addImport(\"viem\", { name: \"Chain\", isType: true });\n addImport(\"viem\", { name: \"Client\", isType: true });\n addImport(\"@aa-sdk/core\", {\n name: \"SmartContractAccount\",\n isType: true,\n });\n addImport(\"@aa-sdk/core\", {\n name: \"GetAccountParameter\",\n isType: true,\n });\n addImport(\"@aa-sdk/core\", {\n name: \"SendUserOperationResult\",\n isType: true,\n });\n addImport(\"@aa-sdk/core\", {\n name: \"GetEntryPointFromAccount\",\n isType: true,\n });\n addImport(\"@aa-sdk/core\", {\n name: \"UserOperationOverridesParameter\",\n isType: true,\n });\n addImport(\"@aa-sdk/core\", {\n name: \"UserOperationContext\",\n isType: true,\n });\n addImport(\"@aa-sdk/core\", { name: \"AccountNotFoundError\" });\n addImport(\"@aa-sdk/core\", { name: \"isSmartAccountClient\" });\n addImport(\"@aa-sdk/core\", { name: \"IncompatibleClientError\" });\n addImport(\"@aa-sdk/core\", { name: \"GetContextParameter\", isType: true });\n\n const providerFunctionDefs: string[] = [];\n const providerFunctions = executionAbi\n .filter((n) => n.stateMutability !== \"view\")\n .map((n) => {\n const argsParamString =\n n.inputs.length > 0\n ? dedent`{\n args,\n overrides,\n context,\n account = client.account\n }`\n : dedent`{\n overrides,\n context,\n account = client.account\n }`;\n const argsEncodeString = n.inputs.length > 0 ? \"args,\" : \"\";\n\n providerFunctionDefs.push(dedent`\n ${camelCase(\n n.name,\n )}: (args: Pick<EncodeFunctionDataParameters<typeof ${executionAbiConst}, \"${\n n.name\n }\">, \"args\"> & UserOperationOverridesParameter<TEntryPointVersion> &\n GetAccountParameter<TAccount> & GetContextParameter<TContext>) =>\n Promise<SendUserOperationResult<TEntryPointVersion>>\n `);\n const methodName = camelCase(n.name);\n return dedent`\n ${methodName}(${argsParamString}) {\n if (!account) {\n throw new AccountNotFoundError();\n }\n if (!isSmartAccountClient(client)) {\n throw new IncompatibleClientError(\"SmartAccountClient\", \"${methodName}\", client);\n }\n\n const uo = encodeFunctionData({\n abi: ${executionAbiConst},\n functionName: \"${n.name}\",\n ${argsEncodeString}\n });\n\n return client.sendUserOperation({ uo, overrides, account, context });\n }\n `;\n });\n\n addType(\n `ExecutionActions<\n TAccount extends SmartContractAccount | undefined = SmartContractAccount | undefined,\n TContext extends UserOperationContext | undefined = UserOperationContext | undefined,\n TEntryPointVersion extends GetEntryPointFromAccount<TAccount> = GetEntryPointFromAccount<TAccount>\n >`,\n dedent`{\n ${providerFunctionDefs.join(\";\\n\\n\")}\n }`,\n );\n\n const { hasReadMethods } = await asyncPipe(\n ManagementActionsGenPhase,\n AccountReadActionsGenPhase,\n )({\n ...input,\n content: providerFunctions,\n });\n\n addType(\n `${pluginConfig.name}Actions<\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined,\n TContext extends UserOperationContext | undefined = UserOperationContext | undefined>`,\n dedent`\n ExecutionActions<TAccount, TContext> & ManagementActions<TAccount, TContext> & ReadAndEncodeActions${\n hasReadMethods ? \"<TAccount>\" : \"\"\n }\n `,\n true,\n );\n\n input.content.push(dedent`\n export const ${camelCase(pluginConfig.name)}Actions: <\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined,\n TContext extends UserOperationContext | undefined = UserOperationContext | undefined\n >(\n client: Client<TTransport, TChain, TAccount>\n ) => ${\n pluginConfig.name\n }Actions<TAccount, TContext> = (client) => ({ ${providerFunctions.join(\n \",\\n\",\n )} });\n `);\n\n return input;\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"management-actions.js","sourceRoot":"","sources":["../../../../../../src/commands/generate/phases/plugin-actions/management-actions.ts"],"names":[],"mappings":"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","sourcesContent":["import { kebabCase } from \"change-case\";\nimport dedent from \"dedent\";\nimport type { PluginConfig } from \"../../../../config\";\nimport type { Phase, PhaseInput } from \"../../types\";\n\nexport const ManagementActionsGenPhase: Phase = async (input) => {\n const { addImport, pluginConfig, addType } = input;\n if (pluginConfig.installConfig != null) {\n addImports(\n addImport,\n pluginConfig.installConfig.dependencies?.map((x) => x.plugin) ?? []\n );\n\n const initArgs = pluginConfig.installConfig.initAbiParams ?? [];\n\n addType(\"InstallArgs\", JSON.stringify(initArgs));\n addType(\n `Install${pluginConfig.name}Params`,\n dedent`{\n args: Parameters<typeof encodeAbiParameters<InstallArgs>>[1];\n pluginAddress?: Address;\n dependencyOverrides?: FunctionReference[];\n }`,\n true\n );\n addType(\n `ManagementActions<\n TAccount extends SmartContractAccount | undefined = SmartContractAccount | undefined,\n TContext extends UserOperationContext | undefined = Record<string,any> | undefined,\n TEntryPointVersion extends GetEntryPointFromAccount<TAccount> = GetEntryPointFromAccount<TAccount>\n >`,\n dedent`{\n install${pluginConfig.name}: (args:\n UserOperationOverridesParameter<TEntryPointVersion> &\n Install${pluginConfig.name}Params & GetAccountParameter<TAccount> & GetContextParameter<TContext>) =>\n Promise<SendUserOperationResult<TEntryPointVersion>>\n }`\n );\n\n const dependencies = (pluginConfig.installConfig.dependencies ?? []).map(\n (x) => dedent`\n (() => {\n const pluginAddress = ${x.plugin.name}.meta.addresses[chain.id];\n if (!pluginAddress) {\n throw new Error(\"missing ${x.plugin.name} address for chain \" + chain.name);\n }\n\n return encodePacked(\n [\"address\", \"uint8\"],\n [pluginAddress, ${x.functionId}]\n );\n })()\n `\n );\n\n const installMethodName = `install${pluginConfig.name}`;\n\n input.content.push(dedent`\n ${installMethodName}({account = client.account, overrides, context, ...params}) {\n if (!account) {\n throw new AccountNotFoundError();\n }\n\n if (!isSmartAccountClient(client)) {\n throw new IncompatibleClientError(\"SmartAccountClient\", \"${installMethodName}\", client);\n }\n\n const chain = client.chain;\n if (!chain) {\n throw new ChainNotFoundError();\n }\n\n const dependencies = params.dependencyOverrides ?? [${dependencies.join(\n \",\\n\\n\"\n )}];\n const pluginAddress = params.pluginAddress ?? ${\n pluginConfig.name\n }.meta.addresses[chain.id] as Address | undefined;\n\n if (!pluginAddress) {\n throw new Error(\"missing ${\n pluginConfig.name\n } address for chain \" + chain.name);\n }\n\n return installPlugin_(client, {\n pluginAddress,\n pluginInitData: encodeAbiParameters(${JSON.stringify(\n initArgs\n )}, params.args),\n dependencies,\n overrides,\n account,\n context,\n });\n }\n `);\n }\n\n return input;\n};\n\nconst addImports = (\n addImport: PhaseInput[\"addImport\"],\n deps?: PluginConfig[]\n) => {\n if (deps != null && deps.length > 0) {\n addImport(\"viem\", { name: \"encodePacked\" });\n deps.forEach((x) => {\n addImport(\n `../${kebabCase(x.name.replaceAll(/[pP]lugin/g, \"\"))}/plugin.js`,\n {\n name: x.name,\n }\n );\n });\n }\n\n addImport(\"@aa-sdk/core\", { name: \"ChainNotFoundError\" });\n addImport(\"viem\", { name: \"encodeAbiParameters\" });\n addImport(\"@account-kit/smart-contracts\", {\n name: \"installPlugin as installPlugin_\",\n });\n addImport(\"@aa-sdk/core\", {\n name: \"GetAccountParameter\",\n isType: true,\n });\n addImport(\"@aa-sdk/core\", {\n name: \"GetEntryPointFromAccount\",\n isType: true,\n });\n addImport(\"@aa-sdk/core\", {\n name: \"UserOperationContext\",\n isType: true,\n });\n addImport(\"@account-kit/smart-contracts\", {\n name: \"FunctionReference\",\n isType: true,\n });\n addImport(\"@aa-sdk/core\", { name: \"GetContextParameter\", isType: true });\n};\n"]}
1
+ {"version":3,"file":"management-actions.js","sourceRoot":"","sources":["../../../../../../src/commands/generate/phases/plugin-actions/management-actions.ts"],"names":[],"mappings":"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","sourcesContent":["import { kebabCase } from \"change-case\";\nimport dedent from \"dedent\";\nimport type { PluginConfig } from \"../../../../config\";\nimport type { Phase, PhaseInput } from \"../../types\";\n\nexport const ManagementActionsGenPhase: Phase = async (input) => {\n const { addImport, pluginConfig, addType } = input;\n if (pluginConfig.installConfig != null) {\n addImports(\n addImport,\n pluginConfig.installConfig.dependencies?.map((x) => x.plugin) ?? [],\n );\n\n const initArgs = pluginConfig.installConfig.initAbiParams ?? [];\n\n addType(\"InstallArgs\", JSON.stringify(initArgs));\n addType(\n `Install${pluginConfig.name}Params`,\n dedent`{\n args: Parameters<typeof encodeAbiParameters<InstallArgs>>[1];\n pluginAddress?: Address;\n dependencyOverrides?: FunctionReference[];\n }`,\n true,\n );\n addType(\n `ManagementActions<\n TAccount extends SmartContractAccount | undefined = SmartContractAccount | undefined,\n TContext extends UserOperationContext | undefined = Record<string,any> | undefined,\n TEntryPointVersion extends GetEntryPointFromAccount<TAccount> = GetEntryPointFromAccount<TAccount>\n >`,\n dedent`{\n install${pluginConfig.name}: (args:\n UserOperationOverridesParameter<TEntryPointVersion> &\n Install${pluginConfig.name}Params & GetAccountParameter<TAccount> & GetContextParameter<TContext>) =>\n Promise<SendUserOperationResult<TEntryPointVersion>>\n }`,\n );\n\n const dependencies = (pluginConfig.installConfig.dependencies ?? []).map(\n (x) => dedent`\n (() => {\n const pluginAddress = ${x.plugin.name}.meta.addresses[chain.id];\n if (!pluginAddress) {\n throw new Error(\"missing ${x.plugin.name} address for chain \" + chain.name);\n }\n\n return encodePacked(\n [\"address\", \"uint8\"],\n [pluginAddress, ${x.functionId}]\n );\n })()\n `,\n );\n\n const installMethodName = `install${pluginConfig.name}`;\n\n input.content.push(dedent`\n ${installMethodName}({account = client.account, overrides, context, ...params}) {\n if (!account) {\n throw new AccountNotFoundError();\n }\n\n if (!isSmartAccountClient(client)) {\n throw new IncompatibleClientError(\"SmartAccountClient\", \"${installMethodName}\", client);\n }\n\n const chain = client.chain;\n if (!chain) {\n throw new ChainNotFoundError();\n }\n\n const dependencies = params.dependencyOverrides ?? [${dependencies.join(\n \",\\n\\n\",\n )}];\n const pluginAddress = params.pluginAddress ?? ${\n pluginConfig.name\n }.meta.addresses[chain.id] as Address | undefined;\n\n if (!pluginAddress) {\n throw new Error(\"missing ${\n pluginConfig.name\n } address for chain \" + chain.name);\n }\n\n return installPlugin_(client, {\n pluginAddress,\n pluginInitData: encodeAbiParameters(${JSON.stringify(\n initArgs,\n )}, params.args),\n dependencies,\n overrides,\n account,\n context,\n });\n }\n `);\n }\n\n return input;\n};\n\nconst addImports = (\n addImport: PhaseInput[\"addImport\"],\n deps?: PluginConfig[],\n) => {\n if (deps != null && deps.length > 0) {\n addImport(\"viem\", { name: \"encodePacked\" });\n deps.forEach((x) => {\n addImport(\n `../${kebabCase(x.name.replaceAll(/[pP]lugin/g, \"\"))}/plugin.js`,\n {\n name: x.name,\n },\n );\n });\n }\n\n addImport(\"@aa-sdk/core\", { name: \"ChainNotFoundError\" });\n addImport(\"viem\", { name: \"encodeAbiParameters\" });\n addImport(\"@account-kit/smart-contracts\", {\n name: \"installPlugin as installPlugin_\",\n });\n addImport(\"@aa-sdk/core\", {\n name: \"GetAccountParameter\",\n isType: true,\n });\n addImport(\"@aa-sdk/core\", {\n name: \"GetEntryPointFromAccount\",\n isType: true,\n });\n addImport(\"@aa-sdk/core\", {\n name: \"UserOperationContext\",\n isType: true,\n });\n addImport(\"@account-kit/smart-contracts\", {\n name: \"FunctionReference\",\n isType: true,\n });\n addImport(\"@aa-sdk/core\", { name: \"GetContextParameter\", isType: true });\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"read-actions.js","sourceRoot":"","sources":["../../../../../../src/commands/generate/phases/plugin-actions/read-actions.ts"],"names":[],"mappings":"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","sourcesContent":["import { pascalCase } from \"change-case\";\nimport dedent from \"dedent\";\nimport type { Phase } from \"../../types\";\nimport { extractExecutionAbi } from \"../../utils.js\";\n\nexport const AccountReadActionsGenPhase: Phase = async (input) => {\n const { pluginConfig, contract, addImport, addType } = input;\n const { executionFunctions } = await contract.read.pluginManifest();\n const executionAbiConst = `${pluginConfig.name}ExecutionFunctionAbi`;\n const executionAbi = extractExecutionAbi(\n executionFunctions,\n pluginConfig.abi\n );\n\n addImport(\"viem\", { name: \"EncodeFunctionDataParameters\", isType: true });\n addImport(\"viem\", { name: \"encodeFunctionData\" });\n addImport(\"viem\", { name: \"Hex\", isType: true });\n\n const accountFunctionActionDefs: string[] = [];\n\n const accountFunctions = executionAbi.map((n) => {\n const methodContent: string[] = [];\n const argsParamString = n.inputs.length > 0 ? `{ args }` : \"\";\n const argsEncodeString = n.inputs.length > 0 ? \"args,\" : \"\";\n const isViewFunction = n.stateMutability === \"view\";\n\n const encodeMethodName = `encode${pascalCase(n.name)}`;\n accountFunctionActionDefs.push(\n dedent`${encodeMethodName}: (args: Pick<EncodeFunctionDataParameters<typeof ${executionAbiConst}, \"${n.name}\">, \"args\">) => Hex`\n );\n methodContent.push(dedent`\n ${encodeMethodName}(${argsParamString}) {\n return encodeFunctionData({\n abi: ${executionAbiConst},\n functionName: \"${n.name}\",\n ${argsEncodeString}\n });\n }\n `);\n\n const readArgsParamString =\n n.inputs.length > 0\n ? `{ args, account = client.account }`\n : \"{ account = client.account }\";\n if (isViewFunction) {\n addImport(\"viem\", { name: \"ReadContractReturnType\", isType: true });\n input.hasReadMethods = true;\n const readMethodName = `read${pascalCase(n.name)}`;\n accountFunctionActionDefs.push(\n n.inputs.length > 0\n ? dedent`${readMethodName}: (\n args: Pick<EncodeFunctionDataParameters<typeof ${executionAbiConst}, \"${n.name}\">, \"args\"> &\n GetAccountParameter<TAccount>\n ) => Promise<ReadContractReturnType<typeof ${executionAbiConst}, \"${n.name}\">>`\n : dedent`${readMethodName}: (args: GetAccountParameter<TAccount>) =>\n Promise<ReadContractReturnType<typeof ${executionAbiConst}, \"${n.name}\">>`\n );\n\n methodContent.push(dedent`\n async ${readMethodName} (${readArgsParamString}) {\n if (!account) {\n throw new AccountNotFoundError();\n }\n\n if (!isSmartAccountClient(client)) {\n throw new IncompatibleClientError(\"SmartAccountClient\", \"${readMethodName}\", client);\n }\n\n return client.readContract({\n address: account.address,\n abi: ${executionAbiConst},\n functionName: \"${n.name}\",\n ${argsEncodeString}\n });\n }\n `);\n }\n\n return methodContent.join(\",\\n\\n\");\n });\n\n const typeName = input.hasReadMethods\n ? `ReadAndEncodeActions<\n TAccount extends SmartContractAccount | undefined = SmartContractAccount | undefined,\n >`\n : \"ReadAndEncodeActions\";\n\n addType(\n typeName,\n dedent`{\n ${accountFunctionActionDefs.join(\";\\n\\n\")}\n }`\n );\n input.content.push(...accountFunctions);\n\n return input;\n};\n"]}
1
+ {"version":3,"file":"read-actions.js","sourceRoot":"","sources":["../../../../../../src/commands/generate/phases/plugin-actions/read-actions.ts"],"names":[],"mappings":"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","sourcesContent":["import { pascalCase } from \"change-case\";\nimport dedent from \"dedent\";\nimport type { Phase } from \"../../types\";\nimport { extractExecutionAbi } from \"../../utils.js\";\n\nexport const AccountReadActionsGenPhase: Phase = async (input) => {\n const { pluginConfig, contract, addImport, addType } = input;\n const { executionFunctions } = await contract.read.pluginManifest();\n const executionAbiConst = `${pluginConfig.name}ExecutionFunctionAbi`;\n const executionAbi = extractExecutionAbi(\n executionFunctions,\n pluginConfig.abi,\n );\n\n addImport(\"viem\", { name: \"EncodeFunctionDataParameters\", isType: true });\n addImport(\"viem\", { name: \"encodeFunctionData\" });\n addImport(\"viem\", { name: \"Hex\", isType: true });\n\n const accountFunctionActionDefs: string[] = [];\n\n const accountFunctions = executionAbi.map((n) => {\n const methodContent: string[] = [];\n const argsParamString = n.inputs.length > 0 ? `{ args }` : \"\";\n const argsEncodeString = n.inputs.length > 0 ? \"args,\" : \"\";\n const isViewFunction = n.stateMutability === \"view\";\n\n const encodeMethodName = `encode${pascalCase(n.name)}`;\n accountFunctionActionDefs.push(\n dedent`${encodeMethodName}: (args: Pick<EncodeFunctionDataParameters<typeof ${executionAbiConst}, \"${n.name}\">, \"args\">) => Hex`,\n );\n methodContent.push(dedent`\n ${encodeMethodName}(${argsParamString}) {\n return encodeFunctionData({\n abi: ${executionAbiConst},\n functionName: \"${n.name}\",\n ${argsEncodeString}\n });\n }\n `);\n\n const readArgsParamString =\n n.inputs.length > 0\n ? `{ args, account = client.account }`\n : \"{ account = client.account }\";\n if (isViewFunction) {\n addImport(\"viem\", { name: \"ReadContractReturnType\", isType: true });\n input.hasReadMethods = true;\n const readMethodName = `read${pascalCase(n.name)}`;\n accountFunctionActionDefs.push(\n n.inputs.length > 0\n ? dedent`${readMethodName}: (\n args: Pick<EncodeFunctionDataParameters<typeof ${executionAbiConst}, \"${n.name}\">, \"args\"> &\n GetAccountParameter<TAccount>\n ) => Promise<ReadContractReturnType<typeof ${executionAbiConst}, \"${n.name}\">>`\n : dedent`${readMethodName}: (args: GetAccountParameter<TAccount>) =>\n Promise<ReadContractReturnType<typeof ${executionAbiConst}, \"${n.name}\">>`,\n );\n\n methodContent.push(dedent`\n async ${readMethodName} (${readArgsParamString}) {\n if (!account) {\n throw new AccountNotFoundError();\n }\n\n if (!isSmartAccountClient(client)) {\n throw new IncompatibleClientError(\"SmartAccountClient\", \"${readMethodName}\", client);\n }\n\n return client.readContract({\n address: account.address,\n abi: ${executionAbiConst},\n functionName: \"${n.name}\",\n ${argsEncodeString}\n });\n }\n `);\n }\n\n return methodContent.join(\",\\n\\n\");\n });\n\n const typeName = input.hasReadMethods\n ? `ReadAndEncodeActions<\n TAccount extends SmartContractAccount | undefined = SmartContractAccount | undefined,\n >`\n : \"ReadAndEncodeActions\";\n\n addType(\n typeName,\n dedent`{\n ${accountFunctionActionDefs.join(\";\\n\\n\")}\n }`,\n );\n input.content.push(...accountFunctions);\n\n return input;\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/commands/generate/phases/plugin-generator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,CAAC,MAAM,oBAAoB,GAAU,KAAK,EAAE,KAAK,EAAE,EAAE;IACzD,MAAM,YAAY,GAAY,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC;IAClE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAE1C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,YAAY,CAAC,CAAC;QAC9C,GAAG,KAAK;QACR,OAAO,EAAE,EAAE;KACZ,CAAC,CAAC;IAEH,SAAS,CAAC,8BAA8B,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5E,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAA;mBACR,YAAY,CAAC,IAAI,mBAChC,YAAY,CAAC,IACf;UACQ,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;;GAEjC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACf,CAAC,CAAC","sourcesContent":["import { asyncPipe } from \"@aa-sdk/core\";\nimport dedent from \"dedent\";\nimport type { Phase } from \"../../types\";\nimport { GetContractGenPhase } from \"./get-contract-gen.js\";\nimport { MetaGenPhase } from \"./meta-gen.js\";\n\nexport const PluginGeneratorPhase: Phase = async (input) => {\n const pluginPhases: Phase[] = [MetaGenPhase, GetContractGenPhase];\n const { pluginConfig, addImport } = input;\n\n const result = await asyncPipe(...pluginPhases)({\n ...input,\n content: [],\n });\n\n addImport(\"@account-kit/smart-contracts\", { name: \"Plugin\", isType: true });\n\n input.content.push(dedent`\n export const ${pluginConfig.name}: Plugin<typeof ${\n pluginConfig.name\n }Abi> = {\n ${result.content.join(\",\\n\")}\n };\n `);\n\n return input;\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/commands/generate/phases/plugin-generator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,CAAC,MAAM,oBAAoB,GAAU,KAAK,EAAE,KAAK,EAAE,EAAE;IACzD,MAAM,YAAY,GAAY,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC;IAClE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAE1C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,YAAY,CAAC,CAAC;QAC9C,GAAG,KAAK;QACR,OAAO,EAAE,EAAE;KACZ,CAAC,CAAC;IAEH,SAAS,CAAC,8BAA8B,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5E,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAA;mBACR,YAAY,CAAC,IAAI,mBAC9B,YAAY,CAAC,IACf;UACM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;;GAEjC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACf,CAAC,CAAC","sourcesContent":["import { asyncPipe } from \"@aa-sdk/core\";\nimport dedent from \"dedent\";\nimport type { Phase } from \"../../types\";\nimport { GetContractGenPhase } from \"./get-contract-gen.js\";\nimport { MetaGenPhase } from \"./meta-gen.js\";\n\nexport const PluginGeneratorPhase: Phase = async (input) => {\n const pluginPhases: Phase[] = [MetaGenPhase, GetContractGenPhase];\n const { pluginConfig, addImport } = input;\n\n const result = await asyncPipe(...pluginPhases)({\n ...input,\n content: [],\n });\n\n addImport(\"@account-kit/smart-contracts\", { name: \"Plugin\", isType: true });\n\n input.content.push(dedent`\n export const ${pluginConfig.name}: Plugin<typeof ${\n pluginConfig.name\n }Abi> = {\n ${result.content.join(\",\\n\")}\n };\n `);\n\n return input;\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/commands/generate/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { GetContractReturnType, PublicClient } from \"viem\";\nimport type { Config, PluginConfig } from \"../../config.js\";\nimport type { IPluginAbi } from \"../../IPlugin.js\";\n\nexport type PhaseInput = {\n content: string[];\n addImport: (\n moduleName: string,\n member: { name: string; isType?: boolean }\n ) => void;\n addType: (typeName: string, typeDef: string, isPublic?: boolean) => void;\n pluginConfig: PluginConfig;\n config: Config;\n contract: GetContractReturnType<typeof IPluginAbi, PublicClient>;\n hasReadMethods?: boolean;\n};\n\nexport type Phase = (input: PhaseInput) => Promise<PhaseInput>;\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/commands/generate/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { GetContractReturnType, PublicClient } from \"viem\";\nimport type { Config, PluginConfig } from \"../../config.js\";\nimport type { IPluginAbi } from \"../../IPlugin.js\";\n\nexport type PhaseInput = {\n content: string[];\n addImport: (\n moduleName: string,\n member: { name: string; isType?: boolean },\n ) => void;\n addType: (typeName: string, typeDef: string, isPublic?: boolean) => void;\n pluginConfig: PluginConfig;\n config: Config;\n contract: GetContractReturnType<typeof IPluginAbi, PublicClient>;\n hasReadMethods?: boolean;\n};\n\nexport type Phase = (input: PhaseInput) => Promise<PhaseInput>;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/commands/generate/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAwC,MAAM,MAAM,CAAC;AAExE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAE,EAAE,CAChD,GAAG,IAAI,sBAAsB,CAAC;AAEhC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,kBAAsC,EACtC,GAAQ,EACO,EAAE;IACjB,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAClC,MAAM,IAAI,GAAG,UAAU,CAAC;YACtB,GAAG,EAAE,GAAG;YACR,IAAI,EAAE,CAAC;SACR,CAAY,CAAC;QAEd,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CACb,yDAAyD,EACzD,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CACzC,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC,CAAC","sourcesContent":["import { type AbiFunction } from \"abitype\";\nimport { getAbiItem, type Abi, type AbiItem, type Address } from \"viem\";\n\nexport const executionAbiConst = (name: string) =>\n `${name}ExecutionFunctionAbi`;\n\nexport const extractExecutionAbi = (\n executionFunctions: readonly Address[],\n abi: Abi\n): AbiFunction[] => {\n return executionFunctions.map((f) => {\n const item = getAbiItem({\n abi: abi,\n name: f,\n }) as AbiItem;\n\n if (item.type !== \"function\") {\n throw new Error(\n \"execution function not mapping to a function in the ABI\",\n { cause: JSON.stringify(item, null, 2) }\n );\n }\n\n return item;\n });\n};\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/commands/generate/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAwC,MAAM,MAAM,CAAC;AAExE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAE,EAAE,CAChD,GAAG,IAAI,sBAAsB,CAAC;AAEhC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,kBAAsC,EACtC,GAAQ,EACO,EAAE;IACjB,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAClC,MAAM,IAAI,GAAG,UAAU,CAAC;YACtB,GAAG,EAAE,GAAG;YACR,IAAI,EAAE,CAAC;SACR,CAAY,CAAC;QAEd,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CACb,yDAAyD,EACzD,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CACzC,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC,CAAC","sourcesContent":["import { type AbiFunction } from \"abitype\";\nimport { getAbiItem, type Abi, type AbiItem, type Address } from \"viem\";\n\nexport const executionAbiConst = (name: string) =>\n `${name}ExecutionFunctionAbi`;\n\nexport const extractExecutionAbi = (\n executionFunctions: readonly Address[],\n abi: Abi,\n): AbiFunction[] => {\n return executionFunctions.map((f) => {\n const item = getAbiItem({\n abi: abi,\n name: f,\n }) as AbiItem;\n\n if (item.type !== \"function\") {\n throw new Error(\n \"execution function not mapping to a function in the ABI\",\n { cause: JSON.stringify(item, null, 2) },\n );\n }\n\n return item;\n });\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":"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","sourcesContent":["// borrows heavily from https://github.com/wevm/wagmi/blob/main/packages/cli/src/commands/init.ts\nimport dedent from \"dedent\";\nimport { default as fs } from \"fs-extra\";\nimport { relative, resolve } from \"pathe\";\nimport pc from \"picocolors\";\nimport z from \"zod\";\nimport { fromZodError } from \"../errors.js\";\nimport * as logger from \"../logger.js\";\nimport { findConfig } from \"../utils/findConfig.js\";\nimport { format } from \"../utils/format.js\";\nimport { getIsUsingTypeScript } from \"../utils/isUsingTypescript.js\";\n\nexport type InitOptions = {\n /** Path to config file */\n config?: string;\n /** Directory to init config file */\n root?: string;\n};\n\nconst InitSchema = z.object({\n config: z.string().optional(),\n root: z.string().optional(),\n});\n\nexport async function init(options: InitOptions = {}) {\n try {\n options = await InitSchema.parseAsync(options);\n } catch (error) {\n if (error instanceof z.ZodError)\n throw fromZodError(error, { prefix: \"Invalid option\" });\n throw error;\n }\n\n // Check for existing config file\n const configPath = await findConfig(options);\n if (configPath) {\n logger.info(\n `Config already exists at ${pc.gray(relative(process.cwd(), configPath))}`\n );\n return configPath;\n }\n\n const spinner = logger.spinner();\n spinner.start(\"Creating config\");\n // Check if project is using TypeScript\n const isUsingTypeScript = await getIsUsingTypeScript();\n const rootDir = resolve(options.root || process.cwd());\n let outPath: string;\n if (options.config) {\n outPath = resolve(rootDir, options.config);\n } else {\n const extension = isUsingTypeScript ? \"ts\" : \"js\";\n outPath = resolve(rootDir, `plugingen.config.${extension}`);\n }\n\n let content: string;\n if (isUsingTypeScript) {\n content = dedent(`\n import { defineConfig } from '@account-kit/plugingen';\n import { sepolia } from \"viem/chains\";\n \n export default defineConfig({\n outDir: \"./src/generated\",\n chain: sepolia,\n rpcUrl: \"https://ethereum-sepolia.publicnode.com\",\n plugins: [],\n });\n `);\n } else {\n content = dedent(`\n // @ts-check\n\n /** @type {import('@account-kit/plugingen').Config} */\n export default ${dedent`\n {\n outDir: \"./src/generated\",\n chain: sepolia,\n rpcUrl: \"https://ethereum-sepolia.publicnode.com\",\n plugins: [],\n }\n `.replace(/\"(\\d*)\":/gm, \"$1:\")}\n `);\n }\n\n const formatted = await format(content);\n await fs.writeFile(outPath, formatted);\n spinner.succeed();\n logger.success(\n `Config created at ${pc.gray(relative(process.cwd(), outPath))}`\n );\n\n return outPath;\n}\n"]}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":"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","sourcesContent":["// borrows heavily from https://github.com/wevm/wagmi/blob/main/packages/cli/src/commands/init.ts\nimport dedent from \"dedent\";\nimport { default as fs } from \"fs-extra\";\nimport { relative, resolve } from \"pathe\";\nimport pc from \"picocolors\";\nimport z from \"zod\";\nimport { fromZodError } from \"../errors.js\";\nimport * as logger from \"../logger.js\";\nimport { findConfig } from \"../utils/findConfig.js\";\nimport { format } from \"../utils/format.js\";\nimport { getIsUsingTypeScript } from \"../utils/isUsingTypescript.js\";\n\nexport type InitOptions = {\n /** Path to config file */\n config?: string;\n /** Directory to init config file */\n root?: string;\n};\n\nconst InitSchema = z.object({\n config: z.string().optional(),\n root: z.string().optional(),\n});\n\nexport async function init(options: InitOptions = {}) {\n try {\n options = await InitSchema.parseAsync(options);\n } catch (error) {\n if (error instanceof z.ZodError)\n throw fromZodError(error, { prefix: \"Invalid option\" });\n throw error;\n }\n\n // Check for existing config file\n const configPath = await findConfig(options);\n if (configPath) {\n logger.info(\n `Config already exists at ${pc.gray(relative(process.cwd(), configPath))}`,\n );\n return configPath;\n }\n\n const spinner = logger.spinner();\n spinner.start(\"Creating config\");\n // Check if project is using TypeScript\n const isUsingTypeScript = await getIsUsingTypeScript();\n const rootDir = resolve(options.root || process.cwd());\n let outPath: string;\n if (options.config) {\n outPath = resolve(rootDir, options.config);\n } else {\n const extension = isUsingTypeScript ? \"ts\" : \"js\";\n outPath = resolve(rootDir, `plugingen.config.${extension}`);\n }\n\n let content: string;\n if (isUsingTypeScript) {\n content = dedent(`\n import { defineConfig } from '@account-kit/plugingen';\n import { sepolia } from \"viem/chains\";\n \n export default defineConfig({\n outDir: \"./src/generated\",\n chain: sepolia,\n rpcUrl: \"https://ethereum-sepolia.publicnode.com\",\n plugins: [],\n });\n `);\n } else {\n content = dedent(`\n // @ts-check\n\n /** @type {import('@account-kit/plugingen').Config} */\n export default ${dedent`\n {\n outDir: \"./src/generated\",\n chain: sepolia,\n rpcUrl: \"https://ethereum-sepolia.publicnode.com\",\n plugins: [],\n }\n `.replace(/\"(\\d*)\":/gm, \"$1:\")}\n `);\n }\n\n const formatted = await format(content);\n await fs.writeFile(outPath, formatted);\n spinner.succeed();\n logger.success(\n `Config created at ${pc.gray(relative(process.cwd(), outPath))}`,\n );\n\n return outPath;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AA0EA,MAAM,UAAU,YAAY,CAC1B,MAAqE;IAErE,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import type { Abi, Address, Chain, Hex, parseAbiParameters } from \"viem\";\nimport type { Evaluate, MaybeArray, MaybePromise } from \"./types\";\n\nexport type ContractConfig<\n chainId extends number = number,\n requiredChainId extends number | undefined = undefined\n> = {\n /**\n * Contract ABI\n */\n abi: Abi;\n /**\n * Contract address or addresses.\n *\n * Accepts an object `{ [chainId]: address }` to support multiple chains.\n *\n * @example\n * '0x314159265dd8dbb310642f98f50c066173c1259b'\n *\n * @example\n * {\n * 1: '0x314159265dd8dbb310642f98f50c066173c1259b',\n * 5: '0x112234455c3a32fd11230c42e7bccd4a84e02010',\n * }\n */\n address?:\n | Address\n | (requiredChainId extends number\n ? Record<requiredChainId, Address> & Partial<Record<chainId, Address>>\n : Record<chainId, Address>)\n | undefined;\n /**\n * Name of contract.\n */\n name: string;\n};\n\nexport type Contract = Evaluate<\n ContractConfig & {\n /** Generated string content */\n content: string;\n /** Meta info about contract */\n meta: {\n abiName: string;\n addressName?: string | undefined;\n configName?: string | undefined;\n };\n }\n>;\n\nexport type PluginConfig = {\n abi: Abi;\n addresses: Record<number, Address>;\n // allows you to override the root config chain\n chain?: Chain;\n // allows you to override the root config rpcUrl\n rpcUrl?: string;\n name: string;\n installConfig?: {\n initAbiParams: ReturnType<typeof parseAbiParameters> | [];\n dependencies?: {\n plugin: PluginConfig;\n functionId: Hex;\n }[];\n };\n};\n\nexport type Config = {\n chain: Chain;\n rpcUrl: string;\n outDir?: string;\n plugins: PluginConfig[];\n};\n\nexport function defineConfig(\n config: MaybeArray<Config> | (() => MaybePromise<MaybeArray<Config>>)\n) {\n return config;\n}\n"]}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AA0EA,MAAM,UAAU,YAAY,CAC1B,MAAqE;IAErE,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import type { Abi, Address, Chain, Hex, parseAbiParameters } from \"viem\";\nimport type { Evaluate, MaybeArray, MaybePromise } from \"./types\";\n\nexport type ContractConfig<\n chainId extends number = number,\n requiredChainId extends number | undefined = undefined,\n> = {\n /**\n * Contract ABI\n */\n abi: Abi;\n /**\n * Contract address or addresses.\n *\n * Accepts an object `{ [chainId]: address }` to support multiple chains.\n *\n * @example\n * '0x314159265dd8dbb310642f98f50c066173c1259b'\n *\n * @example\n * {\n * 1: '0x314159265dd8dbb310642f98f50c066173c1259b',\n * 5: '0x112234455c3a32fd11230c42e7bccd4a84e02010',\n * }\n */\n address?:\n | Address\n | (requiredChainId extends number\n ? Record<requiredChainId, Address> & Partial<Record<chainId, Address>>\n : Record<chainId, Address>)\n | undefined;\n /**\n * Name of contract.\n */\n name: string;\n};\n\nexport type Contract = Evaluate<\n ContractConfig & {\n /** Generated string content */\n content: string;\n /** Meta info about contract */\n meta: {\n abiName: string;\n addressName?: string | undefined;\n configName?: string | undefined;\n };\n }\n>;\n\nexport type PluginConfig = {\n abi: Abi;\n addresses: Record<number, Address>;\n // allows you to override the root config chain\n chain?: Chain;\n // allows you to override the root config rpcUrl\n rpcUrl?: string;\n name: string;\n installConfig?: {\n initAbiParams: ReturnType<typeof parseAbiParameters> | [];\n dependencies?: {\n plugin: PluginConfig;\n functionId: Hex;\n }[];\n };\n};\n\nexport type Config = {\n chain: Chain;\n rpcUrl: string;\n outDir?: string;\n plugins: PluginConfig[];\n};\n\nexport function defineConfig(\n config: MaybeArray<Config> | (() => MaybePromise<MaybeArray<Config>>),\n) {\n return config;\n}\n"]}
@@ -1,8 +1,8 @@
1
1
  import { type z } from "zod";
2
2
  declare class ValidationError extends Error {
3
- details: Zod.ZodIssue[];
3
+ details: z.ZodIssue[];
4
4
  constructor(message: string, options: {
5
- details: Zod.ZodIssue[];
5
+ details: z.ZodIssue[];
6
6
  });
7
7
  }
8
8
  export declare function fromZodError(zError: z.ZodError, { maxIssuesInMessage, issueSeparator, prefixSeparator, prefix, }?: {
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,MAAM,KAAK,CAAC;AAE7B,0EAA0E;AAC1E,MAAM,eAAgB,SAAQ,KAAK;IAGjC,YACE,OAAe,EACf,OAEC;QAED,KAAK,CAAC,OAAO,CAAC,CAAC;QARjB;;;;;WAAwB;QAStB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IACjC,CAAC;CACF;AAED,uDAAuD;AACvD,MAAM,UAAU,YAAY,CAC1B,MAAkB,EAClB,EACE,kBAAkB,GAAG,EAAE,EACvB,cAAc,GAAG,MAAM,EACvB,eAAe,GAAG,MAAM,EACxB,MAAM,GAAG,kBAAkB,MAMzB,EAAE;IAEN,SAAS,QAAQ,CAAC,GAA2B;QAC3C,OAAO,GAAG,CAAC,MAAM,CAAS,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YACvC,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,OAAO,GAAG,GAAG,IAAI,KAAK,GAAG,CAAC;YACzD,MAAM,SAAS,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;YACxC,OAAO,GAAG,GAAG,SAAS,GAAG,KAAK,CAAC;QACjC,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM;QAC1B,2DAA2D;SAC1D,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC;QAC7B,uBAAuB;SACtB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;QAChC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,GAAG,OAAO,SAAS,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QAClE,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;QACF,mBAAmB;SAClB,IAAI,CAAC,cAAc,CAAC,CAAC;IAExB,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAEzE,OAAO,IAAI,eAAe,CAAC,OAAO,EAAE;QAClC,OAAO,EAAE,MAAM,CAAC,MAAM;KACvB,CAAC,CAAC;AACL,CAAC","sourcesContent":["import { type z } from \"zod\";\n\n// from https://github.com/wevm/wagmi/blob/main/packages/cli/src/errors.ts\nclass ValidationError extends Error {\n details: Zod.ZodIssue[];\n\n constructor(\n message: string,\n options: {\n details: Zod.ZodIssue[];\n }\n ) {\n super(message);\n this.details = options.details;\n }\n}\n\n// From https://github.com/causaly/zod-validation-error\nexport function fromZodError(\n zError: z.ZodError,\n {\n maxIssuesInMessage = 99,\n issueSeparator = \"\\n- \",\n prefixSeparator = \"\\n- \",\n prefix = \"Validation Error\",\n }: {\n maxIssuesInMessage?: number;\n issueSeparator?: string;\n prefixSeparator?: string;\n prefix?: string;\n } = {}\n): ValidationError {\n function joinPath(arr: Array<string | number>): string {\n return arr.reduce<string>((acc, value) => {\n if (typeof value === \"number\") return `${acc}[${value}]`;\n const separator = acc === \"\" ? \"\" : \".\";\n return acc + separator + value;\n }, \"\");\n }\n\n const reason = zError.errors\n // limit max number of issues printed in the reason section\n .slice(0, maxIssuesInMessage)\n // format error message\n .map((issue) => {\n const { message, path } = issue;\n if (path.length > 0) return `${message} at \\`${joinPath(path)}\\``;\n return message;\n })\n // concat as string\n .join(issueSeparator);\n\n const message = reason ? [prefix, reason].join(prefixSeparator) : prefix;\n\n return new ValidationError(message, {\n details: zError.errors,\n });\n}\n"]}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,MAAM,KAAK,CAAC;AAE7B,0EAA0E;AAC1E,MAAM,eAAgB,SAAQ,KAAK;IAGjC,YACE,OAAe,EACf,OAEC;QAED,KAAK,CAAC,OAAO,CAAC,CAAC;QARjB;;;;;WAAsB;QASpB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IACjC,CAAC;CACF;AAED,uDAAuD;AACvD,MAAM,UAAU,YAAY,CAC1B,MAAkB,EAClB,EACE,kBAAkB,GAAG,EAAE,EACvB,cAAc,GAAG,MAAM,EACvB,eAAe,GAAG,MAAM,EACxB,MAAM,GAAG,kBAAkB,MAMzB,EAAE;IAEN,SAAS,QAAQ,CAAC,GAAwB;QACxC,OAAO,GAAG,CAAC,MAAM,CAAS,CAAC,GAAW,EAAE,KAAsB,EAAE,EAAE;YAChE,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,OAAO,GAAG,GAAG,IAAI,KAAK,GAAG,CAAC;YACzD,MAAM,SAAS,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;YACxC,OAAO,GAAG,GAAG,SAAS,GAAG,KAAK,CAAC;QACjC,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM;QAC1B,2DAA2D;SAC1D,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC;QAC7B,uBAAuB;SACtB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;QAChC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,GAAG,OAAO,SAAS,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QAClE,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;QACF,mBAAmB;SAClB,IAAI,CAAC,cAAc,CAAC,CAAC;IAExB,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAEzE,OAAO,IAAI,eAAe,CAAC,OAAO,EAAE;QAClC,OAAO,EAAE,MAAM,CAAC,MAAM;KACvB,CAAC,CAAC;AACL,CAAC","sourcesContent":["import { type z } from \"zod\";\n\n// from https://github.com/wevm/wagmi/blob/main/packages/cli/src/errors.ts\nclass ValidationError extends Error {\n details: z.ZodIssue[];\n\n constructor(\n message: string,\n options: {\n details: z.ZodIssue[];\n },\n ) {\n super(message);\n this.details = options.details;\n }\n}\n\n// From https://github.com/causaly/zod-validation-error\nexport function fromZodError(\n zError: z.ZodError,\n {\n maxIssuesInMessage = 99,\n issueSeparator = \"\\n- \",\n prefixSeparator = \"\\n- \",\n prefix = \"Validation Error\",\n }: {\n maxIssuesInMessage?: number;\n issueSeparator?: string;\n prefixSeparator?: string;\n prefix?: string;\n } = {},\n): ValidationError {\n function joinPath(arr: (string | number)[]): string {\n return arr.reduce<string>((acc: string, value: string | number) => {\n if (typeof value === \"number\") return `${acc}[${value}]`;\n const separator = acc === \"\" ? \"\" : \".\";\n return acc + separator + value;\n }, \"\");\n }\n\n const reason = zError.errors\n // limit max number of issues printed in the reason section\n .slice(0, maxIssuesInMessage)\n // format error message\n .map((issue) => {\n const { message, path } = issue;\n if (path.length > 0) return `${message} at \\`${joinPath(path)}\\``;\n return message;\n })\n // concat as string\n .join(issueSeparator);\n\n const message = reason ? [prefix, reason].join(prefixSeparator) : prefix;\n\n return new ValidationError(message, {\n details: zError.errors,\n });\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"isUsingTypescript.js","sourceRoot":"","sources":["../../../src/utils/isUsingTypescript.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,eAAe,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QACxD,IAAI,QAAQ;YAAE,OAAO,IAAI,CAAC;QAE1B,MAAM,eAAe,GAAG,MAAM,MAAM,CAClC,CAAC,2BAA2B,EAAE,4BAA4B,CAAC,EAC3D;YACE,GAAG;SACJ,CACF,CAAC;QACF,IAAI,eAAe;YAAE,OAAO,IAAI,CAAC;QAEjC,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC","sourcesContent":["// https://github.com/wevm/wagmi/blob/main/packages/cli/src/utils/getIsUsingTypeScript.ts\nimport { findUp } from \"find-up\";\n\nexport async function getIsUsingTypeScript() {\n try {\n const cwd = process.cwd();\n const tsconfig = await findUp(\"tsconfig.json\", { cwd });\n if (tsconfig) return true;\n\n const plugingenConfig = await findUp(\n [\"plugingenConfig.config.ts\", \"plugingenConfig.config.mts\"],\n {\n cwd,\n }\n );\n if (plugingenConfig) return true;\n\n return false;\n } catch {\n return false;\n }\n}\n"]}
1
+ {"version":3,"file":"isUsingTypescript.js","sourceRoot":"","sources":["../../../src/utils/isUsingTypescript.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,eAAe,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QACxD,IAAI,QAAQ;YAAE,OAAO,IAAI,CAAC;QAE1B,MAAM,eAAe,GAAG,MAAM,MAAM,CAClC,CAAC,2BAA2B,EAAE,4BAA4B,CAAC,EAC3D;YACE,GAAG;SACJ,CACF,CAAC;QACF,IAAI,eAAe;YAAE,OAAO,IAAI,CAAC;QAEjC,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC","sourcesContent":["// https://github.com/wevm/wagmi/blob/main/packages/cli/src/utils/getIsUsingTypeScript.ts\nimport { findUp } from \"find-up\";\n\nexport async function getIsUsingTypeScript() {\n try {\n const cwd = process.cwd();\n const tsconfig = await findUp(\"tsconfig.json\", { cwd });\n if (tsconfig) return true;\n\n const plugingenConfig = await findUp(\n [\"plugingenConfig.config.ts\", \"plugingenConfig.config.mts\"],\n {\n cwd,\n },\n );\n if (plugingenConfig) return true;\n\n return false;\n } catch {\n return false;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"loadEnv.js","sourceRoot":"","sources":["../../../src/utils/loadEnv.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,4EAA4E;AAC5E,MAAM,UAAU,OAAO,CACrB,SAGI,EAAE;IAEN,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,oGAAoG,CACrG,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG;QACf,mBAAmB,CAAC,MAAM;QAC1B,iBAAiB,CAAC,YAAY;QAC9B,GAAG,CAAC,IAAI;YACN,CAAC,CAAC;gBACE,gBAAgB,CAAC,QAAQ,IAAI,EAAE;gBAC/B,sBAAsB,CAAC,QAAQ,IAAI,QAAQ;aAC5C;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAC/B,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;YACtC,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QACH,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAC;QACrB,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC,CACH,CAAC;IAEF,IAAI,CAAC;QACH,2CAA2C;QAC3C,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,oGAAoG;QACpG,uFAAuF;QACvF,IAAK,KAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CACb,wEAAwE,CACzE,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,UAAU,CACjB,GAAW,EACX,OAAiB,EACjB,OAIC;IAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACnC,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YACxD,MAAM,MAAM,GAAG,OAAO,EAAE,QAAQ;gBAC9B,CAAC,CAAC,QAAQ;gBACV,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACpC,IAAI,CAAC,OAAO,EAAE,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;gBACrD,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,IACE,SAAS,KAAK,GAAG;QACjB,CAAC,CAAC,OAAO,EAAE,OAAO,IAAI,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE7D,OAAO,UAAU,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAEjD,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["// https://github.com/wevm/wagmi/blob/main/packages/cli/src/utils/loadEnv.ts\nimport { parse } from \"dotenv\";\nimport { expand } from \"dotenv-expand\";\n\nimport { existsSync, readFileSync, statSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\n\n// https://github.com/vitejs/vite/blob/main/packages/vite/src/node/env.ts#L7\nexport function loadEnv(\n config: {\n mode?: string;\n envDir?: string;\n } = {}\n): Record<string, string> {\n const mode = config.mode;\n if (mode === \"local\") {\n throw new Error(\n `\"local\" cannot be used as a mode name because it conflicts with the .local postfix for .env files.`\n );\n }\n\n const envFiles = [\n /** default file */ \".env\",\n /** local file */ \".env.local\",\n ...(mode\n ? [\n /** mode file */ `.env.${mode}`,\n /** mode local file */ `.env.${mode}.local`,\n ]\n : []),\n ];\n\n const envDir = config.envDir ?? process.cwd();\n const parsed = Object.fromEntries(\n envFiles.flatMap((file) => {\n const path = lookupFile(envDir, [file], {\n pathOnly: true,\n rootDir: envDir,\n });\n if (!path) return [];\n return Object.entries(parse(readFileSync(path)));\n })\n );\n\n try {\n // let environment variables use each other\n expand({ parsed });\n } catch (error) {\n // custom error handling until https://github.com/motdotla/dotenv-expand/issues/65 is fixed upstream\n // check for message \"TypeError: Cannot read properties of undefined (reading 'split')\"\n if ((error as Error).message.includes(\"split\")) {\n throw new Error(\n \"dotenv-expand failed to expand env vars. Maybe you need to escape `$`?\"\n );\n }\n throw error;\n }\n\n return parsed;\n}\n\nfunction lookupFile(\n dir: string,\n formats: string[],\n options?: {\n pathOnly?: boolean;\n rootDir?: string;\n predicate?: (file: string) => boolean;\n }\n): string | undefined {\n for (const format of formats) {\n const fullPath = join(dir, format);\n if (existsSync(fullPath) && statSync(fullPath).isFile()) {\n const result = options?.pathOnly\n ? fullPath\n : readFileSync(fullPath, \"utf-8\");\n if (!options?.predicate || options.predicate(result)) {\n return result;\n }\n }\n }\n\n const parentDir = dirname(dir);\n if (\n parentDir !== dir &&\n (!options?.rootDir || parentDir.startsWith(options?.rootDir))\n )\n return lookupFile(parentDir, formats, options);\n\n return undefined;\n}\n"]}
1
+ {"version":3,"file":"loadEnv.js","sourceRoot":"","sources":["../../../src/utils/loadEnv.ts"],"names":[],"mappings":"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","sourcesContent":["// https://github.com/wevm/wagmi/blob/main/packages/cli/src/utils/loadEnv.ts\nimport { parse } from \"dotenv\";\nimport { expand } from \"dotenv-expand\";\n\nimport { existsSync, readFileSync, statSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\n\n// https://github.com/vitejs/vite/blob/main/packages/vite/src/node/env.ts#L7\nexport function loadEnv(\n config: {\n mode?: string;\n envDir?: string;\n } = {},\n): Record<string, string> {\n const mode = config.mode;\n if (mode === \"local\") {\n throw new Error(\n `\"local\" cannot be used as a mode name because it conflicts with the .local postfix for .env files.`,\n );\n }\n\n const envFiles = [\n /** default file */ \".env\",\n /** local file */ \".env.local\",\n ...(mode\n ? [\n /** mode file */ `.env.${mode}`,\n /** mode local file */ `.env.${mode}.local`,\n ]\n : []),\n ];\n\n const envDir = config.envDir ?? process.cwd();\n const parsed = Object.fromEntries(\n envFiles.flatMap((file) => {\n const path = lookupFile(envDir, [file], {\n pathOnly: true,\n rootDir: envDir,\n });\n if (!path) return [];\n return Object.entries(parse(readFileSync(path)));\n }),\n );\n\n try {\n // let environment variables use each other\n expand({ parsed });\n } catch (error) {\n // custom error handling until https://github.com/motdotla/dotenv-expand/issues/65 is fixed upstream\n // check for message \"TypeError: Cannot read properties of undefined (reading 'split')\"\n if ((error as Error).message.includes(\"split\")) {\n throw new Error(\n \"dotenv-expand failed to expand env vars. Maybe you need to escape `$`?\",\n );\n }\n throw error;\n }\n\n return parsed;\n}\n\nfunction lookupFile(\n dir: string,\n formats: string[],\n options?: {\n pathOnly?: boolean;\n rootDir?: string;\n predicate?: (file: string) => boolean;\n },\n): string | undefined {\n for (const format of formats) {\n const fullPath = join(dir, format);\n if (existsSync(fullPath) && statSync(fullPath).isFile()) {\n const result = options?.pathOnly\n ? fullPath\n : readFileSync(fullPath, \"utf-8\");\n if (!options?.predicate || options.predicate(result)) {\n return result;\n }\n }\n }\n\n const parentDir = dirname(dir);\n if (\n parentDir !== dir &&\n (!options?.rootDir || parentDir.startsWith(options?.rootDir))\n )\n return lookupFile(parentDir, formats, options);\n\n return undefined;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"resolveConfig.js","sourceRoot":"","sources":["../../../src/utils/resolveConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAS/C;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,UAAmC;IAEnC,MAAM,EAAE,UAAU,EAAE,GAAG,UAAU,CAAC;IAClC,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;IAC1D,IAAI,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;IAC7B,IAAI,MAAM,CAAC,OAAO;QAAE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;IAC5C,IAAI,OAAO,MAAM,KAAK,UAAU;QAAE,OAAO,MAAM,CAAC;IAChD,OAAO,MAAM,MAAM,EAAE,CAAC;AACxB,CAAC","sourcesContent":["import { bundleRequire } from \"bundle-require\";\nimport type { Config } from \"../config\";\nimport type { MaybeArray } from \"../types\";\n\ntype ResolveConfigParameters = {\n /** Path to config file */\n configPath: string;\n};\n\n/**\n * Bundles and returns config object from path.\n *\n * @param {ResolveConfigParameters} parameters - Parameters to resolve config\n * @returns {Promise<MaybeArray<Config>>} an array of the config objects\n */\nexport async function resolveConfig(\n parameters: ResolveConfigParameters\n): Promise<MaybeArray<Config>> {\n const { configPath } = parameters;\n const res = await bundleRequire({ filepath: configPath });\n let config = res.mod.default;\n if (config.default) config = config.default;\n if (typeof config !== \"function\") return config;\n return await config();\n}\n"]}
1
+ {"version":3,"file":"resolveConfig.js","sourceRoot":"","sources":["../../../src/utils/resolveConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAS/C;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,UAAmC;IAEnC,MAAM,EAAE,UAAU,EAAE,GAAG,UAAU,CAAC;IAClC,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;IAC1D,IAAI,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;IAC7B,IAAI,MAAM,CAAC,OAAO;QAAE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;IAC5C,IAAI,OAAO,MAAM,KAAK,UAAU;QAAE,OAAO,MAAM,CAAC;IAChD,OAAO,MAAM,MAAM,EAAE,CAAC;AACxB,CAAC","sourcesContent":["import { bundleRequire } from \"bundle-require\";\nimport type { Config } from \"../config\";\nimport type { MaybeArray } from \"../types\";\n\ntype ResolveConfigParameters = {\n /** Path to config file */\n configPath: string;\n};\n\n/**\n * Bundles and returns config object from path.\n *\n * @param {ResolveConfigParameters} parameters - Parameters to resolve config\n * @returns {Promise<MaybeArray<Config>>} an array of the config objects\n */\nexport async function resolveConfig(\n parameters: ResolveConfigParameters,\n): Promise<MaybeArray<Config>> {\n const { configPath } = parameters;\n const res = await bundleRequire({ filepath: configPath });\n let config = res.mod.default;\n if (config.default) config = config.default;\n if (typeof config !== \"function\") return config;\n return await config();\n}\n"]}
@@ -1 +1 @@
1
- export declare const VERSION = "4.35.0";
1
+ export declare const VERSION = "4.36.0";
@@ -1,4 +1,4 @@
1
1
  // This file is autogenerated by inject-version.ts. Any changes will be
2
2
  // overwritten on commit!
3
- export const VERSION = "4.35.0";
3
+ export const VERSION = "4.36.0";
4
4
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,yBAAyB;AACzB,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC","sourcesContent":["// This file is autogenerated by inject-version.ts. Any changes will be\n// overwritten on commit!\nexport const VERSION = \"4.35.0\";\n"]}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,yBAAyB;AACzB,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC","sourcesContent":["// This file is autogenerated by inject-version.ts. Any changes will be\n// overwritten on commit!\nexport const VERSION = \"4.36.0\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/commands/generate/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAc,KAAK,GAAG,EAAgB,KAAK,OAAO,EAAE,MAAM,MAAM,CAAC;AAExE,eAAO,MAAM,iBAAiB,SAAU,MAAM,WACf,CAAC;AAEhC,eAAO,MAAM,mBAAmB,uBACV,SAAS,OAAO,EAAE,eAErC,WAAW,EAgBb,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/commands/generate/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAc,KAAK,GAAG,EAAgB,KAAK,OAAO,EAAE,MAAM,MAAM,CAAC;AAExE,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,WACf,CAAC;AAEhC,eAAO,MAAM,mBAAmB,GAC9B,oBAAoB,SAAS,OAAO,EAAE,EACtC,KAAK,GAAG,KACP,WAAW,EAgBb,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAElE,MAAM,MAAM,cAAc,CACxB,OAAO,SAAS,MAAM,GAAG,MAAM,EAC/B,eAAe,SAAS,MAAM,GAAG,SAAS,GAAG,SAAS,IACpD;IACF;;OAEG;IACH,GAAG,EAAE,GAAG,CAAC;IACT;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,EACJ,OAAO,GACP,CAAC,eAAe,SAAS,MAAM,GAC3B,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,GACpE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,GAC7B,SAAS,CAAC;IACd;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,QAAQ,CAC7B,cAAc,GAAG;IACf,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACjC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KACjC,CAAC;CACH,CACF,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,GAAG,EAAE,GAAG,CAAC;IACT,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnC,KAAK,CAAC,EAAE,KAAK,CAAC;IAEd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE;QACd,aAAa,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,GAAG,EAAE,CAAC;QAC1D,YAAY,CAAC,EAAE;YACb,MAAM,EAAE,YAAY,CAAC;YACrB,UAAU,EAAE,GAAG,CAAC;SACjB,EAAE,CAAC;KACL,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IACnB,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB,CAAC;AAEF,wBAAgB,YAAY,CAC1B,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,+BAAjC,aAAa,WAAW,MAAM,CAAC,CAAC,EAGrE"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAElE,MAAM,MAAM,cAAc,CACxB,OAAO,SAAS,MAAM,GAAG,MAAM,EAC/B,eAAe,SAAS,MAAM,GAAG,SAAS,GAAG,SAAS,IACpD;IACF;;OAEG;IACH,GAAG,EAAE,GAAG,CAAC;IACT;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,EACJ,OAAO,GACP,CAAC,eAAe,SAAS,MAAM,GAC3B,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,GACpE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,GAC7B,SAAS,CAAC;IACd;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,QAAQ,CAC7B,cAAc,GAAG;IACf,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACjC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KACjC,CAAC;CACH,CACF,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,GAAG,EAAE,GAAG,CAAC;IACT,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnC,KAAK,CAAC,EAAE,KAAK,CAAC;IAEd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE;QACd,aAAa,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,GAAG,EAAE,CAAC;QAC1D,YAAY,CAAC,EAAE;YACb,MAAM,EAAE,YAAY,CAAC;YACrB,UAAU,EAAE,GAAG,CAAC;SACjB,EAAE,CAAC;KACL,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IACnB,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB,CAAC;AAEF,wBAAgB,YAAY,CAC1B,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,+BAAjC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAGrE"}
@@ -1,8 +1,8 @@
1
1
  import { type z } from "zod";
2
2
  declare class ValidationError extends Error {
3
- details: Zod.ZodIssue[];
3
+ details: z.ZodIssue[];
4
4
  constructor(message: string, options: {
5
- details: Zod.ZodIssue[];
5
+ details: z.ZodIssue[];
6
6
  });
7
7
  }
8
8
  export declare function fromZodError(zError: z.ZodError, { maxIssuesInMessage, issueSeparator, prefixSeparator, prefix, }?: {
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC;AAG7B,cAAM,eAAgB,SAAQ,KAAK;IACjC,OAAO,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAGtB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;QACP,OAAO,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;KACzB;CAKJ;AAGD,wBAAgB,YAAY,CAC1B,MAAM,EAAE,CAAC,CAAC,QAAQ,EAClB,EACE,kBAAuB,EACvB,cAAuB,EACvB,eAAwB,EACxB,MAA2B,GAC5B,GAAE;IACD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;CACZ,GACL,eAAe,CA0BjB"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC;AAG7B,cAAM,eAAgB,SAAQ,KAAK;IACjC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAGpB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;QACP,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;KACvB;CAKJ;AAGD,wBAAgB,YAAY,CAC1B,MAAM,EAAE,CAAC,CAAC,QAAQ,EAClB,EACE,kBAAuB,EACvB,cAAuB,EACvB,eAAwB,EACxB,MAA2B,GAC5B,GAAE;IACD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;CACZ,GACL,eAAe,CA0BjB"}
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "4.35.0";
1
+ export declare const VERSION = "4.36.0";
2
2
  //# sourceMappingURL=version.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@account-kit/plugingen",
3
- "version": "4.35.0",
3
+ "version": "4.36.0",
4
4
  "description": "A CLI tool that enables you to generate TS code for your ERC-6900 plugins",
5
5
  "author": "Alchemy",
6
6
  "license": "MIT",
@@ -44,9 +44,7 @@
44
44
  },
45
45
  "devDependencies": {
46
46
  "@types/fs-extra": "^11.0.4",
47
- "typescript": "^5.0.4",
48
- "typescript-template": "*",
49
- "vitest": "^2.0.4"
47
+ "typescript-template": "*"
50
48
  },
51
49
  "publishConfig": {
52
50
  "access": "public",
@@ -61,7 +59,7 @@
61
59
  },
62
60
  "homepage": "https://github.com/alchemyplatform/aa-sdk#readme",
63
61
  "dependencies": {
64
- "@aa-sdk/core": "^4.35.0",
62
+ "@aa-sdk/core": "^4.36.0",
65
63
  "bundle-require": "^4.0.2",
66
64
  "cac": "^6.7.14",
67
65
  "change-case": "^5.4.3",
@@ -73,11 +71,11 @@
73
71
  "ora": "^8.0.1",
74
72
  "pathe": "^1.1.2",
75
73
  "picocolors": "^1.0.0",
76
- "prettier": "^3.2.5",
74
+ "prettier": "3.3.3",
77
75
  "zod": "^3.22.4"
78
76
  },
79
77
  "peerDependencies": {
80
78
  "viem": "^2.29.2"
81
79
  },
82
- "gitHead": "3e5736311d16ae0eeaef9a869da2aff1e361a3f9"
80
+ "gitHead": "298acffb1a9d648b4136e154c0354c1efe1c89f7"
83
81
  }
package/src/cli.ts CHANGED
@@ -17,7 +17,7 @@ cli
17
17
  cli
18
18
  .command(
19
19
  "generate",
20
- "Generate code for all of the plugins configured within the plugingen config"
20
+ "Generate code for all of the plugins configured within the plugingen config",
21
21
  )
22
22
  .option("-c, --config <path>", "[string] path to config file")
23
23
  .option("-r, --root <path>", "[string] root path to resolve config from")
@@ -101,7 +101,7 @@ export async function generate(options: GenerateOptions = {}) {
101
101
  if (!(chain.id in plugin.addresses)) {
102
102
  spinner.fail();
103
103
  throw new Error(
104
- `contract address missing for the reference chain ${chain.id}`
104
+ `contract address missing for the reference chain ${chain.id}`,
105
105
  );
106
106
  }
107
107
 
@@ -123,8 +123,8 @@ export async function generate(options: GenerateOptions = {}) {
123
123
  pluginConfig: plugin.pluginConfig,
124
124
  contract: plugin.contract,
125
125
  config,
126
- })
127
- )
126
+ }),
127
+ ),
128
128
  );
129
129
  }
130
130
  }
@@ -201,7 +201,7 @@ const generatePlugin = async ({
201
201
  ${Array.from(types.entries())
202
202
  .map(
203
203
  ([name, type]) =>
204
- `${type.isPublic ? "export" : ""} type ${name} = ${type.definition};`
204
+ `${type.isPublic ? "export" : ""} type ${name} = ${type.definition};`,
205
205
  )
206
206
  .join("\n\n")}
207
207
 
@@ -249,7 +249,7 @@ const writePlugin = async ({
249
249
  // 3. generate an index.ts file which correctly exports all of the types + exports the output of extensions.ts
250
250
  // so that it's easier to extend and import without conflicts
251
251
  const pluginPath = `${config.outDir}/${kebabCase(
252
- pluginConfig.name.replaceAll(pluginRegEx, "")
252
+ pluginConfig.name.replaceAll(pluginRegEx, ""),
253
253
  )}/plugin.${isTypeScript ? "ts" : "js"}`;
254
254
 
255
255
  const code = dedent`
@@ -5,8 +5,8 @@ export const ContractAbiGenPhase: Phase = async (input) => {
5
5
  const { content, pluginConfig } = input;
6
6
  content.push(dedent`
7
7
  export const ${pluginConfig.name}Abi = ${JSON.stringify(
8
- pluginConfig.abi
9
- )} as const;
8
+ pluginConfig.abi,
9
+ )} as const;
10
10
  `);
11
11
  return input;
12
12
  };
@@ -8,10 +8,10 @@ export const ContractAddressesGenPhase: Phase = async (input) => {
8
8
  addImport("viem", { name: "Address", isType: true });
9
9
  content.push(dedent`
10
10
  const addresses = {${Object.entries(
11
- pluginConfig.addresses as Record<number, Address>
11
+ pluginConfig.addresses as Record<number, Address>,
12
12
  ).reduce(
13
13
  (prev, [chainId, addr]) => (prev += `${chainId}: "${addr}" as Address, `),
14
- ""
14
+ "",
15
15
  )}} as Record<number, Address>;
16
16
  `);
17
17
  return input;
@@ -8,13 +8,13 @@ export const ExecutionAbiGenPhase: Phase = async (input) => {
8
8
  const { executionFunctions } = await contract.read.pluginManifest();
9
9
  const executionAbi = extractExecutionAbi(
10
10
  executionFunctions,
11
- pluginConfig.abi
11
+ pluginConfig.abi,
12
12
  );
13
13
 
14
14
  content.push(dedent`
15
15
  export const ${executionAbiConst(pluginConfig.name)} = ${JSON.stringify(
16
- executionAbi
17
- )} as const;
16
+ executionAbi,
17
+ )} as const;
18
18
  `);
19
19
  return input;
20
20
  };
@@ -12,7 +12,7 @@ export const PluginActionsGenPhase: Phase = async (input) => {
12
12
  const executionAbiConst = `${pluginConfig.name}ExecutionFunctionAbi`;
13
13
  const executionAbi = extractExecutionAbi(
14
14
  executionFunctions,
15
- pluginConfig.abi
15
+ pluginConfig.abi,
16
16
  );
17
17
 
18
18
  addImport("viem", { name: "EncodeFunctionDataParameters", isType: true });
@@ -69,10 +69,10 @@ export const PluginActionsGenPhase: Phase = async (input) => {
69
69
 
70
70
  providerFunctionDefs.push(dedent`
71
71
  ${camelCase(
72
- n.name
72
+ n.name,
73
73
  )}: (args: Pick<EncodeFunctionDataParameters<typeof ${executionAbiConst}, "${
74
- n.name
75
- }">, "args"> & UserOperationOverridesParameter<TEntryPointVersion> &
74
+ n.name
75
+ }">, "args"> & UserOperationOverridesParameter<TEntryPointVersion> &
76
76
  GetAccountParameter<TAccount> & GetContextParameter<TContext>) =>
77
77
  Promise<SendUserOperationResult<TEntryPointVersion>>
78
78
  `);
@@ -105,12 +105,12 @@ export const PluginActionsGenPhase: Phase = async (input) => {
105
105
  >`,
106
106
  dedent`{
107
107
  ${providerFunctionDefs.join(";\n\n")}
108
- }`
108
+ }`,
109
109
  );
110
110
 
111
111
  const { hasReadMethods } = await asyncPipe(
112
112
  ManagementActionsGenPhase,
113
- AccountReadActionsGenPhase
113
+ AccountReadActionsGenPhase,
114
114
  )({
115
115
  ...input,
116
116
  content: providerFunctions,
@@ -127,7 +127,7 @@ export const PluginActionsGenPhase: Phase = async (input) => {
127
127
  hasReadMethods ? "<TAccount>" : ""
128
128
  }
129
129
  `,
130
- true
130
+ true,
131
131
  );
132
132
 
133
133
  input.content.push(dedent`
@@ -143,8 +143,8 @@ export const PluginActionsGenPhase: Phase = async (input) => {
143
143
  ) => ${
144
144
  pluginConfig.name
145
145
  }Actions<TAccount, TContext> = (client) => ({ ${providerFunctions.join(
146
- ",\n"
147
- )} });
146
+ ",\n",
147
+ )} });
148
148
  `);
149
149
 
150
150
  return input;
@@ -8,7 +8,7 @@ export const ManagementActionsGenPhase: Phase = async (input) => {
8
8
  if (pluginConfig.installConfig != null) {
9
9
  addImports(
10
10
  addImport,
11
- pluginConfig.installConfig.dependencies?.map((x) => x.plugin) ?? []
11
+ pluginConfig.installConfig.dependencies?.map((x) => x.plugin) ?? [],
12
12
  );
13
13
 
14
14
  const initArgs = pluginConfig.installConfig.initAbiParams ?? [];
@@ -21,7 +21,7 @@ export const ManagementActionsGenPhase: Phase = async (input) => {
21
21
  pluginAddress?: Address;
22
22
  dependencyOverrides?: FunctionReference[];
23
23
  }`,
24
- true
24
+ true,
25
25
  );
26
26
  addType(
27
27
  `ManagementActions<
@@ -34,7 +34,7 @@ export const ManagementActionsGenPhase: Phase = async (input) => {
34
34
  UserOperationOverridesParameter<TEntryPointVersion> &
35
35
  Install${pluginConfig.name}Params & GetAccountParameter<TAccount> & GetContextParameter<TContext>) =>
36
36
  Promise<SendUserOperationResult<TEntryPointVersion>>
37
- }`
37
+ }`,
38
38
  );
39
39
 
40
40
  const dependencies = (pluginConfig.installConfig.dependencies ?? []).map(
@@ -50,7 +50,7 @@ export const ManagementActionsGenPhase: Phase = async (input) => {
50
50
  [pluginAddress, ${x.functionId}]
51
51
  );
52
52
  })()
53
- `
53
+ `,
54
54
  );
55
55
 
56
56
  const installMethodName = `install${pluginConfig.name}`;
@@ -71,7 +71,7 @@ export const ManagementActionsGenPhase: Phase = async (input) => {
71
71
  }
72
72
 
73
73
  const dependencies = params.dependencyOverrides ?? [${dependencies.join(
74
- ",\n\n"
74
+ ",\n\n",
75
75
  )}];
76
76
  const pluginAddress = params.pluginAddress ?? ${
77
77
  pluginConfig.name
@@ -86,7 +86,7 @@ export const ManagementActionsGenPhase: Phase = async (input) => {
86
86
  return installPlugin_(client, {
87
87
  pluginAddress,
88
88
  pluginInitData: encodeAbiParameters(${JSON.stringify(
89
- initArgs
89
+ initArgs,
90
90
  )}, params.args),
91
91
  dependencies,
92
92
  overrides,
@@ -102,7 +102,7 @@ export const ManagementActionsGenPhase: Phase = async (input) => {
102
102
 
103
103
  const addImports = (
104
104
  addImport: PhaseInput["addImport"],
105
- deps?: PluginConfig[]
105
+ deps?: PluginConfig[],
106
106
  ) => {
107
107
  if (deps != null && deps.length > 0) {
108
108
  addImport("viem", { name: "encodePacked" });
@@ -111,7 +111,7 @@ const addImports = (
111
111
  `../${kebabCase(x.name.replaceAll(/[pP]lugin/g, ""))}/plugin.js`,
112
112
  {
113
113
  name: x.name,
114
- }
114
+ },
115
115
  );
116
116
  });
117
117
  }
@@ -9,7 +9,7 @@ export const AccountReadActionsGenPhase: Phase = async (input) => {
9
9
  const executionAbiConst = `${pluginConfig.name}ExecutionFunctionAbi`;
10
10
  const executionAbi = extractExecutionAbi(
11
11
  executionFunctions,
12
- pluginConfig.abi
12
+ pluginConfig.abi,
13
13
  );
14
14
 
15
15
  addImport("viem", { name: "EncodeFunctionDataParameters", isType: true });
@@ -26,7 +26,7 @@ export const AccountReadActionsGenPhase: Phase = async (input) => {
26
26
 
27
27
  const encodeMethodName = `encode${pascalCase(n.name)}`;
28
28
  accountFunctionActionDefs.push(
29
- dedent`${encodeMethodName}: (args: Pick<EncodeFunctionDataParameters<typeof ${executionAbiConst}, "${n.name}">, "args">) => Hex`
29
+ dedent`${encodeMethodName}: (args: Pick<EncodeFunctionDataParameters<typeof ${executionAbiConst}, "${n.name}">, "args">) => Hex`,
30
30
  );
31
31
  methodContent.push(dedent`
32
32
  ${encodeMethodName}(${argsParamString}) {
@@ -53,7 +53,7 @@ export const AccountReadActionsGenPhase: Phase = async (input) => {
53
53
  GetAccountParameter<TAccount>
54
54
  ) => Promise<ReadContractReturnType<typeof ${executionAbiConst}, "${n.name}">>`
55
55
  : dedent`${readMethodName}: (args: GetAccountParameter<TAccount>) =>
56
- Promise<ReadContractReturnType<typeof ${executionAbiConst}, "${n.name}">>`
56
+ Promise<ReadContractReturnType<typeof ${executionAbiConst}, "${n.name}">>`,
57
57
  );
58
58
 
59
59
  methodContent.push(dedent`
@@ -89,7 +89,7 @@ export const AccountReadActionsGenPhase: Phase = async (input) => {
89
89
  typeName,
90
90
  dedent`{
91
91
  ${accountFunctionActionDefs.join(";\n\n")}
92
- }`
92
+ }`,
93
93
  );
94
94
  input.content.push(...accountFunctions);
95
95
 
@@ -17,8 +17,8 @@ export const PluginGeneratorPhase: Phase = async (input) => {
17
17
 
18
18
  input.content.push(dedent`
19
19
  export const ${pluginConfig.name}: Plugin<typeof ${
20
- pluginConfig.name
21
- }Abi> = {
20
+ pluginConfig.name
21
+ }Abi> = {
22
22
  ${result.content.join(",\n")}
23
23
  };
24
24
  `);
@@ -6,7 +6,7 @@ export type PhaseInput = {
6
6
  content: string[];
7
7
  addImport: (
8
8
  moduleName: string,
9
- member: { name: string; isType?: boolean }
9
+ member: { name: string; isType?: boolean },
10
10
  ) => void;
11
11
  addType: (typeName: string, typeDef: string, isPublic?: boolean) => void;
12
12
  pluginConfig: PluginConfig;
@@ -6,7 +6,7 @@ export const executionAbiConst = (name: string) =>
6
6
 
7
7
  export const extractExecutionAbi = (
8
8
  executionFunctions: readonly Address[],
9
- abi: Abi
9
+ abi: Abi,
10
10
  ): AbiFunction[] => {
11
11
  return executionFunctions.map((f) => {
12
12
  const item = getAbiItem({
@@ -17,7 +17,7 @@ export const extractExecutionAbi = (
17
17
  if (item.type !== "function") {
18
18
  throw new Error(
19
19
  "execution function not mapping to a function in the ABI",
20
- { cause: JSON.stringify(item, null, 2) }
20
+ { cause: JSON.stringify(item, null, 2) },
21
21
  );
22
22
  }
23
23
 
@@ -35,7 +35,7 @@ export async function init(options: InitOptions = {}) {
35
35
  const configPath = await findConfig(options);
36
36
  if (configPath) {
37
37
  logger.info(
38
- `Config already exists at ${pc.gray(relative(process.cwd(), configPath))}`
38
+ `Config already exists at ${pc.gray(relative(process.cwd(), configPath))}`,
39
39
  );
40
40
  return configPath;
41
41
  }
@@ -86,7 +86,7 @@ export async function init(options: InitOptions = {}) {
86
86
  await fs.writeFile(outPath, formatted);
87
87
  spinner.succeed();
88
88
  logger.success(
89
- `Config created at ${pc.gray(relative(process.cwd(), outPath))}`
89
+ `Config created at ${pc.gray(relative(process.cwd(), outPath))}`,
90
90
  );
91
91
 
92
92
  return outPath;
package/src/config.ts CHANGED
@@ -3,7 +3,7 @@ import type { Evaluate, MaybeArray, MaybePromise } from "./types";
3
3
 
4
4
  export type ContractConfig<
5
5
  chainId extends number = number,
6
- requiredChainId extends number | undefined = undefined
6
+ requiredChainId extends number | undefined = undefined,
7
7
  > = {
8
8
  /**
9
9
  * Contract ABI
@@ -73,7 +73,7 @@ export type Config = {
73
73
  };
74
74
 
75
75
  export function defineConfig(
76
- config: MaybeArray<Config> | (() => MaybePromise<MaybeArray<Config>>)
76
+ config: MaybeArray<Config> | (() => MaybePromise<MaybeArray<Config>>),
77
77
  ) {
78
78
  return config;
79
79
  }
package/src/errors.ts CHANGED
@@ -2,13 +2,13 @@ import { type z } from "zod";
2
2
 
3
3
  // from https://github.com/wevm/wagmi/blob/main/packages/cli/src/errors.ts
4
4
  class ValidationError extends Error {
5
- details: Zod.ZodIssue[];
5
+ details: z.ZodIssue[];
6
6
 
7
7
  constructor(
8
8
  message: string,
9
9
  options: {
10
- details: Zod.ZodIssue[];
11
- }
10
+ details: z.ZodIssue[];
11
+ },
12
12
  ) {
13
13
  super(message);
14
14
  this.details = options.details;
@@ -28,10 +28,10 @@ export function fromZodError(
28
28
  issueSeparator?: string;
29
29
  prefixSeparator?: string;
30
30
  prefix?: string;
31
- } = {}
31
+ } = {},
32
32
  ): ValidationError {
33
- function joinPath(arr: Array<string | number>): string {
34
- return arr.reduce<string>((acc, value) => {
33
+ function joinPath(arr: (string | number)[]): string {
34
+ return arr.reduce<string>((acc: string, value: string | number) => {
35
35
  if (typeof value === "number") return `${acc}[${value}]`;
36
36
  const separator = acc === "" ? "" : ".";
37
37
  return acc + separator + value;
@@ -11,7 +11,7 @@ export async function getIsUsingTypeScript() {
11
11
  ["plugingenConfig.config.ts", "plugingenConfig.config.mts"],
12
12
  {
13
13
  cwd,
14
- }
14
+ },
15
15
  );
16
16
  if (plugingenConfig) return true;
17
17
 
@@ -10,12 +10,12 @@ export function loadEnv(
10
10
  config: {
11
11
  mode?: string;
12
12
  envDir?: string;
13
- } = {}
13
+ } = {},
14
14
  ): Record<string, string> {
15
15
  const mode = config.mode;
16
16
  if (mode === "local") {
17
17
  throw new Error(
18
- `"local" cannot be used as a mode name because it conflicts with the .local postfix for .env files.`
18
+ `"local" cannot be used as a mode name because it conflicts with the .local postfix for .env files.`,
19
19
  );
20
20
  }
21
21
 
@@ -39,7 +39,7 @@ export function loadEnv(
39
39
  });
40
40
  if (!path) return [];
41
41
  return Object.entries(parse(readFileSync(path)));
42
- })
42
+ }),
43
43
  );
44
44
 
45
45
  try {
@@ -50,7 +50,7 @@ export function loadEnv(
50
50
  // check for message "TypeError: Cannot read properties of undefined (reading 'split')"
51
51
  if ((error as Error).message.includes("split")) {
52
52
  throw new Error(
53
- "dotenv-expand failed to expand env vars. Maybe you need to escape `$`?"
53
+ "dotenv-expand failed to expand env vars. Maybe you need to escape `$`?",
54
54
  );
55
55
  }
56
56
  throw error;
@@ -66,7 +66,7 @@ function lookupFile(
66
66
  pathOnly?: boolean;
67
67
  rootDir?: string;
68
68
  predicate?: (file: string) => boolean;
69
- }
69
+ },
70
70
  ): string | undefined {
71
71
  for (const format of formats) {
72
72
  const fullPath = join(dir, format);
@@ -14,7 +14,7 @@ type ResolveConfigParameters = {
14
14
  * @returns {Promise<MaybeArray<Config>>} an array of the config objects
15
15
  */
16
16
  export async function resolveConfig(
17
- parameters: ResolveConfigParameters
17
+ parameters: ResolveConfigParameters,
18
18
  ): Promise<MaybeArray<Config>> {
19
19
  const { configPath } = parameters;
20
20
  const res = await bundleRequire({ filepath: configPath });
package/src/version.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  // This file is autogenerated by inject-version.ts. Any changes will be
2
2
  // overwritten on commit!
3
- export const VERSION = "4.35.0";
3
+ export const VERSION = "4.36.0";