@gati-framework/cli
Version:
CLI tool for Gati framework - create, develop, build and deploy cloud-native applications
83 lines • 2.35 kB
TypeScript
/**
* @module cli/codegen/bundle-generator
* @description Generate deployment bundles containing all manifests and schemas
*/
import type { HandlerManifest, ModuleManifest } from '../analyzer/manifest-generator.js';
import type { GType } from '@gati-framework/runtime';
export interface ManifestBundle {
version: string;
generated: string;
checksum: string;
handlers: HandlerManifest[];
modules: ModuleManifest[];
schemas: Record<string, GType>;
versionGraph: VersionGraph;
transformers: TransformerMetadata[];
metadata: BundleMetadata;
}
export interface VersionGraph {
nodes: VersionNode[];
edges: VersionEdge[];
}
export interface VersionNode {
version: string;
handlerId: string;
timestamp: number;
}
export interface VersionEdge {
from: string;
to: string;
breaking: boolean;
}
export interface TransformerMetadata {
fromVersion: string;
toVersion: string;
path: string;
}
export interface BundleMetadata {
projectName?: string;
environment?: string;
buildNumber?: string;
gitCommit?: string;
[key: string]: unknown;
}
export interface BundleGeneratorOptions {
version?: string;
projectName?: string;
environment?: string;
includeMetadata?: boolean;
}
/**
* Generate deployment bundle from manifests and schemas
*/
export declare class BundleGenerator {
generate(handlers: HandlerManifest[], modules: ModuleManifest[], schemas: Record<string, GType>, options?: BundleGeneratorOptions): ManifestBundle;
private validateManifests;
private buildVersionGraph;
private extractTimestamp;
private collectTransformers;
private buildMetadata;
private calculateChecksum;
/**
* Create manifest index for fast lookup
*/
createIndex(bundle: ManifestBundle): ManifestIndex;
/**
* Validate bundle integrity
*/
validateBundle(bundle: ManifestBundle): ValidationResult;
}
export interface ManifestIndex {
handlers: Map<string, HandlerManifest>;
modules: Map<string, ModuleManifest>;
paths: Map<string, HandlerManifest[]>;
}
export interface ValidationResult {
valid: boolean;
errors: string[];
}
/**
* Create bundle generator instance
*/
export declare function createBundleGenerator(): BundleGenerator;
//# sourceMappingURL=bundle-generator.d.ts.map