@ordojs/core
Version:
Core compiler and runtime for OrdoJS framework
81 lines • 2.18 kB
TypeScript
/**
* @fileoverview OrdoJS RPC Generator - Automatic RPC stub generation
*/
import { type ComponentAST, type ParameterNode, type TypeAnnotation } from '../types/index.js';
/**
* RPC generation options
*/
export interface RPCGeneratorOptions {
endpoint?: string;
timeout?: number;
retries?: number;
errorHandling?: 'throw' | 'return-null' | 'return-error';
authentication?: boolean;
compression?: boolean;
}
/**
* RPC call metadata
*/
export interface RPCCallMetadata {
componentName: string;
functionName: string;
parameters: ParameterNode[];
returnType: TypeAnnotation;
isAsync: boolean;
middleware: string[];
permissions: string[];
}
/**
* Generated RPC stub
*/
export interface RPCStub {
functionName: string;
clientCode: string;
serverEndpoint: string;
metadata: RPCCallMetadata;
}
/**
* RPC Generator for automatic stub generation
*/
export declare class RPCGenerator {
private options;
private indentLevel;
constructor(options?: Partial<RPCGeneratorOptions>);
/**
* Generate RPC stubs for all public server functions in a component
*/
generateRPCStubs(ast: ComponentAST): RPCStub[];
/**
* Generate client-side RPC stub code
*/
generateClientStub(metadata: RPCCallMetadata): string;
/**
* Generate server endpoint path
*/
generateServerEndpoint(metadata: RPCCallMetadata): string;
/**
* Generate Express.js route handler for server function
*/
generateServerRouteHandler(metadata: RPCCallMetadata): string;
/**
* Generate complete RPC client module
*/
generateRPCClientModule(stubs: RPCStub[], componentName: string): string;
/**
* Generate complete server routes module
*/
generateServerRoutesModule(stubs: RPCStub[], componentName: string): string;
/**
* Generate parameter string for function signature
*/
private generateParameterString;
/**
* Generate default value for parameter
*/
private generateDefaultValue;
/**
* Helper to generate indentation
*/
private indent;
}
//# sourceMappingURL=rpc-generator.d.ts.map