couchloop-eq-mcp 1.0.3 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -11
- package/dist/clients/shrinkChatClient.js +1 -1
- package/dist/clients/shrinkChatClient.js.map +1 -1
- package/dist/developer/analyzers/bloat-detector.d.ts +89 -0
- package/dist/developer/analyzers/bloat-detector.d.ts.map +1 -0
- package/dist/developer/analyzers/bloat-detector.js +483 -0
- package/dist/developer/analyzers/bloat-detector.js.map +1 -0
- package/dist/developer/backup/auto-backup.d.ts +96 -0
- package/dist/developer/backup/auto-backup.d.ts.map +1 -0
- package/dist/developer/backup/auto-backup.js +346 -0
- package/dist/developer/backup/auto-backup.js.map +1 -0
- package/dist/developer/blockers/package-blocker.d.ts +33 -0
- package/dist/developer/blockers/package-blocker.d.ts.map +1 -0
- package/dist/developer/blockers/package-blocker.js +224 -0
- package/dist/developer/blockers/package-blocker.js.map +1 -0
- package/dist/developer/evaluators/ai-error-preventer.d.ts +54 -0
- package/dist/developer/evaluators/ai-error-preventer.d.ts.map +1 -0
- package/dist/developer/evaluators/ai-error-preventer.js +270 -0
- package/dist/developer/evaluators/ai-error-preventer.js.map +1 -0
- package/dist/developer/evaluators/build-context-detector.d.ts +44 -0
- package/dist/developer/evaluators/build-context-detector.d.ts.map +1 -0
- package/dist/developer/evaluators/build-context-detector.js +258 -0
- package/dist/developer/evaluators/build-context-detector.js.map +1 -0
- package/dist/developer/evaluators/package-evaluator.d.ts +37 -0
- package/dist/developer/evaluators/package-evaluator.d.ts.map +1 -0
- package/dist/developer/evaluators/package-evaluator.js +278 -0
- package/dist/developer/evaluators/package-evaluator.js.map +1 -0
- package/dist/developer/guards/file-guardian.d.ts +79 -0
- package/dist/developer/guards/file-guardian.d.ts.map +1 -0
- package/dist/developer/guards/file-guardian.js +309 -0
- package/dist/developer/guards/file-guardian.js.map +1 -0
- package/dist/developer/managers/context-manager.d.ts +61 -0
- package/dist/developer/managers/context-manager.d.ts.map +1 -0
- package/dist/developer/managers/context-manager.js +302 -0
- package/dist/developer/managers/context-manager.js.map +1 -0
- package/dist/developer/metrics/complexity-calculator.d.ts +52 -0
- package/dist/developer/metrics/complexity-calculator.d.ts.map +1 -0
- package/dist/developer/metrics/complexity-calculator.js +259 -0
- package/dist/developer/metrics/complexity-calculator.js.map +1 -0
- package/dist/developer/reports/review-summary.d.ts +49 -0
- package/dist/developer/reports/review-summary.d.ts.map +1 -0
- package/dist/developer/reports/review-summary.js +249 -0
- package/dist/developer/reports/review-summary.js.map +1 -0
- package/dist/developer/scanners/review-assistant.d.ts +41 -0
- package/dist/developer/scanners/review-assistant.d.ts.map +1 -0
- package/dist/developer/scanners/review-assistant.js +374 -0
- package/dist/developer/scanners/review-assistant.js.map +1 -0
- package/dist/developer/scanners/secret-scanner.d.ts +66 -0
- package/dist/developer/scanners/secret-scanner.d.ts.map +1 -0
- package/dist/developer/scanners/secret-scanner.js +287 -0
- package/dist/developer/scanners/secret-scanner.js.map +1 -0
- package/dist/developer/scanners/sql-injection-detector.d.ts +54 -0
- package/dist/developer/scanners/sql-injection-detector.d.ts.map +1 -0
- package/dist/developer/scanners/sql-injection-detector.js +174 -0
- package/dist/developer/scanners/sql-injection-detector.js.map +1 -0
- package/dist/developer/scanners/xss-detector.d.ts +60 -0
- package/dist/developer/scanners/xss-detector.d.ts.map +1 -0
- package/dist/developer/scanners/xss-detector.js +229 -0
- package/dist/developer/scanners/xss-detector.js.map +1 -0
- package/dist/developer/types/ai-errors.d.ts +34 -0
- package/dist/developer/types/ai-errors.d.ts.map +1 -0
- package/dist/developer/types/ai-errors.js +271 -0
- package/dist/developer/types/ai-errors.js.map +1 -0
- package/dist/developer/types/package.d.ts +32 -0
- package/dist/developer/types/package.d.ts.map +1 -0
- package/dist/developer/types/package.js +5 -0
- package/dist/developer/types/package.js.map +1 -0
- package/dist/developer/updaters/dependency-updater.d.ts +102 -0
- package/dist/developer/updaters/dependency-updater.d.ts.map +1 -0
- package/dist/developer/updaters/dependency-updater.js +472 -0
- package/dist/developer/updaters/dependency-updater.js.map +1 -0
- package/dist/developer/validators/cargo.d.ts +14 -0
- package/dist/developer/validators/cargo.d.ts.map +1 -0
- package/dist/developer/validators/cargo.js +132 -0
- package/dist/developer/validators/cargo.js.map +1 -0
- package/dist/developer/validators/gem.d.ts +14 -0
- package/dist/developer/validators/gem.d.ts.map +1 -0
- package/dist/developer/validators/gem.js +85 -0
- package/dist/developer/validators/gem.js.map +1 -0
- package/dist/developer/validators/go.d.ts +14 -0
- package/dist/developer/validators/go.d.ts.map +1 -0
- package/dist/developer/validators/go.js +138 -0
- package/dist/developer/validators/go.js.map +1 -0
- package/dist/developer/validators/maven.d.ts +14 -0
- package/dist/developer/validators/maven.d.ts.map +1 -0
- package/dist/developer/validators/maven.js +99 -0
- package/dist/developer/validators/maven.js.map +1 -0
- package/dist/developer/validators/npm.d.ts +14 -0
- package/dist/developer/validators/npm.d.ts.map +1 -0
- package/dist/developer/validators/npm.js +96 -0
- package/dist/developer/validators/npm.js.map +1 -0
- package/dist/developer/validators/nuget.d.ts +15 -0
- package/dist/developer/validators/nuget.d.ts.map +1 -0
- package/dist/developer/validators/nuget.js +107 -0
- package/dist/developer/validators/nuget.js.map +1 -0
- package/dist/developer/validators/pypi.d.ts +14 -0
- package/dist/developer/validators/pypi.d.ts.map +1 -0
- package/dist/developer/validators/pypi.js +118 -0
- package/dist/developer/validators/pypi.js.map +1 -0
- package/dist/developer/validators/registry-manager.d.ts +37 -0
- package/dist/developer/validators/registry-manager.d.ts.map +1 -0
- package/dist/developer/validators/registry-manager.js +89 -0
- package/dist/developer/validators/registry-manager.js.map +1 -0
- package/dist/developer/validators/version-checker.d.ts +145 -0
- package/dist/developer/validators/version-checker.d.ts.map +1 -0
- package/dist/developer/validators/version-checker.js +529 -0
- package/dist/developer/validators/version-checker.js.map +1 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/middleware/auth.d.ts +7 -9
- package/dist/server/middleware/auth.d.ts.map +1 -1
- package/dist/server/middleware/auth.js.map +1 -1
- package/dist/tools/check-versions.d.ts +100 -0
- package/dist/tools/check-versions.d.ts.map +1 -0
- package/dist/tools/check-versions.js +328 -0
- package/dist/tools/check-versions.js.map +1 -0
- package/dist/tools/detect-code-smell.d.ts +9 -0
- package/dist/tools/detect-code-smell.d.ts.map +1 -0
- package/dist/tools/detect-code-smell.js +231 -0
- package/dist/tools/detect-code-smell.js.map +1 -0
- package/dist/tools/index.d.ts +471 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +178 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/journey.js +1 -1
- package/dist/tools/journey.js.map +1 -1
- package/dist/tools/pre-review-code.d.ts +71 -0
- package/dist/tools/pre-review-code.d.ts.map +1 -0
- package/dist/tools/pre-review-code.js +159 -0
- package/dist/tools/pre-review-code.js.map +1 -0
- package/dist/tools/preserve-context.d.ts +27 -0
- package/dist/tools/preserve-context.d.ts.map +1 -0
- package/dist/tools/preserve-context.js +98 -0
- package/dist/tools/preserve-context.js.map +1 -0
- package/dist/tools/protect-files.d.ts +224 -0
- package/dist/tools/protect-files.d.ts.map +1 -0
- package/dist/tools/protect-files.js +286 -0
- package/dist/tools/protect-files.js.map +1 -0
- package/dist/tools/scan-security.d.ts +38 -0
- package/dist/tools/scan-security.d.ts.map +1 -0
- package/dist/tools/scan-security.js +237 -0
- package/dist/tools/scan-security.js.map +1 -0
- package/dist/tools/validate_packages.d.ts +8 -0
- package/dist/tools/validate_packages.d.ts.map +1 -0
- package/dist/tools/validate_packages.js +159 -0
- package/dist/tools/validate_packages.js.map +1 -0
- package/dist/types/auth.d.ts +18 -18
- package/dist/types/auth.d.ts.map +1 -1
- package/dist/types/auth.js +91 -36
- package/dist/types/auth.js.map +1 -1
- package/dist/types/context.d.ts +46 -0
- package/dist/types/context.d.ts.map +1 -0
- package/dist/types/context.js +17 -0
- package/dist/types/context.js.map +1 -0
- package/dist/types/file-protection.d.ts +50 -0
- package/dist/types/file-protection.d.ts.map +1 -0
- package/dist/types/file-protection.js +9 -0
- package/dist/types/file-protection.js.map +1 -0
- package/dist/utils/errorHandler.d.ts.map +1 -1
- package/dist/utils/errorHandler.js +2 -1
- package/dist/utils/errorHandler.js.map +1 -1
- package/package.json +23 -2
- package/dist/db/migrate.d.ts +0 -4
- package/dist/db/migrate.d.ts.map +0 -1
- package/dist/db/migrate.js +0 -34
- package/dist/db/migrate.js.map +0 -1
- package/dist/db/migrations/schema.d.ts +0 -1074
- package/dist/db/migrations/schema.d.ts.map +0 -1
- package/dist/db/migrations/schema.js +0 -160
- package/dist/db/migrations/schema.js.map +0 -1
- package/dist/db/schema.d.ts +0 -1576
- package/dist/db/schema.d.ts.map +0 -1
- package/dist/db/schema.js +0 -204
- package/dist/db/schema.js.map +0 -1
- package/dist/db/seed.d.ts +0 -4
- package/dist/db/seed.d.ts.map +0 -1
- package/dist/db/seed.js +0 -57
- package/dist/db/seed.js.map +0 -1
- package/dist/db/seedOAuth.d.ts +0 -4
- package/dist/db/seedOAuth.d.ts.map +0 -1
- package/dist/db/seedOAuth.js +0 -76
- package/dist/db/seedOAuth.js.map +0 -1
- package/dist/governance/config.d.ts +0 -66
- package/dist/governance/config.d.ts.map +0 -1
- package/dist/governance/config.js +0 -238
- package/dist/governance/config.js.map +0 -1
- package/dist/governance/detectors/hallucination.d.ts +0 -61
- package/dist/governance/detectors/hallucination.d.ts.map +0 -1
- package/dist/governance/detectors/hallucination.js +0 -338
- package/dist/governance/detectors/hallucination.js.map +0 -1
- package/dist/governance/detectors/inconsistency.d.ts +0 -99
- package/dist/governance/detectors/inconsistency.d.ts.map +0 -1
- package/dist/governance/detectors/inconsistency.js +0 -548
- package/dist/governance/detectors/inconsistency.js.map +0 -1
- package/dist/governance/detectors/toneDrift.d.ts +0 -63
- package/dist/governance/detectors/toneDrift.d.ts.map +0 -1
- package/dist/governance/detectors/toneDrift.js +0 -421
- package/dist/governance/detectors/toneDrift.js.map +0 -1
- package/dist/governance/detectors/unsafeReasoning.d.ts +0 -54
- package/dist/governance/detectors/unsafeReasoning.d.ts.map +0 -1
- package/dist/governance/detectors/unsafeReasoning.js +0 -473
- package/dist/governance/detectors/unsafeReasoning.js.map +0 -1
- package/dist/governance/evaluationEngine.d.ts +0 -112
- package/dist/governance/evaluationEngine.d.ts.map +0 -1
- package/dist/governance/evaluationEngine.js +0 -265
- package/dist/governance/evaluationEngine.js.map +0 -1
- package/dist/governance/intervention.d.ts +0 -81
- package/dist/governance/intervention.d.ts.map +0 -1
- package/dist/governance/intervention.js +0 -405
- package/dist/governance/intervention.js.map +0 -1
- package/dist/server/oauth/anomalyDetection.d.ts +0 -146
- package/dist/server/oauth/anomalyDetection.d.ts.map +0 -1
- package/dist/server/oauth/anomalyDetection.js +0 -405
- package/dist/server/oauth/anomalyDetection.js.map +0 -1
- package/dist/server/oauth/authServer.d.ts +0 -61
- package/dist/server/oauth/authServer.d.ts.map +0 -1
- package/dist/server/oauth/authServer.js +0 -283
- package/dist/server/oauth/authServer.js.map +0 -1
- package/dist/server/oauth/dpop.d.ts +0 -135
- package/dist/server/oauth/dpop.d.ts.map +0 -1
- package/dist/server/oauth/dpop.js +0 -338
- package/dist/server/oauth/dpop.js.map +0 -1
- package/dist/server/oauth/gdpr/consent.d.ts +0 -173
- package/dist/server/oauth/gdpr/consent.d.ts.map +0 -1
- package/dist/server/oauth/gdpr/consent.js +0 -388
- package/dist/server/oauth/gdpr/consent.js.map +0 -1
- package/dist/server/oauth/gdpr/dataPortability.d.ts +0 -214
- package/dist/server/oauth/gdpr/dataPortability.d.ts.map +0 -1
- package/dist/server/oauth/gdpr/dataPortability.js +0 -486
- package/dist/server/oauth/gdpr/dataPortability.js.map +0 -1
- package/dist/server/oauth/gdpr/index.d.ts +0 -103
- package/dist/server/oauth/gdpr/index.d.ts.map +0 -1
- package/dist/server/oauth/gdpr/index.js +0 -273
- package/dist/server/oauth/gdpr/index.js.map +0 -1
- package/dist/server/oauth/gdpr/rightToErasure.d.ts +0 -184
- package/dist/server/oauth/gdpr/rightToErasure.d.ts.map +0 -1
- package/dist/server/oauth/gdpr/rightToErasure.js +0 -527
- package/dist/server/oauth/gdpr/rightToErasure.js.map +0 -1
- package/dist/server/oauth/monitoring/securityMonitor.d.ts +0 -218
- package/dist/server/oauth/monitoring/securityMonitor.d.ts.map +0 -1
- package/dist/server/oauth/monitoring/securityMonitor.js +0 -615
- package/dist/server/oauth/monitoring/securityMonitor.js.map +0 -1
- package/dist/server/oauth/pkce.d.ts +0 -61
- package/dist/server/oauth/pkce.d.ts.map +0 -1
- package/dist/server/oauth/pkce.js +0 -157
- package/dist/server/oauth/pkce.js.map +0 -1
- package/dist/server/oauth/providers/base.d.ts +0 -147
- package/dist/server/oauth/providers/base.d.ts.map +0 -1
- package/dist/server/oauth/providers/base.js +0 -312
- package/dist/server/oauth/providers/base.js.map +0 -1
- package/dist/server/oauth/providers/github.d.ts +0 -55
- package/dist/server/oauth/providers/github.d.ts.map +0 -1
- package/dist/server/oauth/providers/github.js +0 -225
- package/dist/server/oauth/providers/github.js.map +0 -1
- package/dist/server/oauth/providers/google.d.ts +0 -49
- package/dist/server/oauth/providers/google.d.ts.map +0 -1
- package/dist/server/oauth/providers/google.js +0 -153
- package/dist/server/oauth/providers/google.js.map +0 -1
- package/dist/server/oauth/providers/index.d.ts +0 -9
- package/dist/server/oauth/providers/index.d.ts.map +0 -1
- package/dist/server/oauth/providers/index.js +0 -24
- package/dist/server/oauth/providers/index.js.map +0 -1
- package/dist/server/oauth/refreshTokenRotation.d.ts +0 -114
- package/dist/server/oauth/refreshTokenRotation.d.ts.map +0 -1
- package/dist/server/oauth/refreshTokenRotation.js +0 -344
- package/dist/server/oauth/refreshTokenRotation.js.map +0 -1
- package/dist/server/oauth/security.d.ts +0 -101
- package/dist/server/oauth/security.d.ts.map +0 -1
- package/dist/server/oauth/security.js +0 -268
- package/dist/server/oauth/security.js.map +0 -1
- package/dist/server/oauth/tokenEncryption.d.ts +0 -80
- package/dist/server/oauth/tokenEncryption.d.ts.map +0 -1
- package/dist/server/oauth/tokenEncryption.js +0 -218
- package/dist/server/oauth/tokenEncryption.js.map +0 -1
- package/dist/tools/sendMessage-complex-backup.d.ts +0 -6
- package/dist/tools/sendMessage-complex-backup.d.ts.map +0 -1
- package/dist/tools/sendMessage-complex-backup.js +0 -545
- package/dist/tools/sendMessage-complex-backup.js.map +0 -1
- package/dist/tools/sendMessage-revised.d.ts +0 -11
- package/dist/tools/sendMessage-revised.d.ts.map +0 -1
- package/dist/tools/sendMessage-revised.js +0 -429
- package/dist/tools/sendMessage-revised.js.map +0 -1
- package/dist/tools/sendMessage-truly-simple.d.ts +0 -8
- package/dist/tools/sendMessage-truly-simple.d.ts.map +0 -1
- package/dist/tools/sendMessage-truly-simple.js +0 -299
- package/dist/tools/sendMessage-truly-simple.js.map +0 -1
|
@@ -1,273 +0,0 @@
|
|
|
1
|
-
import { consentManager, ProcessingPurpose } from './consent.js';
|
|
2
|
-
import { dataPortabilityManager, ExportFormat, DataCategory } from './dataPortability.js';
|
|
3
|
-
import { rightToErasureManager, DeletionScope } from './rightToErasure.js';
|
|
4
|
-
import { logger } from '../../../utils/logger.js';
|
|
5
|
-
/**
|
|
6
|
-
* GDPR Compliance Manager
|
|
7
|
-
* Central interface for all GDPR-related operations
|
|
8
|
-
*/
|
|
9
|
-
export class GDPRComplianceManager {
|
|
10
|
-
/**
|
|
11
|
-
* Initialize GDPR compliance
|
|
12
|
-
*/
|
|
13
|
-
async initialize() {
|
|
14
|
-
logger.info('Initializing GDPR compliance manager');
|
|
15
|
-
// Set up periodic tasks
|
|
16
|
-
this.setupPeriodicTasks();
|
|
17
|
-
// Load privacy policies
|
|
18
|
-
await this.loadPrivacyPolicies();
|
|
19
|
-
logger.info('GDPR compliance manager initialized');
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Handle user registration with GDPR compliance
|
|
23
|
-
*/
|
|
24
|
-
async registerUser(userId, email, options) {
|
|
25
|
-
// Check parental consent requirement
|
|
26
|
-
if (options.birthDate && options.country) {
|
|
27
|
-
const requiresParental = await consentManager.requiresParentalConsent(options.birthDate, options.country);
|
|
28
|
-
if (requiresParental) {
|
|
29
|
-
throw new Error('Parental consent required for registration');
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
// Record essential consents
|
|
33
|
-
await consentManager.recordConsent(userId, ProcessingPurpose.AUTHENTICATION, true, {
|
|
34
|
-
ipAddress: options.ipAddress,
|
|
35
|
-
userAgent: options.userAgent,
|
|
36
|
-
});
|
|
37
|
-
await consentManager.recordConsent(userId, ProcessingPurpose.PROFILE_DATA, true, {
|
|
38
|
-
ipAddress: options.ipAddress,
|
|
39
|
-
userAgent: options.userAgent,
|
|
40
|
-
});
|
|
41
|
-
// Record optional consents
|
|
42
|
-
if (options.marketingConsent) {
|
|
43
|
-
await consentManager.recordConsent(userId, ProcessingPurpose.MARKETING, true, {
|
|
44
|
-
ipAddress: options.ipAddress,
|
|
45
|
-
userAgent: options.userAgent,
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
// Record analytics consent (legitimate interest)
|
|
49
|
-
await consentManager.recordConsent(userId, ProcessingPurpose.ANALYTICS, true, {
|
|
50
|
-
ipAddress: options.ipAddress,
|
|
51
|
-
userAgent: options.userAgent,
|
|
52
|
-
});
|
|
53
|
-
logger.info(`GDPR compliant registration completed for user ${userId}`);
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Handle data access request
|
|
57
|
-
*/
|
|
58
|
-
async handleDataAccessRequest(userId, requestedBy, categories) {
|
|
59
|
-
// Verify requester authorization
|
|
60
|
-
if (requestedBy !== userId) {
|
|
61
|
-
// Check if requester has legal authorization
|
|
62
|
-
const authorized = await this.verifyDataAccessAuthorization(requestedBy, userId);
|
|
63
|
-
if (!authorized) {
|
|
64
|
-
throw new Error('Unauthorized data access request');
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
// Create export request
|
|
68
|
-
const exportRequest = await dataPortabilityManager.requestExport(userId, categories || [DataCategory.ALL], ExportFormat.JSON, {
|
|
69
|
-
requestedBy,
|
|
70
|
-
reason: 'GDPR Article 15 - Right of access',
|
|
71
|
-
});
|
|
72
|
-
logger.info(`Data access request initiated for user ${userId}: ${exportRequest.id}`);
|
|
73
|
-
return exportRequest.id;
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Handle data portability request
|
|
77
|
-
*/
|
|
78
|
-
async handlePortabilityRequest(userId, format = ExportFormat.JSON, encrypted = true) {
|
|
79
|
-
const exportRequest = await dataPortabilityManager.requestExport(userId, [DataCategory.ALL], format, {
|
|
80
|
-
reason: 'GDPR Article 20 - Data portability',
|
|
81
|
-
encrypted,
|
|
82
|
-
});
|
|
83
|
-
logger.info(`Data portability request initiated for user ${userId}: ${exportRequest.id}`);
|
|
84
|
-
return exportRequest.id;
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Handle deletion request
|
|
88
|
-
*/
|
|
89
|
-
async handleDeletionRequest(userId, reason, immediate = false) {
|
|
90
|
-
const deletionRequest = await rightToErasureManager.requestDeletion(userId, DeletionScope.FULL, {
|
|
91
|
-
reason: reason || 'GDPR Article 17 - Right to erasure',
|
|
92
|
-
immediate,
|
|
93
|
-
});
|
|
94
|
-
logger.info(`Deletion request initiated for user ${userId}: ${deletionRequest.id}`);
|
|
95
|
-
return deletionRequest.id;
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Update consent preferences
|
|
99
|
-
*/
|
|
100
|
-
async updateConsent(userId, purpose, granted, context) {
|
|
101
|
-
await consentManager.recordConsent(userId, purpose, granted, context);
|
|
102
|
-
logger.info(`Consent updated for user ${userId}: ${purpose} = ${granted}`);
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Check data processing lawfulness
|
|
106
|
-
*/
|
|
107
|
-
async isProcessingLawful(userId, purpose) {
|
|
108
|
-
return await consentManager.hasValidConsent(userId, purpose);
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Handle data breach notification
|
|
112
|
-
*/
|
|
113
|
-
async handleDataBreach(affectedUsers, breachDetails) {
|
|
114
|
-
logger.error(`Data breach detected affecting ${affectedUsers.length} users`);
|
|
115
|
-
// Within 72 hours requirement (GDPR Article 33)
|
|
116
|
-
const deadline = new Date(breachDetails.discoveredAt.getTime() + 72 * 3600000);
|
|
117
|
-
// Notify supervisory authority
|
|
118
|
-
await this.notifySupervisoryAuthority(breachDetails);
|
|
119
|
-
// Notify affected users if high risk (GDPR Article 34)
|
|
120
|
-
if (breachDetails.severity === 'high' || breachDetails.severity === 'critical') {
|
|
121
|
-
for (const userId of affectedUsers) {
|
|
122
|
-
await this.notifyUserOfBreach(userId, breachDetails);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
// Document breach
|
|
126
|
-
await this.documentDataBreach({
|
|
127
|
-
...breachDetails,
|
|
128
|
-
affectedUsers: affectedUsers.length,
|
|
129
|
-
notificationDeadline: deadline,
|
|
130
|
-
notificationsSent: new Date(),
|
|
131
|
-
});
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Generate privacy report
|
|
135
|
-
*/
|
|
136
|
-
async generatePrivacyReport(startDate, endDate) {
|
|
137
|
-
// This would aggregate data from various sources
|
|
138
|
-
return {
|
|
139
|
-
totalUsers: 0,
|
|
140
|
-
consentStats: {},
|
|
141
|
-
dataRequests: {
|
|
142
|
-
access: 0,
|
|
143
|
-
portability: 0,
|
|
144
|
-
deletion: 0,
|
|
145
|
-
},
|
|
146
|
-
breaches: 0,
|
|
147
|
-
crossBorderTransfers: 0,
|
|
148
|
-
};
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* Verify age and get parental consent if needed
|
|
152
|
-
*/
|
|
153
|
-
async verifyAgeAndConsent(userId, birthDate, country, parentEmail) {
|
|
154
|
-
const requiresParental = await consentManager.requiresParentalConsent(birthDate, country);
|
|
155
|
-
if (requiresParental && !parentEmail) {
|
|
156
|
-
return {
|
|
157
|
-
ageVerified: false,
|
|
158
|
-
requiresParental: true,
|
|
159
|
-
};
|
|
160
|
-
}
|
|
161
|
-
if (requiresParental && parentEmail) {
|
|
162
|
-
// Generate parental consent request
|
|
163
|
-
const token = await this.generateParentalConsentToken(userId, parentEmail);
|
|
164
|
-
return {
|
|
165
|
-
ageVerified: false,
|
|
166
|
-
requiresParental: true,
|
|
167
|
-
parentalConsentToken: token,
|
|
168
|
-
};
|
|
169
|
-
}
|
|
170
|
-
return {
|
|
171
|
-
ageVerified: true,
|
|
172
|
-
requiresParental: false,
|
|
173
|
-
};
|
|
174
|
-
}
|
|
175
|
-
/**
|
|
176
|
-
* Handle cross-border data transfer
|
|
177
|
-
*/
|
|
178
|
-
async authorizeCrossBorderTransfer(userId, destinationCountry, purpose, safeguards) {
|
|
179
|
-
// Check if destination has adequacy decision
|
|
180
|
-
const hasAdequacy = this.checkAdequacyDecision(destinationCountry);
|
|
181
|
-
if (hasAdequacy) {
|
|
182
|
-
await this.logCrossBorderTransfer(userId, destinationCountry, 'adequacy');
|
|
183
|
-
return true;
|
|
184
|
-
}
|
|
185
|
-
// Check appropriate safeguards (GDPR Article 46)
|
|
186
|
-
switch (safeguards) {
|
|
187
|
-
case 'scc': // Standard Contractual Clauses
|
|
188
|
-
case 'bcr': // Binding Corporate Rules
|
|
189
|
-
await this.logCrossBorderTransfer(userId, destinationCountry, safeguards);
|
|
190
|
-
return true;
|
|
191
|
-
case 'consent':
|
|
192
|
-
// Explicit consent needed for transfers without safeguards
|
|
193
|
-
const hasConsent = await this.getExplicitTransferConsent(userId, destinationCountry, purpose);
|
|
194
|
-
if (hasConsent) {
|
|
195
|
-
await this.logCrossBorderTransfer(userId, destinationCountry, 'consent');
|
|
196
|
-
return true;
|
|
197
|
-
}
|
|
198
|
-
return false;
|
|
199
|
-
default:
|
|
200
|
-
return false;
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
/**
|
|
204
|
-
* Setup periodic GDPR tasks
|
|
205
|
-
*/
|
|
206
|
-
setupPeriodicTasks() {
|
|
207
|
-
// Daily: Clean up expired exports
|
|
208
|
-
setInterval(async () => {
|
|
209
|
-
await dataPortabilityManager.cleanupExpiredExports();
|
|
210
|
-
}, 24 * 3600000);
|
|
211
|
-
// Weekly: Process scheduled deletions
|
|
212
|
-
setInterval(async () => {
|
|
213
|
-
await this.processScheduledDeletions();
|
|
214
|
-
}, 7 * 24 * 3600000);
|
|
215
|
-
// Monthly: Review consent validity
|
|
216
|
-
setInterval(async () => {
|
|
217
|
-
await this.reviewConsentValidity();
|
|
218
|
-
}, 30 * 24 * 3600000);
|
|
219
|
-
}
|
|
220
|
-
// Helper methods
|
|
221
|
-
async verifyDataAccessAuthorization(requestedBy, userId) {
|
|
222
|
-
// Check if requester has legal authorization
|
|
223
|
-
// e.g., power of attorney, parental rights, etc.
|
|
224
|
-
return false;
|
|
225
|
-
}
|
|
226
|
-
async notifySupervisoryAuthority(details) {
|
|
227
|
-
// Notify relevant data protection authority
|
|
228
|
-
logger.info('Supervisory authority notified of data breach');
|
|
229
|
-
}
|
|
230
|
-
async notifyUserOfBreach(userId, details) {
|
|
231
|
-
// Send breach notification to user
|
|
232
|
-
logger.info(`User ${userId} notified of data breach`);
|
|
233
|
-
}
|
|
234
|
-
async documentDataBreach(details) {
|
|
235
|
-
// Document breach in audit log
|
|
236
|
-
logger.info('Data breach documented');
|
|
237
|
-
}
|
|
238
|
-
async loadPrivacyPolicies() {
|
|
239
|
-
// Load current privacy policy versions
|
|
240
|
-
}
|
|
241
|
-
async generateParentalConsentToken(userId, parentEmail) {
|
|
242
|
-
// Generate token for parental consent
|
|
243
|
-
return `parent_consent_${Date.now()}`;
|
|
244
|
-
}
|
|
245
|
-
checkAdequacyDecision(country) {
|
|
246
|
-
// Countries with EU adequacy decisions
|
|
247
|
-
const adequacyCountries = [
|
|
248
|
-
'AD', 'AR', 'CA', 'CH', 'FO', 'GB', 'GG', 'IL',
|
|
249
|
-
'IM', 'JE', 'JP', 'NZ', 'KR', 'UY',
|
|
250
|
-
];
|
|
251
|
-
return adequacyCountries.includes(country);
|
|
252
|
-
}
|
|
253
|
-
async getExplicitTransferConsent(userId, country, purpose) {
|
|
254
|
-
// Check for explicit consent for data transfer
|
|
255
|
-
return false;
|
|
256
|
-
}
|
|
257
|
-
async logCrossBorderTransfer(userId, country, basis) {
|
|
258
|
-
logger.info(`Cross-border transfer: user=${userId}, country=${country}, basis=${basis}`);
|
|
259
|
-
}
|
|
260
|
-
async processScheduledDeletions() {
|
|
261
|
-
// Process any scheduled deletion requests
|
|
262
|
-
logger.info('Processing scheduled deletions');
|
|
263
|
-
}
|
|
264
|
-
async reviewConsentValidity() {
|
|
265
|
-
// Review and refresh expired consents
|
|
266
|
-
logger.info('Reviewing consent validity');
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
// Export singleton instance
|
|
270
|
-
export const gdprManager = new GDPRComplianceManager();
|
|
271
|
-
// Re-export components
|
|
272
|
-
export { consentManager, ConsentType, ProcessingPurpose, dataPortabilityManager, ExportFormat, DataCategory, rightToErasureManager, DeletionScope, } from './consent.js';
|
|
273
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/server/oauth/gdpr/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAe,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC1F,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAElD;;;GAGG;AACH,MAAM,OAAO,qBAAqB;IAChC;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QAEpD,wBAAwB;QACxB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE1B,wBAAwB;QACxB,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAEjC,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IACrD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAChB,MAAc,EACd,KAAa,EACb,OAOC;QAED,qCAAqC;QACrC,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACzC,MAAM,gBAAgB,GAAG,MAAM,cAAc,CAAC,uBAAuB,CACnE,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,OAAO,CAChB,CAAC;YAEF,IAAI,gBAAgB,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;QAED,4BAA4B;QAC5B,MAAM,cAAc,CAAC,aAAa,CAChC,MAAM,EACN,iBAAiB,CAAC,cAAc,EAChC,IAAI,EACJ;YACE,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,CACF,CAAC;QAEF,MAAM,cAAc,CAAC,aAAa,CAChC,MAAM,EACN,iBAAiB,CAAC,YAAY,EAC9B,IAAI,EACJ;YACE,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,CACF,CAAC;QAEF,2BAA2B;QAC3B,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAC7B,MAAM,cAAc,CAAC,aAAa,CAChC,MAAM,EACN,iBAAiB,CAAC,SAAS,EAC3B,IAAI,EACJ;gBACE,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;aAC7B,CACF,CAAC;QACJ,CAAC;QAED,iDAAiD;QACjD,MAAM,cAAc,CAAC,aAAa,CAChC,MAAM,EACN,iBAAiB,CAAC,SAAS,EAC3B,IAAI,EACJ;YACE,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,CACF,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC,kDAAkD,MAAM,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,uBAAuB,CAC3B,MAAc,EACd,WAAmB,EACnB,UAA2B;QAE3B,iCAAiC;QACjC,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;YAC3B,6CAA6C;YAC7C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,6BAA6B,CACzD,WAAW,EACX,MAAM,CACP,CAAC;YAEF,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;QAED,wBAAwB;QACxB,MAAM,aAAa,GAAG,MAAM,sBAAsB,CAAC,aAAa,CAC9D,MAAM,EACN,UAAU,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAChC,YAAY,CAAC,IAAI,EACjB;YACE,WAAW;YACX,MAAM,EAAE,mCAAmC;SAC5C,CACF,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC,0CAA0C,MAAM,KAAK,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC;QACrF,OAAO,aAAa,CAAC,EAAE,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,wBAAwB,CAC5B,MAAc,EACd,SAAuB,YAAY,CAAC,IAAI,EACxC,YAAqB,IAAI;QAEzB,MAAM,aAAa,GAAG,MAAM,sBAAsB,CAAC,aAAa,CAC9D,MAAM,EACN,CAAC,YAAY,CAAC,GAAG,CAAC,EAClB,MAAM,EACN;YACE,MAAM,EAAE,oCAAoC;YAC5C,SAAS;SACV,CACF,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC,+CAA+C,MAAM,KAAK,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1F,OAAO,aAAa,CAAC,EAAE,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,qBAAqB,CACzB,MAAc,EACd,MAAe,EACf,YAAqB,KAAK;QAE1B,MAAM,eAAe,GAAG,MAAM,qBAAqB,CAAC,eAAe,CACjE,MAAM,EACN,aAAa,CAAC,IAAI,EAClB;YACE,MAAM,EAAE,MAAM,IAAI,oCAAoC;YACtD,SAAS;SACV,CACF,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC,uCAAuC,MAAM,KAAK,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC;QACpF,OAAO,eAAe,CAAC,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CACjB,MAAc,EACd,OAA0B,EAC1B,OAAgB,EAChB,OAGC;QAED,MAAM,cAAc,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACtE,MAAM,CAAC,IAAI,CAAC,4BAA4B,MAAM,KAAK,OAAO,MAAM,OAAO,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CACtB,MAAc,EACd,OAA0B;QAE1B,OAAO,MAAM,cAAc,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CACpB,aAAuB,EACvB,aAMC;QAED,MAAM,CAAC,KAAK,CAAC,kCAAkC,aAAa,CAAC,MAAM,QAAQ,CAAC,CAAC;QAE7E,gDAAgD;QAChD,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC;QAE/E,+BAA+B;QAC/B,MAAM,IAAI,CAAC,0BAA0B,CAAC,aAAa,CAAC,CAAC;QAErD,uDAAuD;QACvD,IAAI,aAAa,CAAC,QAAQ,KAAK,MAAM,IAAI,aAAa,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;YAC/E,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;gBACnC,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QAED,kBAAkB;QAClB,MAAM,IAAI,CAAC,kBAAkB,CAAC;YAC5B,GAAG,aAAa;YAChB,aAAa,EAAE,aAAa,CAAC,MAAM;YACnC,oBAAoB,EAAE,QAAQ;YAC9B,iBAAiB,EAAE,IAAI,IAAI,EAAE;SAC9B,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,qBAAqB,CACzB,SAAe,EACf,OAAa;QAYb,iDAAiD;QACjD,OAAO;YACL,UAAU,EAAE,CAAC;YACb,YAAY,EAAE,EAAE;YAChB,YAAY,EAAE;gBACZ,MAAM,EAAE,CAAC;gBACT,WAAW,EAAE,CAAC;gBACd,QAAQ,EAAE,CAAC;aACZ;YACD,QAAQ,EAAE,CAAC;YACX,oBAAoB,EAAE,CAAC;SACxB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB,CACvB,MAAc,EACd,SAAe,EACf,OAAe,EACf,WAAoB;QAMpB,MAAM,gBAAgB,GAAG,MAAM,cAAc,CAAC,uBAAuB,CACnE,SAAS,EACT,OAAO,CACR,CAAC;QAEF,IAAI,gBAAgB,IAAI,CAAC,WAAW,EAAE,CAAC;YACrC,OAAO;gBACL,WAAW,EAAE,KAAK;gBAClB,gBAAgB,EAAE,IAAI;aACvB,CAAC;QACJ,CAAC;QAED,IAAI,gBAAgB,IAAI,WAAW,EAAE,CAAC;YACpC,oCAAoC;YACpC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,4BAA4B,CACnD,MAAM,EACN,WAAW,CACZ,CAAC;YAEF,OAAO;gBACL,WAAW,EAAE,KAAK;gBAClB,gBAAgB,EAAE,IAAI;gBACtB,oBAAoB,EAAE,KAAK;aAC5B,CAAC;QACJ,CAAC;QAED,OAAO;YACL,WAAW,EAAE,IAAI;YACjB,gBAAgB,EAAE,KAAK;SACxB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,4BAA4B,CAChC,MAAc,EACd,kBAA0B,EAC1B,OAAe,EACf,UAAkD;QAElD,6CAA6C;QAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;QAEnE,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,kBAAkB,EAAE,UAAU,CAAC,CAAC;YAC1E,OAAO,IAAI,CAAC;QACd,CAAC;QAED,iDAAiD;QACjD,QAAQ,UAAU,EAAE,CAAC;YACnB,KAAK,KAAK,CAAC,CAAC,+BAA+B;YAC3C,KAAK,KAAK,EAAE,0BAA0B;gBACpC,MAAM,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,kBAAkB,EAAE,UAAU,CAAC,CAAC;gBAC1E,OAAO,IAAI,CAAC;YAEd,KAAK,SAAS;gBACZ,2DAA2D;gBAC3D,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,0BAA0B,CACtD,MAAM,EACN,kBAAkB,EAClB,OAAO,CACR,CAAC;gBACF,IAAI,UAAU,EAAE,CAAC;oBACf,MAAM,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,kBAAkB,EAAE,SAAS,CAAC,CAAC;oBACzE,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,OAAO,KAAK,CAAC;YAEf;gBACE,OAAO,KAAK,CAAC;QACjB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,kBAAkB;QACxB,kCAAkC;QAClC,WAAW,CAAC,KAAK,IAAI,EAAE;YACrB,MAAM,sBAAsB,CAAC,qBAAqB,EAAE,CAAC;QACvD,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC;QAEjB,sCAAsC;QACtC,WAAW,CAAC,KAAK,IAAI,EAAE;YACrB,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACzC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC;QAErB,mCAAmC;QACnC,WAAW,CAAC,KAAK,IAAI,EAAE;YACrB,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACrC,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC;IACxB,CAAC;IAED,iBAAiB;IAET,KAAK,CAAC,6BAA6B,CACzC,WAAmB,EACnB,MAAc;QAEd,6CAA6C;QAC7C,iDAAiD;QACjD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,KAAK,CAAC,0BAA0B,CAAC,OAAY;QACnD,4CAA4C;QAC5C,MAAM,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;IAC/D,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,MAAc,EAAE,OAAY;QAC3D,mCAAmC;QACnC,MAAM,CAAC,IAAI,CAAC,QAAQ,MAAM,0BAA0B,CAAC,CAAC;IACxD,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,OAAY;QAC3C,+BAA+B;QAC/B,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACxC,CAAC;IAEO,KAAK,CAAC,mBAAmB;QAC/B,uCAAuC;IACzC,CAAC;IAEO,KAAK,CAAC,4BAA4B,CACxC,MAAc,EACd,WAAmB;QAEnB,sCAAsC;QACtC,OAAO,kBAAkB,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IACxC,CAAC;IAEO,qBAAqB,CAAC,OAAe;QAC3C,uCAAuC;QACvC,MAAM,iBAAiB,GAAG;YACxB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;YAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;SACnC,CAAC;QACF,OAAO,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IAEO,KAAK,CAAC,0BAA0B,CACtC,MAAc,EACd,OAAe,EACf,OAAe;QAEf,+CAA+C;QAC/C,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAClC,MAAc,EACd,OAAe,EACf,KAAa;QAEb,MAAM,CAAC,IAAI,CAAC,+BAA+B,MAAM,aAAa,OAAO,WAAW,KAAK,EAAE,CAAC,CAAC;IAC3F,CAAC;IAEO,KAAK,CAAC,yBAAyB;QACrC,0CAA0C;QAC1C,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAChD,CAAC;IAEO,KAAK,CAAC,qBAAqB;QACjC,sCAAsC;QACtC,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IAC5C,CAAC;CACF;AAED,4BAA4B;AAC5B,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,qBAAqB,EAAE,CAAC;AAEvD,uBAAuB;AACvB,OAAO,EACL,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,sBAAsB,EACtB,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,aAAa,GACd,MAAM,cAAc,CAAC"}
|
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Deletion scope options
|
|
3
|
-
*/
|
|
4
|
-
export declare enum DeletionScope {
|
|
5
|
-
FULL = "full",// Complete account deletion
|
|
6
|
-
PARTIAL = "partial",// Selective data deletion
|
|
7
|
-
ANONYMIZE = "anonymize",// Replace with anonymous data
|
|
8
|
-
PSEUDONYMIZE = "pseudonymize",// Replace with pseudonyms
|
|
9
|
-
ARCHIVE = "archive"
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Data retention reasons (lawful basis to refuse deletion)
|
|
13
|
-
*/
|
|
14
|
-
export declare enum RetentionReason {
|
|
15
|
-
LEGAL_OBLIGATION = "legal_obligation",// Legal requirement to retain
|
|
16
|
-
CONTRACT_FULFILLMENT = "contract",// Needed for contract
|
|
17
|
-
VITAL_INTERESTS = "vital_interests",// Protect vital interests
|
|
18
|
-
PUBLIC_INTEREST = "public_interest",// Public interest task
|
|
19
|
-
LEGAL_CLAIMS = "legal_claims",// Legal claims/defense
|
|
20
|
-
FREEDOM_OF_EXPRESSION = "expression",// Freedom of expression
|
|
21
|
-
COMPLIANCE = "compliance",// Regulatory compliance
|
|
22
|
-
FINANCIAL_RECORDS = "financial",// Financial record keeping
|
|
23
|
-
FRAUD_PREVENTION = "fraud"
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Deletion request status
|
|
27
|
-
*/
|
|
28
|
-
export declare enum DeletionStatus {
|
|
29
|
-
PENDING = "pending",
|
|
30
|
-
REVIEWING = "reviewing",
|
|
31
|
-
APPROVED = "approved",
|
|
32
|
-
IN_PROGRESS = "in_progress",
|
|
33
|
-
COMPLETED = "completed",
|
|
34
|
-
PARTIALLY_COMPLETED = "partially_completed",
|
|
35
|
-
REJECTED = "rejected",
|
|
36
|
-
CANCELLED = "cancelled"
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Deletion request
|
|
40
|
-
*/
|
|
41
|
-
export interface DeletionRequest {
|
|
42
|
-
id: string;
|
|
43
|
-
userId: string;
|
|
44
|
-
requestedAt: Date;
|
|
45
|
-
requestedBy: string;
|
|
46
|
-
scope: DeletionScope;
|
|
47
|
-
status: DeletionStatus;
|
|
48
|
-
reviewedBy?: string;
|
|
49
|
-
reviewedAt?: Date;
|
|
50
|
-
completedAt?: Date;
|
|
51
|
-
scheduledFor?: Date;
|
|
52
|
-
reason?: string;
|
|
53
|
-
rejectionReason?: RetentionReason[];
|
|
54
|
-
retainedData?: {
|
|
55
|
-
category: string;
|
|
56
|
-
reason: RetentionReason;
|
|
57
|
-
retentionPeriod?: number;
|
|
58
|
-
legalBasis: string;
|
|
59
|
-
}[];
|
|
60
|
-
deletionReport?: DeletionReport;
|
|
61
|
-
verificationToken?: string;
|
|
62
|
-
metadata?: {
|
|
63
|
-
ipAddress: string;
|
|
64
|
-
userAgent: string;
|
|
65
|
-
verified: boolean;
|
|
66
|
-
notificationsSent: string[];
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Deletion report
|
|
71
|
-
*/
|
|
72
|
-
export interface DeletionReport {
|
|
73
|
-
deletedCategories: string[];
|
|
74
|
-
deletedRecords: number;
|
|
75
|
-
retainedCategories?: string[];
|
|
76
|
-
anonymizedRecords?: number;
|
|
77
|
-
pseudonymizedRecords?: number;
|
|
78
|
-
backupReference?: string;
|
|
79
|
-
thirdPartyNotifications?: {
|
|
80
|
-
provider: string;
|
|
81
|
-
notified: boolean;
|
|
82
|
-
response?: string;
|
|
83
|
-
}[];
|
|
84
|
-
completionCertificate?: string;
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Data category for deletion
|
|
88
|
-
*/
|
|
89
|
-
export interface DataCategory {
|
|
90
|
-
name: string;
|
|
91
|
-
table: string;
|
|
92
|
-
userIdColumn: string;
|
|
93
|
-
deletable: boolean;
|
|
94
|
-
retentionPeriod?: number;
|
|
95
|
-
anonymizable: boolean;
|
|
96
|
-
criticalData: boolean;
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* GDPR Right to Erasure Manager
|
|
100
|
-
* Implements GDPR Article 17 - Right to be forgotten
|
|
101
|
-
*/
|
|
102
|
-
export declare class RightToErasureManager {
|
|
103
|
-
private readonly VERIFICATION_EXPIRY;
|
|
104
|
-
private readonly DELETION_DELAY_DAYS;
|
|
105
|
-
private readonly MAX_RETRY_ATTEMPTS;
|
|
106
|
-
private deletionQueue;
|
|
107
|
-
private verificationTokens;
|
|
108
|
-
private readonly dataCategories;
|
|
109
|
-
/**
|
|
110
|
-
* Request account deletion
|
|
111
|
-
*/
|
|
112
|
-
requestDeletion(userId: string, scope?: DeletionScope, options?: {
|
|
113
|
-
reason?: string;
|
|
114
|
-
immediate?: boolean;
|
|
115
|
-
requestedBy?: string;
|
|
116
|
-
ipAddress?: string;
|
|
117
|
-
userAgent?: string;
|
|
118
|
-
skipVerification?: boolean;
|
|
119
|
-
}): Promise<DeletionRequest>;
|
|
120
|
-
/**
|
|
121
|
-
* Verify deletion request
|
|
122
|
-
*/
|
|
123
|
-
verifyDeletion(requestId: string, verificationToken: string): Promise<boolean>;
|
|
124
|
-
/**
|
|
125
|
-
* Process deletion request
|
|
126
|
-
*/
|
|
127
|
-
processDeletion(request: DeletionRequest): Promise<DeletionReport>;
|
|
128
|
-
/**
|
|
129
|
-
* Process individual data category
|
|
130
|
-
*/
|
|
131
|
-
private processDataCategory;
|
|
132
|
-
/**
|
|
133
|
-
* Delete user data from category
|
|
134
|
-
*/
|
|
135
|
-
private deleteData;
|
|
136
|
-
/**
|
|
137
|
-
* Anonymize user data
|
|
138
|
-
*/
|
|
139
|
-
private anonymizeData;
|
|
140
|
-
/**
|
|
141
|
-
* Pseudonymize user data
|
|
142
|
-
*/
|
|
143
|
-
private pseudonymizeData;
|
|
144
|
-
/**
|
|
145
|
-
* Archive user data before deletion
|
|
146
|
-
*/
|
|
147
|
-
private archiveData;
|
|
148
|
-
/**
|
|
149
|
-
* Partial deletion based on preferences
|
|
150
|
-
*/
|
|
151
|
-
private partialDeleteData;
|
|
152
|
-
/**
|
|
153
|
-
* Cancel deletion request
|
|
154
|
-
*/
|
|
155
|
-
cancelDeletion(requestId: string, userId: string, reason?: string): Promise<boolean>;
|
|
156
|
-
/**
|
|
157
|
-
* Check retention requirements
|
|
158
|
-
*/
|
|
159
|
-
private checkRetentionRequirements;
|
|
160
|
-
/**
|
|
161
|
-
* Notify third-party services
|
|
162
|
-
*/
|
|
163
|
-
private notifyThirdParties;
|
|
164
|
-
/**
|
|
165
|
-
* Generate completion certificate
|
|
166
|
-
*/
|
|
167
|
-
private generateCompletionCertificate;
|
|
168
|
-
private generateRequestId;
|
|
169
|
-
private generateVerificationToken;
|
|
170
|
-
private getLegalBasis;
|
|
171
|
-
private getDeletionRequest;
|
|
172
|
-
private getActiveDeletionRequest;
|
|
173
|
-
private storeDeletionRequest;
|
|
174
|
-
private updateDeletionRequest;
|
|
175
|
-
private checkRetentionPeriod;
|
|
176
|
-
private checkLegalHold;
|
|
177
|
-
private checkFinancialObligations;
|
|
178
|
-
private checkFraudInvestigation;
|
|
179
|
-
private createBackup;
|
|
180
|
-
private sendVerificationEmail;
|
|
181
|
-
private sendDeletionConfirmation;
|
|
182
|
-
}
|
|
183
|
-
export declare const rightToErasureManager: RightToErasureManager;
|
|
184
|
-
//# sourceMappingURL=rightToErasure.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rightToErasure.d.ts","sourceRoot":"","sources":["../../../../src/server/oauth/gdpr/rightToErasure.ts"],"names":[],"mappings":"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"}
|