@tantainnovative/ndpr-toolkit 5.3.0 → 5.5.0
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/CHANGELOG.md +14 -0
- package/README.md +51 -7
- package/bin/ndpr.mjs +141 -0
- package/dist/breach.d.mts +9 -0
- package/dist/breach.d.ts +9 -0
- package/dist/breach.js +1 -1
- package/dist/breach.mjs +1 -1
- package/dist/chunk-5ZMYNOMR.mjs +2 -0
- package/dist/chunk-JXK5RUR3.mjs +2 -0
- package/dist/chunk-LHQG25Y2.js +2 -0
- package/dist/chunk-OW4GO3JF.js +1 -0
- package/dist/chunk-Q5KB2DN3.mjs +1 -0
- package/dist/chunk-SZXHNJGG.mjs +1 -0
- package/dist/chunk-WJSUVPYX.mjs +1 -0
- package/dist/chunk-WKY26JLT.js +1 -0
- package/dist/chunk-XCKX2WKD.js +2 -0
- package/dist/chunk-Y346CURW.js +1 -0
- package/dist/core.d.mts +76 -0
- package/dist/core.d.ts +76 -0
- package/dist/core.js +1 -1
- package/dist/core.mjs +1 -1
- package/dist/headless.js +1 -1
- package/dist/headless.mjs +1 -1
- package/dist/hooks.js +1 -1
- package/dist/hooks.mjs +1 -1
- package/dist/index.d.mts +85 -0
- package/dist/index.d.ts +85 -0
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/dist/presets.d.mts +2 -0
- package/dist/presets.d.ts +2 -0
- package/dist/presets.js +1 -1
- package/dist/presets.mjs +1 -1
- package/dist/server.d.mts +320 -0
- package/dist/server.d.ts +320 -0
- package/dist/server.js +1 -1
- package/dist/server.mjs +1 -1
- package/package.json +5 -1
- package/dist/chunk-6MO3GS3B.js +0 -2
- package/dist/chunk-GYLUTVKB.js +0 -1
- package/dist/chunk-KOHFQIV4.mjs +0 -1
- package/dist/chunk-NKFTLFPD.mjs +0 -1
- package/dist/chunk-OXFULQTE.js +0 -1
- package/dist/chunk-WLZTATLL.mjs +0 -2
package/dist/core.d.mts
CHANGED
|
@@ -99,6 +99,15 @@ export declare function assessDPIARisk(dpiaResult: DPIAResult): {
|
|
|
99
99
|
*/
|
|
100
100
|
export declare function assessTransferRisk(transfer: CrossBorderTransfer): TransferRiskResult;
|
|
101
101
|
|
|
102
|
+
export declare interface AuditCheck {
|
|
103
|
+
id: string;
|
|
104
|
+
label: string;
|
|
105
|
+
status: AuditCheckStatus;
|
|
106
|
+
detail: string;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export declare type AuditCheckStatus = 'pass' | 'warn' | 'fail';
|
|
110
|
+
|
|
102
111
|
/**
|
|
103
112
|
* Breach notification types aligned with NDPA 2023 Section 40
|
|
104
113
|
* Data controllers must notify the NDPC within 72 hours of becoming aware of a breach
|
|
@@ -1170,6 +1179,11 @@ export declare function exportROPAToCSV(ropa: RecordOfProcessingActivities): str
|
|
|
1170
1179
|
*/
|
|
1171
1180
|
export declare function findUnfilledTokens(rendered: string): string[];
|
|
1172
1181
|
|
|
1182
|
+
export declare interface FormatAuditReportOptions {
|
|
1183
|
+
/** Wrap status symbols in ANSI colour codes. Default false. */
|
|
1184
|
+
color?: boolean;
|
|
1185
|
+
}
|
|
1186
|
+
|
|
1173
1187
|
/**
|
|
1174
1188
|
* Format a DSR request for display or submission. Returns the formatted
|
|
1175
1189
|
* payload plus a typed `errors` array of `{ field, code, message }` for any
|
|
@@ -1195,6 +1209,11 @@ export declare interface FormatDSRRequestStructuredResult {
|
|
|
1195
1209
|
data?: DSRRequest;
|
|
1196
1210
|
}
|
|
1197
1211
|
|
|
1212
|
+
/**
|
|
1213
|
+
* Render an `NdprAuditResult` as a plain-text report.
|
|
1214
|
+
*/
|
|
1215
|
+
export declare function formatNdprAuditReport(result: NdprAuditResult, options?: FormatAuditReportOptions): string;
|
|
1216
|
+
|
|
1198
1217
|
export declare const frenchLocale: Required<{
|
|
1199
1218
|
[K in keyof NDPRLocale]: Required<NonNullable<NDPRLocale[K]>>;
|
|
1200
1219
|
}>;
|
|
@@ -1427,6 +1446,58 @@ export declare interface ModuleScore {
|
|
|
1427
1446
|
gaps: string[];
|
|
1428
1447
|
}
|
|
1429
1448
|
|
|
1449
|
+
/**
|
|
1450
|
+
* Aggregate NDPA 2023 compliance audit — combines the compliance-score engine
|
|
1451
|
+
* with the GAID 2025 DCPMI classifier, Compliance Audit Returns scheduler, and
|
|
1452
|
+
* breach-notification checker into a single pass/fail result suitable for CI.
|
|
1453
|
+
*
|
|
1454
|
+
* Pure and React-free: drive it from a config file via the `ndpr audit` CLI, a
|
|
1455
|
+
* CI job, or a server route. Not legal advice — verify against current NDPC
|
|
1456
|
+
* guidance.
|
|
1457
|
+
*/
|
|
1458
|
+
|
|
1459
|
+
export declare interface NdprAuditInput {
|
|
1460
|
+
/** Compliance posture across the 8 NDPA modules. */
|
|
1461
|
+
compliance: ComplianceInput;
|
|
1462
|
+
/** Optional DCPMI classification input (GAID 2025 registration). */
|
|
1463
|
+
dcpmi?: DCPMIInput;
|
|
1464
|
+
/** Optional Compliance Audit Returns scheduling input. */
|
|
1465
|
+
car?: CARInput;
|
|
1466
|
+
/** Optional breach reports to check against the S. 40 / Article 33 duty. */
|
|
1467
|
+
breaches?: BreachReport[];
|
|
1468
|
+
}
|
|
1469
|
+
|
|
1470
|
+
export declare interface NdprAuditOptions {
|
|
1471
|
+
/** Minimum overall compliance score required to pass. Default 70. */
|
|
1472
|
+
minScore?: number;
|
|
1473
|
+
dcpmiOptions?: DCPMIClassificationOptions;
|
|
1474
|
+
carOptions?: CAROptions;
|
|
1475
|
+
breachOptions?: BreachNotificationOptions;
|
|
1476
|
+
}
|
|
1477
|
+
|
|
1478
|
+
export declare interface NdprAuditResult {
|
|
1479
|
+
/** True when the score meets `minScore` and no check is a hard failure. */
|
|
1480
|
+
passed: boolean;
|
|
1481
|
+
score: number;
|
|
1482
|
+
rating: ComplianceRating;
|
|
1483
|
+
minScore: number;
|
|
1484
|
+
checks: AuditCheck[];
|
|
1485
|
+
compliance: ComplianceReport;
|
|
1486
|
+
dcpmi?: DCPMIClassification;
|
|
1487
|
+
car?: ComplianceAuditReturn;
|
|
1488
|
+
breaches: Array<{
|
|
1489
|
+
id: string;
|
|
1490
|
+
title: string;
|
|
1491
|
+
assessment: BreachNotificationAssessment;
|
|
1492
|
+
}>;
|
|
1493
|
+
summary: {
|
|
1494
|
+
pass: number;
|
|
1495
|
+
warn: number;
|
|
1496
|
+
fail: number;
|
|
1497
|
+
};
|
|
1498
|
+
generatedAt: string;
|
|
1499
|
+
}
|
|
1500
|
+
|
|
1430
1501
|
/**
|
|
1431
1502
|
* Configuration for the NDPR toolkit provider.
|
|
1432
1503
|
*/
|
|
@@ -2247,6 +2318,11 @@ export declare interface ROPAValidationResult {
|
|
|
2247
2318
|
errors: string[];
|
|
2248
2319
|
}
|
|
2249
2320
|
|
|
2321
|
+
/**
|
|
2322
|
+
* Run the aggregate NDPA compliance audit.
|
|
2323
|
+
*/
|
|
2324
|
+
export declare function runNdprAudit(input: NdprAuditInput, options?: NdprAuditOptions): NdprAuditResult;
|
|
2325
|
+
|
|
2250
2326
|
/**
|
|
2251
2327
|
* Sanitizes user input to prevent XSS attacks.
|
|
2252
2328
|
* Escapes HTML special characters so that data rendered in dashboards
|
package/dist/core.d.ts
CHANGED
|
@@ -99,6 +99,15 @@ export declare function assessDPIARisk(dpiaResult: DPIAResult): {
|
|
|
99
99
|
*/
|
|
100
100
|
export declare function assessTransferRisk(transfer: CrossBorderTransfer): TransferRiskResult;
|
|
101
101
|
|
|
102
|
+
export declare interface AuditCheck {
|
|
103
|
+
id: string;
|
|
104
|
+
label: string;
|
|
105
|
+
status: AuditCheckStatus;
|
|
106
|
+
detail: string;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export declare type AuditCheckStatus = 'pass' | 'warn' | 'fail';
|
|
110
|
+
|
|
102
111
|
/**
|
|
103
112
|
* Breach notification types aligned with NDPA 2023 Section 40
|
|
104
113
|
* Data controllers must notify the NDPC within 72 hours of becoming aware of a breach
|
|
@@ -1170,6 +1179,11 @@ export declare function exportROPAToCSV(ropa: RecordOfProcessingActivities): str
|
|
|
1170
1179
|
*/
|
|
1171
1180
|
export declare function findUnfilledTokens(rendered: string): string[];
|
|
1172
1181
|
|
|
1182
|
+
export declare interface FormatAuditReportOptions {
|
|
1183
|
+
/** Wrap status symbols in ANSI colour codes. Default false. */
|
|
1184
|
+
color?: boolean;
|
|
1185
|
+
}
|
|
1186
|
+
|
|
1173
1187
|
/**
|
|
1174
1188
|
* Format a DSR request for display or submission. Returns the formatted
|
|
1175
1189
|
* payload plus a typed `errors` array of `{ field, code, message }` for any
|
|
@@ -1195,6 +1209,11 @@ export declare interface FormatDSRRequestStructuredResult {
|
|
|
1195
1209
|
data?: DSRRequest;
|
|
1196
1210
|
}
|
|
1197
1211
|
|
|
1212
|
+
/**
|
|
1213
|
+
* Render an `NdprAuditResult` as a plain-text report.
|
|
1214
|
+
*/
|
|
1215
|
+
export declare function formatNdprAuditReport(result: NdprAuditResult, options?: FormatAuditReportOptions): string;
|
|
1216
|
+
|
|
1198
1217
|
export declare const frenchLocale: Required<{
|
|
1199
1218
|
[K in keyof NDPRLocale]: Required<NonNullable<NDPRLocale[K]>>;
|
|
1200
1219
|
}>;
|
|
@@ -1427,6 +1446,58 @@ export declare interface ModuleScore {
|
|
|
1427
1446
|
gaps: string[];
|
|
1428
1447
|
}
|
|
1429
1448
|
|
|
1449
|
+
/**
|
|
1450
|
+
* Aggregate NDPA 2023 compliance audit — combines the compliance-score engine
|
|
1451
|
+
* with the GAID 2025 DCPMI classifier, Compliance Audit Returns scheduler, and
|
|
1452
|
+
* breach-notification checker into a single pass/fail result suitable for CI.
|
|
1453
|
+
*
|
|
1454
|
+
* Pure and React-free: drive it from a config file via the `ndpr audit` CLI, a
|
|
1455
|
+
* CI job, or a server route. Not legal advice — verify against current NDPC
|
|
1456
|
+
* guidance.
|
|
1457
|
+
*/
|
|
1458
|
+
|
|
1459
|
+
export declare interface NdprAuditInput {
|
|
1460
|
+
/** Compliance posture across the 8 NDPA modules. */
|
|
1461
|
+
compliance: ComplianceInput;
|
|
1462
|
+
/** Optional DCPMI classification input (GAID 2025 registration). */
|
|
1463
|
+
dcpmi?: DCPMIInput;
|
|
1464
|
+
/** Optional Compliance Audit Returns scheduling input. */
|
|
1465
|
+
car?: CARInput;
|
|
1466
|
+
/** Optional breach reports to check against the S. 40 / Article 33 duty. */
|
|
1467
|
+
breaches?: BreachReport[];
|
|
1468
|
+
}
|
|
1469
|
+
|
|
1470
|
+
export declare interface NdprAuditOptions {
|
|
1471
|
+
/** Minimum overall compliance score required to pass. Default 70. */
|
|
1472
|
+
minScore?: number;
|
|
1473
|
+
dcpmiOptions?: DCPMIClassificationOptions;
|
|
1474
|
+
carOptions?: CAROptions;
|
|
1475
|
+
breachOptions?: BreachNotificationOptions;
|
|
1476
|
+
}
|
|
1477
|
+
|
|
1478
|
+
export declare interface NdprAuditResult {
|
|
1479
|
+
/** True when the score meets `minScore` and no check is a hard failure. */
|
|
1480
|
+
passed: boolean;
|
|
1481
|
+
score: number;
|
|
1482
|
+
rating: ComplianceRating;
|
|
1483
|
+
minScore: number;
|
|
1484
|
+
checks: AuditCheck[];
|
|
1485
|
+
compliance: ComplianceReport;
|
|
1486
|
+
dcpmi?: DCPMIClassification;
|
|
1487
|
+
car?: ComplianceAuditReturn;
|
|
1488
|
+
breaches: Array<{
|
|
1489
|
+
id: string;
|
|
1490
|
+
title: string;
|
|
1491
|
+
assessment: BreachNotificationAssessment;
|
|
1492
|
+
}>;
|
|
1493
|
+
summary: {
|
|
1494
|
+
pass: number;
|
|
1495
|
+
warn: number;
|
|
1496
|
+
fail: number;
|
|
1497
|
+
};
|
|
1498
|
+
generatedAt: string;
|
|
1499
|
+
}
|
|
1500
|
+
|
|
1430
1501
|
/**
|
|
1431
1502
|
* Configuration for the NDPR toolkit provider.
|
|
1432
1503
|
*/
|
|
@@ -2247,6 +2318,11 @@ export declare interface ROPAValidationResult {
|
|
|
2247
2318
|
errors: string[];
|
|
2248
2319
|
}
|
|
2249
2320
|
|
|
2321
|
+
/**
|
|
2322
|
+
* Run the aggregate NDPA compliance audit.
|
|
2323
|
+
*/
|
|
2324
|
+
export declare function runNdprAudit(input: NdprAuditInput, options?: NdprAuditOptions): NdprAuditResult;
|
|
2325
|
+
|
|
2250
2326
|
/**
|
|
2251
2327
|
* Sanitizes user input to prevent XSS attacks.
|
|
2252
2328
|
* Escapes HTML special characters so that data rendered in dashboards
|
package/dist/core.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var chunkLP5KXMBY_js=require('./chunk-LP5KXMBY.js'),chunkNUOHT3LO_js=require('./chunk-NUOHT3LO.js'),
|
|
1
|
+
'use strict';var chunkLP5KXMBY_js=require('./chunk-LP5KXMBY.js'),chunkNUOHT3LO_js=require('./chunk-NUOHT3LO.js'),chunkXCKX2WKD_js=require('./chunk-XCKX2WKD.js'),chunkWKY26JLT_js=require('./chunk-WKY26JLT.js'),chunk7TTXS7JX_js=require('./chunk-7TTXS7JX.js'),chunk3YTAOT5O_js=require('./chunk-3YTAOT5O.js'),chunkY346CURW_js=require('./chunk-Y346CURW.js'),chunkD2ZKDQVL_js=require('./chunk-D2ZKDQVL.js'),chunk6LJHLE6G_js=require('./chunk-6LJHLE6G.js'),chunkYFBDJ4FH_js=require('./chunk-YFBDJ4FH.js'),chunkWZYCBW2R_js=require('./chunk-WZYCBW2R.js'),chunk4CVBQC66_js=require('./chunk-4CVBQC66.js'),chunk3IA3KDII_js=require('./chunk-3IA3KDII.js'),chunkDKLJ5DYN_js=require('./chunk-DKLJ5DYN.js'),chunkUXUMYP4L_js=require('./chunk-UXUMYP4L.js'),chunkR2ZZMATR_js=require('./chunk-R2ZZMATR.js'),chunkTQZWJGJ2_js=require('./chunk-TQZWJGJ2.js'),chunkZVOIR4QH_js=require('./chunk-ZVOIR4QH.js'),chunkI5ZDNSX5_js=require('./chunk-I5ZDNSX5.js'),chunk7563FVMY_js=require('./chunk-7563FVMY.js');require('./chunk-RFPLZDIO.js');Object.defineProperty(exports,"arabicLocale",{enumerable:true,get:function(){return chunkLP5KXMBY_js.e}});Object.defineProperty(exports,"frenchLocale",{enumerable:true,get:function(){return chunkLP5KXMBY_js.f}});Object.defineProperty(exports,"hausaLocale",{enumerable:true,get:function(){return chunkLP5KXMBY_js.c}});Object.defineProperty(exports,"igboLocale",{enumerable:true,get:function(){return chunkLP5KXMBY_js.b}});Object.defineProperty(exports,"pidginLocale",{enumerable:true,get:function(){return chunkLP5KXMBY_js.d}});Object.defineProperty(exports,"yorubaLocale",{enumerable:true,get:function(){return chunkLP5KXMBY_js.a}});Object.defineProperty(exports,"ORG_POLICY_TEMPLATE_REGISTRY",{enumerable:true,get:function(){return chunkNUOHT3LO_js.a}});Object.defineProperty(exports,"createOrgTemplate",{enumerable:true,get:function(){return chunkNUOHT3LO_js.b}});Object.defineProperty(exports,"templateContextFor",{enumerable:true,get:function(){return chunkNUOHT3LO_js.b}});Object.defineProperty(exports,"formatNdprAuditReport",{enumerable:true,get:function(){return chunkXCKX2WKD_js.b}});Object.defineProperty(exports,"runNdprAudit",{enumerable:true,get:function(){return chunkXCKX2WKD_js.a}});Object.defineProperty(exports,"DEFAULT_DCPMI_FEES_NGN",{enumerable:true,get:function(){return chunkWKY26JLT_js.b}});Object.defineProperty(exports,"DEFAULT_DCPMI_THRESHOLDS",{enumerable:true,get:function(){return chunkWKY26JLT_js.a}});Object.defineProperty(exports,"classifyDCPMI",{enumerable:true,get:function(){return chunkWKY26JLT_js.c}});Object.defineProperty(exports,"generateComplianceAuditReturn",{enumerable:true,get:function(){return chunkWKY26JLT_js.d}});Object.defineProperty(exports,"getComplianceScore",{enumerable:true,get:function(){return chunk7TTXS7JX_js.a}});Object.defineProperty(exports,"calculateBreachSeverity",{enumerable:true,get:function(){return chunk3YTAOT5O_js.a}});Object.defineProperty(exports,"assessBreachNotification",{enumerable:true,get:function(){return chunkY346CURW_js.a}});Object.defineProperty(exports,"DEFAULT_POLICY_SECTIONS",{enumerable:true,get:function(){return chunkD2ZKDQVL_js.c}});Object.defineProperty(exports,"DEFAULT_POLICY_VARIABLES",{enumerable:true,get:function(){return chunkD2ZKDQVL_js.d}});Object.defineProperty(exports,"createBusinessPolicyTemplate",{enumerable:true,get:function(){return chunkD2ZKDQVL_js.e}});Object.defineProperty(exports,"findUnfilledTokens",{enumerable:true,get:function(){return chunkD2ZKDQVL_js.a}});Object.defineProperty(exports,"generatePolicyText",{enumerable:true,get:function(){return chunkD2ZKDQVL_js.b}});Object.defineProperty(exports,"assemblePolicy",{enumerable:true,get:function(){return chunk6LJHLE6G_js.c}});Object.defineProperty(exports,"createDefaultContext",{enumerable:true,get:function(){return chunk6LJHLE6G_js.e}});Object.defineProperty(exports,"evaluatePolicyCompliance",{enumerable:true,get:function(){return chunk6LJHLE6G_js.f}});Object.defineProperty(exports,"assessTransferRisk",{enumerable:true,get:function(){return chunkYFBDJ4FH_js.h}});Object.defineProperty(exports,"getTransferMechanismDescription",{enumerable:true,get:function(){return chunkYFBDJ4FH_js.f}});Object.defineProperty(exports,"isNDPCApprovalRequired",{enumerable:true,get:function(){return chunkYFBDJ4FH_js.e}});Object.defineProperty(exports,"validateTransfer",{enumerable:true,get:function(){return chunkYFBDJ4FH_js.g}});Object.defineProperty(exports,"assessComplianceGaps",{enumerable:true,get:function(){return chunkWZYCBW2R_js.c}});Object.defineProperty(exports,"generateLawfulBasisSummary",{enumerable:true,get:function(){return chunkWZYCBW2R_js.d}});Object.defineProperty(exports,"getLawfulBasisDescription",{enumerable:true,get:function(){return chunkWZYCBW2R_js.b}});Object.defineProperty(exports,"validateProcessingActivity",{enumerable:true,get:function(){return chunkWZYCBW2R_js.a}});Object.defineProperty(exports,"exportROPAToCSV",{enumerable:true,get:function(){return chunk4CVBQC66_js.c}});Object.defineProperty(exports,"generateROPASummary",{enumerable:true,get:function(){return chunk4CVBQC66_js.b}});Object.defineProperty(exports,"identifyComplianceGaps",{enumerable:true,get:function(){return chunk4CVBQC66_js.d}});Object.defineProperty(exports,"validateProcessingRecord",{enumerable:true,get:function(){return chunk4CVBQC66_js.a}});Object.defineProperty(exports,"appendAuditEntry",{enumerable:true,get:function(){return chunk3IA3KDII_js.c}});Object.defineProperty(exports,"createAuditEntry",{enumerable:true,get:function(){return chunk3IA3KDII_js.a}});Object.defineProperty(exports,"getAuditLog",{enumerable:true,get:function(){return chunk3IA3KDII_js.b}});Object.defineProperty(exports,"validateConsentOptionsStructured",{enumerable:true,get:function(){return chunkDKLJ5DYN_js.b}});Object.defineProperty(exports,"validateConsentStructured",{enumerable:true,get:function(){return chunkDKLJ5DYN_js.a}});Object.defineProperty(exports,"sanitizeInput",{enumerable:true,get:function(){return chunkUXUMYP4L_js.a}});Object.defineProperty(exports,"formatDSRRequestStructured",{enumerable:true,get:function(){return chunkR2ZZMATR_js.b}});Object.defineProperty(exports,"validateDsrSubmissionStructured",{enumerable:true,get:function(){return chunkR2ZZMATR_js.a}});Object.defineProperty(exports,"assessDPIARisk",{enumerable:true,get:function(){return chunkTQZWJGJ2_js.a}});Object.defineProperty(exports,"LEGAL_DISCLAIMER_LONG",{enumerable:true,get:function(){return chunkZVOIR4QH_js.b}});Object.defineProperty(exports,"LEGAL_DISCLAIMER_SHORT",{enumerable:true,get:function(){return chunkZVOIR4QH_js.a}});Object.defineProperty(exports,"legalDisclaimerBlock",{enumerable:true,get:function(){return chunkZVOIR4QH_js.c}});Object.defineProperty(exports,"NDPRProvider",{enumerable:true,get:function(){return chunkI5ZDNSX5_js.a}});Object.defineProperty(exports,"useNDPRConfig",{enumerable:true,get:function(){return chunkI5ZDNSX5_js.b}});Object.defineProperty(exports,"useNDPRLocale",{enumerable:true,get:function(){return chunkI5ZDNSX5_js.c}});Object.defineProperty(exports,"defaultLocale",{enumerable:true,get:function(){return chunk7563FVMY_js.a}});Object.defineProperty(exports,"mergeLocale",{enumerable:true,get:function(){return chunk7563FVMY_js.b}});
|
package/dist/core.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{e as arabicLocale,f as frenchLocale,c as hausaLocale,b as igboLocale,d as pidginLocale,a as yorubaLocale}from'./chunk-KUI5W44P.mjs';export{a as ORG_POLICY_TEMPLATE_REGISTRY,b as createOrgTemplate,b as templateContextFor}from'./chunk-CWY2FMIC.mjs';export{
|
|
1
|
+
export{e as arabicLocale,f as frenchLocale,c as hausaLocale,b as igboLocale,d as pidginLocale,a as yorubaLocale}from'./chunk-KUI5W44P.mjs';export{a as ORG_POLICY_TEMPLATE_REGISTRY,b as createOrgTemplate,b as templateContextFor}from'./chunk-CWY2FMIC.mjs';export{b as formatNdprAuditReport,a as runNdprAudit}from'./chunk-JXK5RUR3.mjs';export{b as DEFAULT_DCPMI_FEES_NGN,a as DEFAULT_DCPMI_THRESHOLDS,c as classifyDCPMI,d as generateComplianceAuditReturn}from'./chunk-SZXHNJGG.mjs';export{a as getComplianceScore}from'./chunk-6A7M4CGJ.mjs';export{a as calculateBreachSeverity}from'./chunk-WTGKZX7J.mjs';export{a as assessBreachNotification}from'./chunk-WJSUVPYX.mjs';export{c as DEFAULT_POLICY_SECTIONS,d as DEFAULT_POLICY_VARIABLES,e as createBusinessPolicyTemplate,a as findUnfilledTokens,b as generatePolicyText}from'./chunk-NBQQ2GN3.mjs';export{c as assemblePolicy,e as createDefaultContext,f as evaluatePolicyCompliance}from'./chunk-BIJSMSUU.mjs';export{h as assessTransferRisk,f as getTransferMechanismDescription,e as isNDPCApprovalRequired,g as validateTransfer}from'./chunk-7BJXI2HI.mjs';export{c as assessComplianceGaps,d as generateLawfulBasisSummary,b as getLawfulBasisDescription,a as validateProcessingActivity}from'./chunk-LWIKDDSU.mjs';export{c as exportROPAToCSV,b as generateROPASummary,d as identifyComplianceGaps,a as validateProcessingRecord}from'./chunk-XP5PL6K7.mjs';export{c as appendAuditEntry,a as createAuditEntry,b as getAuditLog}from'./chunk-V7UFP6QU.mjs';export{b as validateConsentOptionsStructured,a as validateConsentStructured}from'./chunk-R3ZKV2J7.mjs';export{a as sanitizeInput}from'./chunk-EWVK45Z3.mjs';export{b as formatDSRRequestStructured,a as validateDsrSubmissionStructured}from'./chunk-RRVML7CU.mjs';export{a as assessDPIARisk}from'./chunk-LRRENTT5.mjs';export{b as LEGAL_DISCLAIMER_LONG,a as LEGAL_DISCLAIMER_SHORT,c as legalDisclaimerBlock}from'./chunk-ITCY2Z66.mjs';export{a as NDPRProvider,b as useNDPRConfig,c as useNDPRLocale}from'./chunk-PHA3YMFO.mjs';export{a as defaultLocale,b as mergeLocale}from'./chunk-5LJ652AH.mjs';import'./chunk-ZJYULEER.mjs';
|
package/dist/headless.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
'use strict';require('./chunk-OVW5ASY3.js');var
|
|
2
|
+
'use strict';require('./chunk-OVW5ASY3.js');var chunkOW4GO3JF_js=require('./chunk-OW4GO3JF.js'),chunkEHQVTFYO_js=require('./chunk-EHQVTFYO.js'),chunkRC3XFXTJ_js=require('./chunk-RC3XFXTJ.js'),chunkQHW4UKGJ_js=require('./chunk-QHW4UKGJ.js'),chunkIRRUYR6M_js=require('./chunk-IRRUYR6M.js'),chunkHHK5LHEG_js=require('./chunk-HHK5LHEG.js'),chunkTLIHFGIJ_js=require('./chunk-TLIHFGIJ.js');require('./chunk-JS7SYL5P.js'),require('./chunk-WKY26JLT.js'),require('./chunk-7TTXS7JX.js'),require('./chunk-3YTAOT5O.js'),require('./chunk-Y346CURW.js'),require('./chunk-D2ZKDQVL.js'),require('./chunk-6LJHLE6G.js'),require('./chunk-YFBDJ4FH.js'),require('./chunk-WZYCBW2R.js'),require('./chunk-4CVBQC66.js');var chunkQKXGVT2Q_js=require('./chunk-QKXGVT2Q.js'),chunkL2VO3MEJ_js=require('./chunk-L2VO3MEJ.js');require('./chunk-C2KEXHRX.js'),require('./chunk-DKLJ5DYN.js');var chunkTVA6D6S4_js=require('./chunk-TVA6D6S4.js');require('./chunk-R2ZZMATR.js');var chunkJLQT3W3E_js=require('./chunk-JLQT3W3E.js');require('./chunk-TQZWJGJ2.js'),require('./chunk-ZVOIR4QH.js'),require('./chunk-VWED6UTN.js'),require('./chunk-RFPLZDIO.js');Object.defineProperty(exports,"useBreachNotificationAssessment",{enumerable:true,get:function(){return chunkOW4GO3JF_js.a}});Object.defineProperty(exports,"useComplianceAuditReturn",{enumerable:true,get:function(){return chunkOW4GO3JF_js.d}});Object.defineProperty(exports,"useComplianceScore",{enumerable:true,get:function(){return chunkOW4GO3JF_js.b}});Object.defineProperty(exports,"useDCPMI",{enumerable:true,get:function(){return chunkOW4GO3JF_js.c}});Object.defineProperty(exports,"useBreach",{enumerable:true,get:function(){return chunkEHQVTFYO_js.a}});Object.defineProperty(exports,"useDefaultPrivacyPolicy",{enumerable:true,get:function(){return chunkRC3XFXTJ_js.b}});Object.defineProperty(exports,"usePrivacyPolicy",{enumerable:true,get:function(){return chunkRC3XFXTJ_js.a}});Object.defineProperty(exports,"useAdaptivePolicyWizard",{enumerable:true,get:function(){return chunkQHW4UKGJ_js.a}});Object.defineProperty(exports,"useLawfulBasis",{enumerable:true,get:function(){return chunkIRRUYR6M_js.a}});Object.defineProperty(exports,"useCrossBorderTransfer",{enumerable:true,get:function(){return chunkHHK5LHEG_js.a}});Object.defineProperty(exports,"useROPA",{enumerable:true,get:function(){return chunkTLIHFGIJ_js.a}});Object.defineProperty(exports,"useConsent",{enumerable:true,get:function(){return chunkQKXGVT2Q_js.a}});Object.defineProperty(exports,"useFocusTrap",{enumerable:true,get:function(){return chunkL2VO3MEJ_js.a}});Object.defineProperty(exports,"useDSR",{enumerable:true,get:function(){return chunkTVA6D6S4_js.a}});Object.defineProperty(exports,"useDPIA",{enumerable:true,get:function(){return chunkJLQT3W3E_js.a}});
|
package/dist/headless.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import'./chunk-YQTZWPOS.mjs';export{a as useBreachNotificationAssessment,d as useComplianceAuditReturn,b as useComplianceScore,c as useDCPMI}from'./chunk-
|
|
2
|
+
import'./chunk-YQTZWPOS.mjs';export{a as useBreachNotificationAssessment,d as useComplianceAuditReturn,b as useComplianceScore,c as useDCPMI}from'./chunk-Q5KB2DN3.mjs';export{a as useBreach}from'./chunk-RFXGD5NE.mjs';export{b as useDefaultPrivacyPolicy,a as usePrivacyPolicy}from'./chunk-UVXS7KRV.mjs';export{a as useAdaptivePolicyWizard}from'./chunk-KE2FZH2V.mjs';export{a as useLawfulBasis}from'./chunk-B6BRD5SL.mjs';export{a as useCrossBorderTransfer}from'./chunk-KDAZQO3N.mjs';export{a as useROPA}from'./chunk-FRMVSG4N.mjs';import'./chunk-IVSNHT24.mjs';import'./chunk-SZXHNJGG.mjs';import'./chunk-6A7M4CGJ.mjs';import'./chunk-WTGKZX7J.mjs';import'./chunk-WJSUVPYX.mjs';import'./chunk-NBQQ2GN3.mjs';import'./chunk-BIJSMSUU.mjs';import'./chunk-7BJXI2HI.mjs';import'./chunk-LWIKDDSU.mjs';import'./chunk-XP5PL6K7.mjs';export{a as useConsent}from'./chunk-PQ5IPUJN.mjs';export{a as useFocusTrap}from'./chunk-YTU4FNM2.mjs';import'./chunk-XC3DLYEG.mjs';import'./chunk-R3ZKV2J7.mjs';export{a as useDSR}from'./chunk-ZSRO4L3C.mjs';import'./chunk-RRVML7CU.mjs';export{a as useDPIA}from'./chunk-I3V3ITN7.mjs';import'./chunk-LRRENTT5.mjs';import'./chunk-ITCY2Z66.mjs';import'./chunk-DBZSN4WP.mjs';import'./chunk-ZJYULEER.mjs';
|
package/dist/hooks.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
'use strict';require('./chunk-OVW5ASY3.js');var
|
|
2
|
+
'use strict';require('./chunk-OVW5ASY3.js');var chunkOW4GO3JF_js=require('./chunk-OW4GO3JF.js'),chunkEHQVTFYO_js=require('./chunk-EHQVTFYO.js'),chunkRC3XFXTJ_js=require('./chunk-RC3XFXTJ.js'),chunkQHW4UKGJ_js=require('./chunk-QHW4UKGJ.js'),chunkIRRUYR6M_js=require('./chunk-IRRUYR6M.js'),chunkHHK5LHEG_js=require('./chunk-HHK5LHEG.js'),chunkTLIHFGIJ_js=require('./chunk-TLIHFGIJ.js');require('./chunk-JS7SYL5P.js'),require('./chunk-WKY26JLT.js'),require('./chunk-7TTXS7JX.js'),require('./chunk-3YTAOT5O.js'),require('./chunk-Y346CURW.js'),require('./chunk-D2ZKDQVL.js'),require('./chunk-6LJHLE6G.js'),require('./chunk-YFBDJ4FH.js'),require('./chunk-WZYCBW2R.js'),require('./chunk-4CVBQC66.js');var chunkQKXGVT2Q_js=require('./chunk-QKXGVT2Q.js'),chunkL2VO3MEJ_js=require('./chunk-L2VO3MEJ.js');require('./chunk-C2KEXHRX.js'),require('./chunk-DKLJ5DYN.js');var chunkTVA6D6S4_js=require('./chunk-TVA6D6S4.js');require('./chunk-R2ZZMATR.js');var chunkJLQT3W3E_js=require('./chunk-JLQT3W3E.js');require('./chunk-TQZWJGJ2.js'),require('./chunk-ZVOIR4QH.js'),require('./chunk-VWED6UTN.js'),require('./chunk-RFPLZDIO.js');Object.defineProperty(exports,"useBreachNotificationAssessment",{enumerable:true,get:function(){return chunkOW4GO3JF_js.a}});Object.defineProperty(exports,"useComplianceAuditReturn",{enumerable:true,get:function(){return chunkOW4GO3JF_js.d}});Object.defineProperty(exports,"useComplianceScore",{enumerable:true,get:function(){return chunkOW4GO3JF_js.b}});Object.defineProperty(exports,"useDCPMI",{enumerable:true,get:function(){return chunkOW4GO3JF_js.c}});Object.defineProperty(exports,"useBreach",{enumerable:true,get:function(){return chunkEHQVTFYO_js.a}});Object.defineProperty(exports,"useDefaultPrivacyPolicy",{enumerable:true,get:function(){return chunkRC3XFXTJ_js.b}});Object.defineProperty(exports,"usePrivacyPolicy",{enumerable:true,get:function(){return chunkRC3XFXTJ_js.a}});Object.defineProperty(exports,"useAdaptivePolicyWizard",{enumerable:true,get:function(){return chunkQHW4UKGJ_js.a}});Object.defineProperty(exports,"useLawfulBasis",{enumerable:true,get:function(){return chunkIRRUYR6M_js.a}});Object.defineProperty(exports,"useCrossBorderTransfer",{enumerable:true,get:function(){return chunkHHK5LHEG_js.a}});Object.defineProperty(exports,"useROPA",{enumerable:true,get:function(){return chunkTLIHFGIJ_js.a}});Object.defineProperty(exports,"useConsent",{enumerable:true,get:function(){return chunkQKXGVT2Q_js.a}});Object.defineProperty(exports,"useFocusTrap",{enumerable:true,get:function(){return chunkL2VO3MEJ_js.a}});Object.defineProperty(exports,"useDSR",{enumerable:true,get:function(){return chunkTVA6D6S4_js.a}});Object.defineProperty(exports,"useDPIA",{enumerable:true,get:function(){return chunkJLQT3W3E_js.a}});
|
package/dist/hooks.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import'./chunk-YQTZWPOS.mjs';export{a as useBreachNotificationAssessment,d as useComplianceAuditReturn,b as useComplianceScore,c as useDCPMI}from'./chunk-
|
|
2
|
+
import'./chunk-YQTZWPOS.mjs';export{a as useBreachNotificationAssessment,d as useComplianceAuditReturn,b as useComplianceScore,c as useDCPMI}from'./chunk-Q5KB2DN3.mjs';export{a as useBreach}from'./chunk-RFXGD5NE.mjs';export{b as useDefaultPrivacyPolicy,a as usePrivacyPolicy}from'./chunk-UVXS7KRV.mjs';export{a as useAdaptivePolicyWizard}from'./chunk-KE2FZH2V.mjs';export{a as useLawfulBasis}from'./chunk-B6BRD5SL.mjs';export{a as useCrossBorderTransfer}from'./chunk-KDAZQO3N.mjs';export{a as useROPA}from'./chunk-FRMVSG4N.mjs';import'./chunk-IVSNHT24.mjs';import'./chunk-SZXHNJGG.mjs';import'./chunk-6A7M4CGJ.mjs';import'./chunk-WTGKZX7J.mjs';import'./chunk-WJSUVPYX.mjs';import'./chunk-NBQQ2GN3.mjs';import'./chunk-BIJSMSUU.mjs';import'./chunk-7BJXI2HI.mjs';import'./chunk-LWIKDDSU.mjs';import'./chunk-XP5PL6K7.mjs';export{a as useConsent}from'./chunk-PQ5IPUJN.mjs';export{a as useFocusTrap}from'./chunk-YTU4FNM2.mjs';import'./chunk-XC3DLYEG.mjs';import'./chunk-R3ZKV2J7.mjs';export{a as useDSR}from'./chunk-ZSRO4L3C.mjs';import'./chunk-RRVML7CU.mjs';export{a as useDPIA}from'./chunk-I3V3ITN7.mjs';import'./chunk-LRRENTT5.mjs';import'./chunk-ITCY2Z66.mjs';import'./chunk-DBZSN4WP.mjs';import'./chunk-ZJYULEER.mjs';
|
package/dist/index.d.mts
CHANGED
|
@@ -160,6 +160,15 @@ export declare function assessDPIARisk(dpiaResult: DPIAResult): {
|
|
|
160
160
|
*/
|
|
161
161
|
export declare function assessTransferRisk(transfer: CrossBorderTransfer): TransferRiskResult;
|
|
162
162
|
|
|
163
|
+
export declare interface AuditCheck {
|
|
164
|
+
id: string;
|
|
165
|
+
label: string;
|
|
166
|
+
status: AuditCheckStatus;
|
|
167
|
+
detail: string;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
export declare type AuditCheckStatus = 'pass' | 'warn' | 'fail';
|
|
171
|
+
|
|
163
172
|
/**
|
|
164
173
|
* Breach notification types aligned with NDPA 2023 Section 40
|
|
165
174
|
* Data controllers must notify the NDPC within 72 hours of becoming aware of a breach
|
|
@@ -548,6 +557,8 @@ export declare interface BreachReportFormClassNames {
|
|
|
548
557
|
notice?: string;
|
|
549
558
|
/** Custom class applied when isSubmitting is true (e.g. a loading overlay) */
|
|
550
559
|
loadingOverlay?: string;
|
|
560
|
+
/** Live NDPC-notification completeness panel */
|
|
561
|
+
completeness?: string;
|
|
551
562
|
}
|
|
552
563
|
|
|
553
564
|
export declare interface BreachReportFormProps {
|
|
@@ -641,6 +652,13 @@ export declare interface BreachReportFormProps {
|
|
|
641
652
|
* change the `key` prop from the parent.
|
|
642
653
|
*/
|
|
643
654
|
onReset?: () => void;
|
|
655
|
+
/**
|
|
656
|
+
* Show a live NDPC-notification readiness panel that scores the form against
|
|
657
|
+
* the NDPA S. 40 / GAID 2025 Article 33 mandated content and the 72-hour
|
|
658
|
+
* deadline as the user fills it in.
|
|
659
|
+
* @default true
|
|
660
|
+
*/
|
|
661
|
+
showCompleteness?: boolean;
|
|
644
662
|
}
|
|
645
663
|
|
|
646
664
|
/**
|
|
@@ -2451,6 +2469,11 @@ export declare type EffortLevel = 'low' | 'medium' | 'high';
|
|
|
2451
2469
|
*/
|
|
2452
2470
|
export declare function exportROPAToCSV(ropa: RecordOfProcessingActivities): string;
|
|
2453
2471
|
|
|
2472
|
+
export declare interface FormatAuditReportOptions {
|
|
2473
|
+
/** Wrap status symbols in ANSI colour codes. Default false. */
|
|
2474
|
+
color?: boolean;
|
|
2475
|
+
}
|
|
2476
|
+
|
|
2454
2477
|
/**
|
|
2455
2478
|
* Format a DSR request for display or submission. Returns the formatted
|
|
2456
2479
|
* payload plus a typed `errors` array of `{ field, code, message }` for any
|
|
@@ -2476,6 +2499,11 @@ export declare interface FormatDSRRequestStructuredResult {
|
|
|
2476
2499
|
data?: DSRRequest;
|
|
2477
2500
|
}
|
|
2478
2501
|
|
|
2502
|
+
/**
|
|
2503
|
+
* Render an `NdprAuditResult` as a plain-text report.
|
|
2504
|
+
*/
|
|
2505
|
+
export declare function formatNdprAuditReport(result: NdprAuditResult, options?: FormatAuditReportOptions): string;
|
|
2506
|
+
|
|
2479
2507
|
/**
|
|
2480
2508
|
* Derive the CAR schedule and status for a DCPMI under NDPC GAID 2025.
|
|
2481
2509
|
*/
|
|
@@ -2820,6 +2848,58 @@ export declare interface ModuleScore {
|
|
|
2820
2848
|
gaps: string[];
|
|
2821
2849
|
}
|
|
2822
2850
|
|
|
2851
|
+
/**
|
|
2852
|
+
* Aggregate NDPA 2023 compliance audit — combines the compliance-score engine
|
|
2853
|
+
* with the GAID 2025 DCPMI classifier, Compliance Audit Returns scheduler, and
|
|
2854
|
+
* breach-notification checker into a single pass/fail result suitable for CI.
|
|
2855
|
+
*
|
|
2856
|
+
* Pure and React-free: drive it from a config file via the `ndpr audit` CLI, a
|
|
2857
|
+
* CI job, or a server route. Not legal advice — verify against current NDPC
|
|
2858
|
+
* guidance.
|
|
2859
|
+
*/
|
|
2860
|
+
|
|
2861
|
+
export declare interface NdprAuditInput {
|
|
2862
|
+
/** Compliance posture across the 8 NDPA modules. */
|
|
2863
|
+
compliance: ComplianceInput;
|
|
2864
|
+
/** Optional DCPMI classification input (GAID 2025 registration). */
|
|
2865
|
+
dcpmi?: DCPMIInput;
|
|
2866
|
+
/** Optional Compliance Audit Returns scheduling input. */
|
|
2867
|
+
car?: CARInput;
|
|
2868
|
+
/** Optional breach reports to check against the S. 40 / Article 33 duty. */
|
|
2869
|
+
breaches?: BreachReport[];
|
|
2870
|
+
}
|
|
2871
|
+
|
|
2872
|
+
export declare interface NdprAuditOptions {
|
|
2873
|
+
/** Minimum overall compliance score required to pass. Default 70. */
|
|
2874
|
+
minScore?: number;
|
|
2875
|
+
dcpmiOptions?: DCPMIClassificationOptions;
|
|
2876
|
+
carOptions?: CAROptions;
|
|
2877
|
+
breachOptions?: BreachNotificationOptions;
|
|
2878
|
+
}
|
|
2879
|
+
|
|
2880
|
+
export declare interface NdprAuditResult {
|
|
2881
|
+
/** True when the score meets `minScore` and no check is a hard failure. */
|
|
2882
|
+
passed: boolean;
|
|
2883
|
+
score: number;
|
|
2884
|
+
rating: ComplianceRating;
|
|
2885
|
+
minScore: number;
|
|
2886
|
+
checks: AuditCheck[];
|
|
2887
|
+
compliance: ComplianceReport;
|
|
2888
|
+
dcpmi?: DCPMIClassification;
|
|
2889
|
+
car?: ComplianceAuditReturn;
|
|
2890
|
+
breaches: Array<{
|
|
2891
|
+
id: string;
|
|
2892
|
+
title: string;
|
|
2893
|
+
assessment: BreachNotificationAssessment;
|
|
2894
|
+
}>;
|
|
2895
|
+
summary: {
|
|
2896
|
+
pass: number;
|
|
2897
|
+
warn: number;
|
|
2898
|
+
fail: number;
|
|
2899
|
+
};
|
|
2900
|
+
generatedAt: string;
|
|
2901
|
+
}
|
|
2902
|
+
|
|
2823
2903
|
/**
|
|
2824
2904
|
* Configuration for the NDPR toolkit provider.
|
|
2825
2905
|
*/
|
|
@@ -4258,6 +4338,11 @@ export declare interface ROPAValidationResult {
|
|
|
4258
4338
|
errors: string[];
|
|
4259
4339
|
}
|
|
4260
4340
|
|
|
4341
|
+
/**
|
|
4342
|
+
* Run the aggregate NDPA compliance audit.
|
|
4343
|
+
*/
|
|
4344
|
+
export declare function runNdprAudit(input: NdprAuditInput, options?: NdprAuditOptions): NdprAuditResult;
|
|
4345
|
+
|
|
4261
4346
|
/**
|
|
4262
4347
|
* Sanitizes user input to prevent XSS attacks.
|
|
4263
4348
|
* Escapes HTML special characters so that data rendered in dashboards
|
package/dist/index.d.ts
CHANGED
|
@@ -160,6 +160,15 @@ export declare function assessDPIARisk(dpiaResult: DPIAResult): {
|
|
|
160
160
|
*/
|
|
161
161
|
export declare function assessTransferRisk(transfer: CrossBorderTransfer): TransferRiskResult;
|
|
162
162
|
|
|
163
|
+
export declare interface AuditCheck {
|
|
164
|
+
id: string;
|
|
165
|
+
label: string;
|
|
166
|
+
status: AuditCheckStatus;
|
|
167
|
+
detail: string;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
export declare type AuditCheckStatus = 'pass' | 'warn' | 'fail';
|
|
171
|
+
|
|
163
172
|
/**
|
|
164
173
|
* Breach notification types aligned with NDPA 2023 Section 40
|
|
165
174
|
* Data controllers must notify the NDPC within 72 hours of becoming aware of a breach
|
|
@@ -548,6 +557,8 @@ export declare interface BreachReportFormClassNames {
|
|
|
548
557
|
notice?: string;
|
|
549
558
|
/** Custom class applied when isSubmitting is true (e.g. a loading overlay) */
|
|
550
559
|
loadingOverlay?: string;
|
|
560
|
+
/** Live NDPC-notification completeness panel */
|
|
561
|
+
completeness?: string;
|
|
551
562
|
}
|
|
552
563
|
|
|
553
564
|
export declare interface BreachReportFormProps {
|
|
@@ -641,6 +652,13 @@ export declare interface BreachReportFormProps {
|
|
|
641
652
|
* change the `key` prop from the parent.
|
|
642
653
|
*/
|
|
643
654
|
onReset?: () => void;
|
|
655
|
+
/**
|
|
656
|
+
* Show a live NDPC-notification readiness panel that scores the form against
|
|
657
|
+
* the NDPA S. 40 / GAID 2025 Article 33 mandated content and the 72-hour
|
|
658
|
+
* deadline as the user fills it in.
|
|
659
|
+
* @default true
|
|
660
|
+
*/
|
|
661
|
+
showCompleteness?: boolean;
|
|
644
662
|
}
|
|
645
663
|
|
|
646
664
|
/**
|
|
@@ -2451,6 +2469,11 @@ export declare type EffortLevel = 'low' | 'medium' | 'high';
|
|
|
2451
2469
|
*/
|
|
2452
2470
|
export declare function exportROPAToCSV(ropa: RecordOfProcessingActivities): string;
|
|
2453
2471
|
|
|
2472
|
+
export declare interface FormatAuditReportOptions {
|
|
2473
|
+
/** Wrap status symbols in ANSI colour codes. Default false. */
|
|
2474
|
+
color?: boolean;
|
|
2475
|
+
}
|
|
2476
|
+
|
|
2454
2477
|
/**
|
|
2455
2478
|
* Format a DSR request for display or submission. Returns the formatted
|
|
2456
2479
|
* payload plus a typed `errors` array of `{ field, code, message }` for any
|
|
@@ -2476,6 +2499,11 @@ export declare interface FormatDSRRequestStructuredResult {
|
|
|
2476
2499
|
data?: DSRRequest;
|
|
2477
2500
|
}
|
|
2478
2501
|
|
|
2502
|
+
/**
|
|
2503
|
+
* Render an `NdprAuditResult` as a plain-text report.
|
|
2504
|
+
*/
|
|
2505
|
+
export declare function formatNdprAuditReport(result: NdprAuditResult, options?: FormatAuditReportOptions): string;
|
|
2506
|
+
|
|
2479
2507
|
/**
|
|
2480
2508
|
* Derive the CAR schedule and status for a DCPMI under NDPC GAID 2025.
|
|
2481
2509
|
*/
|
|
@@ -2820,6 +2848,58 @@ export declare interface ModuleScore {
|
|
|
2820
2848
|
gaps: string[];
|
|
2821
2849
|
}
|
|
2822
2850
|
|
|
2851
|
+
/**
|
|
2852
|
+
* Aggregate NDPA 2023 compliance audit — combines the compliance-score engine
|
|
2853
|
+
* with the GAID 2025 DCPMI classifier, Compliance Audit Returns scheduler, and
|
|
2854
|
+
* breach-notification checker into a single pass/fail result suitable for CI.
|
|
2855
|
+
*
|
|
2856
|
+
* Pure and React-free: drive it from a config file via the `ndpr audit` CLI, a
|
|
2857
|
+
* CI job, or a server route. Not legal advice — verify against current NDPC
|
|
2858
|
+
* guidance.
|
|
2859
|
+
*/
|
|
2860
|
+
|
|
2861
|
+
export declare interface NdprAuditInput {
|
|
2862
|
+
/** Compliance posture across the 8 NDPA modules. */
|
|
2863
|
+
compliance: ComplianceInput;
|
|
2864
|
+
/** Optional DCPMI classification input (GAID 2025 registration). */
|
|
2865
|
+
dcpmi?: DCPMIInput;
|
|
2866
|
+
/** Optional Compliance Audit Returns scheduling input. */
|
|
2867
|
+
car?: CARInput;
|
|
2868
|
+
/** Optional breach reports to check against the S. 40 / Article 33 duty. */
|
|
2869
|
+
breaches?: BreachReport[];
|
|
2870
|
+
}
|
|
2871
|
+
|
|
2872
|
+
export declare interface NdprAuditOptions {
|
|
2873
|
+
/** Minimum overall compliance score required to pass. Default 70. */
|
|
2874
|
+
minScore?: number;
|
|
2875
|
+
dcpmiOptions?: DCPMIClassificationOptions;
|
|
2876
|
+
carOptions?: CAROptions;
|
|
2877
|
+
breachOptions?: BreachNotificationOptions;
|
|
2878
|
+
}
|
|
2879
|
+
|
|
2880
|
+
export declare interface NdprAuditResult {
|
|
2881
|
+
/** True when the score meets `minScore` and no check is a hard failure. */
|
|
2882
|
+
passed: boolean;
|
|
2883
|
+
score: number;
|
|
2884
|
+
rating: ComplianceRating;
|
|
2885
|
+
minScore: number;
|
|
2886
|
+
checks: AuditCheck[];
|
|
2887
|
+
compliance: ComplianceReport;
|
|
2888
|
+
dcpmi?: DCPMIClassification;
|
|
2889
|
+
car?: ComplianceAuditReturn;
|
|
2890
|
+
breaches: Array<{
|
|
2891
|
+
id: string;
|
|
2892
|
+
title: string;
|
|
2893
|
+
assessment: BreachNotificationAssessment;
|
|
2894
|
+
}>;
|
|
2895
|
+
summary: {
|
|
2896
|
+
pass: number;
|
|
2897
|
+
warn: number;
|
|
2898
|
+
fail: number;
|
|
2899
|
+
};
|
|
2900
|
+
generatedAt: string;
|
|
2901
|
+
}
|
|
2902
|
+
|
|
2823
2903
|
/**
|
|
2824
2904
|
* Configuration for the NDPR toolkit provider.
|
|
2825
2905
|
*/
|
|
@@ -4258,6 +4338,11 @@ export declare interface ROPAValidationResult {
|
|
|
4258
4338
|
errors: string[];
|
|
4259
4339
|
}
|
|
4260
4340
|
|
|
4341
|
+
/**
|
|
4342
|
+
* Run the aggregate NDPA compliance audit.
|
|
4343
|
+
*/
|
|
4344
|
+
export declare function runNdprAudit(input: NdprAuditInput, options?: NdprAuditOptions): NdprAuditResult;
|
|
4345
|
+
|
|
4261
4346
|
/**
|
|
4262
4347
|
* Sanitizes user input to prevent XSS attacks.
|
|
4263
4348
|
* Escapes HTML special characters so that data rendered in dashboards
|