@secondlayer/cli 8.14.3 → 9.0.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.
- package/README.md +12 -8
- package/dist/cli.js +103 -7
- package/dist/cli.js.map +3 -3
- package/dist/plugins/index.d.ts +6 -19
- package/dist/plugins/index.js +72 -237
- package/dist/plugins/index.js.map +6 -8
- package/package.json +5 -5
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/types/plugin.ts", "../src/utils/contract-id.ts", "../src/utils/format.ts", "../src/core/plugin-manager.ts", "../src/generators/contract.ts", "../src/utils/abi-compat.ts", "../src/plugins/index.ts", "../src/plugins/clarinet/index.ts", "../src/utils/constants.ts", "../src/plugins/shared.ts", "../src/plugins/
|
|
3
|
+
"sources": ["../src/types/plugin.ts", "../src/utils/contract-id.ts", "../src/utils/format.ts", "../src/core/plugin-manager.ts", "../src/generators/contract.ts", "../src/utils/abi-compat.ts", "../src/plugins/index.ts", "../src/plugins/clarinet/index.ts", "../src/utils/constants.ts", "../src/plugins/shared.ts", "../src/plugins/react/generators/contract.ts", "../src/utils/case-conversion.ts", "../src/utils/type-mapping.ts", "../src/plugins/react/generators/utils.ts", "../src/generators/templates/use-contract.ts", "../src/plugins/react/generators/generic.ts", "../src/plugins/react/provider/index.ts", "../src/plugins/react/index.ts", "../src/plugins/testing/generators.ts", "../src/utils/generator-helpers.ts", "../src/plugins/testing/index.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"/**\n * Plugin system types for @secondlayer/cli\n */\n\nimport type { AbiContract } from \"@secondlayer/stacks/clarity\";\nimport type {\n\tNetworkName,\n\tResolvedContract,\n\tSecondLayerConfig,\n} from \"./config\";\n\n/**\n * Core plugin interface that all plugins must implement\n */\nexport interface SecondLayerPlugin {\n\t/** Plugin name (should be unique) */\n\tname: string;\n\n\t/** Plugin version */\n\tversion: string;\n\n\t// Lifecycle hooks\n\t/** Called after config is resolved but before generation starts */\n\tconfigResolved?: (config: ResolvedConfig) => void | Promise<void>;\n\n\t/** Called before generation starts */\n\tbeforeGenerate?: (context: GenerateContext) => void | Promise<void>;\n\n\t/** Called during generation phase - plugins can add their own outputs */\n\tgenerate?: (context: GenerateContext) => void | Promise<void>;\n\n\t/** Called after all generation is complete */\n\tafterGenerate?: (context: GenerateContext) => void | Promise<void>;\n\n\t// Transform hooks\n\t/** Transform user config before resolution */\n\ttransformConfig?: (config: UserConfig) => UserConfig | Promise<UserConfig>;\n\n\t/** Transform individual contracts during processing */\n\ttransformContract?: (\n\t\tcontract: ContractConfig,\n\t) => ContractConfig | Promise<ContractConfig>;\n\n\t/** Transform generated output before writing to disk */\n\ttransformOutput?: (\n\t\toutput: string,\n\t\ttype: OutputType,\n\t) => string | Promise<string>;\n}\n\n/**\n * User configuration (before plugin transformations)\n */\nexport type UserConfig = SecondLayerConfig;\n\n/**\n * Resolved configuration (after plugin transformations)\n */\nexport interface ResolvedConfig extends SecondLayerConfig {\n\t/** Resolved plugins array */\n\tplugins: SecondLayerPlugin[];\n}\n\n/**\n * Contract configuration that can be transformed by plugins\n */\nexport interface ContractConfig {\n\tname?: string;\n\taddress?: string | Partial<Record<NetworkName, string>>;\n\tsource?: string;\n\tabi?: AbiContract;\n\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\tmetadata?: Record<string, any>;\n}\n\n/**\n * Contract config from Clarinet plugin\n */\nexport interface ClarinetContractConfig extends ContractConfig {\n\t_clarinetSource: true;\n}\n\n/**\n * Contract config from direct file input\n */\nexport interface DirectFileContractConfig extends ContractConfig {\n\t_directFile: true;\n}\n\n/**\n * Union of all contract config types\n */\nexport type PluginContractConfig =\n\t| ContractConfig\n\t| ClarinetContractConfig\n\t| DirectFileContractConfig;\n\n/**\n * Type guard for Clarinet contracts\n */\nexport function isClarinetContract(\n\tc: ContractConfig,\n): c is ClarinetContractConfig {\n\treturn \"_clarinetSource\" in c && c._clarinetSource === true;\n}\n\n/**\n * Type guard for direct file contracts\n */\nexport function isDirectFileContract(\n\tc: ContractConfig,\n): c is DirectFileContractConfig {\n\treturn \"_directFile\" in c && c._directFile === true;\n}\n\n/**\n * Processed contract with resolved ABI and metadata\n */\nexport interface ProcessedContract extends ResolvedContract {\n\t/** Additional metadata added by plugins */\n\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\tmetadata?: Record<string, any>;\n}\n\n/**\n * Generated output from plugins\n */\nexport interface GeneratedOutput {\n\t/** File path where output should be written */\n\tpath: string;\n\n\t/** Generated content */\n\tcontent: string;\n\n\t/** Output type for transformation hooks */\n\ttype?: OutputType;\n\n\t/** Whether this output should overwrite existing files */\n\toverwrite?: boolean;\n}\n\n/**\n * Types of outputs that can be generated\n */\nexport type OutputType =\n\t| \"contracts\"\n\t| \"hooks\"\n\t| \"actions\"\n\t| \"types\"\n\t| \"utils\"\n\t| \"config\"\n\t| \"other\";\n\n/**\n * Base context available to all plugin hooks\n */\nexport interface PluginContext {\n\t/** Resolved configuration */\n\tconfig: ResolvedConfig;\n\n\t/** Logger for plugin output */\n\tlogger: Logger;\n\n\t/** Utility functions for plugins */\n\tutils: PluginUtils;\n}\n\n/**\n * Context available during generation phase\n */\nexport interface GenerateContext extends PluginContext {\n\t/** Processed contracts ready for generation */\n\tcontracts: ProcessedContract[];\n\n\t/** Map of output keys to generated content */\n\toutputs: Map<string, GeneratedOutput>;\n\n\t/** Function to augment existing outputs */\n\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\taugment: (outputKey: string, contractName: string, content: any) => void;\n\n\t/** Function to add new outputs */\n\taddOutput: (key: string, output: GeneratedOutput) => void;\n}\n\n/**\n * Logger interface for plugin output\n */\nexport interface Logger {\n\tinfo: (message: string) => void;\n\twarn: (message: string) => void;\n\terror: (message: string) => void;\n\tdebug: (message: string) => void;\n\tsuccess: (message: string) => void;\n}\n\n/**\n * Utility functions available to plugins\n */\nexport interface PluginUtils {\n\t/** Convert kebab-case to camelCase */\n\ttoCamelCase: (str: string) => string;\n\n\t/** Convert camelCase to kebab-case */\n\ttoKebabCase: (str: string) => string;\n\n\t/** Validate Stacks address format */\n\tvalidateAddress: (address: string) => boolean;\n\n\t/** Parse contract identifier (address.contract-name) */\n\tparseContractId: (contractId: string) => {\n\t\taddress: string;\n\t\tcontractName: string;\n\t};\n\n\t/** Format TypeScript code using prettier */\n\tformatCode: (code: string) => Promise<string>;\n\n\t/** Resolve file path relative to project root */\n\tresolvePath: (relativePath: string) => string;\n\n\t/** Check if file exists */\n\tfileExists: (path: string) => Promise<boolean>;\n\n\t/** Read file content */\n\treadFile: (path: string) => Promise<string>;\n\n\t/** Write file content */\n\twriteFile: (path: string, content: string) => Promise<void>;\n\n\t/** Create directory recursively */\n\tensureDir: (path: string) => Promise<void>;\n}\n\n/**\n * Plugin factory function type for creating plugins with options\n */\n// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\nexport type PluginFactory<TOptions = any> = (\n\toptions?: TOptions,\n) => SecondLayerPlugin;\n\n/**\n * Plugin options base interface\n */\nexport interface PluginOptions {\n\t/** Include only specific contracts/functions */\n\tinclude?: string[];\n\n\t/** Exclude specific contracts/functions */\n\texclude?: string[];\n\n\t/** Enable debug output */\n\tdebug?: boolean;\n}\n\n/**\n * Hook execution result\n */\n// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\nexport interface HookResult<T = any> {\n\t/** Whether the hook was successful */\n\tsuccess: boolean;\n\n\t/** Result data from the hook */\n\tdata?: T;\n\n\t/** Error if hook failed */\n\terror?: Error;\n\n\t/** Plugin that executed the hook */\n\tplugin: string;\n}\n\n/**\n * Plugin execution context for internal use\n */\nexport interface PluginExecutionContext {\n\t/** Current plugin being executed */\n\tcurrentPlugin?: SecondLayerPlugin;\n\n\t/** Execution phase */\n\tphase: \"config\" | \"generate\" | \"output\";\n\n\t/** Start time for performance tracking */\n\tstartTime: number;\n\n\t/** Plugin execution results */\n\tresults: Map<string, HookResult[]>;\n}\n",
|
|
6
6
|
"/**\n * Parse a fully-qualified contract ID (\"address.contractName\") into its parts.\n * Throws if the input doesn't contain a dot separator.\n */\nexport function parseContractId(contractId: string): {\n\taddress: string;\n\tcontractName: string;\n} {\n\tconst dotIndex = contractId.indexOf(\".\");\n\tif (dotIndex === -1) {\n\t\tthrow new Error(\n\t\t\t`Invalid contract ID: \"${contractId}\" (expected \"address.contractName\")`,\n\t\t);\n\t}\n\treturn {\n\t\taddress: contractId.slice(0, dotIndex),\n\t\tcontractName: contractId.slice(dotIndex + 1),\n\t};\n}\n",
|
|
@@ -8,13 +8,10 @@
|
|
|
8
8
|
"/**\n * Plugin Manager for @secondlayer/cli\n * Handles plugin registration, lifecycle execution, and output management\n */\n\nimport { promises as fs } from \"node:fs\";\nimport path from \"node:path\";\nimport { isValidAddress as _validateStacksAddress } from \"@secondlayer/stacks\";\nconst validateStacksAddress = _validateStacksAddress as (\n\taddress: string,\n) => boolean;\nimport { getErrorMessage } from \"@secondlayer/shared\";\nimport { toCamelCase } from \"@secondlayer/stacks/clarity\";\nimport type {\n\tContractConfig,\n\tGenerateContext,\n\tGeneratedOutput,\n\tHookResult,\n\tLogger,\n\tPluginExecutionContext,\n\tPluginUtils,\n\tProcessedContract,\n\tResolvedConfig,\n\tSecondLayerPlugin,\n\tUserConfig,\n} from \"../types/plugin\";\nimport { isClarinetContract, isDirectFileContract } from \"../types/plugin\";\nimport { parseContractId } from \"../utils/contract-id\";\n\n/**\n * Core plugin manager that orchestrates plugin execution\n */\nexport class PluginManager {\n\tprivate plugins: SecondLayerPlugin[] = [];\n\tprivate logger: Logger;\n\tprivate utils: PluginUtils;\n\tprivate executionContext: PluginExecutionContext;\n\n\tconstructor() {\n\t\tthis.logger = this.createLogger();\n\t\tthis.utils = this.createUtils();\n\t\tthis.executionContext = {\n\t\t\tphase: \"config\",\n\t\t\tstartTime: Date.now(),\n\t\t\tresults: new Map(),\n\t\t};\n\t}\n\n\t/**\n\t * Register a plugin\n\t */\n\tregister(plugin: SecondLayerPlugin): void {\n\t\t// Validate plugin\n\t\tif (!plugin.name || !plugin.version) {\n\t\t\tthrow new Error(\"Plugin must have a name and version\");\n\t\t}\n\n\t\t// Check for duplicate plugin names\n\t\tconst existing = this.plugins.find((p) => p.name === plugin.name);\n\t\tif (existing) {\n\t\t\tthrow new Error(\n\t\t\t\t`Plugin \"${plugin.name}\" is already registered (version ${existing.version})`,\n\t\t\t);\n\t\t}\n\n\t\tthis.plugins.push(plugin);\n\t\tthis.logger.debug(`Registered plugin: ${plugin.name}@${plugin.version}`);\n\t}\n\n\t/**\n\t * Get all registered plugins\n\t */\n\tgetPlugins(): SecondLayerPlugin[] {\n\t\treturn [...this.plugins];\n\t}\n\n\t/**\n\t * Transform user config through all plugins\n\t */\n\tasync transformConfig(config: UserConfig): Promise<ResolvedConfig> {\n\t\tthis.executionContext.phase = \"config\";\n\t\tlet transformedConfig = { ...config };\n\n\t\tfor (const plugin of this.plugins) {\n\t\t\tif (plugin.transformConfig) {\n\t\t\t\tthis.executionContext.currentPlugin = plugin;\n\t\t\t\ttry {\n\t\t\t\t\tconst result = await plugin.transformConfig(transformedConfig);\n\t\t\t\t\ttransformedConfig = result;\n\t\t\t\t\tthis.recordHookResult(plugin.name, \"transformConfig\", {\n\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t});\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthis.recordHookResult(plugin.name, \"transformConfig\", {\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\terror:\n\t\t\t\t\t\t\terror instanceof Error\n\t\t\t\t\t\t\t\t? error\n\t\t\t\t\t\t\t\t: new Error(getErrorMessage(error)),\n\t\t\t\t\t});\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Plugin \"${plugin.name}\" failed during config transformation: ${getErrorMessage(error)}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add plugins array to resolved config\n\t\tconst resolvedConfig: ResolvedConfig = {\n\t\t\t...transformedConfig,\n\t\t\tplugins: this.plugins,\n\t\t};\n\n\t\treturn resolvedConfig;\n\t}\n\n\t/**\n\t * Transform contracts through all plugins\n\t */\n\tasync transformContracts(\n\t\tcontracts: ContractConfig[],\n\t\t_config: ResolvedConfig,\n\t): Promise<ProcessedContract[]> {\n\t\tconst processedContracts: ProcessedContract[] = [];\n\n\t\tfor (let contract of contracts) {\n\t\t\tif (isClarinetContract(contract) && contract.abi) {\n\t\t\t\tprocessedContracts.push(this.contractToProcessed(contract, \"clarinet\"));\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (isDirectFileContract(contract) && contract.abi) {\n\t\t\t\tprocessedContracts.push(this.contractToProcessed(contract, \"direct\"));\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Transform through each plugin\n\t\t\tfor (const plugin of this.plugins) {\n\t\t\t\tif (plugin.transformContract) {\n\t\t\t\t\tthis.executionContext.currentPlugin = plugin;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tcontract = await plugin.transformContract(contract);\n\t\t\t\t\t\tthis.recordHookResult(plugin.name, \"transformContract\", {\n\t\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tthis.recordHookResult(plugin.name, \"transformContract\", {\n\t\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\t\terror:\n\t\t\t\t\t\t\t\terror instanceof Error\n\t\t\t\t\t\t\t\t\t? error\n\t\t\t\t\t\t\t\t\t: new Error(getErrorMessage(error)),\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.logger.warn(\n\t\t\t\t\t\t\t`Plugin \"${plugin.name}\" failed to transform contract: ${getErrorMessage(error)}`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (contract.abi) {\n\t\t\t\tprocessedContracts.push(this.contractToProcessed(contract, \"api\"));\n\t\t\t}\n\t\t}\n\n\t\treturn processedContracts;\n\t}\n\n\t/**\n\t * Execute lifecycle hooks\n\t */\n\tasync executeHook(\n\t\thookName: keyof SecondLayerPlugin,\n\t\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\t\tcontext: any,\n\t): Promise<void> {\n\t\tfor (const plugin of this.plugins) {\n\t\t\tconst hook = plugin[hookName];\n\t\t\tif (typeof hook === \"function\") {\n\t\t\t\tthis.executionContext.currentPlugin = plugin;\n\t\t\t\ttry {\n\t\t\t\t\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\t\t\t\t\tawait (hook as any).call(plugin, context);\n\t\t\t\t\tthis.recordHookResult(plugin.name, hookName as string, {\n\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t});\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthis.recordHookResult(plugin.name, hookName as string, {\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\terror:\n\t\t\t\t\t\t\terror instanceof Error\n\t\t\t\t\t\t\t\t? error\n\t\t\t\t\t\t\t\t: new Error(getErrorMessage(error)),\n\t\t\t\t\t});\n\t\t\t\t\tthis.logger.error(\n\t\t\t\t\t\t`Plugin \"${plugin.name}\" failed during ${hookName as string}: ${getErrorMessage(error)}`,\n\t\t\t\t\t);\n\t\t\t\t\t// Don't throw - allow other plugins to continue\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Execute generation phase with full context\n\t */\n\tasync executeGeneration(\n\t\tcontracts: ProcessedContract[],\n\t\tconfig: ResolvedConfig,\n\t): Promise<Map<string, GeneratedOutput>> {\n\t\tthis.executionContext.phase = \"generate\";\n\t\tconst outputs = new Map<string, GeneratedOutput>();\n\n\t\t// Create generation context\n\t\tconst context: GenerateContext = {\n\t\t\tconfig,\n\t\t\tlogger: this.logger,\n\t\t\tutils: this.utils,\n\t\t\tcontracts,\n\t\t\toutputs,\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\t\t\taugment: (outputKey: string, contractName: string, content: any) => {\n\t\t\t\tthis.augmentOutput(outputs, outputKey, contractName, content);\n\t\t\t},\n\t\t\taddOutput: (key: string, output: GeneratedOutput) => {\n\t\t\t\toutputs.set(key, output);\n\t\t\t},\n\t\t};\n\n\t\t// Execute beforeGenerate hooks\n\t\tawait this.executeHook(\"beforeGenerate\", context);\n\n\t\t// Execute generate hooks\n\t\tawait this.executeHook(\"generate\", context);\n\n\t\t// Execute afterGenerate hooks\n\t\tawait this.executeHook(\"afterGenerate\", context);\n\n\t\treturn outputs;\n\t}\n\n\t/**\n\t * Transform outputs through plugins\n\t */\n\tasync transformOutputs(\n\t\toutputs: Map<string, GeneratedOutput>,\n\t): Promise<Map<string, GeneratedOutput>> {\n\t\tthis.executionContext.phase = \"output\";\n\t\tconst transformedOutputs = new Map<string, GeneratedOutput>();\n\n\t\tfor (const [key, output] of outputs) {\n\t\t\tlet transformedContent = output.content;\n\n\t\t\tfor (const plugin of this.plugins) {\n\t\t\t\tif (plugin.transformOutput) {\n\t\t\t\t\tthis.executionContext.currentPlugin = plugin;\n\t\t\t\t\ttry {\n\t\t\t\t\t\ttransformedContent = await plugin.transformOutput(\n\t\t\t\t\t\t\ttransformedContent,\n\t\t\t\t\t\t\toutput.type || \"other\",\n\t\t\t\t\t\t);\n\t\t\t\t\t\tthis.recordHookResult(plugin.name, \"transformOutput\", {\n\t\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tthis.recordHookResult(plugin.name, \"transformOutput\", {\n\t\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\t\terror:\n\t\t\t\t\t\t\t\terror instanceof Error\n\t\t\t\t\t\t\t\t\t? error\n\t\t\t\t\t\t\t\t\t: new Error(getErrorMessage(error)),\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.logger.warn(\n\t\t\t\t\t\t\t`Plugin \"${plugin.name}\" failed to transform output: ${getErrorMessage(error)}`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttransformedOutputs.set(key, {\n\t\t\t\t...output,\n\t\t\t\tcontent: transformedContent,\n\t\t\t});\n\t\t}\n\n\t\treturn transformedOutputs;\n\t}\n\n\t/**\n\t * Write outputs to disk\n\t */\n\tasync writeOutputs(outputs: Map<string, GeneratedOutput>): Promise<void> {\n\t\tfor (const [, output] of outputs) {\n\t\t\ttry {\n\t\t\t\tconst resolvedPath = path.resolve(process.cwd(), output.path);\n\t\t\t\tawait this.utils.ensureDir(path.dirname(resolvedPath));\n\t\t\t\tawait this.utils.writeFile(resolvedPath, output.content);\n\t\t\t\t// Don't log here - let the main command handle success messaging\n\t\t\t} catch (error) {\n\t\t\t\tthis.logger.error(\n\t\t\t\t\t`Failed to write ${output.path}: ${getErrorMessage(error)}`,\n\t\t\t\t);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Get execution results for debugging\n\t */\n\tgetExecutionResults(): Map<string, HookResult[]> {\n\t\treturn new Map(this.executionContext.results);\n\t}\n\n\t/**\n\t * Convert a contract config with an ABI into a ProcessedContract\n\t */\n\tprivate contractToProcessed(\n\t\tcontract: ContractConfig,\n\t\tsource: string,\n\t): ProcessedContract {\n\t\tconst address =\n\t\t\ttypeof contract.address === \"string\" ? contract.address : \"\";\n\t\tconst parsed = parseContractId(address);\n\t\treturn {\n\t\t\tname: contract.name || parsed.contractName || \"unknown\",\n\t\t\taddress: parsed.address || \"unknown\",\n\t\t\tcontractName: parsed.contractName || contract.name || \"unknown\",\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: value is non-null after preceding check or by construction; TS narrowing limitation\n\t\t\tabi: contract.abi!,\n\t\t\tsource: source === \"api\" ? (\"api\" as const) : (\"local\" as const),\n\t\t\tmetadata: contract.metadata ?? { source },\n\t\t};\n\t}\n\n\t/**\n\t * Augment existing output with additional content\n\t */\n\tprivate augmentOutput(\n\t\toutputs: Map<string, GeneratedOutput>,\n\t\toutputKey: string,\n\t\tcontractName: string,\n\t\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\t\tcontent: any,\n\t): void {\n\t\tconst existing = outputs.get(outputKey);\n\t\tif (!existing) {\n\t\t\tthis.logger.warn(`Cannot augment non-existent output: ${outputKey}`);\n\t\t\treturn;\n\t\t}\n\n\t\t// Simple augmentation - append content\n\t\t// In a real implementation, this would be more sophisticated\n\t\tconst augmentedContent = `${existing.content}\\n\\n// Augmented by plugin for ${contractName}\\n${JSON.stringify(content, null, 2)}`;\n\n\t\toutputs.set(outputKey, {\n\t\t\t...existing,\n\t\t\tcontent: augmentedContent,\n\t\t});\n\t}\n\n\t/**\n\t * Record hook execution result\n\t */\n\tprivate recordHookResult(\n\t\tpluginName: string,\n\t\thookName: string,\n\t\tresult: Omit<HookResult, \"plugin\">,\n\t): void {\n\t\tconst key = `${pluginName}:${hookName}`;\n\t\tconst existing = this.executionContext.results.get(key) || [];\n\t\texisting.push({ ...result, plugin: pluginName });\n\t\tthis.executionContext.results.set(key, existing);\n\t}\n\n\t/**\n\t * Create logger instance\n\t */\n\tprivate createLogger(): Logger {\n\t\treturn {\n\t\t\tinfo: (message: string) => console.log(`ℹ️ ${message}`),\n\t\t\twarn: (message: string) => console.warn(`⚠️ ${message}`),\n\t\t\terror: (message: string) => console.error(`❌ ${message}`),\n\t\t\tdebug: (message: string) => {\n\t\t\t\tif (process.env.DEBUG) {\n\t\t\t\t\tconsole.log(`🐛 ${message}`);\n\t\t\t\t}\n\t\t\t},\n\t\t\tsuccess: (message: string) => console.log(`✅ ${message}`),\n\t\t};\n\t}\n\n\t/**\n\t * Create utils instance\n\t */\n\tprivate createUtils(): PluginUtils {\n\t\treturn {\n\t\t\ttoCamelCase,\n\n\t\t\ttoKebabCase: (str: string) => {\n\t\t\t\treturn str.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`);\n\t\t\t},\n\n\t\t\tvalidateAddress: (address: string) => {\n\t\t\t\treturn validateStacksAddress(parseContractId(address).address);\n\t\t\t},\n\n\t\t\tparseContractId: (contractId: string) => {\n\t\t\t\treturn parseContractId(contractId);\n\t\t\t},\n\n\t\t\tformatCode: async (code: string) => {\n\t\t\t\tconst { formatCode } = await import(\"../utils/format\");\n\t\t\t\treturn formatCode(code);\n\t\t\t},\n\n\t\t\tresolvePath: (relativePath: string) => {\n\t\t\t\treturn path.resolve(process.cwd(), relativePath);\n\t\t\t},\n\n\t\t\tfileExists: async (filePath: string) => {\n\t\t\t\ttry {\n\t\t\t\t\tawait fs.access(filePath);\n\t\t\t\t\treturn true;\n\t\t\t\t} catch {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\treadFile: async (filePath: string) => {\n\t\t\t\treturn fs.readFile(filePath, \"utf-8\");\n\t\t\t},\n\n\t\t\twriteFile: async (filePath: string, content: string) => {\n\t\t\t\tawait fs.writeFile(filePath, content, \"utf-8\");\n\t\t\t},\n\n\t\t\tensureDir: async (dirPath: string) => {\n\t\t\t\tawait fs.mkdir(dirPath, { recursive: true });\n\t\t\t},\n\t\t};\n\t}\n}\n",
|
|
9
9
|
"import {\n\ttype ContractInterfaceInput,\n\tgenerateContractInterface as buildContractInterface,\n} from \"@secondlayer/scaffold\";\nimport type { ResolvedContract } from \"../types/config\";\nimport { formatCode } from \"../utils/format\";\n\n/**\n * Code generator for contract interfaces.\n *\n * The generation logic lives in @secondlayer/scaffold (single-sourced so the\n * MCP server can reuse it); this wrapper applies Biome formatting on the CLI\n * output path.\n */\nexport async function generateContractInterface(\n\tcontracts: ResolvedContract[],\n): Promise<string> {\n\treturn formatCode(\n\t\tbuildContractInterface(contracts as ContractInterfaceInput[]),\n\t);\n}\n",
|
|
10
10
|
"/**\n * ABI compatibility layer for normalizing different ABI formats\n *\n * Handles differences between:\n * - Upstream ClarityAbi types (uses `buffer`, `read_only`)\n * - Internal format (uses `buff`, `read-only`)\n */\n\nimport type {\n\tAbiContract,\n\tAbiFunction,\n\tAbiMap,\n\tAbiType,\n\tAbiVariable,\n} from \"@secondlayer/stacks/clarity\";\n\n/**\n * Normalize function access type from various formats to internal format\n */\nexport function normalizeAccess(\n\taccess: string,\n): \"public\" | \"read-only\" | \"private\" {\n\tif (access === \"read_only\") return \"read-only\";\n\treturn access as \"public\" | \"read-only\" | \"private\";\n}\n\n/**\n * Normalize a Clarity type from API format to internal format\n * Handles buffer vs buff, and recursively normalizes nested types\n */\nexport function normalizeType(type: unknown): AbiType {\n\tif (typeof type === \"string\") {\n\t\t// Handle string primitive types\n\t\tswitch (type) {\n\t\t\tcase \"uint128\":\n\t\t\tcase \"int128\":\n\t\t\tcase \"bool\":\n\t\t\tcase \"principal\":\n\t\t\tcase \"trait_reference\":\n\t\t\t\treturn type;\n\t\t\tdefault:\n\t\t\t\t// Unknown string type, return as-is\n\t\t\t\treturn type as AbiType;\n\t\t}\n\t}\n\n\tif (typeof type !== \"object\" || type === null) {\n\t\tthrow new Error(`Invalid ABI type: expected object, got ${typeof type}`);\n\t}\n\n\tconst typeObj = type as Record<string, unknown>;\n\n\t// Handle buffer vs buff (API uses buffer, we use buff)\n\tif (\"buffer\" in typeObj) {\n\t\tconst buffer = typeObj.buffer as { length?: number };\n\t\treturn {\n\t\t\tbuff: {\n\t\t\t\tlength: buffer?.length ?? 32,\n\t\t\t},\n\t\t};\n\t}\n\n\t// Already in internal format\n\tif (\"buff\" in typeObj) {\n\t\tconst buff = typeObj.buff as { length?: number };\n\t\treturn {\n\t\t\tbuff: {\n\t\t\t\tlength: buff?.length ?? 32,\n\t\t\t},\n\t\t};\n\t}\n\n\t// String types\n\tif (\"string-ascii\" in typeObj) {\n\t\tconst strAscii = typeObj[\"string-ascii\"] as { length?: number };\n\t\treturn {\n\t\t\t\"string-ascii\": {\n\t\t\t\tlength: strAscii?.length ?? 256,\n\t\t\t},\n\t\t};\n\t}\n\n\tif (\"string-utf8\" in typeObj) {\n\t\tconst strUtf8 = typeObj[\"string-utf8\"] as { length?: number };\n\t\treturn {\n\t\t\t\"string-utf8\": {\n\t\t\t\tlength: strUtf8?.length ?? 256,\n\t\t\t},\n\t\t};\n\t}\n\n\t// Response type - recursively normalize ok and error types\n\tif (\"response\" in typeObj) {\n\t\tconst response = typeObj.response as { ok?: unknown; error?: unknown };\n\t\treturn {\n\t\t\tresponse: {\n\t\t\t\tok: normalizeType(response?.ok ?? \"bool\"),\n\t\t\t\terror: normalizeType(response?.error ?? \"uint128\"),\n\t\t\t},\n\t\t};\n\t}\n\n\t// Optional type - recursively normalize inner type\n\tif (\"optional\" in typeObj) {\n\t\treturn {\n\t\t\toptional: normalizeType(typeObj.optional),\n\t\t};\n\t}\n\n\t// List type - recursively normalize element type\n\tif (\"list\" in typeObj) {\n\t\tconst list = typeObj.list as { type?: unknown; length?: number };\n\t\treturn {\n\t\t\tlist: {\n\t\t\t\ttype: normalizeType(list?.type ?? \"uint128\"),\n\t\t\t\tlength: list?.length ?? 100,\n\t\t\t},\n\t\t};\n\t}\n\n\t// Tuple type - recursively normalize field types\n\tif (\"tuple\" in typeObj) {\n\t\tconst tuple = typeObj.tuple as Array<{ name: string; type: unknown }>;\n\t\treturn {\n\t\t\ttuple: tuple.map((field) => ({\n\t\t\t\tname: field.name,\n\t\t\t\ttype: normalizeType(field.type),\n\t\t\t})),\n\t\t};\n\t}\n\n\t// Unknown type - fail explicitly\n\tthrow new Error(`Unknown ABI type structure: ${JSON.stringify(type)}`);\n}\n\n/**\n * Normalize a function definition from API format to internal format\n */\nexport function normalizeFunction(func: Record<string, unknown>): AbiFunction {\n\tconst access = normalizeAccess(func.access as string);\n\tconst args = (func.args as Array<{ name: string; type: unknown }>) ?? [];\n\tconst outputs = func.outputs as { type?: unknown } | unknown;\n\n\treturn {\n\t\tname: func.name as string,\n\t\taccess,\n\t\targs: args.map((arg) => ({\n\t\t\tname: arg.name,\n\t\t\ttype: normalizeType(arg.type),\n\t\t})),\n\t\toutputs: normalizeType(\n\t\t\ttypeof outputs === \"object\" && outputs !== null && \"type\" in outputs\n\t\t\t\t? (outputs as { type: unknown }).type\n\t\t\t\t: outputs,\n\t\t),\n\t};\n}\n\n/**\n * Normalize a map definition from API format to internal format\n */\nexport function normalizeMap(map: Record<string, unknown>): AbiMap {\n\treturn {\n\t\tname: map.name as string,\n\t\tkey: normalizeType(map.key),\n\t\tvalue: normalizeType(map.value),\n\t};\n}\n\n/**\n * Normalize a variable definition from API format to internal format\n */\nexport function normalizeVariable(\n\tvariable: Record<string, unknown>,\n): AbiVariable {\n\treturn {\n\t\tname: variable.name as string,\n\t\ttype: normalizeType(variable.type),\n\t\taccess: variable.access as \"constant\" | \"variable\",\n\t};\n}\n\n/**\n * Normalize an entire ABI from various sources to consistent internal format\n *\n * This handles ABIs from:\n * - Hiro API responses\n * - Clarinet SDK\n * - Upstream @secondlayer/stacks types\n */\nexport function normalizeAbi(abi: unknown): AbiContract {\n\tif (typeof abi !== \"object\" || abi === null) {\n\t\treturn { functions: [] };\n\t}\n\n\tconst abiObj = abi as Record<string, unknown>;\n\n\tconst functions: AbiFunction[] = [];\n\tconst maps: AbiMap[] = [];\n\tconst variables: AbiVariable[] = [];\n\n\t// Normalize functions\n\tif (Array.isArray(abiObj.functions)) {\n\t\tfor (const func of abiObj.functions) {\n\t\t\tif (typeof func === \"object\" && func !== null) {\n\t\t\t\tfunctions.push(normalizeFunction(func as Record<string, unknown>));\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize maps\n\tif (Array.isArray(abiObj.maps)) {\n\t\tfor (const map of abiObj.maps) {\n\t\t\tif (typeof map === \"object\" && map !== null) {\n\t\t\t\tmaps.push(normalizeMap(map as Record<string, unknown>));\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize variables\n\tif (Array.isArray(abiObj.variables)) {\n\t\tfor (const variable of abiObj.variables) {\n\t\t\tif (typeof variable === \"object\" && variable !== null) {\n\t\t\t\tvariables.push(normalizeVariable(variable as Record<string, unknown>));\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {\n\t\tfunctions,\n\t\tmaps: maps.length > 0 ? maps : undefined,\n\t\tvariables: variables.length > 0 ? variables : undefined,\n\t};\n}\n",
|
|
11
|
-
"/**\n * Plugin exports for @secondlayer/cli\n * This will be expanded as plugins are implemented\n */\n\nimport type { SecondLayerPlugin } from \"../types/plugin\";\n\n// Re-export plugin types for convenience\nexport type {\n\tSecondLayerPlugin,\n\tPluginFactory,\n\tPluginOptions,\n\tGenerateContext,\n\tPluginContext,\n\tLogger,\n\tPluginUtils,\n} from \"../types/plugin\";\n\n// Plugin utilities\nexport { PluginManager } from \"../core/plugin-manager\";\n\n// Base plugin options interface\nexport interface BasePluginOptions {\n\t/** Include only specific contracts/functions */\n\tinclude?: string[];\n\n\t/** Exclude specific contracts/functions */\n\texclude?: string[];\n\n\t/** Enable debug output */\n\tdebug?: boolean;\n}\n\n/**\n * Utility function to filter contracts/functions based on include/exclude options\n */\nexport function filterByOptions<T extends { name: string }>(\n\titems: T[],\n\toptions: BasePluginOptions = {},\n): T[] {\n\tlet filtered = items;\n\n\tif (options.include && options.include.length > 0) {\n\t\tfiltered = filtered.filter((item) =>\n\t\t\toptions.include?.some(\n\t\t\t\t(pattern) =>\n\t\t\t\t\titem.name.includes(pattern) || item.name.match(new RegExp(pattern)),\n\t\t\t),\n\t\t);\n\t}\n\n\tif (options.exclude && options.exclude.length > 0) {\n\t\tfiltered = filtered.filter(\n\t\t\t(item) =>\n\t\t\t\t!options.exclude?.some(\n\t\t\t\t\t(pattern) =>\n\t\t\t\t\t\titem.name.includes(pattern) || item.name.match(new RegExp(pattern)),\n\t\t\t\t),\n\t\t);\n\t}\n\n\treturn filtered;\n}\n\n/**\n * Utility function to create a simple plugin\n */\nexport function createPlugin(\n\tname: string,\n\tversion: string,\n\timplementation: Partial<SecondLayerPlugin>,\n): SecondLayerPlugin {\n\treturn {\n\t\tname,\n\t\tversion,\n\t\t...implementation,\n\t};\n}\n\n// Plugin exports\nexport { clarinet, hasClarinetProject } from \"./clarinet/index\";\nexport type { ClarinetPluginOptions } from \"./clarinet/index\";\n\nexport {
|
|
12
|
-
"/**\n * Clarinet Plugin for @secondlayer/cli\n * Generates type-safe contract interfaces from local Clarity contracts using Clarinet SDK\n */\n\nimport { initSimnet } from \"@hirosystems/clarinet-sdk\";\nimport { toCamelCase } from \"@secondlayer/stacks/clarity\";\nimport { generateContractInterface } from \"../../generators/contract\";\nimport type {\n\tGenerateContext,\n\tPluginFactory,\n\tUserConfig,\n} from \"../../types/plugin\";\nimport { normalizeAbi } from \"../../utils/abi-compat\";\nimport { DEFAULT_SENDER_ADDRESS } from \"../../utils/constants\";\nimport { parseContractId } from \"../../utils/contract-id\";\nimport { matchesContractFilters } from \"../shared\";\n\nexport interface ClarinetPluginOptions {\n\t/** Path to Clarinet.toml file */\n\tpath?: string;\n\n\t/** Include only specific contracts */\n\tinclude?: string[];\n\n\t/** Exclude specific contracts */\n\texclude?: string[];\n\n\t/** Enable debug output */\n\tdebug?: boolean;\n}\n\n/**\n * Sanitize contract name to be a valid JavaScript identifier using camelCase\n */\nfunction sanitizeContractName(name: string): string {\n\treturn toCamelCase(name);\n}\n\n/**\n *
|
|
11
|
+
"/**\n * Plugin exports for @secondlayer/cli\n * This will be expanded as plugins are implemented\n */\n\nimport type { SecondLayerPlugin } from \"../types/plugin\";\n\n// Re-export plugin types for convenience\nexport type {\n\tSecondLayerPlugin,\n\tPluginFactory,\n\tPluginOptions,\n\tGenerateContext,\n\tPluginContext,\n\tLogger,\n\tPluginUtils,\n} from \"../types/plugin\";\n\n// Plugin utilities\nexport { PluginManager } from \"../core/plugin-manager\";\n\n// Base plugin options interface\nexport interface BasePluginOptions {\n\t/** Include only specific contracts/functions */\n\tinclude?: string[];\n\n\t/** Exclude specific contracts/functions */\n\texclude?: string[];\n\n\t/** Enable debug output */\n\tdebug?: boolean;\n}\n\n/**\n * Utility function to filter contracts/functions based on include/exclude options\n */\nexport function filterByOptions<T extends { name: string }>(\n\titems: T[],\n\toptions: BasePluginOptions = {},\n): T[] {\n\tlet filtered = items;\n\n\tif (options.include && options.include.length > 0) {\n\t\tfiltered = filtered.filter((item) =>\n\t\t\toptions.include?.some(\n\t\t\t\t(pattern) =>\n\t\t\t\t\titem.name.includes(pattern) || item.name.match(new RegExp(pattern)),\n\t\t\t),\n\t\t);\n\t}\n\n\tif (options.exclude && options.exclude.length > 0) {\n\t\tfiltered = filtered.filter(\n\t\t\t(item) =>\n\t\t\t\t!options.exclude?.some(\n\t\t\t\t\t(pattern) =>\n\t\t\t\t\t\titem.name.includes(pattern) || item.name.match(new RegExp(pattern)),\n\t\t\t\t),\n\t\t);\n\t}\n\n\treturn filtered;\n}\n\n/**\n * Utility function to create a simple plugin\n */\nexport function createPlugin(\n\tname: string,\n\tversion: string,\n\timplementation: Partial<SecondLayerPlugin>,\n): SecondLayerPlugin {\n\treturn {\n\t\tname,\n\t\tversion,\n\t\t...implementation,\n\t};\n}\n\n// Plugin exports\nexport { clarinet, hasClarinetProject } from \"./clarinet/index\";\nexport type { ClarinetPluginOptions } from \"./clarinet/index\";\n\nexport { react } from \"./react/index\";\nexport type { ReactPluginOptions } from \"./react/index\";\n\nexport { testing } from \"./testing/index\";\nexport type { TestingPluginOptions } from \"./testing/index\";\n",
|
|
12
|
+
"/**\n * Clarinet Plugin for @secondlayer/cli\n * Generates type-safe contract interfaces from local Clarity contracts using Clarinet SDK\n */\n\nimport { initSimnet } from \"@hirosystems/clarinet-sdk\";\nimport { toCamelCase } from \"@secondlayer/stacks/clarity\";\nimport { generateContractInterface } from \"../../generators/contract\";\nimport type {\n\tGenerateContext,\n\tPluginFactory,\n\tUserConfig,\n} from \"../../types/plugin\";\nimport { normalizeAbi } from \"../../utils/abi-compat\";\nimport { DEFAULT_SENDER_ADDRESS } from \"../../utils/constants\";\nimport { parseContractId } from \"../../utils/contract-id\";\nimport { matchesContractFilters } from \"../shared\";\n\nexport interface ClarinetPluginOptions {\n\t/** Path to Clarinet.toml file */\n\tpath?: string;\n\n\t/** Include only specific contracts */\n\tinclude?: string[];\n\n\t/** Exclude specific contracts */\n\texclude?: string[];\n\n\t/**\n\t * Also generate interfaces for dependency contracts declared under\n\t * `[project.requirements]` in Clarinet.toml (default: true).\n\t */\n\tincludeRequirements?: boolean;\n\n\t/** Enable debug output */\n\tdebug?: boolean;\n}\n\n/**\n * Sanitize contract name to be a valid JavaScript identifier using camelCase\n */\nfunction sanitizeContractName(name: string): string {\n\treturn toCamelCase(name);\n}\n\n/** @internal exported for tests */\nexport interface ManifestInfo {\n\t/** Names from `[contracts.NAME]` sections */\n\tprojectContracts: Set<string>;\n\t/** Fully-qualified ids from `[project.requirements]` entries */\n\trequirementIds: Set<string>;\n}\n\n/**\n * Read project contracts and requirements from Clarinet.toml. Returns null if\n * the manifest can't be read (callers fall back to pattern heuristics).\n */\nexport async function readManifestInfo(\n\tmanifestPath: string,\n): Promise<ManifestInfo | null> {\n\ttry {\n\t\tconst { promises: fs } = await import(\"node:fs\");\n\t\tconst tomlContent = await fs.readFile(manifestPath, \"utf-8\");\n\n\t\t// Simple TOML parsing: [contracts.NAME] sections\n\t\tconst projectContracts = new Set<string>();\n\t\tconst contractSectionRegex = /^\\[contracts\\.([^\\]]+)\\]/gm;\n\t\tlet match: RegExpExecArray | null = contractSectionRegex.exec(tomlContent);\n\t\twhile (match !== null) {\n\t\t\tprojectContracts.add(match[1]);\n\t\t\tmatch = contractSectionRegex.exec(tomlContent);\n\t\t}\n\n\t\t// Requirements: `contract_id = \"SP....name\"` entries — covers both the\n\t\t// inline `requirements = [{ contract_id = \"...\" }]` and the\n\t\t// `[[project.requirements]]` table-array forms.\n\t\tconst requirementIds = new Set<string>();\n\t\tconst requirementRegex = /contract_id\\s*=\\s*[\"']([^\"']+)[\"']/g;\n\t\tmatch = requirementRegex.exec(tomlContent);\n\t\twhile (match !== null) {\n\t\t\trequirementIds.add(match[1]);\n\t\t\tmatch = requirementRegex.exec(tomlContent);\n\t\t}\n\n\t\treturn { projectContracts, requirementIds };\n\t} catch {\n\t\treturn null;\n\t}\n}\n\n/** @internal exported for tests */\nexport type ContractKind = \"project\" | \"requirement\" | \"system\";\n\n/**\n * Classify a simnet contract. With a readable manifest the classification is\n * deterministic: `[contracts.*]` → project, `[project.requirements]` →\n * requirement, everything else (boot contracts) → system. Without a manifest,\n * fall back to boot-contract heuristics.\n */\nexport function classifyContract(\n\tcontractId: string,\n\tmanifest: ManifestInfo | null,\n): ContractKind {\n\tconst { address, contractName } = parseContractId(contractId);\n\n\tif (manifest) {\n\t\tif (manifest.projectContracts.has(contractName)) return \"project\";\n\t\tif (manifest.requirementIds.has(contractId)) return \"requirement\";\n\t\treturn \"system\";\n\t}\n\n\t// Fallback heuristics: boot contracts have well-known names/addresses\n\tconst systemContractPatterns = [\n\t\t/^pox-\\d+$/, // pox-2, pox-3, etc.\n\t\t/^bns$/, // Blockchain Name System\n\t\t/^costs-\\d+$/, // costs-2, costs-3, etc.\n\t\t/^lockup$/, // lockup contract\n\t];\n\tif (systemContractPatterns.some((pattern) => pattern.test(contractName))) {\n\t\treturn \"system\";\n\t}\n\n\tconst systemAddresses = [\n\t\tDEFAULT_SENDER_ADDRESS, // Boot contracts address\n\t\t\"ST000000000000000000002AMW42H\", // Boot contracts address (testnet)\n\t];\n\tif (systemAddresses.includes(address)) {\n\t\treturn \"system\";\n\t}\n\n\treturn \"project\";\n}\n\n/**\n * Clarinet plugin factory\n */\nexport const clarinet: PluginFactory<ClarinetPluginOptions> = (\n\toptions = {},\n) => {\n\tconst manifestPath = options.path || \"./Clarinet.toml\";\n\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\tlet simnet: any;\n\n\treturn {\n\t\tname: \"@secondlayer/cli/plugin-clarinet\",\n\t\tversion: \"1.0.0\",\n\n\t\tasync transformConfig(config: UserConfig): Promise<UserConfig> {\n\t\t\ttry {\n\t\t\t\t// Initialize simnet to extract contract ABIs\n\t\t\t\tsimnet = await initSimnet(manifestPath);\n\n\t\t\t\t// Get contract interfaces from Clarinet\n\t\t\t\tconst contractInterfaces = simnet.getContractsInterfaces();\n\t\t\t\tconst contracts = [];\n\t\t\t\tconst manifest = await readManifestInfo(manifestPath);\n\t\t\t\tconst includeRequirements = options.includeRequirements ?? true;\n\n\t\t\t\tfor (const [contractId, abi] of contractInterfaces) {\n\t\t\t\t\tconst { contractName } = parseContractId(contractId);\n\n\t\t\t\t\tconst kind = classifyContract(contractId, manifest);\n\n\t\t\t\t\t// Skip system/boot contracts, and requirements when opted out\n\t\t\t\t\tif (\n\t\t\t\t\t\tkind === \"system\" ||\n\t\t\t\t\t\t(kind === \"requirement\" && !includeRequirements)\n\t\t\t\t\t) {\n\t\t\t\t\t\tif (options.debug) {\n\t\t\t\t\t\t\tconsole.log(`🚫 Skipping ${kind} contract: ${contractId}`);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Apply user filters\n\t\t\t\t\tif (!matchesContractFilters(contractName, options)) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Sanitize the contract name for JavaScript export\n\t\t\t\t\tconst sanitizedName = sanitizeContractName(contractName);\n\n\t\t\t\t\t// Don't set source field to avoid conflict with file resolution\n\t\t\t\t\t// Instead, we'll track this in metadata during processing\n\t\t\t\t\tcontracts.push({\n\t\t\t\t\t\tname: sanitizedName,\n\t\t\t\t\t\taddress: contractId,\n\t\t\t\t\t\tabi: normalizeAbi(abi),\n\t\t\t\t\t\t// Remove source field - this was causing the path resolution issue\n\t\t\t\t\t\t_clarinetSource: true, // Internal flag for our plugin\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (options.debug) {\n\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t`🔍 Clarinet plugin found ${contracts.length} user-defined contracts`,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\t...config,\n\t\t\t\t\tcontracts: [...(config.contracts || []), ...contracts],\n\t\t\t\t};\n\t\t\t} catch (error) {\n\t\t\t\tconst err = error as Error;\n\t\t\t\tif (await hasClarinetProject(manifestPath)) {\n\t\t\t\t\t// Manifest exists but loading failed — always surface it\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t`⚠️ Clarinet plugin: found ${manifestPath} but failed to load contracts: ${err.message}`,\n\t\t\t\t\t);\n\t\t\t\t} else if (options.debug) {\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t`⚠️ Clarinet plugin: no manifest at ${manifestPath}, skipping`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn config;\n\t\t\t}\n\t\t},\n\n\t\tasync generate(context: GenerateContext): Promise<void> {\n\t\t\t// Filter contracts that came from Clarinet\n\t\t\tconst clarinetContracts = context.contracts.filter(\n\t\t\t\t(contract) => contract.metadata?.source === \"clarinet\",\n\t\t\t);\n\n\t\t\tif (clarinetContracts.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (options.debug) {\n\t\t\t\tcontext.logger.debug(\n\t\t\t\t\t`Generating interfaces for ${clarinetContracts.length} Clarinet contracts`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Generate the main contracts file using existing generator\n\t\t\tconst contractsCode = await generateContractInterface(clarinetContracts);\n\n\t\t\tcontext.addOutput(\"contracts\", {\n\t\t\t\tpath: context.config.out,\n\t\t\t\tcontent: contractsCode,\n\t\t\t\ttype: \"contracts\",\n\t\t\t});\n\n\t\t\t// Don't log success here - let the main command handle it\n\t\t},\n\t};\n};\n\n/**\n * Utility function to check if a Clarinet project exists\n */\nexport async function hasClarinetProject(\n\tpath = \"./Clarinet.toml\",\n): Promise<boolean> {\n\ttry {\n\t\tconst { promises: fs } = await import(\"node:fs\");\n\t\tawait fs.access(path);\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n",
|
|
13
13
|
"/**\n * Shared constants for @secondlayer/cli\n */\n\n/**\n * Stacks boot-contract address, used as the default sender for read-only\n * calls when the user hasn't configured one.\n */\nexport const DEFAULT_SENDER_ADDRESS = \"SP000000000000000000002Q6VF78\";\n",
|
|
14
14
|
"/**\n * Internal helpers shared across plugins (not part of the public plugin API)\n */\n\nexport interface ContractFilterOptions {\n\t/** Include only these contract names (exact match) */\n\tinclude?: string[];\n\n\t/** Exclude these contract names (exact match) */\n\texclude?: string[];\n}\n\n/**\n * Exact-match include/exclude filter used by the clarinet, actions, and\n * testing plugins to scope which contracts they process.\n */\nexport function matchesContractFilters(\n\tname: string,\n\toptions: ContractFilterOptions,\n): boolean {\n\tif (options.include && !options.include.includes(name)) {\n\t\treturn false;\n\t}\n\tif (options.exclude?.includes(name)) {\n\t\treturn false;\n\t}\n\treturn true;\n}\n",
|
|
15
|
-
"/**\n * Action generators for read and write helper functions\n */\n\nimport { type AbiFunction, toCamelCase } from \"@secondlayer/stacks/clarity\";\nimport type { ProcessedContract } from \"../../types/plugin\";\nimport { DEFAULT_SENDER_ADDRESS } from \"../../utils/constants\";\nimport {\n\tgenerateArgsSignature,\n\tgenerateClarityArgs,\n} from \"../../utils/generator-helpers\";\nimport type { ActionsPluginOptions } from \"./index\";\n\n/**\n * Apply includeFunctions/excludeFunctions filters (exact match)\n */\nfunction applyFunctionFilters(\n\tfunctions: AbiFunction[],\n\toptions: ActionsPluginOptions,\n): AbiFunction[] {\n\treturn functions.filter((func) => {\n\t\tif (\n\t\t\toptions.includeFunctions &&\n\t\t\t!options.includeFunctions.includes(func.name)\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t\tif (options.excludeFunctions?.includes(func.name)) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t});\n}\n\n/**\n * Generate read helper functions for a contract (fixed version)\n */\nfunction generateReadHelpers(\n\tcontract: ProcessedContract,\n\toptions: ActionsPluginOptions,\n): string {\n\tconst { abi } = contract;\n\tconst functions = abi.functions || [];\n\n\tconst readOnlyFunctions = functions.filter(\n\t\t(f: AbiFunction) => f.access === \"read-only\",\n\t);\n\n\tif (readOnlyFunctions.length === 0) {\n\t\treturn \"\";\n\t}\n\n\tconst filteredFunctions = applyFunctionFilters(readOnlyFunctions, options);\n\n\tif (filteredFunctions.length === 0) {\n\t\treturn \"\";\n\t}\n\n\tconst helpers = filteredFunctions.map((func: AbiFunction) => {\n\t\tconst methodName = toCamelCase(func.name);\n\t\tconst argsSignature = generateArgsSignature(func.args);\n\t\tconst clarityArgs = generateClarityArgs(func.args);\n\n\t\treturn `async ${methodName}(${argsSignature}options?: {\n network?: 'mainnet' | 'testnet' | 'devnet';\n senderAddress?: string;\n }) {\n return await fetchCallReadOnlyFunction({\n contractAddress: '${contract.address}',\n contractName: '${contract.contractName}',\n functionName: '${func.name}',\n functionArgs: [${clarityArgs}],\n network: options?.network ?? inferNetworkFromAddress('${contract.address}') ?? 'mainnet',\n senderAddress: options?.senderAddress || '${DEFAULT_SENDER_ADDRESS}'\n });\n }`;\n\t});\n\n\treturn `read: {\n ${helpers.join(\",\\n\\n \")}\n }`;\n}\n\n/**\n * Generate write helper functions for a contract (fixed version)\n */\nfunction generateWriteHelpers(\n\tcontract: ProcessedContract,\n\toptions: ActionsPluginOptions,\n): string {\n\tconst { abi } = contract;\n\tconst functions = abi.functions || [];\n\tconst envVarName = options.senderKeyEnv ?? \"STX_SENDER_KEY\";\n\n\tconst publicFunctions = functions.filter(\n\t\t(f: AbiFunction) => f.access === \"public\",\n\t);\n\n\tif (publicFunctions.length === 0) {\n\t\treturn \"\";\n\t}\n\n\tconst filteredFunctions = applyFunctionFilters(publicFunctions, options);\n\n\tif (filteredFunctions.length === 0) {\n\t\treturn \"\";\n\t}\n\n\tconst helpers = filteredFunctions.map((func: AbiFunction) => {\n\t\tconst methodName = toCamelCase(func.name);\n\t\tconst argsSignature = generateArgsSignature(func.args);\n\t\tconst clarityArgs = generateClarityArgs(func.args);\n\n\t\treturn `async ${methodName}(${argsSignature}senderKey?: string, options?: {\n network?: 'mainnet' | 'testnet' | 'devnet';\n fee?: string | number | undefined;\n nonce?: bigint;\n anchorMode?: 1 | 2 | 3; // AnchorMode: OnChainOnly = 1, OffChainOnly = 2, Any = 3\n postConditions?: PostCondition[];\n validateWithAbi?: boolean;\n }) {\n const resolvedSenderKey = senderKey ?? process.env.${envVarName};\n if (!resolvedSenderKey) {\n throw new Error('senderKey required: pass as argument or set ${envVarName} env var');\n }\n const { network = 'mainnet', ...txOptions } = options ?? {};\n\n return await makeContractCall({\n contractAddress: '${contract.address}',\n contractName: '${contract.contractName}',\n functionName: '${func.name}',\n functionArgs: [${clarityArgs}],\n senderKey: resolvedSenderKey,\n network,\n validateWithAbi: true,\n ...txOptions\n });\n }`;\n\t});\n\n\treturn `write: {\n ${helpers.join(\",\\n\\n \")}\n }`;\n}\n\n/**\n * Generate action helpers (read and write functions) for a contract\n */\nexport async function generateActionHelpers(\n\tcontract: ProcessedContract,\n\toptions: ActionsPluginOptions,\n): Promise<string> {\n\tconst readHelpers = generateReadHelpers(contract, options);\n\tconst writeHelpers = generateWriteHelpers(contract, options);\n\n\tif (!readHelpers && !writeHelpers) {\n\t\treturn \"\";\n\t}\n\n\tconst helpers = [readHelpers, writeHelpers].filter(Boolean);\n\treturn helpers.join(\",\\n\\n\");\n}\n",
|
|
16
|
-
"export {\n\tgenerateArgsSignature,\n\tgenerateClarityArgs,\n\tgenerateMapKeyConversion,\n} from \"@secondlayer/scaffold\";\n",
|
|
17
|
-
"/**\n * Actions Plugin for @secondlayer/cli\n * Generates read and write helper functions for direct blockchain interaction\n */\n\nimport type {\n\t// UserConfig,\n\tGenerateContext,\n\tPluginFactory,\n} from \"../../types/plugin\";\nimport { matchesContractFilters } from \"../shared\";\nimport { generateActionHelpers } from \"./generators\";\n\nexport interface ActionsPluginOptions {\n\t/** Include only specific contracts */\n\tinclude?: string[];\n\n\t/** Exclude specific contracts */\n\texclude?: string[];\n\n\t/** Include only specific functions */\n\tincludeFunctions?: string[];\n\n\t/** Exclude specific functions */\n\texcludeFunctions?: string[];\n\n\t/** Enable debug output */\n\tdebug?: boolean;\n\n\t/** Environment variable name for default sender key (default: \"STX_SENDER_KEY\") */\n\tsenderKeyEnv?: string;\n}\n\n/**\n * Actions plugin factory\n */\nexport const actions: PluginFactory<ActionsPluginOptions> = (options = {}) => {\n\treturn {\n\t\tname: \"@secondlayer/cli/plugin-actions\",\n\t\tversion: \"1.0.0\",\n\n\t\tasync generate(context: GenerateContext): Promise<void> {\n\t\t\tconst { contracts } = context;\n\n\t\t\t// Filter contracts based on options\n\t\t\tconst filteredContracts = contracts.filter((contract) =>\n\t\t\t\tmatchesContractFilters(contract.name, options),\n\t\t\t);\n\n\t\t\tif (filteredContracts.length === 0) {\n\t\t\t\tif (options.debug) {\n\t\t\t\t\tcontext.logger.debug(\"Actions plugin: No contracts to process\");\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (options.debug) {\n\t\t\t\tcontext.logger.debug(\n\t\t\t\t\t`Actions plugin: Generating read/write helpers for ${filteredContracts.length} contracts`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Collect all helpers for all contracts\n\t\t\tconst contractHelpers = new Map<string, string>();\n\n\t\t\tfor (const contract of filteredContracts) {\n\t\t\t\tconst actionsCode = await generateActionHelpers(contract, options);\n\t\t\t\tif (actionsCode) {\n\t\t\t\t\tcontractHelpers.set(contract.name, actionsCode);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Inject all helpers into the output\n\t\t\tif (contractHelpers.size > 0) {\n\t\t\t\tconst existingOutput = context.outputs.get(\"contracts\");\n\t\t\t\tif (existingOutput) {\n\t\t\t\t\tlet modifiedContent = addRequiredImports(existingOutput.content);\n\n\t\t\t\t\t// Inject helpers for each contract\n\t\t\t\t\tfor (const [contractName, helpersCode] of contractHelpers) {\n\t\t\t\t\t\tmodifiedContent = injectHelpersIntoContract(\n\t\t\t\t\t\t\tmodifiedContent,\n\t\t\t\t\t\t\tcontractName,\n\t\t\t\t\t\t\thelpersCode,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tcontext.outputs.set(\"contracts\", {\n\t\t\t\t\t\t...existingOutput,\n\t\t\t\t\t\tcontent: modifiedContent,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t};\n};\n\n/**\n * Add required imports for fetchCallReadOnlyFunction, makeContractCall, and PostCondition\n */\nfunction addRequiredImports(content: string): string {\n\t// Find the existing @secondlayer/stacks import line\n\tconst stacksImportRegex =\n\t\t/import\\s+\\{([^}]+)\\}\\s+from\\s+['\"]@secondlayer\\/stacks['\"];/;\n\tconst match = content.match(stacksImportRegex);\n\n\tif (match) {\n\t\tlet updatedContent = content;\n\n\t\t// Add fetchCallReadOnlyFunction and makeContractCall from @secondlayer/stacks/clarity\n\t\tif (!updatedContent.includes(\"fetchCallReadOnlyFunction\")) {\n\t\t\tupdatedContent = updatedContent.replace(\n\t\t\t\tstacksImportRegex,\n\t\t\t\t`${match[0]}\\nimport { fetchCallReadOnlyFunction, makeContractCall } from '@secondlayer/stacks/clarity';`,\n\t\t\t);\n\t\t}\n\n\t\t// Add type import for PostCondition if not present\n\t\tif (!updatedContent.includes(\"type PostCondition\")) {\n\t\t\tupdatedContent = updatedContent.replace(\n\t\t\t\tstacksImportRegex,\n\t\t\t\t`${match[0]}\\nimport type { PostCondition } from '@secondlayer/stacks';`,\n\t\t\t);\n\t\t}\n\n\t\treturn updatedContent;\n\t}\n\n\treturn content;\n}\n\n/**\n * Inject read/write helpers into a specific contract object in the output\n */\nfunction injectHelpersIntoContract(\n\tcontent: string,\n\tcontractName: string,\n\thelpersCode: string,\n): string {\n\t// Use a more precise regex to find the entire contract object\n\tconst contractPattern = new RegExp(\n\t\t`(export const ${contractName} = \\\\{[\\\\s\\\\S]*?)\\\\n\\\\} as const;`,\n\t\t\"g\",\n\t);\n\n\treturn content.replace(contractPattern, (_, contractBody) => {\n\t\t// Remove any trailing comma and whitespace from the contract body\n\t\tconst cleanBody = contractBody.replace(/,\\s*$/, \"\");\n\n\t\t// Add proper indentation to lines that start top-level properties\n\t\tconst indentedHelpersCode = helpersCode\n\t\t\t.split(\"\\n\")\n\t\t\t.map((line) => {\n\t\t\t\t// Only add indentation to lines that start with a property name (like \"write:\")\n\t\t\t\tif (line.match(/^[a-zA-Z_$][a-zA-Z0-9_$]*\\s*:/)) {\n\t\t\t\t\treturn ` ${line}`;\n\t\t\t\t}\n\t\t\t\treturn line;\n\t\t\t})\n\t\t\t.join(\"\\n\");\n\n\t\t// Add the helpers with proper formatting\n\t\treturn `${cleanBody},\n\n${indentedHelpersCode}\n} as const;`;\n\t});\n}\n",
|
|
18
15
|
"/**\n * Contract-specific hooks generator for React plugin\n */\n\nimport type { AbiFunction } from \"@secondlayer/stacks/clarity\";\nimport type { AbiMap, AbiVariable } from \"@secondlayer/stacks/clarity\";\nimport type { ProcessedContract } from \"../../../types/plugin\";\nimport { DEFAULT_SENDER_ADDRESS } from \"../../../utils/constants\";\nimport { formatCode } from \"../../../utils/format\";\nimport {\n\tcapitalize,\n\tclarityTypeToTS,\n\tgenerateArgNames,\n\tgenerateArgsType,\n\tgenerateEnabledCondition,\n\tgenerateHookArgsSignature,\n\tgenerateObjectArgs,\n\ttoCamelCase,\n} from \"./utils\";\n\nexport async function generateContractHooks(\n\tcontracts: ProcessedContract[],\n\texcludeList: string[] = [],\n): Promise<string> {\n\tconst imports = `import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'\nimport { useCallback } from 'react'\nimport { useSecondLayerConfig } from './provider'\nimport { request } from '@secondlayer/stacks/connect'\nimport type { PostCondition } from '@secondlayer/stacks'\nimport { ${contracts.map((c) => c.name).join(\", \")} } from './contracts'`;\n\n\tconst header = `/**\n * Generated contract-specific React hooks\n * DO NOT EDIT MANUALLY\n */`;\n\n\tconst hooksCode = contracts\n\t\t.map((contract) => generateContractHookMethods(contract, excludeList))\n\t\t.filter(Boolean)\n\t\t.join(\"\\n\\n\");\n\n\tconst code = `${imports}\\n\\n${header}\\n\\n${hooksCode}`;\n\n\treturn formatCode(code);\n}\n\nfunction generateContractHookMethods(\n\tcontract: ProcessedContract,\n\texcludeList: string[],\n): string {\n\tconst { abi, name, address, contractName } = contract;\n\tconst functions = abi.functions || [];\n\tconst maps = abi.maps || [];\n\tconst variables = abi.variables || [];\n\n\tconst readOnlyFunctions = functions.filter(\n\t\t(f: AbiFunction) => f.access === \"read-only\",\n\t);\n\tconst publicFunctions = functions.filter(\n\t\t(f: AbiFunction) => f.access === \"public\",\n\t);\n\n\tconst readHooks = readOnlyFunctions\n\t\t.map((func: AbiFunction) => {\n\t\t\tconst hookName = `use${capitalize(name)}${capitalize(toCamelCase(func.name))}`;\n\t\t\t// Check if this specific hook is excluded\n\t\t\tif (excludeList.includes(hookName)) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn generateReadHook(func, name);\n\t\t})\n\t\t.filter(Boolean);\n\n\tconst writeHooks = publicFunctions\n\t\t.map((func: AbiFunction) => {\n\t\t\tconst hookName = `use${capitalize(name)}${capitalize(toCamelCase(func.name))}`;\n\t\t\t// Check if this specific hook is excluded\n\t\t\tif (excludeList.includes(hookName)) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn generateWriteHook(func, name);\n\t\t})\n\t\t.filter(Boolean);\n\n\t// Generate hooks for maps\n\tconst mapHooks = maps\n\t\t.map((map: AbiMap) => {\n\t\t\tconst hookName = `use${capitalize(name)}${capitalize(toCamelCase(map.name))}`;\n\t\t\tif (excludeList.includes(hookName)) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn generateMapHook(map, name, address, contractName);\n\t\t})\n\t\t.filter(Boolean);\n\n\t// Generate hooks for data variables\n\tconst dataVars = variables.filter(\n\t\t(v: AbiVariable) => v.access === \"variable\",\n\t);\n\tconst varHooks = dataVars\n\t\t.map((variable: AbiVariable) => {\n\t\t\tconst hookName = `use${capitalize(name)}${capitalize(toCamelCase(variable.name))}`;\n\t\t\tif (excludeList.includes(hookName)) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn generateVarHook(variable, name, address, contractName);\n\t\t})\n\t\t.filter(Boolean);\n\n\t// Generate hooks for constants\n\tconst constants = variables.filter(\n\t\t(v: AbiVariable) => v.access === \"constant\",\n\t);\n\tconst constantHooks = constants\n\t\t.map((constant: AbiVariable) => {\n\t\t\tconst hookName = `use${capitalize(name)}${capitalize(toCamelCase(constant.name))}`;\n\t\t\tif (excludeList.includes(hookName)) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn generateConstantHook(constant, name, address, contractName);\n\t\t})\n\t\t.filter(Boolean);\n\n\tconst allHooks = [\n\t\t...readHooks,\n\t\t...writeHooks,\n\t\t...mapHooks,\n\t\t...varHooks,\n\t\t...constantHooks,\n\t];\n\n\t// If all hooks for this contract are excluded, return empty string\n\tif (allHooks.length === 0) {\n\t\treturn \"\";\n\t}\n\n\treturn allHooks.join(\"\\n\\n\");\n}\n\nfunction generateReadHook(func: AbiFunction, contractName: string): string {\n\tconst hookName = `use${capitalize(contractName)}${capitalize(toCamelCase(func.name))}`;\n\tconst argsSignature = generateHookArgsSignature(func.args);\n\tconst enabledParam =\n\t\tfunc.args.length > 0\n\t\t\t? \", options?: { enabled?: boolean }\"\n\t\t\t: \"options?: { enabled?: boolean }\";\n\n\t// Generate proper return type from function outputs\n\tconst returnType = clarityTypeToTS(func.outputs);\n\n\treturn `export function ${hookName}(${argsSignature}${enabledParam}) {\n const config = useSecondLayerConfig()\n\n return useQuery<${returnType}>({\n queryKey: ['${func.name}', ${contractName}.address, ${generateArgNames(func.args)}],\n queryFn: () => ${contractName}.read.${toCamelCase(func.name)}(${generateArgNames(func.args) ? `{ ${generateObjectArgs(func.args)} }, ` : \"\"}{\n network: config.network,\n senderAddress: config.senderAddress || '${DEFAULT_SENDER_ADDRESS}'\n }),\n ${func.args.length > 0 ? `enabled: ${generateEnabledCondition(func.args)} && (options?.enabled ?? true),` : \"\"}\n ...options\n })\n}`;\n}\n\nfunction generateWriteHook(func: AbiFunction, contractName: string): string {\n\tconst hookName = `use${capitalize(contractName)}${capitalize(toCamelCase(func.name))}`;\n\tconst argsType = generateArgsType(func.args);\n\n\treturn `export function ${hookName}() {\n const config = useSecondLayerConfig()\n const queryClient = useQueryClient()\n \n const mutation = useMutation({\n mutationFn: async (params: {\n args: ${argsType};\n options?: {\n postConditions?: PostCondition[];\n attachment?: string;\n onFinish?: (data: any) => void;\n onCancel?: () => void;\n };\n }) => {\n const { args, options = {} } = params\n const contractCallData = ${contractName}.${toCamelCase(func.name)}(args)\n const { contractAddress, contractName: name, functionName, functionArgs } = contractCallData\n const network = config.network || 'mainnet'\n const contract = \\`\\${contractAddress}.\\${name}\\`\n\n const result = await request('stx_callContract', {\n contract,\n functionName,\n functionArgs,\n network,\n ...options\n })\n\n options.onFinish?.(result)\n return result\n },\n onSuccess: () => {\n // Invalidate relevant queries on success\n queryClient.invalidateQueries({ queryKey: ['stacks-account'] })\n },\n onError: (error) => {\n console.error('Contract call failed:', error)\n }\n })\n\n const ${toCamelCase(func.name)} = useCallback(async (\n args: ${argsType},\n options?: {\n postConditions?: PostCondition[];\n attachment?: string;\n onFinish?: (data: any) => void;\n onCancel?: () => void;\n }\n ) => {\n return mutation.mutateAsync({ args, options })\n }, [mutation])\n\n return {\n ${toCamelCase(func.name)},\n // Expose mutation state\n isPending: mutation.isPending,\n isError: mutation.isError,\n isSuccess: mutation.isSuccess,\n error: mutation.error,\n data: mutation.data,\n reset: mutation.reset\n }\n}`;\n}\n\n/**\n * Generate a hook for reading a map entry\n */\nfunction generateMapHook(\n\tmap: AbiMap,\n\tcontractVarName: string,\n\t_address: string,\n\t_contractName: string,\n): string {\n\tconst hookName = `use${capitalize(contractVarName)}${capitalize(toCamelCase(map.name))}`;\n\tconst keyType = clarityTypeToTS(map.key);\n\tconst valueType = clarityTypeToTS(map.value);\n\n\treturn `export function ${hookName}(key: ${keyType}, options?: { enabled?: boolean }) {\n const config = useSecondLayerConfig()\n\n return useQuery<${valueType} | null>({\n queryKey: ['${contractVarName}', '${map.name}', 'map', key, config.network],\n queryFn: async () => {\n return ${contractVarName}.maps.${toCamelCase(map.name)}.get(key, { network: config.network })\n },\n enabled: options?.enabled ?? true\n })\n}`;\n}\n\n/**\n * Generate a hook for reading a data variable\n */\nfunction generateVarHook(\n\tvariable: AbiVariable,\n\tcontractVarName: string,\n\t_address: string,\n\t_contractName: string,\n): string {\n\tconst hookName = `use${capitalize(contractVarName)}${capitalize(toCamelCase(variable.name))}`;\n\tconst valueType = clarityTypeToTS(variable.type);\n\n\treturn `export function ${hookName}(options?: { enabled?: boolean }) {\n const config = useSecondLayerConfig()\n\n return useQuery<${valueType}>({\n queryKey: ['${contractVarName}', '${variable.name}', 'var', config.network],\n queryFn: async () => {\n return ${contractVarName}.vars.${toCamelCase(variable.name)}.get({ network: config.network })\n },\n enabled: options?.enabled ?? true\n })\n}`;\n}\n\n/**\n * Generate a hook for reading a constant\n */\nfunction generateConstantHook(\n\tconstant: AbiVariable,\n\tcontractVarName: string,\n\t_address: string,\n\t_contractName: string,\n): string {\n\tconst hookName = `use${capitalize(contractVarName)}${capitalize(toCamelCase(constant.name))}`;\n\tconst valueType = clarityTypeToTS(constant.type);\n\n\treturn `export function ${hookName}(options?: { enabled?: boolean }) {\n const config = useSecondLayerConfig()\n\n return useQuery<${valueType}>({\n queryKey: ['${contractVarName}', '${constant.name}', 'constant', config.network],\n queryFn: async () => {\n return ${contractVarName}.constants.${toCamelCase(constant.name)}.get({ network: config.network })\n },\n enabled: options?.enabled ?? true,\n staleTime: Infinity // Constants never change\n })\n}`;\n}\n",
|
|
19
16
|
"import { toCamelCase } from \"@secondlayer/stacks/clarity\";\n\nexport { toCamelCase };\n\nexport function capitalize(str: string): string {\n\treturn str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nexport function toPascalCase(str: string): string {\n\treturn capitalize(toCamelCase(str));\n}\n",
|
|
20
17
|
"export {\n\tclarityTypeToTS,\n\tgenerateArgsTypeSignature,\n\tgetTypeForArg,\n} from \"@secondlayer/scaffold\";\n",
|
|
@@ -24,9 +21,10 @@
|
|
|
24
21
|
"/**\n * Provider generator for React plugin\n */\n\nimport { DEFAULT_SENDER_ADDRESS } from \"../../../utils/constants\";\nimport { formatCode } from \"../../../utils/format\";\n\n/**\n * Generate the provider file content for user projects\n */\nexport async function generateProvider(): Promise<string> {\n\tconst code = `/**\n * Generated SecondLayer React Provider\n * DO NOT EDIT MANUALLY\n */\n\nimport React, { createContext, useContext } from 'react'\n\n/**\n * SecondLayer configuration interface\n */\nexport interface SecondLayerReactConfig {\n /**\n * Network to use for API calls\n */\n network: 'mainnet' | 'testnet' | 'devnet'\n\n /**\n * API key for Stacks API (optional)\n */\n apiKey?: string\n\n /**\n * Base URL for Stacks API (optional override)\n */\n apiUrl?: string\n\n /**\n * Default sender address for read-only calls\n */\n senderAddress?: string\n}\n\n/**\n * Provider component props\n */\nexport interface SecondLayerProviderProps {\n children: React.ReactNode\n config: SecondLayerReactConfig\n}\n\n/**\n * React context for SecondLayer configuration\n */\nconst SecondLayerContext = createContext<SecondLayerReactConfig | undefined>(undefined)\nSecondLayerContext.displayName = 'SecondLayerContext'\n\n/**\n * Create a SecondLayer React configuration with defaults\n */\nexport function createSecondLayerConfig(config: SecondLayerReactConfig): SecondLayerReactConfig {\n return {\n network: config.network,\n apiKey: config.apiKey,\n apiUrl: config.apiUrl,\n senderAddress: config.senderAddress || '${DEFAULT_SENDER_ADDRESS}'\n }\n}\n\n/**\n * Provider component that makes SecondLayer configuration available to hooks\n */\nexport function SecondLayerProvider({ children, config }: SecondLayerProviderProps) {\n const resolvedConfig = createSecondLayerConfig(config)\n\n return (\n <SecondLayerContext.Provider value={resolvedConfig}>\n {children}\n </SecondLayerContext.Provider>\n )\n}\n\n/**\n * Hook to access the SecondLayer configuration\n */\nexport function useSecondLayerConfig(): SecondLayerReactConfig {\n const context = useContext(SecondLayerContext)\n\n if (context === undefined) {\n throw new Error(\n 'useSecondLayerConfig must be used within a SecondLayerProvider. ' +\n 'Make sure to wrap your app with <SecondLayerProvider config={{...}}>'\n )\n }\n\n return context\n}`;\n\n\treturn formatCode(code);\n}\n",
|
|
25
22
|
"/**\n * React Plugin for @secondlayer/cli\n * Generates React hooks for contract interfaces and generic Stacks functionality\n */\n\nimport type { GenerateContext, PluginFactory } from \"../../types/plugin\";\nimport { generateContractHooks } from \"./generators/contract\";\nimport { generateGenericHooks } from \"./generators/generic\";\nimport { generateProvider } from \"./provider/index\";\nimport type { ReactPluginOptions } from \"./types\";\n\n/**\n * React plugin factory\n */\nexport const react: PluginFactory<ReactPluginOptions> = (options = {}) => {\n\tconst excludeList = options.exclude || [];\n\n\treturn {\n\t\tname: \"@secondlayer/cli/plugin-react\",\n\t\tversion: \"1.0.0\",\n\n\t\tasync generate(context: GenerateContext): Promise<void> {\n\t\t\tif (options.debug) {\n\t\t\t\tcontext.logger.debug(\n\t\t\t\t\t`React plugin generating hooks (excluding: ${excludeList.join(\", \") || \"none\"})`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Generate provider (always generated)\n\t\t\tconst provider = await generateProvider();\n\t\t\tcontext.addOutput(\"provider\", {\n\t\t\t\tpath: \"./src/generated/provider.tsx\",\n\t\t\t\tcontent: provider,\n\t\t\t\ttype: \"config\",\n\t\t\t});\n\n\t\t\t// Generate generic hooks (all by default, minus excludes)\n\t\t\tconst genericHooks = await generateGenericHooks(excludeList);\n\t\t\tcontext.addOutput(\"generic-hooks\", {\n\t\t\t\tpath: \"./src/generated/hooks.ts\",\n\t\t\t\tcontent: genericHooks,\n\t\t\t\ttype: \"hooks\",\n\t\t\t});\n\n\t\t\t// Generate contract hooks (all contracts, minus excludes)\n\t\t\tif (context.contracts.length > 0) {\n\t\t\t\tconst contractHooks = await generateContractHooks(\n\t\t\t\t\tcontext.contracts,\n\t\t\t\t\texcludeList,\n\t\t\t\t);\n\n\t\t\t\t// Only add output if there are hooks to generate\n\t\t\t\tif (contractHooks.trim()) {\n\t\t\t\t\tcontext.addOutput(\"contract-hooks\", {\n\t\t\t\t\t\tpath: \"./src/generated/contract-hooks.ts\",\n\t\t\t\t\t\tcontent: contractHooks,\n\t\t\t\t\t\ttype: \"hooks\",\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (options.debug) {\n\t\t\t\tcontext.logger.success(\n\t\t\t\t\t`React plugin generated ${context.contracts.length} contract hook sets`,\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t};\n};\n\n// Re-export types for convenience\nexport type { ReactPluginOptions } from \"./types\";\n",
|
|
26
23
|
"/**\n * Code generators for the testing plugin\n * Generates type-safe helpers for Clarinet SDK unit tests\n */\n\nimport {\n\ttype AbiFunction,\n\ttype AbiMap,\n\ttype AbiType,\n\ttype AbiVariable,\n\tisAbiTuple,\n} from \"@secondlayer/stacks/clarity\";\nimport type { ProcessedContract } from \"../../types/plugin\";\nimport { toCamelCase, toPascalCase } from \"../../utils/case-conversion\";\nimport {\n\tgenerateArgsSignature,\n\tgenerateClarityArgs,\n\tgenerateMapKeyConversion,\n} from \"../../utils/generator-helpers\";\nimport { getTypeForArg } from \"../../utils/type-mapping\";\nimport type { TestingPluginOptions } from \"./index\";\n\n/**\n * Generate a public function helper\n */\nfunction generatePublicFunction(func: AbiFunction, contractId: string): string {\n\tconst methodName = toCamelCase(func.name);\n\tconst argsSignature = generateArgsSignature(func.args);\n\tconst clarityArgs = generateClarityArgs(func.args);\n\n\treturn `${methodName}: (${argsSignature}caller: string) => {\n const callerAddr = accounts.get(caller) ?? caller;\n return simnet.callPublicFn(\n '${contractId}',\n '${func.name}',\n [${clarityArgs}],\n callerAddr\n );\n }`;\n}\n\n/**\n * Generate a read-only function helper\n */\nfunction generateReadOnlyFunction(\n\tfunc: AbiFunction,\n\tcontractId: string,\n): string {\n\tconst methodName = toCamelCase(func.name);\n\tconst argsSignature = generateArgsSignature(func.args);\n\tconst clarityArgs = generateClarityArgs(func.args);\n\n\t// Read-only functions don't need a caller, use deployer as default\n\tconst hasArgs = func.args.length > 0;\n\tconst argsParam = hasArgs ? argsSignature : \"\";\n\n\treturn `${methodName}: (${argsParam}) => {\n return simnet.callReadOnlyFn(\n '${contractId}',\n '${func.name}',\n [${clarityArgs}],\n accounts.get('deployer')!\n );\n }`;\n}\n\n/**\n * Generate a private function helper (for testing only)\n */\nfunction generatePrivateFunction(\n\tfunc: AbiFunction,\n\tcontractId: string,\n): string {\n\tconst methodName = toCamelCase(func.name);\n\tconst argsSignature = generateArgsSignature(func.args);\n\tconst clarityArgs = generateClarityArgs(func.args);\n\n\treturn `${methodName}: (${argsSignature}caller: string) => {\n const callerAddr = accounts.get(caller) ?? caller;\n return simnet.callPrivateFn(\n '${contractId}',\n '${func.name}',\n [${clarityArgs}],\n callerAddr\n );\n }`;\n}\n\n/**\n * Generate a data variable accessor helper\n */\nfunction generateDataVarHelper(\n\tvariable: AbiVariable,\n\tcontractId: string,\n): string {\n\tconst methodName = toCamelCase(variable.name);\n\n\treturn `${methodName}: () => {\n return simnet.getDataVar('${contractId}', '${variable.name}');\n }`;\n}\n\n/**\n * Generate TypeScript type for map key based on its structure\n */\nfunction getMapKeyType(keyType: AbiType): string {\n\t// Map keys are typically tuples\n\tif (isAbiTuple(keyType)) {\n\t\tconst fields = keyType.tuple\n\t\t\t.map(\n\t\t\t\t(field: { name: string; type: AbiType }) =>\n\t\t\t\t\t`${toCamelCase(field.name)}: ${getTypeForArg({ type: field.type })}`,\n\t\t\t)\n\t\t\t.join(\"; \");\n\t\treturn `{ ${fields} }`;\n\t}\n\n\t// Single-value keys (less common but possible)\n\treturn getTypeForArg({ type: keyType });\n}\n\n/**\n * Generate a map entry accessor helper\n */\nfunction generateMapEntryHelper(map: AbiMap, contractId: string): string {\n\tconst methodName = toCamelCase(map.name);\n\tconst keyType = getMapKeyType(map.key);\n\tconst keyConversion = generateMapKeyConversion(map.key);\n\n\treturn `${methodName}: (key: ${keyType}) => {\n return simnet.getMapEntry(\n '${contractId}',\n '${map.name}',\n ${keyConversion}\n );\n }`;\n}\n\n/**\n * Generate the vars object containing all data variable accessors\n */\nfunction generateVarsObject(\n\tvariables: readonly AbiVariable[],\n\tcontractId: string,\n): string {\n\t// Filter to only include mutable variables (not constants)\n\tconst dataVars = variables.filter((v) => v.access === \"variable\");\n\n\tif (dataVars.length === 0) {\n\t\treturn \"\";\n\t}\n\n\tconst varHelpers = dataVars.map((v) => generateDataVarHelper(v, contractId));\n\n\treturn `vars: {\n ${varHelpers.join(\",\\n\\n \")}\n }`;\n}\n\n/**\n * Generate the maps object containing all map entry accessors\n */\nfunction generateMapsObject(\n\tmaps: readonly AbiMap[],\n\tcontractId: string,\n): string {\n\tif (maps.length === 0) {\n\t\treturn \"\";\n\t}\n\n\tconst mapHelpers = maps.map((m) => generateMapEntryHelper(m, contractId));\n\n\treturn `maps: {\n ${mapHelpers.join(\",\\n\\n \")}\n }`;\n}\n\n/**\n * Generate a contract helper factory function\n */\nfunction generateContractHelper(\n\tcontract: ProcessedContract,\n\toptions: TestingPluginOptions,\n): string {\n\tconst { abi, name, address } = contract;\n\tconst functions = abi.functions || [];\n\tconst variables = abi.variables || [];\n\tconst maps = abi.maps || [];\n\tconst pascalName = toPascalCase(name);\n\n\t// Filter functions by access type\n\tconst publicFns = functions.filter((f: AbiFunction) => f.access === \"public\");\n\tconst readOnlyFns = functions.filter(\n\t\t(f: AbiFunction) => f.access === \"read-only\",\n\t);\n\tconst privateFns = options.includePrivate\n\t\t? functions.filter((f: AbiFunction) => f.access === \"private\")\n\t\t: [];\n\n\t// Generate function helpers\n\tconst publicHelpers = publicFns.map((f: AbiFunction) =>\n\t\tgeneratePublicFunction(f, address),\n\t);\n\tconst readOnlyHelpers = readOnlyFns.map((f: AbiFunction) =>\n\t\tgenerateReadOnlyFunction(f, address),\n\t);\n\tconst privateHelpers = privateFns.map((f: AbiFunction) =>\n\t\tgeneratePrivateFunction(f, address),\n\t);\n\n\t// Generate data variable and map accessors\n\tconst varsObject = generateVarsObject(variables, address);\n\tconst mapsObject = generateMapsObject(maps, address);\n\n\tconst allHelpers = [...publicHelpers, ...readOnlyHelpers, ...privateHelpers];\n\n\t// Include vars and maps objects if they have content\n\tif (varsObject) {\n\t\tallHelpers.push(varsObject);\n\t}\n\tif (mapsObject) {\n\t\tallHelpers.push(mapsObject);\n\t}\n\n\tif (allHelpers.length === 0) {\n\t\treturn \"\";\n\t}\n\n\treturn `export function get${pascalName}(simnet: Simnet) {\n const accounts = simnet.getAccounts();\n\n return {\n ${allHelpers.join(\",\\n\\n \")}\n };\n}`;\n}\n\n/**\n * Generate the getContracts convenience wrapper\n */\nfunction generateGetContracts(contracts: ProcessedContract[]): string {\n\tconst contractEntries = contracts\n\t\t.map((contract) => {\n\t\t\tconst camelName = toCamelCase(contract.name);\n\t\t\tconst pascalName = toPascalCase(contract.name);\n\t\t\treturn `${camelName}: get${pascalName}(simnet)`;\n\t\t})\n\t\t.join(\",\\n \");\n\n\treturn `export function getContracts(simnet: Simnet) {\n const accounts = simnet.getAccounts();\n\n return {\n accounts,\n ${contractEntries}\n };\n}`;\n}\n\n/**\n * Generate type exports for consumer convenience\n */\nfunction generateTypeExports(contracts: ProcessedContract[]): string {\n\tconst typeExports = contracts\n\t\t.map((contract) => {\n\t\t\tconst pascalName = toPascalCase(contract.name);\n\t\t\treturn `export type ${pascalName}Helpers = ReturnType<typeof get${pascalName}>;`;\n\t\t})\n\t\t.join(\"\\n\");\n\n\treturn `${typeExports}\nexport type Contracts = ReturnType<typeof getContracts>;`;\n}\n\n/**\n * Main entry point - generates the full testing helpers file\n */\nexport async function generateTestingHelpers(\n\tcontracts: ProcessedContract[],\n\toptions: TestingPluginOptions,\n): Promise<string> {\n\tconst contractHelpers = contracts\n\t\t.map((contract) => generateContractHelper(contract, options))\n\t\t.filter(Boolean);\n\n\tif (contractHelpers.length === 0) {\n\t\treturn `// No contracts with functions to generate helpers for\nexport {};`;\n\t}\n\n\tconst getContractsCode = generateGetContracts(contracts);\n\tconst typeExports = generateTypeExports(contracts);\n\n\treturn `/**\n * Generated by @secondlayer/cli testing plugin\n * Type-safe helpers for Clarinet SDK unit tests\n */\n\nimport { type Simnet, Cl } from '@hirosystems/clarinet-sdk';\n\n// ============================================\n// Per-contract factory functions\n// ============================================\n\n${contractHelpers.join(\"\\n\\n\")}\n\n// ============================================\n// Convenience: all contracts at once\n// ============================================\n\n${getContractsCode}\n\n// ============================================\n// Type exports\n// ============================================\n\n${typeExports}\n`;\n}\n",
|
|
24
|
+
"export {\n\tgenerateArgsSignature,\n\tgenerateClarityArgs,\n\tgenerateMapKeyConversion,\n} from \"@secondlayer/scaffold\";\n",
|
|
27
25
|
"/**\n * Testing plugin for @secondlayer/cli\n * Generates type-safe helpers for Clarinet SDK unit tests\n */\n\nimport type { GenerateContext, PluginFactory } from \"../../types/plugin\";\nimport { matchesContractFilters } from \"../shared\";\nimport { generateTestingHelpers } from \"./generators\";\n\nexport interface TestingPluginOptions {\n\t/** Include only specific contracts */\n\tinclude?: string[];\n\n\t/** Exclude specific contracts */\n\texclude?: string[];\n\n\t/** Output path for generated testing helpers (default: ./src/generated/testing.ts) */\n\tout?: string;\n\n\t/** Include private function helpers (default: false) */\n\tincludePrivate?: boolean;\n\n\t/** Enable debug output */\n\tdebug?: boolean;\n}\n\nexport const testing: PluginFactory<TestingPluginOptions> = (options = {}) => {\n\treturn {\n\t\tname: \"@secondlayer/cli/plugin-testing\",\n\t\tversion: \"1.0.0\",\n\n\t\tasync generate(context: GenerateContext): Promise<void> {\n\t\t\tconst { contracts } = context;\n\n\t\t\t// Filter contracts based on options\n\t\t\tconst filteredContracts = contracts.filter((contract) =>\n\t\t\t\tmatchesContractFilters(contract.name, options),\n\t\t\t);\n\n\t\t\tif (filteredContracts.length === 0) {\n\t\t\t\tif (options.debug) {\n\t\t\t\t\tcontext.logger.debug(\"Testing plugin: No contracts to process\");\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (options.debug) {\n\t\t\t\tcontext.logger.debug(\n\t\t\t\t\t`Testing plugin: Generating helpers for ${filteredContracts.length} contracts`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Generate testing helpers\n\t\t\tconst testingCode = await generateTestingHelpers(\n\t\t\t\tfilteredContracts,\n\t\t\t\toptions,\n\t\t\t);\n\n\t\t\tconst outputPath = options.out || \"./src/generated/testing.ts\";\n\n\t\t\tcontext.addOutput(\"testing\", {\n\t\t\t\tpath: outputPath,\n\t\t\t\tcontent: testingCode,\n\t\t\t\ttype: \"utils\",\n\t\t\t});\n\n\t\t\tif (options.debug) {\n\t\t\t\tcontext.logger.debug(\n\t\t\t\t\t`Testing plugin: Generated helpers for ${filteredContracts.length} contracts`,\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t};\n};\n"
|
|
28
26
|
],
|
|
29
|
-
"mappings": "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",
|
|
30
|
-
"debugId": "
|
|
27
|
+
"mappings": "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",
|
|
28
|
+
"debugId": "E6E6E78DF371674C64756E2164756E21",
|
|
31
29
|
"names": []
|
|
32
30
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@secondlayer/cli",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "9.0.0",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git+https://github.com/ryanwaits/secondlayer.git",
|
|
@@ -49,11 +49,11 @@
|
|
|
49
49
|
"dependencies": {
|
|
50
50
|
"@inquirer/prompts": "^8.2.0",
|
|
51
51
|
"@secondlayer/bundler": "^0.4.0",
|
|
52
|
-
"@secondlayer/scaffold": "^1.
|
|
52
|
+
"@secondlayer/scaffold": "^1.4.0",
|
|
53
53
|
"@secondlayer/sdk": "^6.23.1",
|
|
54
|
-
"@secondlayer/shared": "^6.41.
|
|
55
|
-
"@secondlayer/stacks": "^2.
|
|
56
|
-
"@secondlayer/subgraphs": "^3.19.
|
|
54
|
+
"@secondlayer/shared": "^6.41.3",
|
|
55
|
+
"@secondlayer/stacks": "^2.11.0",
|
|
56
|
+
"@secondlayer/subgraphs": "^3.19.6",
|
|
57
57
|
"@biomejs/js-api": "^0.7.0",
|
|
58
58
|
"@biomejs/wasm-nodejs": "^1.9.0",
|
|
59
59
|
"esbuild": "^0.19.0",
|