@tantainnovative/ndpr-toolkit 3.4.0 → 3.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 +25 -0
- package/README.md +80 -38
- package/dist/adapters.d.mts +34 -25
- package/dist/adapters.d.ts +34 -25
- package/dist/breach.d.mts +803 -44
- package/dist/breach.d.ts +803 -44
- package/dist/breach.js +2 -1
- package/dist/breach.mjs +2 -1
- package/dist/{chunk-2WH4DLV5.js → chunk-3EGQWLJ6.js} +3 -3
- package/dist/chunk-B4Z5MBUC.mjs +2 -0
- package/dist/{chunk-LSCMXAPY.mjs → chunk-CKGJK4D7.mjs} +3 -3
- package/dist/{chunk-XSEZDQLB.js → chunk-CKJAECGV.js} +2 -2
- package/dist/{chunk-AHSMDPG5.js → chunk-CPK5D5FY.js} +2 -2
- package/dist/{chunk-DCJK5OZT.mjs → chunk-CWHBCQGT.mjs} +2 -2
- package/dist/{chunk-KSERBMXW.mjs → chunk-F5TXUA4O.mjs} +3 -3
- package/dist/{chunk-BN77GP4W.mjs → chunk-GN5C32JB.mjs} +2 -2
- package/dist/{chunk-ZLSWOFAY.mjs → chunk-GRLIPT5V.mjs} +2 -2
- package/dist/{chunk-DUY6F3GT.mjs → chunk-H3EYBSVP.mjs} +3 -3
- package/dist/{chunk-MG73MOZC.mjs → chunk-I557S566.mjs} +2 -2
- package/dist/{chunk-QVULSG6J.mjs → chunk-ID2NYIVE.mjs} +3 -3
- package/dist/chunk-J5WCPZLW.js +2 -0
- package/dist/{chunk-4R42ZNO7.mjs → chunk-JFFOPHU3.mjs} +57 -57
- package/dist/{chunk-P2YV6DR3.js → chunk-LIM64IV2.js} +3 -3
- package/dist/chunk-LU7PKE7Y.mjs +2 -0
- package/dist/{chunk-HQSU7LGM.js → chunk-LWXZMKC2.js} +4 -4
- package/dist/{chunk-XMBSJJ5U.js → chunk-ORFC66EA.js} +3 -3
- package/dist/{chunk-VTITKWGX.mjs → chunk-QSVVAZVT.mjs} +2 -2
- package/dist/chunk-SCWNM4PC.mjs +2 -0
- package/dist/{chunk-EHAZIKDX.js → chunk-SKKOMFXH.js} +2 -2
- package/dist/{chunk-WH6ZMUOS.mjs → chunk-TUNQUVHU.mjs} +2 -2
- package/dist/chunk-TV4U6AIS.js +2 -0
- package/dist/{chunk-ZYLDLGFL.js → chunk-VIQUXWJC.js} +2 -2
- package/dist/{chunk-SUEGUY35.js → chunk-XIM7KMD6.js} +2 -2
- package/dist/{chunk-P6QAFBCV.js → chunk-XNSZ7KUH.js} +2 -2
- package/dist/{chunk-RNTNHVKZ.js → chunk-YPKUHSK4.js} +2 -2
- package/dist/{chunk-UFPSUO52.js → chunk-Z73T6MWY.js} +57 -57
- package/dist/consent.d.mts +648 -84
- package/dist/consent.d.ts +648 -84
- package/dist/consent.js +2 -1
- package/dist/consent.mjs +2 -1
- package/dist/core.d.mts +2049 -23
- package/dist/core.d.ts +2049 -23
- package/dist/core.js +1 -1
- package/dist/core.mjs +1 -1
- package/dist/cross-border.d.mts +470 -99
- package/dist/cross-border.d.ts +470 -99
- package/dist/cross-border.js +1 -0
- package/dist/cross-border.mjs +1 -0
- package/dist/dpia.d.mts +591 -37
- package/dist/dpia.d.ts +591 -37
- package/dist/dpia.js +1 -0
- package/dist/dpia.mjs +1 -0
- package/dist/dsr.d.mts +654 -37
- package/dist/dsr.d.ts +654 -37
- package/dist/dsr.js +2 -1
- package/dist/dsr.mjs +2 -1
- package/dist/hooks.d.mts +2174 -30
- package/dist/hooks.d.ts +2174 -30
- package/dist/hooks.js +2 -1
- package/dist/hooks.mjs +2 -1
- package/dist/index.d.mts +4428 -43
- package/dist/index.d.ts +4428 -43
- package/dist/index.js +2 -1
- package/dist/index.mjs +2 -1
- package/dist/lawful-basis.d.mts +368 -32
- package/dist/lawful-basis.d.ts +368 -32
- package/dist/lawful-basis.js +1 -0
- package/dist/lawful-basis.mjs +1 -0
- package/dist/policy.d.mts +1178 -83
- package/dist/policy.d.ts +1178 -83
- package/dist/policy.js +2 -1
- package/dist/policy.mjs +2 -1
- package/dist/presets.d.mts +1020 -114
- package/dist/presets.d.ts +1020 -114
- package/dist/presets.js +2 -1
- package/dist/presets.mjs +2 -1
- package/dist/ropa.d.mts +396 -31
- package/dist/ropa.d.ts +396 -31
- package/dist/ropa.js +2 -1
- package/dist/ropa.mjs +2 -1
- package/dist/server.d.mts +2133 -24
- package/dist/server.d.ts +2133 -24
- package/dist/server.js +1 -1
- package/dist/server.mjs +1 -1
- package/dist/unstyled.d.mts +523 -55
- package/dist/unstyled.d.ts +523 -55
- package/dist/unstyled.js +2 -1
- package/dist/unstyled.mjs +2 -1
- package/package.json +3 -3
- package/dist/BreachReportForm-DpRrBoxU.d.ts +0 -158
- package/dist/BreachReportForm-yJ2Zl6gz.d.mts +0 -158
- package/dist/ConsentBanner-F5ayys5K.d.mts +0 -156
- package/dist/ConsentBanner-VqIPophc.d.ts +0 -156
- package/dist/ConsentManager-C7I3PDe8.d.mts +0 -105
- package/dist/ConsentManager-CQ2IZtUU.d.ts +0 -105
- package/dist/CrossBorderTransferManager-D5Lc0e46.d.ts +0 -90
- package/dist/CrossBorderTransferManager-DkZhv9vD.d.mts +0 -90
- package/dist/DPIAQuestionnaire-VXBoWFMC.d.ts +0 -123
- package/dist/DPIAQuestionnaire-jkt1Veb6.d.mts +0 -123
- package/dist/DSRRequestForm-D8rPTNmU.d.ts +0 -146
- package/dist/DSRRequestForm-DRouEr9j.d.mts +0 -146
- package/dist/DSRTracker-Bl__d4df.d.ts +0 -163
- package/dist/DSRTracker-CSVDfgQQ.d.mts +0 -163
- package/dist/LawfulBasisTracker-CBqOxX1D.d.mts +0 -85
- package/dist/LawfulBasisTracker-Cg30NbDA.d.ts +0 -85
- package/dist/NDPRDashboard-CLJpEg0X.d.mts +0 -44
- package/dist/NDPRDashboard-DDWNd2Ah.d.ts +0 -44
- package/dist/NDPRProvider-DYFb8xEl.d.ts +0 -68
- package/dist/NDPRProvider-U3QNu6MA.d.mts +0 -68
- package/dist/PolicyExporter-Bgi6nz82.d.mts +0 -291
- package/dist/PolicyExporter-BnvuFncj.d.ts +0 -291
- package/dist/ROPAManager-BS4eB8Hw.d.mts +0 -79
- package/dist/ROPAManager-qxTrXLkD.d.ts +0 -79
- package/dist/RegulatoryReportGenerator-BUYgzTTT.d.ts +0 -282
- package/dist/RegulatoryReportGenerator-DwcHcEFp.d.mts +0 -282
- package/dist/StepIndicator-CgrlokSV.d.ts +0 -171
- package/dist/StepIndicator-W8S_QjgO.d.mts +0 -171
- package/dist/breach-B_-6lDqS.d.mts +0 -17
- package/dist/breach-CzXqSsaY.d.ts +0 -17
- package/dist/breach-Eu9byel8.d.mts +0 -185
- package/dist/breach-Eu9byel8.d.ts +0 -185
- package/dist/chunk-5X32J5IA.mjs +0 -2
- package/dist/chunk-7D2OIPHH.mjs +0 -2
- package/dist/chunk-JKKRPS4P.js +0 -2
- package/dist/chunk-NCOZB2WU.mjs +0 -2
- package/dist/chunk-RGNP45VR.js +0 -2
- package/dist/compliance-score-racQe_E_.d.mts +0 -115
- package/dist/compliance-score-racQe_E_.d.ts +0 -115
- package/dist/consent-CmVzqZUk.d.mts +0 -99
- package/dist/consent-CmVzqZUk.d.ts +0 -99
- package/dist/consent-audit-BdByjYlM.d.mts +0 -65
- package/dist/consent-audit-DhbfMR0n.d.ts +0 -65
- package/dist/cross-border-BBi9rZyO.d.mts +0 -54
- package/dist/cross-border-Dy-U9Hu6.d.ts +0 -54
- package/dist/cross-border-UyT00llA.d.mts +0 -141
- package/dist/cross-border-UyT00llA.d.ts +0 -141
- package/dist/docx-BxKascXN.d.ts +0 -64
- package/dist/docx-CV7Vsry_.d.mts +0 -64
- package/dist/dpia-D82hUrJe.d.ts +0 -15
- package/dist/dpia-DQDFw2_l.d.mts +0 -15
- package/dist/dpia-c9GiiOq0.d.mts +0 -137
- package/dist/dpia-c9GiiOq0.d.ts +0 -137
- package/dist/dsr-CIx5sd7e.d.ts +0 -14
- package/dist/dsr-XZ_HqTlA.d.mts +0 -14
- package/dist/dsr-yKbqX531.d.mts +0 -128
- package/dist/dsr-yKbqX531.d.ts +0 -128
- package/dist/lawful-basis-BEyI0kGg.d.ts +0 -57
- package/dist/lawful-basis-C2eGaoHM.d.mts +0 -57
- package/dist/lawful-basis-Cv1VmDLn.d.mts +0 -112
- package/dist/lawful-basis-Cv1VmDLn.d.ts +0 -112
- package/dist/locale-CxJx2tzn.d.mts +0 -25
- package/dist/locale-DSkrtf-c.d.ts +0 -25
- package/dist/policy-engine-CCUCud2T.d.ts +0 -154
- package/dist/policy-engine-fYSqEqSW.d.mts +0 -154
- package/dist/policy-sections-BYx6fEFk.d.ts +0 -56
- package/dist/policy-sections-Dm97Nq8m.d.mts +0 -56
- package/dist/policy-templates-DhLwq4R-.d.ts +0 -43
- package/dist/policy-templates-DwYl2329.d.mts +0 -43
- package/dist/privacy-Ca6te9Ir.d.mts +0 -138
- package/dist/privacy-Ca6te9Ir.d.ts +0 -138
- package/dist/ropa-BDTM06tr.d.ts +0 -152
- package/dist/ropa-CFHuT7jE.d.mts +0 -152
- package/dist/ropa-CyynscU6.d.ts +0 -51
- package/dist/ropa-NIgxd8uP.d.mts +0 -51
- package/dist/sanitize-CxxwKxAx.d.mts +0 -94
- package/dist/sanitize-CxxwKxAx.d.ts +0 -94
- package/dist/styling-BMDGQDgS.d.mts +0 -64
- package/dist/styling-BaoQtV06.d.ts +0 -64
- package/dist/types-DK2CoKOC.d.mts +0 -10
- package/dist/types-DK2CoKOC.d.ts +0 -10
- package/dist/useAdaptivePolicyWizard-BnjW4OR4.d.mts +0 -52
- package/dist/useAdaptivePolicyWizard-sb3m4-Zk.d.ts +0 -52
- package/dist/useBreach-CPr86Yan.d.mts +0 -115
- package/dist/useBreach-DkVXvtJK.d.ts +0 -115
- package/dist/useConsent-DCNkIJHR.d.mts +0 -75
- package/dist/useConsent-dOcELSfX.d.ts +0 -75
- package/dist/useCrossBorderTransfer-DixjLjN1.d.mts +0 -78
- package/dist/useCrossBorderTransfer-DvSq06lv.d.ts +0 -78
- package/dist/useDPIA-B6180UQn.d.mts +0 -109
- package/dist/useDPIA-CTqbNbww.d.ts +0 -109
- package/dist/useDSR-WvHk8_iu.d.mts +0 -85
- package/dist/useDSR-wH4H6hSM.d.ts +0 -85
- package/dist/useDefaultPrivacyPolicy-Cs2WQSYQ.d.mts +0 -162
- package/dist/useDefaultPrivacyPolicy-DkOqMg2e.d.ts +0 -162
- package/dist/useLawfulBasis-CKJ-kw84.d.mts +0 -79
- package/dist/useLawfulBasis-DFTmu1ca.d.ts +0 -79
- package/dist/useROPA-BSSU1rfx.d.ts +0 -76
- package/dist/useROPA-C2hjaBTz.d.mts +0 -76
package/dist/lawful-basis.d.ts
CHANGED
|
@@ -1,32 +1,368 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
1
|
+
import * as React_2 from 'react';
|
|
2
|
+
import React__default from 'react';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Analyzes all processing activities and returns compliance gaps including
|
|
6
|
+
* missing DPO approval, overdue reviews, undocumented justifications,
|
|
7
|
+
* missing LIA for legitimate interests, and other documentation issues.
|
|
8
|
+
*
|
|
9
|
+
* @param activities Array of processing activities to analyze
|
|
10
|
+
* @returns Array of identified compliance gaps
|
|
11
|
+
*/
|
|
12
|
+
export declare function assessComplianceGaps(activities: ProcessingActivity[]): LawfulBasisComplianceGap[];
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Generates a summary of all lawful basis documentation across processing activities.
|
|
16
|
+
*
|
|
17
|
+
* @param activities Array of processing activities to summarize
|
|
18
|
+
* @returns LawfulBasisSummary with counts, breakdowns, and flagged activities
|
|
19
|
+
*/
|
|
20
|
+
export declare function generateLawfulBasisSummary(activities: ProcessingActivity[]): LawfulBasisSummary;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Returns a human-readable description of a lawful basis with the relevant
|
|
24
|
+
* NDPA section reference.
|
|
25
|
+
*
|
|
26
|
+
* @param basis The lawful basis to describe
|
|
27
|
+
* @returns Description string including NDPA section reference
|
|
28
|
+
*/
|
|
29
|
+
export declare function getLawfulBasisDescription(basis: LawfulBasisType): string;
|
|
30
|
+
|
|
31
|
+
export declare const LawfulBasis: {
|
|
32
|
+
Provider: React_2.FC<LawfulBasisProviderProps>;
|
|
33
|
+
Tracker: React_2.FC<LawfulBasisTrackerProps>;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Compliance gap identified across processing activities
|
|
38
|
+
*/
|
|
39
|
+
export declare interface LawfulBasisComplianceGap {
|
|
40
|
+
activityId: string;
|
|
41
|
+
activityName: string;
|
|
42
|
+
type: 'missing_approval' | 'overdue_review' | 'missing_justification' | 'missing_lia' | 'missing_sensitive_condition' | 'missing_retention' | 'missing_data_categories' | 'missing_purposes';
|
|
43
|
+
severity: 'high' | 'medium' | 'low';
|
|
44
|
+
description: string;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
declare type LawfulBasisContextValue = UseLawfulBasisReturn;
|
|
48
|
+
|
|
49
|
+
export declare const LawfulBasisProvider: React__default.FC<LawfulBasisProviderProps>;
|
|
50
|
+
|
|
51
|
+
export declare interface LawfulBasisProviderProps {
|
|
52
|
+
adapter?: StorageAdapter<ProcessingActivity[]>;
|
|
53
|
+
storageKey?: string;
|
|
54
|
+
useLocalStorage?: boolean;
|
|
55
|
+
initialActivities?: ProcessingActivity[];
|
|
56
|
+
onAdd?: (activity: ProcessingActivity) => void;
|
|
57
|
+
onUpdate?: (activity: ProcessingActivity) => void;
|
|
58
|
+
onRemove?: (id: string) => void;
|
|
59
|
+
children: React__default.ReactNode;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Summary of all lawful basis documentation for compliance reporting
|
|
64
|
+
*/
|
|
65
|
+
export declare interface LawfulBasisSummary {
|
|
66
|
+
/** Total number of processing activities */
|
|
67
|
+
totalActivities: number;
|
|
68
|
+
/** Breakdown by lawful basis */
|
|
69
|
+
byBasis: Record<LawfulBasisType, number>;
|
|
70
|
+
/** Number of activities involving sensitive data */
|
|
71
|
+
sensitiveDataActivities: number;
|
|
72
|
+
/** Number of activities involving cross-border transfers */
|
|
73
|
+
crossBorderActivities: number;
|
|
74
|
+
/** Activities due for review */
|
|
75
|
+
activitiesDueForReview: ProcessingActivity[];
|
|
76
|
+
/** Activities without DPO approval */
|
|
77
|
+
activitiesWithoutApproval: ProcessingActivity[];
|
|
78
|
+
/** Last updated timestamp */
|
|
79
|
+
lastUpdated: number;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Lawful basis tracker component. Implements NDPA Section 25 requirements for documenting
|
|
84
|
+
* and tracking the lawful basis for each personal data processing activity.
|
|
85
|
+
*/
|
|
86
|
+
export declare const LawfulBasisTracker: React__default.FC<LawfulBasisTrackerProps>;
|
|
87
|
+
|
|
88
|
+
declare interface LawfulBasisTrackerClassNames {
|
|
89
|
+
root?: string;
|
|
90
|
+
header?: string;
|
|
91
|
+
title?: string;
|
|
92
|
+
summary?: string;
|
|
93
|
+
summaryCard?: string;
|
|
94
|
+
table?: string;
|
|
95
|
+
tableHeader?: string;
|
|
96
|
+
tableRow?: string;
|
|
97
|
+
form?: string;
|
|
98
|
+
input?: string;
|
|
99
|
+
select?: string;
|
|
100
|
+
submitButton?: string;
|
|
101
|
+
/** Alias for submitButton */
|
|
102
|
+
primaryButton?: string;
|
|
103
|
+
statusBadge?: string;
|
|
104
|
+
complianceScore?: string;
|
|
105
|
+
gapAlert?: string;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
declare interface LawfulBasisTrackerProps {
|
|
109
|
+
/**
|
|
110
|
+
* List of processing activities to display
|
|
111
|
+
*/
|
|
112
|
+
activities: ProcessingActivity[];
|
|
113
|
+
/**
|
|
114
|
+
* Callback when a new activity is created
|
|
115
|
+
*/
|
|
116
|
+
onAddActivity?: (activity: Omit<ProcessingActivity, 'id' | 'createdAt' | 'updatedAt'>) => void;
|
|
117
|
+
/**
|
|
118
|
+
* Callback when an activity is updated
|
|
119
|
+
*/
|
|
120
|
+
onUpdateActivity?: (id: string, updates: Partial<ProcessingActivity>) => void;
|
|
121
|
+
/**
|
|
122
|
+
* Callback when an activity is archived
|
|
123
|
+
*/
|
|
124
|
+
onArchiveActivity?: (id: string) => void;
|
|
125
|
+
/**
|
|
126
|
+
* Title displayed on the tracker
|
|
127
|
+
* @default "Lawful Basis Tracker"
|
|
128
|
+
*/
|
|
129
|
+
title?: string;
|
|
130
|
+
/**
|
|
131
|
+
* Description text displayed on the tracker
|
|
132
|
+
* @default "Document and track the lawful basis for each processing activity as required by NDPA 2023 Section 25."
|
|
133
|
+
*/
|
|
134
|
+
description?: string;
|
|
135
|
+
/**
|
|
136
|
+
* Custom CSS class for the tracker container
|
|
137
|
+
*/
|
|
138
|
+
className?: string;
|
|
139
|
+
/**
|
|
140
|
+
* Custom CSS class for buttons
|
|
141
|
+
*/
|
|
142
|
+
buttonClassName?: string;
|
|
143
|
+
/**
|
|
144
|
+
* Whether to show the compliance summary at the top
|
|
145
|
+
* @default true
|
|
146
|
+
*/
|
|
147
|
+
showSummary?: boolean;
|
|
148
|
+
/**
|
|
149
|
+
* Whether to show compliance gap alerts
|
|
150
|
+
* @default true
|
|
151
|
+
*/
|
|
152
|
+
showComplianceGaps?: boolean;
|
|
153
|
+
/**
|
|
154
|
+
* Override class names for individual sections of the component.
|
|
155
|
+
* Takes priority over className / buttonClassName.
|
|
156
|
+
*/
|
|
157
|
+
classNames?: LawfulBasisTrackerClassNames;
|
|
158
|
+
/**
|
|
159
|
+
* When true, all default styling is removed so consumers
|
|
160
|
+
* can style from scratch using classNames.
|
|
161
|
+
*/
|
|
162
|
+
unstyled?: boolean;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Lawful Basis types aligned with NDPA 2023 Part III (Sections 24-28)
|
|
167
|
+
* Every processing activity must have a documented lawful basis
|
|
168
|
+
*/
|
|
169
|
+
/**
|
|
170
|
+
* The six lawful bases for processing personal data per NDPA Section 25(1)
|
|
171
|
+
*/
|
|
172
|
+
export declare type LawfulBasisType = 'consent' | 'contract' | 'legal_obligation' | 'vital_interests' | 'public_interest' | 'legitimate_interests';
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Validation result for a processing activity
|
|
176
|
+
*/
|
|
177
|
+
export declare interface LawfulBasisValidationResult {
|
|
178
|
+
isValid: boolean;
|
|
179
|
+
errors: string[];
|
|
180
|
+
warnings: string[];
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Represents a Legitimate Interest Assessment (LIA)
|
|
185
|
+
* Required when the lawful basis is 'legitimate_interests'
|
|
186
|
+
*/
|
|
187
|
+
export declare interface LegitimateInterestAssessment {
|
|
188
|
+
/** Unique identifier */
|
|
189
|
+
id: string;
|
|
190
|
+
/** ID of the associated processing activity */
|
|
191
|
+
processingActivityId: string;
|
|
192
|
+
/** Date the assessment was conducted */
|
|
193
|
+
assessmentDate: number;
|
|
194
|
+
/** Person who conducted the assessment */
|
|
195
|
+
assessor: {
|
|
196
|
+
name: string;
|
|
197
|
+
role: string;
|
|
198
|
+
email: string;
|
|
199
|
+
};
|
|
200
|
+
/** Description of the legitimate interest being pursued */
|
|
201
|
+
purposeTest: string;
|
|
202
|
+
/** Why the processing is necessary for this purpose */
|
|
203
|
+
necessityTest: string;
|
|
204
|
+
/** Balancing test: rights of data subject vs. legitimate interest */
|
|
205
|
+
balancingTest: string;
|
|
206
|
+
/** Safeguards applied to protect data subject rights */
|
|
207
|
+
safeguards: string[];
|
|
208
|
+
/** Overall conclusion */
|
|
209
|
+
conclusion: string;
|
|
210
|
+
/** Whether the assessment concluded the processing is justified */
|
|
211
|
+
approved: boolean;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* Represents a processing activity and its lawful basis
|
|
216
|
+
*/
|
|
217
|
+
export declare interface ProcessingActivity {
|
|
218
|
+
/** Unique identifier */
|
|
219
|
+
id: string;
|
|
220
|
+
/** Name of the processing activity */
|
|
221
|
+
name: string;
|
|
222
|
+
/** Description of what processing is performed */
|
|
223
|
+
description: string;
|
|
224
|
+
/** The lawful basis for this processing activity */
|
|
225
|
+
lawfulBasis: LawfulBasisType;
|
|
226
|
+
/** Justification for why this lawful basis applies */
|
|
227
|
+
lawfulBasisJustification: string;
|
|
228
|
+
/** Categories of personal data being processed */
|
|
229
|
+
dataCategories: string[];
|
|
230
|
+
/** Whether sensitive personal data is involved */
|
|
231
|
+
involvesSensitiveData: boolean;
|
|
232
|
+
/** Condition for processing sensitive data (required if involvesSensitiveData is true) */
|
|
233
|
+
sensitiveDataCondition?: SensitiveDataCondition;
|
|
234
|
+
/** Categories of data subjects */
|
|
235
|
+
dataSubjectCategories: string[];
|
|
236
|
+
/** Purposes of the processing */
|
|
237
|
+
purposes: string[];
|
|
238
|
+
/** Data retention period */
|
|
239
|
+
retentionPeriod: string;
|
|
240
|
+
/** Justification for the retention period */
|
|
241
|
+
retentionJustification?: string;
|
|
242
|
+
/** Recipients or categories of recipients */
|
|
243
|
+
recipients?: string[];
|
|
244
|
+
/** Whether data is transferred outside Nigeria */
|
|
245
|
+
crossBorderTransfer: boolean;
|
|
246
|
+
/** Timestamp when the record was created */
|
|
247
|
+
createdAt: number;
|
|
248
|
+
/** Timestamp when the record was last updated */
|
|
249
|
+
updatedAt: number;
|
|
250
|
+
/** Next review date */
|
|
251
|
+
reviewDate?: number;
|
|
252
|
+
/** Status of the processing activity */
|
|
253
|
+
status: 'active' | 'inactive' | 'under_review' | 'archived';
|
|
254
|
+
/** DPO approval details */
|
|
255
|
+
dpoApproval?: {
|
|
256
|
+
approved: boolean;
|
|
257
|
+
approvedBy: string;
|
|
258
|
+
approvedAt: number;
|
|
259
|
+
notes?: string;
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
/**
|
|
264
|
+
* Additional conditions required for processing sensitive personal data
|
|
265
|
+
* per NDPA Section 27
|
|
266
|
+
*/
|
|
267
|
+
export declare type SensitiveDataCondition = 'explicit_consent' | 'employment_law' | 'vital_interests_incapable' | 'nonprofit_legitimate' | 'publicly_available' | 'legal_claims' | 'substantial_public_interest' | 'health_purposes' | 'public_health' | 'archiving_research';
|
|
268
|
+
|
|
269
|
+
export declare interface StorageAdapter<T = unknown> {
|
|
270
|
+
/** Load persisted data. Called once on hook mount. */
|
|
271
|
+
load(): T | null | Promise<T | null>;
|
|
272
|
+
/** Persist data. Called on every state change. */
|
|
273
|
+
save(data: T): void | Promise<void>;
|
|
274
|
+
/** Clear persisted data. Called on reset. */
|
|
275
|
+
remove(): void | Promise<void>;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
/**
|
|
279
|
+
* Hook for managing lawful basis documentation for processing activities
|
|
280
|
+
* in compliance with NDPA 2023 Section 25.
|
|
281
|
+
*/
|
|
282
|
+
export declare function useLawfulBasis({ initialActivities, adapter, storageKey, useLocalStorage, onAdd, onUpdate, onRemove, }?: UseLawfulBasisOptions): UseLawfulBasisReturn;
|
|
283
|
+
|
|
284
|
+
export declare function useLawfulBasisCompound(): LawfulBasisContextValue;
|
|
285
|
+
|
|
286
|
+
declare interface UseLawfulBasisOptions {
|
|
287
|
+
/**
|
|
288
|
+
* Initial processing activities to load
|
|
289
|
+
*/
|
|
290
|
+
initialActivities?: ProcessingActivity[];
|
|
291
|
+
/**
|
|
292
|
+
* Pluggable storage adapter. When provided, takes precedence over storageKey/useLocalStorage.
|
|
293
|
+
*/
|
|
294
|
+
adapter?: StorageAdapter<ProcessingActivity[]>;
|
|
295
|
+
/**
|
|
296
|
+
* Storage key for persisting activities
|
|
297
|
+
* @default "ndpr_lawful_basis_activities"
|
|
298
|
+
* @deprecated Use adapter instead
|
|
299
|
+
*/
|
|
300
|
+
storageKey?: string;
|
|
301
|
+
/**
|
|
302
|
+
* Whether to use local storage to persist activities
|
|
303
|
+
* @default true
|
|
304
|
+
* @deprecated Use adapter instead
|
|
305
|
+
*/
|
|
306
|
+
useLocalStorage?: boolean;
|
|
307
|
+
/**
|
|
308
|
+
* Callback when an activity is added
|
|
309
|
+
*/
|
|
310
|
+
onAdd?: (activity: ProcessingActivity) => void;
|
|
311
|
+
/**
|
|
312
|
+
* Callback when an activity is updated
|
|
313
|
+
*/
|
|
314
|
+
onUpdate?: (activity: ProcessingActivity) => void;
|
|
315
|
+
/**
|
|
316
|
+
* Callback when an activity is removed
|
|
317
|
+
*/
|
|
318
|
+
onRemove?: (id: string) => void;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
export declare interface UseLawfulBasisReturn {
|
|
322
|
+
/**
|
|
323
|
+
* All processing activities
|
|
324
|
+
*/
|
|
325
|
+
activities: ProcessingActivity[];
|
|
326
|
+
/**
|
|
327
|
+
* Add a new processing activity
|
|
328
|
+
*/
|
|
329
|
+
addActivity: (activity: Omit<ProcessingActivity, 'id' | 'createdAt' | 'updatedAt'>) => ProcessingActivity;
|
|
330
|
+
/**
|
|
331
|
+
* Update an existing processing activity
|
|
332
|
+
*/
|
|
333
|
+
updateActivity: (id: string, updates: Partial<ProcessingActivity>) => ProcessingActivity | null;
|
|
334
|
+
/**
|
|
335
|
+
* Remove a processing activity
|
|
336
|
+
*/
|
|
337
|
+
removeActivity: (id: string) => void;
|
|
338
|
+
/**
|
|
339
|
+
* Get a specific processing activity by ID
|
|
340
|
+
*/
|
|
341
|
+
getActivity: (id: string) => ProcessingActivity | null;
|
|
342
|
+
/**
|
|
343
|
+
* Get a summary of all lawful basis documentation
|
|
344
|
+
*/
|
|
345
|
+
getSummary: () => LawfulBasisSummary;
|
|
346
|
+
/**
|
|
347
|
+
* Validate a processing activity
|
|
348
|
+
*/
|
|
349
|
+
validateActivity: (activity: ProcessingActivity) => LawfulBasisValidationResult;
|
|
350
|
+
/**
|
|
351
|
+
* Whether the adapter is still loading data (relevant for async adapters)
|
|
352
|
+
*/
|
|
353
|
+
isLoading: boolean;
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
/**
|
|
357
|
+
* Validates that all required fields are present on a processing activity
|
|
358
|
+
* and that the lawful basis is properly documented.
|
|
359
|
+
*
|
|
360
|
+
* If lawfulBasis is 'legitimate_interests', ensures a LIA justification exists.
|
|
361
|
+
* If involvesSensitiveData is true, ensures sensitiveDataCondition is set.
|
|
362
|
+
*
|
|
363
|
+
* @param activity The processing activity to validate
|
|
364
|
+
* @returns Validation result with errors and warnings
|
|
365
|
+
*/
|
|
366
|
+
export declare function validateProcessingActivity(activity: ProcessingActivity): LawfulBasisValidationResult;
|
|
367
|
+
|
|
368
|
+
export { }
|
package/dist/lawful-basis.js
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
'use strict';var chunkLSNL4XR5_js=require('./chunk-LSNL4XR5.js'),chunk7AVN424U_js=require('./chunk-7AVN424U.js'),chunkTDDAYVKK_js=require('./chunk-TDDAYVKK.js');require('./chunk-E64TU6IU.js'),require('./chunk-ELKB2AFZ.js'),require('./chunk-MQFZHA2D.js');var react=require('react'),jsxRuntime=require('react/jsx-runtime');var r=react.createContext(null);function x(){let s=react.useContext(r);if(!s)throw new Error("LawfulBasis compound components must be wrapped in <LawfulBasis.Provider>. Example: <LawfulBasis.Provider><LawfulBasis.Tracker /></LawfulBasis.Provider>");return s}var e=({adapter:s,storageKey:t,useLocalStorage:i,initialActivities:u,onAdd:f,onUpdate:p,onRemove:l,children:n})=>{let m=chunk7AVN424U_js.a({adapter:s,storageKey:t,useLocalStorage:i,initialActivities:u,onAdd:f,onUpdate:p,onRemove:l});return jsxRuntime.jsx(r.Provider,{value:m,children:n})};var y={Provider:e,Tracker:chunkLSNL4XR5_js.a};Object.defineProperty(exports,"LawfulBasisTracker",{enumerable:true,get:function(){return chunkLSNL4XR5_js.a}});Object.defineProperty(exports,"useLawfulBasis",{enumerable:true,get:function(){return chunk7AVN424U_js.a}});Object.defineProperty(exports,"assessComplianceGaps",{enumerable:true,get:function(){return chunkTDDAYVKK_js.c}});Object.defineProperty(exports,"generateLawfulBasisSummary",{enumerable:true,get:function(){return chunkTDDAYVKK_js.d}});Object.defineProperty(exports,"getLawfulBasisDescription",{enumerable:true,get:function(){return chunkTDDAYVKK_js.b}});Object.defineProperty(exports,"validateProcessingActivity",{enumerable:true,get:function(){return chunkTDDAYVKK_js.a}});exports.LawfulBasis=y;exports.LawfulBasisProvider=e;exports.useLawfulBasisCompound=x;//# sourceMappingURL=lawful-basis.js.map
|
|
2
3
|
//# sourceMappingURL=lawful-basis.js.map
|
package/dist/lawful-basis.mjs
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
import {a}from'./chunk-CISJAQ6W.mjs';export{a as LawfulBasisTracker}from'./chunk-CISJAQ6W.mjs';import {a as a$1}from'./chunk-E4NCJ7RD.mjs';export{a as useLawfulBasis}from'./chunk-E4NCJ7RD.mjs';export{c as assessComplianceGaps,d as generateLawfulBasisSummary,b as getLawfulBasisDescription,a as validateProcessingActivity}from'./chunk-TXBZPCGF.mjs';import'./chunk-AYKLAEOU.mjs';import'./chunk-6WIP33TW.mjs';import'./chunk-WWT2ZSNU.mjs';import {createContext,useContext}from'react';import {jsx}from'react/jsx-runtime';var r=createContext(null);function x(){let s=useContext(r);if(!s)throw new Error("LawfulBasis compound components must be wrapped in <LawfulBasis.Provider>. Example: <LawfulBasis.Provider><LawfulBasis.Tracker /></LawfulBasis.Provider>");return s}var e=({adapter:s,storageKey:t,useLocalStorage:i,initialActivities:u,onAdd:f,onUpdate:p,onRemove:l,children:n})=>{let m=a$1({adapter:s,storageKey:t,useLocalStorage:i,initialActivities:u,onAdd:f,onUpdate:p,onRemove:l});return jsx(r.Provider,{value:m,children:n})};var y={Provider:e,Tracker:a};export{y as LawfulBasis,e as LawfulBasisProvider,x as useLawfulBasisCompound};//# sourceMappingURL=lawful-basis.mjs.map
|
|
2
3
|
//# sourceMappingURL=lawful-basis.mjs.map
|