prorm API Reference
    Preparing search index...

    Interface AuditTrailOptions

    Compliance Module

    A set of 12 reusable classes for addressing data storage requirements from 218+ security and compliance frameworks.

    Each class wraps existing ORM infrastructure (hooks, decorators, scopes) into simple one-liner APIs.


    Quick reference:

    // 1. Audit trail for all CRUD operations import { ComplianceAuditTrail } from './compliance/audit-trail'; ComplianceAuditTrail.enable(prorm, UserModel, { getUserId: () => user.id });

      // 2. Field-level AES-256-GCM encryption
    import { FieldEncryption } from './compliance/field-encryption';
    FieldEncryption.configure('32-byte-hex-key');
    @Encrypt('ssn') class User extends Model {}
    applyEncryptionHooks(User);

    // 3. TLS enforcement at connection time
    import { TLSEnforcer } from './compliance/tls-enforcer';
    TLSEnforcer.enforce(prorm);

    // 4. Data retention / TTL policies
    import { DataRetentionPolicy } from './compliance/data-retention';
    DataRetentionPolicy.set(FinancialRecord, { maxAge: { years: 7 } });
    await DataRetentionPolicy.purge(FinancialRecord);

    // 5. Right to erasure (DSAR response)
    import { RightToErasure } from './compliance/right-to-erasure';
    await RightToErasure.erase(User, { where: { id: userId } }, { mode: 'anonymize' });

    // 6. Consent record storage
    import { ConsentRecord } from './compliance/consent-record';
    await ConsentRecord.initialize(prorm);
    await ConsentRecord.grant({ subjectId: userId, purpose: 'marketing' });

    // 7. Row-level security (tenant filtering)
    import { RowLevelSecurity } from './compliance/row-level-security';
    RowLevelSecurity.apply(Document, ctx => ({ where: { tenantId: ctx.tenantId } }));

    // 8. Data masking in query output
    import { DataMasker } from './compliance/data-masker';
    DataMasker.maskField(User, 'ssn', { pattern: 'ssn' });
    const masked = DataMasker.mask(user, 'admin');

    // 9. Immutable records (append-only, no update/delete)
    import { ImmutableRecord } from './compliance/immutable-record';
    ImmutableRecord.makeImmutable(AuditEntry);

    // 10. Pseudonymization / tokenization
    import { PseudonymizationService } from './compliance/pseudonymization';
    await PseudonymizationService.configure({ secretKey: '...' });
    const token = await PseudonymizationService.tokenize('user-123');

    // 11. Data portability (DSAR export)
    import { DataPortabilityExporter } from './compliance/data-portability';
    const export = await DataPortabilityExporter.export(User, { where: { id: userId } });

    // 12. Data classification / sensitivity tagging
    import { DataClassifier } from './compliance/data-classifier';
    @FieldClassification('email', 'PII') class User extends Model {}
    const piiFields = DataClassifier.getPIIFields(User);
    interface AuditTrailOptions {
        getUserId?: () => string | number | undefined;
        getIpAddress?: () => string | undefined;
        tableName?: string;
    }
    Index
    getUserId?: () => string | number | undefined

    Return the current user ID for the audit record

    getIpAddress?: () => string | undefined

    Return the current request IP address

    tableName?: string

    Override the audit table name. Default: 'ComplianceAuditLogs'