couchloop-eq-mcp 1.0.4 → 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/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.map +1 -1
- package/dist/types/auth.js +1 -2
- 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,486 +0,0 @@
|
|
|
1
|
-
import * as tar from 'tar';
|
|
2
|
-
import { logger } from '../../../utils/logger.js';
|
|
3
|
-
import { getDb } from '../../../db/client.js';
|
|
4
|
-
import { createHash, randomBytes } from 'crypto';
|
|
5
|
-
import path from 'path';
|
|
6
|
-
/**
|
|
7
|
-
* Data export format options
|
|
8
|
-
*/
|
|
9
|
-
export var ExportFormat;
|
|
10
|
-
(function (ExportFormat) {
|
|
11
|
-
ExportFormat["JSON"] = "json";
|
|
12
|
-
ExportFormat["CSV"] = "csv";
|
|
13
|
-
ExportFormat["XML"] = "xml";
|
|
14
|
-
ExportFormat["PDF"] = "pdf";
|
|
15
|
-
ExportFormat["ARCHIVE"] = "archive";
|
|
16
|
-
})(ExportFormat || (ExportFormat = {}));
|
|
17
|
-
/**
|
|
18
|
-
* Data categories for export
|
|
19
|
-
*/
|
|
20
|
-
export var DataCategory;
|
|
21
|
-
(function (DataCategory) {
|
|
22
|
-
DataCategory["PROFILE"] = "profile";
|
|
23
|
-
DataCategory["AUTHENTICATION"] = "authentication";
|
|
24
|
-
DataCategory["SESSIONS"] = "sessions";
|
|
25
|
-
DataCategory["INSIGHTS"] = "insights";
|
|
26
|
-
DataCategory["CONSENTS"] = "consents";
|
|
27
|
-
DataCategory["ACTIVITY_LOGS"] = "activity_logs";
|
|
28
|
-
DataCategory["COMMUNICATIONS"] = "communications";
|
|
29
|
-
DataCategory["PREFERENCES"] = "preferences";
|
|
30
|
-
DataCategory["THIRD_PARTY_DATA"] = "third_party";
|
|
31
|
-
DataCategory["DERIVED_DATA"] = "derived";
|
|
32
|
-
DataCategory["ALL"] = "all";
|
|
33
|
-
})(DataCategory || (DataCategory = {}));
|
|
34
|
-
/**
|
|
35
|
-
* Export request status
|
|
36
|
-
*/
|
|
37
|
-
export var ExportStatus;
|
|
38
|
-
(function (ExportStatus) {
|
|
39
|
-
ExportStatus["PENDING"] = "pending";
|
|
40
|
-
ExportStatus["PROCESSING"] = "processing";
|
|
41
|
-
ExportStatus["COMPLETED"] = "completed";
|
|
42
|
-
ExportStatus["FAILED"] = "failed";
|
|
43
|
-
ExportStatus["EXPIRED"] = "expired";
|
|
44
|
-
ExportStatus["CANCELLED"] = "cancelled";
|
|
45
|
-
})(ExportStatus || (ExportStatus = {}));
|
|
46
|
-
/**
|
|
47
|
-
* GDPR Data Portability Manager
|
|
48
|
-
* Implements GDPR Article 20 - Right to data portability
|
|
49
|
-
*/
|
|
50
|
-
export class DataPortabilityManager {
|
|
51
|
-
EXPORT_VERSION = '1.0.0';
|
|
52
|
-
EXPORT_EXPIRY_HOURS = 72; // 3 days
|
|
53
|
-
MAX_EXPORT_SIZE_MB = 1000; // 1GB limit
|
|
54
|
-
CHUNK_SIZE = 1024 * 1024; // 1MB chunks
|
|
55
|
-
exportQueue = new Map();
|
|
56
|
-
/**
|
|
57
|
-
* Request data export
|
|
58
|
-
*/
|
|
59
|
-
async requestExport(userId, categories = [DataCategory.ALL], format = ExportFormat.JSON, options) {
|
|
60
|
-
// Check for existing pending export
|
|
61
|
-
const existingExport = await this.getActiveExport(userId);
|
|
62
|
-
if (existingExport) {
|
|
63
|
-
logger.warn(`Export already in progress for user ${userId}`);
|
|
64
|
-
return existingExport;
|
|
65
|
-
}
|
|
66
|
-
const exportId = this.generateExportId(userId);
|
|
67
|
-
const now = new Date();
|
|
68
|
-
const request = {
|
|
69
|
-
id: exportId,
|
|
70
|
-
userId,
|
|
71
|
-
requestedAt: now,
|
|
72
|
-
requestedBy: options?.requestedBy || userId,
|
|
73
|
-
categories: categories.includes(DataCategory.ALL)
|
|
74
|
-
? Object.values(DataCategory).filter(c => c !== DataCategory.ALL)
|
|
75
|
-
: categories,
|
|
76
|
-
format,
|
|
77
|
-
status: ExportStatus.PENDING,
|
|
78
|
-
expiresAt: new Date(now.getTime() + this.EXPORT_EXPIRY_HOURS * 3600000),
|
|
79
|
-
metadata: {
|
|
80
|
-
ipAddress: options?.ipAddress || '',
|
|
81
|
-
userAgent: options?.userAgent || '',
|
|
82
|
-
reason: options?.reason,
|
|
83
|
-
includeDeleted: options?.includeDeleted || false,
|
|
84
|
-
dateRange: options?.dateRange,
|
|
85
|
-
},
|
|
86
|
-
};
|
|
87
|
-
// Generate encryption key if requested
|
|
88
|
-
if (options?.encrypted) {
|
|
89
|
-
request.encryptionKey = randomBytes(32).toString('base64');
|
|
90
|
-
}
|
|
91
|
-
// Store request
|
|
92
|
-
await this.storeExportRequest(request);
|
|
93
|
-
this.exportQueue.set(exportId, request);
|
|
94
|
-
// Process asynchronously
|
|
95
|
-
this.processExportAsync(request);
|
|
96
|
-
logger.info(`Data export requested for user ${userId}: ${exportId}`);
|
|
97
|
-
return request;
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Process export asynchronously
|
|
101
|
-
*/
|
|
102
|
-
async processExportAsync(request) {
|
|
103
|
-
try {
|
|
104
|
-
// Update status
|
|
105
|
-
request.status = ExportStatus.PROCESSING;
|
|
106
|
-
await this.updateExportRequest(request);
|
|
107
|
-
// Collect user data
|
|
108
|
-
const userData = await this.collectUserData(request.userId, request.categories, request.metadata?.dateRange);
|
|
109
|
-
// Validate data size
|
|
110
|
-
const estimatedSize = this.estimateDataSize(userData);
|
|
111
|
-
if (estimatedSize > this.MAX_EXPORT_SIZE_MB * 1024 * 1024) {
|
|
112
|
-
throw new Error(`Export size exceeds limit: ${estimatedSize} bytes`);
|
|
113
|
-
}
|
|
114
|
-
// Generate export file
|
|
115
|
-
const filePath = await this.generateExportFile(userData, request.format, request.encryptionKey);
|
|
116
|
-
// Calculate checksum
|
|
117
|
-
const checksum = await this.calculateChecksum(filePath);
|
|
118
|
-
// Upload to secure storage
|
|
119
|
-
const downloadUrl = await this.uploadToStorage(filePath, request.id);
|
|
120
|
-
// Update request
|
|
121
|
-
request.status = ExportStatus.COMPLETED;
|
|
122
|
-
request.completedAt = new Date();
|
|
123
|
-
request.downloadUrl = downloadUrl;
|
|
124
|
-
request.checksum = checksum;
|
|
125
|
-
request.fileSize = estimatedSize;
|
|
126
|
-
await this.updateExportRequest(request);
|
|
127
|
-
// Send notification
|
|
128
|
-
await this.notifyExportComplete(request);
|
|
129
|
-
logger.info(`Export completed for user ${request.userId}: ${request.id}`);
|
|
130
|
-
}
|
|
131
|
-
catch (error) {
|
|
132
|
-
logger.error(`Export failed for user ${request.userId}:`, error);
|
|
133
|
-
request.status = ExportStatus.FAILED;
|
|
134
|
-
await this.updateExportRequest(request);
|
|
135
|
-
await this.notifyExportFailed(request, error);
|
|
136
|
-
}
|
|
137
|
-
finally {
|
|
138
|
-
this.exportQueue.delete(request.id);
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* Collect all user data for export
|
|
143
|
-
*/
|
|
144
|
-
async collectUserData(userId, categories, dateRange) {
|
|
145
|
-
const data = {
|
|
146
|
-
exportVersion: this.EXPORT_VERSION,
|
|
147
|
-
exportDate: new Date(),
|
|
148
|
-
userId,
|
|
149
|
-
profile: await this.getUserProfile(userId),
|
|
150
|
-
authentication: await this.getAuthenticationData(userId),
|
|
151
|
-
data: {},
|
|
152
|
-
statistics: {
|
|
153
|
-
totalSessions: 0,
|
|
154
|
-
totalInsights: 0,
|
|
155
|
-
totalCheckpoints: 0,
|
|
156
|
-
dataPointsExported: 0,
|
|
157
|
-
},
|
|
158
|
-
legalNotice: this.generateLegalNotice(),
|
|
159
|
-
};
|
|
160
|
-
// Collect data by category
|
|
161
|
-
for (const category of categories) {
|
|
162
|
-
const categoryData = await this.collectCategoryData(userId, category, dateRange);
|
|
163
|
-
if (categoryData && categoryData.length > 0) {
|
|
164
|
-
data.data[category] = categoryData;
|
|
165
|
-
data.statistics.dataPointsExported += categoryData.length;
|
|
166
|
-
// Update statistics
|
|
167
|
-
switch (category) {
|
|
168
|
-
case DataCategory.SESSIONS:
|
|
169
|
-
data.statistics.totalSessions = categoryData.length;
|
|
170
|
-
break;
|
|
171
|
-
case DataCategory.INSIGHTS:
|
|
172
|
-
data.statistics.totalInsights = categoryData.length;
|
|
173
|
-
break;
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
// Add data relationships and cross-references
|
|
178
|
-
data.data.relationships = await this.getDataRelationships(userId);
|
|
179
|
-
return data;
|
|
180
|
-
}
|
|
181
|
-
/**
|
|
182
|
-
* Collect data for specific category
|
|
183
|
-
*/
|
|
184
|
-
async collectCategoryData(userId, category, dateRange) {
|
|
185
|
-
const db = getDb();
|
|
186
|
-
switch (category) {
|
|
187
|
-
case DataCategory.PROFILE:
|
|
188
|
-
return [await this.getUserProfile(userId)];
|
|
189
|
-
case DataCategory.SESSIONS:
|
|
190
|
-
// Get sessions with optional date range
|
|
191
|
-
return []; // Would query database
|
|
192
|
-
case DataCategory.INSIGHTS:
|
|
193
|
-
// Get user insights
|
|
194
|
-
return []; // Would query database
|
|
195
|
-
case DataCategory.CONSENTS:
|
|
196
|
-
// Get consent history
|
|
197
|
-
return []; // Would query database
|
|
198
|
-
case DataCategory.ACTIVITY_LOGS:
|
|
199
|
-
// Get activity logs
|
|
200
|
-
return []; // Would query database
|
|
201
|
-
case DataCategory.COMMUNICATIONS:
|
|
202
|
-
// Get communication preferences and history
|
|
203
|
-
return []; // Would query database
|
|
204
|
-
case DataCategory.PREFERENCES:
|
|
205
|
-
// Get user preferences
|
|
206
|
-
return []; // Would query database
|
|
207
|
-
case DataCategory.THIRD_PARTY_DATA:
|
|
208
|
-
// Get data from third-party integrations
|
|
209
|
-
return []; // Would query external services
|
|
210
|
-
case DataCategory.DERIVED_DATA:
|
|
211
|
-
// Get AI-derived insights and predictions
|
|
212
|
-
return []; // Would query database
|
|
213
|
-
default:
|
|
214
|
-
return [];
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
/**
|
|
218
|
-
* Generate export file in specified format
|
|
219
|
-
*/
|
|
220
|
-
async generateExportFile(data, format, encryptionKey) {
|
|
221
|
-
const tempDir = '/tmp/gdpr-exports';
|
|
222
|
-
const fileName = `export-${data.userId}-${Date.now()}`;
|
|
223
|
-
let filePath;
|
|
224
|
-
switch (format) {
|
|
225
|
-
case ExportFormat.JSON:
|
|
226
|
-
filePath = await this.generateJSONExport(data, tempDir, fileName);
|
|
227
|
-
break;
|
|
228
|
-
case ExportFormat.CSV:
|
|
229
|
-
filePath = await this.generateCSVExport(data, tempDir, fileName);
|
|
230
|
-
break;
|
|
231
|
-
case ExportFormat.XML:
|
|
232
|
-
filePath = await this.generateXMLExport(data, tempDir, fileName);
|
|
233
|
-
break;
|
|
234
|
-
case ExportFormat.PDF:
|
|
235
|
-
filePath = await this.generatePDFExport(data, tempDir, fileName);
|
|
236
|
-
break;
|
|
237
|
-
case ExportFormat.ARCHIVE:
|
|
238
|
-
filePath = await this.generateArchiveExport(data, tempDir, fileName);
|
|
239
|
-
break;
|
|
240
|
-
default:
|
|
241
|
-
throw new Error(`Unsupported format: ${format}`);
|
|
242
|
-
}
|
|
243
|
-
// Encrypt if requested
|
|
244
|
-
if (encryptionKey) {
|
|
245
|
-
filePath = await this.encryptExportFile(filePath, encryptionKey);
|
|
246
|
-
}
|
|
247
|
-
return filePath;
|
|
248
|
-
}
|
|
249
|
-
/**
|
|
250
|
-
* Generate JSON export
|
|
251
|
-
*/
|
|
252
|
-
async generateJSONExport(data, tempDir, fileName) {
|
|
253
|
-
const filePath = path.join(tempDir, `${fileName}.json`);
|
|
254
|
-
const content = JSON.stringify(data, null, 2);
|
|
255
|
-
await this.writeFile(filePath, content);
|
|
256
|
-
return filePath;
|
|
257
|
-
}
|
|
258
|
-
/**
|
|
259
|
-
* Generate CSV export (flattened data)
|
|
260
|
-
*/
|
|
261
|
-
async generateCSVExport(data, tempDir, fileName) {
|
|
262
|
-
const filePath = path.join(tempDir, `${fileName}.csv`);
|
|
263
|
-
// Convert nested data to CSV format
|
|
264
|
-
// This would use a CSV library in production
|
|
265
|
-
const csvContent = this.convertToCSV(data);
|
|
266
|
-
await this.writeFile(filePath, csvContent);
|
|
267
|
-
return filePath;
|
|
268
|
-
}
|
|
269
|
-
/**
|
|
270
|
-
* Generate XML export
|
|
271
|
-
*/
|
|
272
|
-
async generateXMLExport(data, tempDir, fileName) {
|
|
273
|
-
const filePath = path.join(tempDir, `${fileName}.xml`);
|
|
274
|
-
// Convert to XML format
|
|
275
|
-
const xmlContent = this.convertToXML(data);
|
|
276
|
-
await this.writeFile(filePath, xmlContent);
|
|
277
|
-
return filePath;
|
|
278
|
-
}
|
|
279
|
-
/**
|
|
280
|
-
* Generate PDF export (human-readable)
|
|
281
|
-
*/
|
|
282
|
-
async generatePDFExport(data, tempDir, fileName) {
|
|
283
|
-
const filePath = path.join(tempDir, `${fileName}.pdf`);
|
|
284
|
-
// Generate PDF (would use PDF library like pdfkit)
|
|
285
|
-
// For now, just create a placeholder
|
|
286
|
-
await this.writeFile(filePath, JSON.stringify(data));
|
|
287
|
-
return filePath;
|
|
288
|
-
}
|
|
289
|
-
/**
|
|
290
|
-
* Generate archive with all formats
|
|
291
|
-
*/
|
|
292
|
-
async generateArchiveExport(data, tempDir, fileName) {
|
|
293
|
-
const archiveDir = path.join(tempDir, fileName);
|
|
294
|
-
// Generate all formats
|
|
295
|
-
await this.generateJSONExport(data, archiveDir, 'data');
|
|
296
|
-
await this.generateCSVExport(data, archiveDir, 'data');
|
|
297
|
-
await this.generateXMLExport(data, archiveDir, 'data');
|
|
298
|
-
await this.generatePDFExport(data, archiveDir, 'report');
|
|
299
|
-
// Create TAR.GZ archive
|
|
300
|
-
const archivePath = path.join(tempDir, `${fileName}.tar.gz`);
|
|
301
|
-
await tar.create({
|
|
302
|
-
gzip: true,
|
|
303
|
-
file: archivePath,
|
|
304
|
-
cwd: tempDir,
|
|
305
|
-
}, [fileName]);
|
|
306
|
-
return archivePath;
|
|
307
|
-
}
|
|
308
|
-
/**
|
|
309
|
-
* Import user data (for transfer between services)
|
|
310
|
-
*/
|
|
311
|
-
async importUserData(importData, options) {
|
|
312
|
-
const result = {
|
|
313
|
-
success: false,
|
|
314
|
-
imported: 0,
|
|
315
|
-
skipped: 0,
|
|
316
|
-
errors: [],
|
|
317
|
-
};
|
|
318
|
-
try {
|
|
319
|
-
// Validate schema
|
|
320
|
-
if (options?.validateSchema) {
|
|
321
|
-
const valid = await this.validateImportSchema(importData);
|
|
322
|
-
if (!valid) {
|
|
323
|
-
result.errors.push('Invalid data schema');
|
|
324
|
-
return result;
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
// Check if user exists
|
|
328
|
-
const userExists = await this.checkUserExists(importData.userId);
|
|
329
|
-
if (userExists && !options?.merge) {
|
|
330
|
-
result.errors.push('User already exists');
|
|
331
|
-
return result;
|
|
332
|
-
}
|
|
333
|
-
// Import data by category
|
|
334
|
-
for (const [category, items] of Object.entries(importData.data)) {
|
|
335
|
-
try {
|
|
336
|
-
const imported = await this.importCategoryData(importData.userId, category, items, options);
|
|
337
|
-
result.imported += imported.count;
|
|
338
|
-
result.skipped += imported.skipped;
|
|
339
|
-
}
|
|
340
|
-
catch (error) {
|
|
341
|
-
result.errors.push(`Failed to import ${category}: ${error}`);
|
|
342
|
-
}
|
|
343
|
-
}
|
|
344
|
-
result.success = result.errors.length === 0;
|
|
345
|
-
logger.info(`Data import completed: ${result.imported} imported, ${result.skipped} skipped`);
|
|
346
|
-
}
|
|
347
|
-
catch (error) {
|
|
348
|
-
logger.error('Data import failed:', error);
|
|
349
|
-
result.errors.push(`Import failed: ${error}`);
|
|
350
|
-
}
|
|
351
|
-
return result;
|
|
352
|
-
}
|
|
353
|
-
/**
|
|
354
|
-
* Get export status
|
|
355
|
-
*/
|
|
356
|
-
async getExportStatus(exportId) {
|
|
357
|
-
return this.exportQueue.get(exportId) || null;
|
|
358
|
-
}
|
|
359
|
-
/**
|
|
360
|
-
* Cancel export request
|
|
361
|
-
*/
|
|
362
|
-
async cancelExport(exportId, userId) {
|
|
363
|
-
const request = this.exportQueue.get(exportId);
|
|
364
|
-
if (!request) {
|
|
365
|
-
return false;
|
|
366
|
-
}
|
|
367
|
-
if (request.userId !== userId) {
|
|
368
|
-
throw new Error('Unauthorized to cancel this export');
|
|
369
|
-
}
|
|
370
|
-
if (request.status !== ExportStatus.PENDING) {
|
|
371
|
-
throw new Error('Cannot cancel export in progress');
|
|
372
|
-
}
|
|
373
|
-
request.status = ExportStatus.CANCELLED;
|
|
374
|
-
await this.updateExportRequest(request);
|
|
375
|
-
this.exportQueue.delete(exportId);
|
|
376
|
-
logger.info(`Export cancelled: ${exportId}`);
|
|
377
|
-
return true;
|
|
378
|
-
}
|
|
379
|
-
/**
|
|
380
|
-
* Clean up expired exports
|
|
381
|
-
*/
|
|
382
|
-
async cleanupExpiredExports() {
|
|
383
|
-
const now = new Date();
|
|
384
|
-
let cleaned = 0;
|
|
385
|
-
for (const [id, request] of this.exportQueue) {
|
|
386
|
-
if (request.expiresAt < now) {
|
|
387
|
-
// Delete file from storage
|
|
388
|
-
if (request.downloadUrl) {
|
|
389
|
-
await this.deleteFromStorage(request.downloadUrl);
|
|
390
|
-
}
|
|
391
|
-
// Update status
|
|
392
|
-
request.status = ExportStatus.EXPIRED;
|
|
393
|
-
await this.updateExportRequest(request);
|
|
394
|
-
// Remove from queue
|
|
395
|
-
this.exportQueue.delete(id);
|
|
396
|
-
cleaned++;
|
|
397
|
-
}
|
|
398
|
-
}
|
|
399
|
-
logger.info(`Cleaned up ${cleaned} expired exports`);
|
|
400
|
-
return cleaned;
|
|
401
|
-
}
|
|
402
|
-
// Helper methods
|
|
403
|
-
generateExportId(userId) {
|
|
404
|
-
return `export_${userId}_${Date.now()}_${randomBytes(8).toString('hex')}`;
|
|
405
|
-
}
|
|
406
|
-
estimateDataSize(data) {
|
|
407
|
-
return JSON.stringify(data).length;
|
|
408
|
-
}
|
|
409
|
-
async calculateChecksum(filePath) {
|
|
410
|
-
return createHash('sha256')
|
|
411
|
-
.update(await this.readFile(filePath))
|
|
412
|
-
.digest('hex');
|
|
413
|
-
}
|
|
414
|
-
convertToCSV(data) {
|
|
415
|
-
// Simplified CSV conversion
|
|
416
|
-
return JSON.stringify(data); // Would use proper CSV library
|
|
417
|
-
}
|
|
418
|
-
convertToXML(data) {
|
|
419
|
-
// Simplified XML conversion
|
|
420
|
-
return `<?xml version="1.0"?><data>${JSON.stringify(data)}</data>`;
|
|
421
|
-
}
|
|
422
|
-
generateLegalNotice() {
|
|
423
|
-
return `This data export contains personal information protected under GDPR.
|
|
424
|
-
It is provided for data portability purposes as per Article 20 of GDPR.
|
|
425
|
-
This data should be handled securely and in compliance with applicable privacy laws.`;
|
|
426
|
-
}
|
|
427
|
-
// Mock database operations
|
|
428
|
-
async getUserProfile(userId) {
|
|
429
|
-
return { id: userId, email: 'user@example.com' };
|
|
430
|
-
}
|
|
431
|
-
async getAuthenticationData(userId) {
|
|
432
|
-
return { providers: ['google'], mfaEnabled: true, sessions: [] };
|
|
433
|
-
}
|
|
434
|
-
async getDataRelationships(userId) {
|
|
435
|
-
return {};
|
|
436
|
-
}
|
|
437
|
-
async storeExportRequest(request) {
|
|
438
|
-
// Store in database
|
|
439
|
-
}
|
|
440
|
-
async updateExportRequest(request) {
|
|
441
|
-
// Update in database
|
|
442
|
-
}
|
|
443
|
-
async getActiveExport(userId) {
|
|
444
|
-
// Check database for active exports
|
|
445
|
-
return null;
|
|
446
|
-
}
|
|
447
|
-
async uploadToStorage(filePath, exportId) {
|
|
448
|
-
// Upload to secure cloud storage
|
|
449
|
-
return `https://storage.example.com/exports/${exportId}`;
|
|
450
|
-
}
|
|
451
|
-
async deleteFromStorage(url) {
|
|
452
|
-
// Delete from cloud storage
|
|
453
|
-
}
|
|
454
|
-
async notifyExportComplete(request) {
|
|
455
|
-
// Send notification
|
|
456
|
-
}
|
|
457
|
-
async notifyExportFailed(request, error) {
|
|
458
|
-
// Send failure notification
|
|
459
|
-
}
|
|
460
|
-
async encryptExportFile(filePath, key) {
|
|
461
|
-
// Encrypt file
|
|
462
|
-
return `${filePath}.encrypted`;
|
|
463
|
-
}
|
|
464
|
-
async validateImportSchema(data) {
|
|
465
|
-
// Validate data structure
|
|
466
|
-
return true;
|
|
467
|
-
}
|
|
468
|
-
async checkUserExists(userId) {
|
|
469
|
-
// Check if user exists
|
|
470
|
-
return false;
|
|
471
|
-
}
|
|
472
|
-
async importCategoryData(userId, category, items, options) {
|
|
473
|
-
// Import data
|
|
474
|
-
return { count: items.length, skipped: 0 };
|
|
475
|
-
}
|
|
476
|
-
async writeFile(path, content) {
|
|
477
|
-
// Write file
|
|
478
|
-
}
|
|
479
|
-
async readFile(path) {
|
|
480
|
-
// Read file
|
|
481
|
-
return '';
|
|
482
|
-
}
|
|
483
|
-
}
|
|
484
|
-
// Export singleton instance
|
|
485
|
-
export const dataPortabilityManager = new DataPortabilityManager();
|
|
486
|
-
//# sourceMappingURL=dataPortability.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dataPortability.js","sourceRoot":"","sources":["../../../../src/server/oauth/gdpr/dataPortability.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import { ProcessingPurpose } from './consent.js';
|
|
2
|
-
import { ExportFormat, DataCategory } from './dataPortability.js';
|
|
3
|
-
/**
|
|
4
|
-
* GDPR Compliance Manager
|
|
5
|
-
* Central interface for all GDPR-related operations
|
|
6
|
-
*/
|
|
7
|
-
export declare class GDPRComplianceManager {
|
|
8
|
-
/**
|
|
9
|
-
* Initialize GDPR compliance
|
|
10
|
-
*/
|
|
11
|
-
initialize(): Promise<void>;
|
|
12
|
-
/**
|
|
13
|
-
* Handle user registration with GDPR compliance
|
|
14
|
-
*/
|
|
15
|
-
registerUser(userId: string, email: string, options: {
|
|
16
|
-
birthDate?: Date;
|
|
17
|
-
country?: string;
|
|
18
|
-
acceptedTerms: boolean;
|
|
19
|
-
marketingConsent?: boolean;
|
|
20
|
-
ipAddress?: string;
|
|
21
|
-
userAgent?: string;
|
|
22
|
-
}): Promise<void>;
|
|
23
|
-
/**
|
|
24
|
-
* Handle data access request
|
|
25
|
-
*/
|
|
26
|
-
handleDataAccessRequest(userId: string, requestedBy: string, categories?: DataCategory[]): Promise<string>;
|
|
27
|
-
/**
|
|
28
|
-
* Handle data portability request
|
|
29
|
-
*/
|
|
30
|
-
handlePortabilityRequest(userId: string, format?: ExportFormat, encrypted?: boolean): Promise<string>;
|
|
31
|
-
/**
|
|
32
|
-
* Handle deletion request
|
|
33
|
-
*/
|
|
34
|
-
handleDeletionRequest(userId: string, reason?: string, immediate?: boolean): Promise<string>;
|
|
35
|
-
/**
|
|
36
|
-
* Update consent preferences
|
|
37
|
-
*/
|
|
38
|
-
updateConsent(userId: string, purpose: ProcessingPurpose, granted: boolean, context?: {
|
|
39
|
-
ipAddress?: string;
|
|
40
|
-
userAgent?: string;
|
|
41
|
-
}): Promise<void>;
|
|
42
|
-
/**
|
|
43
|
-
* Check data processing lawfulness
|
|
44
|
-
*/
|
|
45
|
-
isProcessingLawful(userId: string, purpose: ProcessingPurpose): Promise<boolean>;
|
|
46
|
-
/**
|
|
47
|
-
* Handle data breach notification
|
|
48
|
-
*/
|
|
49
|
-
handleDataBreach(affectedUsers: string[], breachDetails: {
|
|
50
|
-
discoveredAt: Date;
|
|
51
|
-
description: string;
|
|
52
|
-
dataTypes: string[];
|
|
53
|
-
severity: 'low' | 'medium' | 'high' | 'critical';
|
|
54
|
-
mitigationSteps: string[];
|
|
55
|
-
}): Promise<void>;
|
|
56
|
-
/**
|
|
57
|
-
* Generate privacy report
|
|
58
|
-
*/
|
|
59
|
-
generatePrivacyReport(startDate: Date, endDate: Date): Promise<{
|
|
60
|
-
totalUsers: number;
|
|
61
|
-
consentStats: Record<string, number>;
|
|
62
|
-
dataRequests: {
|
|
63
|
-
access: number;
|
|
64
|
-
portability: number;
|
|
65
|
-
deletion: number;
|
|
66
|
-
};
|
|
67
|
-
breaches: number;
|
|
68
|
-
crossBorderTransfers: number;
|
|
69
|
-
}>;
|
|
70
|
-
/**
|
|
71
|
-
* Verify age and get parental consent if needed
|
|
72
|
-
*/
|
|
73
|
-
verifyAgeAndConsent(userId: string, birthDate: Date, country: string, parentEmail?: string): Promise<{
|
|
74
|
-
ageVerified: boolean;
|
|
75
|
-
requiresParental: boolean;
|
|
76
|
-
parentalConsentToken?: string;
|
|
77
|
-
}>;
|
|
78
|
-
/**
|
|
79
|
-
* Handle cross-border data transfer
|
|
80
|
-
*/
|
|
81
|
-
authorizeCrossBorderTransfer(userId: string, destinationCountry: string, purpose: string, safeguards: 'scc' | 'bcr' | 'adequacy' | 'consent'): Promise<boolean>;
|
|
82
|
-
/**
|
|
83
|
-
* Setup periodic GDPR tasks
|
|
84
|
-
*/
|
|
85
|
-
private setupPeriodicTasks;
|
|
86
|
-
private verifyDataAccessAuthorization;
|
|
87
|
-
private notifySupervisoryAuthority;
|
|
88
|
-
private notifyUserOfBreach;
|
|
89
|
-
private documentDataBreach;
|
|
90
|
-
private loadPrivacyPolicies;
|
|
91
|
-
private generateParentalConsentToken;
|
|
92
|
-
private checkAdequacyDecision;
|
|
93
|
-
private getExplicitTransferConsent;
|
|
94
|
-
private logCrossBorderTransfer;
|
|
95
|
-
private processScheduledDeletions;
|
|
96
|
-
private reviewConsentValidity;
|
|
97
|
-
}
|
|
98
|
-
export declare const gdprManager: GDPRComplianceManager;
|
|
99
|
-
export { consentManager, ConsentType, ProcessingPurpose, dataPortabilityManager, ExportFormat, DataCategory, rightToErasureManager, DeletionScope, } from './consent.js';
|
|
100
|
-
export type { ConsentRecord, ConsentPreferences, } from './consent.js';
|
|
101
|
-
export type { ExportRequest, UserDataExport, } from './dataPortability.js';
|
|
102
|
-
export type { DeletionRequest, DeletionReport, RetentionReason, } from './rightToErasure.js';
|
|
103
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/server/oauth/gdpr/index.ts"],"names":[],"mappings":"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"}
|