cdk-insights
Version:
AWS CDK security and cost analysis tool with AI-powered insights
26 lines (25 loc) • 2.1 kB
TypeScript
export type FeatureName = 'staticAnalysis' | 'multiStackAnalysis' | 'localAnalysis' | 'basicServiceChecks' | 'aiAnalysis' | 'contextualFixes' | 'smartPrioritization' | 'naturalLanguageExplanations' | 'customAITraining' | 'githubIntegration' | 'teamDashboards' | 'collaborativeCommenting' | 'sharedConfigurations' | 'jsonOutput' | 'tableOutput' | 'markdownOutput' | 'pdfReports' | 'executiveSummaries' | 'customBrandedReports' | 'customRuleSets' | 'advancedCompliance' | 'cloudAnalysis' | 'parallelAnalysis' | 'caching' | 'largeProjectSupport' | 'advancedFiltering' | 'apiAccess' | 'webhookNotifications' | 'cicdIntegration' | 'customIntegrations' | 'roleBasedAccess' | 'teamAnalytics' | 'auditTrails' | 'ssoIntegration' | 'multiTenantSupport' | 'whiteLabeling' | 'customBranding' | 'communitySupport' | 'emailSupport' | 'prioritySupport' | 'dedicatedAccountManager' | 'customTraining' | 'soc2Compliance' | 'hipaaCompliance' | 'fedrampCompliance' | 'customCompliance';
export type Tier = 'free' | 'pro' | 'enterprise';
interface FeatureConfig {
features: Record<FeatureName, Record<Tier, boolean>>;
}
type FeatureGatingFunction = {
isFeatureEnabled: (feature: FeatureName, tier: Tier) => boolean;
getEnabledFeatures: (tier: Tier) => FeatureName[];
getAllFeatures: () => FeatureName[];
getFeatureTiers: (feature: FeatureName) => Record<Tier, boolean> | undefined;
getUpgradePath: (feature: FeatureName, currentTier: Tier) => {
required: boolean;
tier: Tier;
path: string;
} | null;
};
/**
* Creates a feature gating function with the provided configuration
*/
export declare const createFeatureGating: (config?: FeatureConfig) => FeatureGatingFunction;
export declare const featureGating: FeatureGatingFunction;
export declare const requireFeature: (feature: FeatureName, tier: Tier, context?: string) => void;
export declare const getFeatureUpgradeMessage: (feature: FeatureName, tier: Tier, context?: string) => string;
export declare const logFeatureAccess: (feature: FeatureName, tier: Tier, enabled: boolean, context?: string) => void;
export {};