@simonecoelhosfo/optimizely-mcp-server
Version:
Optimizely MCP Server for AI assistants with integrated CLI tools
151 lines • 6.29 kB
TypeScript
import { EntityRouter } from '../tools/EntityRouter';
/**
* Centralized reference resolver for all entity types in template mode.
* Handles conversion of reference objects like {ref: {name: "Entity Name"}} to actual IDs.
*
* Usage:
* const resolver = new ReferenceResolver(entityRouter);
* const resolved = await resolver.resolveEntityReferences(templateData, entityType, projectId);
*
* Supported reference patterns:
* - {ref: {id: "123"}} - Direct ID reference
* - {ref: {name: "Entity Name"}} - Name-based reference (converted to ID)
* - {ref: {key: "entity_key"}} - Key-based reference (converted to ID)
* - Direct values: "123" or 123 - Treated as direct ID references
*/
export declare class ReferenceResolver {
private entityRouter;
constructor(entityRouter: EntityRouter);
/**
* PUBLIC API: Resolves event references specifically
* @param templateData Raw template data containing event reference objects
* @param projectId Project ID for scoped searches
* @returns Object containing resolved event reference fields
*/
resolveEventReferences(templateData: any, projectId: string): Promise<{
[key: string]: any;
}>;
/**
* PUBLIC API: Resolves attribute references specifically
* @param templateData Raw template data containing attribute reference objects
* @param projectId Project ID for scoped searches
* @returns Object containing resolved attribute reference fields
*/
resolveAttributeReferences(templateData: any, projectId: string): Promise<{
[key: string]: any;
}>;
/**
* PUBLIC API: Resolves extension references specifically
* @param templateData Raw template data containing extension reference objects
* @param projectId Project ID for scoped searches
* @returns Object containing resolved extension reference fields
*/
resolveExtensionReferences(templateData: any, projectId: string): Promise<{
[key: string]: any;
}>;
/**
* PUBLIC API: Resolves variable references specifically
* @param templateData Raw template data containing variable reference objects
* @param projectId Project ID for scoped searches
* @returns Object containing resolved variable reference fields
*/
resolveVariableReferences(templateData: any, projectId: string): Promise<{
[key: string]: any;
}>;
/**
* PUBLIC API: Resolves environment references specifically
* @param templateData Raw template data containing environment reference objects
* @param projectId Project ID for scoped searches
* @returns Object containing resolved environment reference fields
*/
resolveEnvironmentReferences(templateData: any, projectId: string): Promise<{
[key: string]: any;
}>;
/**
* PUBLIC API: Resolves group references specifically
* @param templateData Raw template data containing group reference objects
* @param projectId Project ID for scoped searches
* @returns Object containing resolved group reference fields
*/
resolveGroupReferences(templateData: any, projectId: string): Promise<{
[key: string]: any;
}>;
/**
* PUBLIC API: Resolves page references specifically
* @param templateData Raw template data containing page reference objects
* @param projectId Project ID for scoped searches
* @returns Object containing resolved page reference fields
*/
resolvePageReferences(templateData: any, projectId: string): Promise<{
[key: string]: any;
}>;
/**
* PUBLIC API: Resolves audience references specifically
* @param templateData Raw template data containing audience reference objects
* @param projectId Project ID for scoped searches
* @returns Object containing resolved audience reference fields
*/
resolveAudienceReferences(templateData: any, projectId: string): Promise<{
[key: string]: any;
}>;
/**
* Resolves all entity references in template data for a specific entity type
* @param templateData Raw template data containing reference objects
* @param entityType The type of entity being created (for context/logging)
* @param projectId Project ID for scoped searches
* @returns Object containing resolved reference fields to merge into processed template
*/
resolveEntityReferences(templateData: any, entityType: string, projectId: string): Promise<{
[key: string]: any;
}>;
/**
* Resolves page references for campaigns and experiments
* Handles both pages (array) and page (singular) patterns
*/
private resolvePageReferencesInternal;
/**
* Resolves audience references for experiments and campaigns
*/
private resolveAudienceReferencesInternal;
/**
* Resolves event references for metrics and goals
*/
private resolveEventReferencesInternal;
/**
* Resolves attribute references for audience conditions
*/
private resolveAttributeReferencesInternal;
/**
* Resolves extension references for integrations
*/
private resolveExtensionReferencesInternal;
/**
* Resolves variable references for feature flags
*/
private resolveVariableReferencesInternal;
/**
* Resolves environment references for deployments
*/
private resolveEnvironmentReferencesInternal;
/**
* Resolves group references for audience segments
*/
private resolveGroupReferencesInternal;
/**
* Resolves an array of reference objects to IDs
* @param refArray Array of reference objects like [{ref: {name: "Name"}}, {ref: {id: "123"}}]
* @param entityType Type of entity being referenced
* @param projectId Project ID for scoped searches
* @returns Array of resolved IDs
*/
private resolveReferenceArray;
/**
* Resolves a single reference object to an ID
* @param refObject Reference object like {ref: {name: "Name"}} or {ref: {id: "123"}}
* @param entityType Type of entity being referenced
* @param projectId Project ID for scoped searches
* @returns Resolved ID or null if not found
*/
private resolveSingleReference;
}
//# sourceMappingURL=ReferenceResolver.d.ts.map