UNPKG

supa-seed

Version:

A constraint-aware, framework-agnostic database seeding framework with deep PostgreSQL business logic discovery and MakerKit integration support

78 lines 2.27 kB
/** * RLS-Compliant Seeder * Implements user context-aware seeding that respects Row Level Security policies */ import type { createClient } from '@supabase/supabase-js'; import { BusinessLogicAnalysisResult, RLSComplianceOptions, UserContext, RLSComplianceResult } from '../features/analysis/business-logic-types'; type SupabaseClient = ReturnType<typeof createClient>; export declare class RLSCompliantSeeder { private client; private serviceRoleClient?; private businessLogicAnalyzer; private options; private cachedPolicies; private currentUserContext?; constructor(client: SupabaseClient, serviceRoleClient?: SupabaseClient, options?: Partial<RLSComplianceOptions>); /** * Seed data with RLS compliance */ seedWithRLSCompliance(table: string, data: any[], userContext?: UserContext): Promise<RLSComplianceResult>; /** * Create user context for seeding */ private createUserContext; /** * Get RLS policies for a specific table */ private getRLSPoliciesForTable; /** * Validate data against RLS policies */ private validateDataAgainstRLS; /** * Check policy conditions against data */ private checkPolicyConditions; /** * Generate fix suggestions for RLS violations */ private generateFixSuggestions; /** * Handle RLS violations with fixes or bypass */ private handleRLSViolations; /** * Apply data fixes based on suggestions */ private applyDataFixes; /** * Seed with user context */ private seedWithUserContext; /** * Seed directly without RLS compliance */ private seedDirectly; /** * Seed with RLS bypass using service role */ private seedWithBypass; /** * Validate inserted data */ private validateInsertedData; /** * Check if table has RLS enabled */ isRLSEnabled(table: string): Promise<boolean>; /** * Get RLS compliance recommendations */ getComplianceRecommendations(analysisResult: BusinessLogicAnalysisResult): string[]; /** * Clear temporary user context */ clearUserContext(): Promise<void>; } export {}; //# sourceMappingURL=rls-compliant-seeder.d.ts.map