diff --git a/CLAUDE.md b/CLAUDE.md index be0a76e..df3601b 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -60,7 +60,7 @@ program/src/event_engine.rs (self-CPI event emission) ``` Rust code with #[codama(...)] attributes ↓ -program/build.rs → program/idl/subscriptions.json +program/build.rs → idl/subscriptions.json ↓ scripts/generate-clients.ts ↓ diff --git a/README.md b/README.md index 1100b3f..f039f9e 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ subscriptions/ │ │ ├── errors.rs # Error codes │ │ ├── constants.rs # Program constants │ │ └── tests/ # Rust unit tests (LiteSVM) -│ └── idl/ # Generated IDL (subscriptions.json) +├── idl/ # Generated IDL (subscriptions.json) ├── clients/ │ ├── typescript/ # TypeScript SDK + integration tests │ └── rust/ # Rust generated client @@ -152,7 +152,7 @@ The `justfile` is the main entrypoint for day-to-day development. |---|---| | `just build` | Build program + generate IDL + generate clients + build TypeScript client | | `just build-program` | Compile the SBF program (`.so`) | -| `just generate-idl` | Regenerate `program/idl/subscriptions.json` | +| `just generate-idl` | Regenerate `idl/subscriptions.json` | | `just generate-clients` | Regenerate TypeScript and Rust clients from IDL via Codama | | `just build-client` | Build `clients/typescript` into `clients/typescript/dist` | diff --git a/program/idl/subscriptions.json b/idl/subscriptions.json similarity index 100% rename from program/idl/subscriptions.json rename to idl/subscriptions.json diff --git a/justfile b/justfile index 2265ac5..4fd0739 100644 --- a/justfile +++ b/justfile @@ -8,7 +8,7 @@ set shell := ["bash", "-uc"] program_dir := "program" ts_client_dir := "clients/typescript" webapp_dir := "webapp" -idl_file := program_dir / "idl/subscriptions.json" +idl_file := "idl/subscriptions.json" # List available recipes default: diff --git a/program/build.rs b/program/build.rs index c455230..1c469b4 100644 --- a/program/build.rs +++ b/program/build.rs @@ -27,7 +27,8 @@ fn generate_idl() -> Result<(), Box> { formatted_json.push('\n'); // Write IDL file to idl directory. - let idl_dir = Path::new(&manifest_dir).join("idl"); + let project_root = Path::new(&manifest_dir).parent().unwrap(); + let idl_dir = project_root.join("idl"); fs::create_dir_all(&idl_dir)?; let idl_path = idl_dir.join("subscriptions.json"); fs::write(&idl_path, formatted_json)?; diff --git a/program/src/tests/idl.rs b/program/src/tests/idl.rs index 60d2858..0c769da 100644 --- a/program/src/tests/idl.rs +++ b/program/src/tests/idl.rs @@ -1,6 +1,6 @@ use serde_json::Value; -const IDL_JSON: &str = include_str!("../../idl/subscriptions.json"); +const IDL_JSON: &str = include_str!("../../../idl/subscriptions.json"); /// Account info from the IDL. pub struct IdlAccount { diff --git a/scripts/generate-clients.ts b/scripts/generate-clients.ts index 7259f6a..b37b88c 100644 --- a/scripts/generate-clients.ts +++ b/scripts/generate-clients.ts @@ -21,7 +21,7 @@ import { preserveConfigFiles } from './lib/utils'; const __dirname = path.dirname(fileURLToPath(import.meta.url)); const projectRoot = path.join(__dirname, '..'); -const idlPath = path.join(projectRoot, 'program', 'idl', 'subscriptions.json'); +const idlPath = path.join(projectRoot, 'idl', 'subscriptions.json'); const idl = JSON.parse(fs.readFileSync(idlPath, 'utf-8')) as AnchorIdl; const rustClientsDir = path.join(projectRoot, 'clients', 'rust'); const typescriptClientsDir = path.join(projectRoot, 'clients', 'typescript'); diff --git a/webapp/tsconfig.app.json b/webapp/tsconfig.app.json index e98f02a..0350f46 100644 --- a/webapp/tsconfig.app.json +++ b/webapp/tsconfig.app.json @@ -29,7 +29,7 @@ "baseUrl": ".", "paths": { "@/*": ["./src/*"], - "@idl": ["../program/idl/subscriptions.json"] + "@idl": ["../idl/subscriptions.json"] } }, "include": ["src"] diff --git a/webapp/vite.config.ts b/webapp/vite.config.ts index 554767b..d3e6462 100644 --- a/webapp/vite.config.ts +++ b/webapp/vite.config.ts @@ -29,7 +29,7 @@ export default defineConfig({ resolve: { alias: { "@": path.resolve(__dirname, "./src"), - "@idl": path.resolve(__dirname, "../program/idl/subscriptions.json"), + "@idl": path.resolve(__dirname, "../idl/subscriptions.json"), }, }, build: {