Initial Commit
This commit is contained in:
@@ -0,0 +1,115 @@
|
||||
import z from "zod";
|
||||
import { AuditEventType, AuditSeverity } from "../constants/index.js";
|
||||
|
||||
/** Zod schema for AuditSeverity. */
|
||||
export const AuditSeveritySchema = z.enum([
|
||||
AuditSeverity.DEBUG,
|
||||
AuditSeverity.INFO,
|
||||
AuditSeverity.WARNING,
|
||||
AuditSeverity.ERROR,
|
||||
AuditSeverity.CRITICAL,
|
||||
]);
|
||||
|
||||
/** Zod schema for AuditEventType. */
|
||||
export const AuditEventTypeSchema = z.enum([
|
||||
AuditEventType.AUTH_LOGIN,
|
||||
AuditEventType.AUTH_LOGOUT,
|
||||
AuditEventType.AUTH_REGISTER,
|
||||
AuditEventType.AUTH_PASSWORD_CHANGE,
|
||||
AuditEventType.AUTH_PASSWORD_RESET,
|
||||
AuditEventType.AUTH_MFA_ENABLE,
|
||||
AuditEventType.AUTH_MFA_DISABLE,
|
||||
AuditEventType.AUTH_SESSION_CREATE,
|
||||
AuditEventType.AUTH_SESSION_REVOKE,
|
||||
AuditEventType.AUTH_API_KEY_CREATE,
|
||||
AuditEventType.AUTH_API_KEY_REVOKE,
|
||||
AuditEventType.AUTHZ_PERMISSION_CHECK,
|
||||
AuditEventType.AUTHZ_PERMISSION_GRANT,
|
||||
AuditEventType.AUTHZ_PERMISSION_REVOKE,
|
||||
AuditEventType.AUTHZ_ROLE_ASSIGN,
|
||||
AuditEventType.AUTHZ_ROLE_UNASSIGN,
|
||||
AuditEventType.DATA_CREATE,
|
||||
AuditEventType.DATA_READ,
|
||||
AuditEventType.DATA_UPDATE,
|
||||
AuditEventType.DATA_DELETE,
|
||||
AuditEventType.DATA_EXPORT,
|
||||
AuditEventType.DATA_IMPORT,
|
||||
AuditEventType.SYSTEM_CONFIG_CHANGE,
|
||||
AuditEventType.SYSTEM_SECURITY_ALERT,
|
||||
AuditEventType.SYSTEM_RATE_LIMIT,
|
||||
AuditEventType.SYSTEM_ERROR,
|
||||
AuditEventType.GDPR_DATA_EXPORT,
|
||||
AuditEventType.GDPR_DATA_DELETE,
|
||||
AuditEventType.GDPR_CONSENT_CHANGE,
|
||||
]);
|
||||
|
||||
/** Zod schema for AuditActor. */
|
||||
export const AuditActorSchema = z.object({
|
||||
userId: z.string().optional(),
|
||||
sessionId: z.string().optional(),
|
||||
apiKeyId: z.string().optional(),
|
||||
ipAddress: z.string().optional(),
|
||||
userAgent: z.string().optional(),
|
||||
tenantId: z.string().optional(),
|
||||
});
|
||||
|
||||
/** Zod schema for AuditTarget. */
|
||||
export const AuditTargetSchema = z.object({
|
||||
type: z.string(),
|
||||
id: z.string(),
|
||||
metadata: z.record(z.string(), z.unknown()).optional(),
|
||||
});
|
||||
|
||||
/** Zod schema for a complete AuditEvent. */
|
||||
export const AuditEventSchema = z.object({
|
||||
id: z.string(),
|
||||
type: z.union([AuditEventTypeSchema, z.string()]),
|
||||
severity: AuditSeveritySchema,
|
||||
actor: AuditActorSchema,
|
||||
target: AuditTargetSchema.optional(),
|
||||
details: z.record(z.string(), z.unknown()).optional(),
|
||||
timestamp: z.date(),
|
||||
previousHash: z.string().optional(),
|
||||
hash: z.string(),
|
||||
tenantId: z.string().optional(),
|
||||
correlationId: z.string().optional(),
|
||||
});
|
||||
|
||||
/** Zod schema for AuditQueryOptions. */
|
||||
export const AuditQueryOptionsSchema = z.object({
|
||||
eventTypes: z.array(AuditEventTypeSchema).optional(),
|
||||
userId: z.string().optional(),
|
||||
sessionId: z.string().optional(),
|
||||
severity: z
|
||||
.union([AuditSeveritySchema, z.array(AuditSeveritySchema)])
|
||||
.optional(),
|
||||
targetType: z.string().optional(),
|
||||
targetId: z.string().optional(),
|
||||
startTime: z.date().optional(),
|
||||
endTime: z.date().optional(),
|
||||
limit: z.number().int().positive().optional(),
|
||||
offset: z.number().int().nonnegative().optional(),
|
||||
order: z.enum(["asc", "desc"]).optional(),
|
||||
tenantId: z.string().optional(),
|
||||
});
|
||||
|
||||
/** Zod schema for AuditRetentionPolicy. */
|
||||
export const AuditRetentionPolicySchema = z.object({
|
||||
retentionDays: z.number().int().positive(),
|
||||
archiveBeforeDelete: z.boolean(),
|
||||
archiveLocation: z.string().optional(),
|
||||
});
|
||||
|
||||
/** Zod schema for ChainVerificationResult. */
|
||||
export const ChainVerificationResultSchema = z.object({
|
||||
valid: z.boolean(),
|
||||
brokenAt: z.number().int().nonnegative().optional(),
|
||||
reason: z.string().optional(),
|
||||
});
|
||||
|
||||
/** Zod schema for RetentionResult. */
|
||||
export const RetentionResultSchema = z.object({
|
||||
eventsDeleted: z.number().int().nonnegative(),
|
||||
eventsArchived: z.number().int().nonnegative(),
|
||||
errors: z.array(z.string()),
|
||||
});
|
||||
Reference in New Issue
Block a user