@redacto.io/consent-sdk-react 10.0.0-beta.0 → 10.0.0-beta.2
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/.turbo/turbo-build.log +22 -25
- package/CHANGELOG.md +20 -0
- package/dist/index.d.mts +13 -6
- package/dist/index.d.ts +13 -6
- package/dist/index.js +6 -8
- package/dist/index.mjs +6 -8
- package/dist/privacy-center.d.mts +62 -27
- package/dist/privacy-center.d.ts +62 -27
- package/dist/privacy-center.js +1940 -1365
- package/dist/privacy-center.mjs +1864 -1284
- package/package.json +1 -1
- package/src/RedactoNoticeConsent/RedactoNoticeConsent.tsx +1 -0
- package/src/RedactoNoticeConsent/api/index.ts +4 -4
- package/src/RedactoNoticeConsent/api/types.ts +3 -2
- package/src/RedactoNoticeConsent/types.ts +1 -1
- package/src/RedactoNoticeConsentInline/RedactoNoticeConsentInline.tsx +1 -0
- package/src/RedactoNoticeConsentInline/api/index.ts +4 -4
- package/src/RedactoNoticeConsentInline/api/types.ts +2 -1
- package/src/RedactoNoticeConsentInline/types.ts +1 -1
- package/src/RedactoPrivacyCenter/PrivacyCenterLayout.tsx +8 -5
- package/src/RedactoPrivacyCenter/RedactoPrivacyCenter.tsx +1 -1
- package/src/RedactoPrivacyCenter/api/actions.ts +24 -5
- package/src/RedactoPrivacyCenter/api/client.ts +101 -21
- package/src/RedactoPrivacyCenter/components/AppShell/UserMenu.tsx +64 -35
- package/src/RedactoPrivacyCenter/components/ConsentManager.tsx +7 -0
- package/src/RedactoPrivacyCenter/components/ConsentManagerCells.tsx +19 -2
- package/src/RedactoPrivacyCenter/components/Form.tsx +7 -3
- package/src/RedactoPrivacyCenter/components/ModifyConsentModal.tsx +1 -1
- package/src/RedactoPrivacyCenter/components/SelectUser.tsx +83 -0
- package/src/RedactoPrivacyCenter/components/SelectUserGate.tsx +193 -0
- package/src/RedactoPrivacyCenter/components/constant.ts +11 -0
- package/src/RedactoPrivacyCenter/context/BaseUrlContext.tsx +1 -1
- package/src/RedactoPrivacyCenter/context/ProfileSwitchContext.tsx +15 -0
- package/src/RedactoPrivacyCenter/context/types.ts +1 -1
- package/src/RedactoPrivacyCenter/lib/types.ts +63 -2
- package/src/RedactoPrivacyCenter/locales/as/translation.json +9 -1
- package/src/RedactoPrivacyCenter/locales/bho/translation.json +9 -1
- package/src/RedactoPrivacyCenter/locales/bn/translation.json +9 -1
- package/src/RedactoPrivacyCenter/locales/brx/translation.json +9 -1
- package/src/RedactoPrivacyCenter/locales/doi/translation.json +9 -1
- package/src/RedactoPrivacyCenter/locales/en/translation.json +9 -1
- package/src/RedactoPrivacyCenter/locales/gom/translation.json +9 -1
- package/src/RedactoPrivacyCenter/locales/gu/translation.json +9 -1
- package/src/RedactoPrivacyCenter/locales/hi/translation.json +9 -1
- package/src/RedactoPrivacyCenter/locales/kn/translation.json +9 -1
- package/src/RedactoPrivacyCenter/locales/ks/translation.json +9 -1
- package/src/RedactoPrivacyCenter/locales/mai/translation.json +9 -1
- package/src/RedactoPrivacyCenter/locales/ml/translation.json +9 -1
- package/src/RedactoPrivacyCenter/locales/mni-Mtei/translation.json +9 -1
- package/src/RedactoPrivacyCenter/locales/mr/translation.json +9 -1
- package/src/RedactoPrivacyCenter/locales/ne/translation.json +9 -1
- package/src/RedactoPrivacyCenter/locales/or/translation.json +9 -1
- package/src/RedactoPrivacyCenter/locales/pa/translation.json +9 -1
- package/src/RedactoPrivacyCenter/locales/sa/translation.json +9 -1
- package/src/RedactoPrivacyCenter/locales/sat/translation.json +9 -1
- package/src/RedactoPrivacyCenter/locales/sd/translation.json +9 -1
- package/src/RedactoPrivacyCenter/locales/ta/translation.json +9 -1
- package/src/RedactoPrivacyCenter/locales/te/translation.json +9 -1
- package/src/RedactoPrivacyCenter/locales/ur/translation.json +9 -1
- package/src/RedactoPrivacyCenter/styles/injectStyles.ts +105 -0
- package/tests/Form.test.tsx +53 -7
- package/tests/ManageConsentErrorMapping.test.tsx +85 -0
- package/tests/RevocablePurpose.test.tsx +146 -0
- package/tests/RevokeWarningMessage.test.tsx +151 -0
- package/tests/consentClient.test.ts +171 -0
- package/tests/manageConsentServer.test.ts +38 -0
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,25 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
DTS
|
|
21
|
-
DTS
|
|
22
|
-
DTS dist/
|
|
23
|
-
DTS dist/privacy-center.d.mts 30.69 KB
|
|
24
|
-
DTS dist/index.d.ts 8.03 KB
|
|
25
|
-
DTS dist/privacy-center.d.ts 30.69 KB
|
|
1
|
+
[2m$ tsup[22m
|
|
2
|
+
[34mCLI[39m Building entry: {"index":"src/index.ts","privacy-center":"src/privacy-center.ts"}
|
|
3
|
+
[34mCLI[39m Using tsconfig: tsconfig.json
|
|
4
|
+
[34mCLI[39m tsup v8.5.1
|
|
5
|
+
[34mCLI[39m Using tsup config: /Users/sadanmianredacto/Developer/redacto/consent-sdk/packages/consent-sdk-react/tsup.config.ts
|
|
6
|
+
[34mCLI[39m Target: es2019
|
|
7
|
+
[34mCLI[39m Cleaning output folder
|
|
8
|
+
[34mESM[39m Build start
|
|
9
|
+
[34mCJS[39m Build start
|
|
10
|
+
[32mCJS[39m [1mdist/index.js [22m[32m520.79 KB[39m
|
|
11
|
+
[32mCJS[39m [1mdist/privacy-center.js [22m[32m2.24 MB[39m
|
|
12
|
+
[32mCJS[39m ⚡️ Build success in 124ms
|
|
13
|
+
[32mESM[39m [1mdist/index.mjs [22m[32m506.34 KB[39m
|
|
14
|
+
[32mESM[39m [1mdist/chunk-6A665OPR.mjs [22m[32m841.00 B[39m
|
|
15
|
+
[32mESM[39m [1mdist/privacy-center.mjs [22m[32m2.20 MB[39m
|
|
16
|
+
[32mESM[39m ⚡️ Build success in 124ms
|
|
17
|
+
DTS Build start
|
|
18
|
+
DTS ⚡️ Build success in 2664ms
|
|
19
|
+
DTS dist/index.d.mts 8.27 KB
|
|
20
|
+
DTS dist/privacy-center.d.mts 33.25 KB
|
|
21
|
+
DTS dist/index.d.ts 8.27 KB
|
|
22
|
+
DTS dist/privacy-center.d.ts 33.25 KB
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# @redacto.io/consent-sdk-react
|
|
2
2
|
|
|
3
|
+
## 10.0.0-beta.2
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- add revokable and non revokable purposes
|
|
8
|
+
|
|
9
|
+
## 10.0.0-beta.1
|
|
10
|
+
|
|
11
|
+
### Major Changes
|
|
12
|
+
|
|
13
|
+
- feat(privacy-center): shared-contact profile picker (OTP + embeddable SDK)
|
|
14
|
+
|
|
15
|
+
### Minor Changes
|
|
16
|
+
|
|
17
|
+
- 61d18e8: fix(privacy-center): resolve mobile/org_user_id as contact for mobile-only logins
|
|
18
|
+
|
|
19
|
+
### Patch Changes
|
|
20
|
+
|
|
21
|
+
- 8145b3d: Privacy Center: when `ledgerBaseUrl` is not provided, consent reads/writes (user-consents, group purposes, manage-consent, receipts list, receipt PDF) fall back to the legacy Python `/dsar/privacy-center` endpoints and payloads instead of 404ing against `${baseUrl}/public/...`, and the DSAR form's ledger picker overlay is skipped. Fixes the Privacy Center showing "No Data" for integrations without a deployed Go ledger.
|
|
22
|
+
|
|
3
23
|
## 10.0.0-beta.0
|
|
4
24
|
|
|
5
25
|
### Major Changes
|
package/dist/index.d.mts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
1
|
import * as react from 'react';
|
|
3
2
|
import react__default from 'react';
|
|
4
3
|
|
|
@@ -47,7 +46,7 @@ type Props$1 = Readonly<{
|
|
|
47
46
|
accessToken: string;
|
|
48
47
|
refreshToken: string;
|
|
49
48
|
baseUrl?: string;
|
|
50
|
-
ledgerBaseUrl
|
|
49
|
+
ledgerBaseUrl?: string;
|
|
51
50
|
settings?: Partial<Settings$1>;
|
|
52
51
|
language?: string;
|
|
53
52
|
blockUI?: boolean;
|
|
@@ -62,6 +61,14 @@ type Props$1 = Readonly<{
|
|
|
62
61
|
reviewModeButtonText?: string;
|
|
63
62
|
}>;
|
|
64
63
|
|
|
64
|
+
/**
|
|
65
|
+
* Redacto Notice Consent Component
|
|
66
|
+
*
|
|
67
|
+
* A comprehensive consent management component that handles both initial consent
|
|
68
|
+
* collection and reconsent flows with visual distinction between already-consented
|
|
69
|
+
* and needs-consent purposes.
|
|
70
|
+
*/
|
|
71
|
+
|
|
65
72
|
/**
|
|
66
73
|
* RedactoNoticeConsent
|
|
67
74
|
*
|
|
@@ -69,7 +76,7 @@ type Props$1 = Readonly<{
|
|
|
69
76
|
* to view and manage their consent preferences. Supports both initial consent
|
|
70
77
|
* collection and reconsent flows.
|
|
71
78
|
*/
|
|
72
|
-
declare const RedactoNoticeConsent: ({ noticeId, accessToken, refreshToken, baseUrl, ledgerBaseUrl, language, blockUI, onAccept, onDecline, onError, settings, applicationId, validateAgainst, digilockerMode, digilockerCallbackUrl, includeFullyConsentedData, reviewModeButtonText, }: Props$1) =>
|
|
79
|
+
declare const RedactoNoticeConsent: ({ noticeId, accessToken, refreshToken, baseUrl, ledgerBaseUrl, language, blockUI, onAccept, onDecline, onError, settings, applicationId, validateAgainst, digilockerMode, digilockerCallbackUrl, includeFullyConsentedData, reviewModeButtonText, }: Props$1) => react__default.JSX.Element;
|
|
73
80
|
|
|
74
81
|
type Settings = {
|
|
75
82
|
button: {
|
|
@@ -103,7 +110,7 @@ type Props = Readonly<{
|
|
|
103
110
|
accessToken?: string;
|
|
104
111
|
refreshToken?: string;
|
|
105
112
|
baseUrl?: string;
|
|
106
|
-
ledgerBaseUrl
|
|
113
|
+
ledgerBaseUrl?: string;
|
|
107
114
|
settings?: Partial<Settings>;
|
|
108
115
|
language?: string;
|
|
109
116
|
onAccept?: () => void;
|
|
@@ -114,7 +121,7 @@ type Props = Readonly<{
|
|
|
114
121
|
}>;
|
|
115
122
|
|
|
116
123
|
declare const RedactoConsentInline: react.MemoExoticComponent<{
|
|
117
|
-
({ org_uuid, workspace_uuid, notice_uuid, accessToken, baseUrl, ledgerBaseUrl, language, onAccept, onError, onValidationChange, settings, applicationId, }: Props):
|
|
124
|
+
({ org_uuid, workspace_uuid, notice_uuid, accessToken, baseUrl, ledgerBaseUrl, language, onAccept, onError, onValidationChange, settings, applicationId, }: Props): react.JSX.Element | null;
|
|
118
125
|
displayName: string;
|
|
119
126
|
}>;
|
|
120
127
|
|
|
@@ -152,7 +159,7 @@ type RedactoNoticeAssistedProps = {
|
|
|
152
159
|
* submit, `onComplete` fires immediately with no confirmation screen (mirroring
|
|
153
160
|
* RedactoNoticeConsent's `onAccept`). Steps: `notice` → `verify` (with `otpSent`).
|
|
154
161
|
*/
|
|
155
|
-
declare const RedactoNoticeAssisted: ({ organisationUuid, workspaceUuid, noticeUuid, baseUrl, onDecline, onComplete, }: RedactoNoticeAssistedProps) =>
|
|
162
|
+
declare const RedactoNoticeAssisted: ({ organisationUuid, workspaceUuid, noticeUuid, baseUrl, onDecline, onComplete, }: RedactoNoticeAssistedProps) => react.JSX.Element;
|
|
156
163
|
|
|
157
164
|
/**
|
|
158
165
|
* DigiLockerCallback Component
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
1
|
import * as react from 'react';
|
|
3
2
|
import react__default from 'react';
|
|
4
3
|
|
|
@@ -47,7 +46,7 @@ type Props$1 = Readonly<{
|
|
|
47
46
|
accessToken: string;
|
|
48
47
|
refreshToken: string;
|
|
49
48
|
baseUrl?: string;
|
|
50
|
-
ledgerBaseUrl
|
|
49
|
+
ledgerBaseUrl?: string;
|
|
51
50
|
settings?: Partial<Settings$1>;
|
|
52
51
|
language?: string;
|
|
53
52
|
blockUI?: boolean;
|
|
@@ -62,6 +61,14 @@ type Props$1 = Readonly<{
|
|
|
62
61
|
reviewModeButtonText?: string;
|
|
63
62
|
}>;
|
|
64
63
|
|
|
64
|
+
/**
|
|
65
|
+
* Redacto Notice Consent Component
|
|
66
|
+
*
|
|
67
|
+
* A comprehensive consent management component that handles both initial consent
|
|
68
|
+
* collection and reconsent flows with visual distinction between already-consented
|
|
69
|
+
* and needs-consent purposes.
|
|
70
|
+
*/
|
|
71
|
+
|
|
65
72
|
/**
|
|
66
73
|
* RedactoNoticeConsent
|
|
67
74
|
*
|
|
@@ -69,7 +76,7 @@ type Props$1 = Readonly<{
|
|
|
69
76
|
* to view and manage their consent preferences. Supports both initial consent
|
|
70
77
|
* collection and reconsent flows.
|
|
71
78
|
*/
|
|
72
|
-
declare const RedactoNoticeConsent: ({ noticeId, accessToken, refreshToken, baseUrl, ledgerBaseUrl, language, blockUI, onAccept, onDecline, onError, settings, applicationId, validateAgainst, digilockerMode, digilockerCallbackUrl, includeFullyConsentedData, reviewModeButtonText, }: Props$1) =>
|
|
79
|
+
declare const RedactoNoticeConsent: ({ noticeId, accessToken, refreshToken, baseUrl, ledgerBaseUrl, language, blockUI, onAccept, onDecline, onError, settings, applicationId, validateAgainst, digilockerMode, digilockerCallbackUrl, includeFullyConsentedData, reviewModeButtonText, }: Props$1) => react__default.JSX.Element;
|
|
73
80
|
|
|
74
81
|
type Settings = {
|
|
75
82
|
button: {
|
|
@@ -103,7 +110,7 @@ type Props = Readonly<{
|
|
|
103
110
|
accessToken?: string;
|
|
104
111
|
refreshToken?: string;
|
|
105
112
|
baseUrl?: string;
|
|
106
|
-
ledgerBaseUrl
|
|
113
|
+
ledgerBaseUrl?: string;
|
|
107
114
|
settings?: Partial<Settings>;
|
|
108
115
|
language?: string;
|
|
109
116
|
onAccept?: () => void;
|
|
@@ -114,7 +121,7 @@ type Props = Readonly<{
|
|
|
114
121
|
}>;
|
|
115
122
|
|
|
116
123
|
declare const RedactoConsentInline: react.MemoExoticComponent<{
|
|
117
|
-
({ org_uuid, workspace_uuid, notice_uuid, accessToken, baseUrl, ledgerBaseUrl, language, onAccept, onError, onValidationChange, settings, applicationId, }: Props):
|
|
124
|
+
({ org_uuid, workspace_uuid, notice_uuid, accessToken, baseUrl, ledgerBaseUrl, language, onAccept, onError, onValidationChange, settings, applicationId, }: Props): react.JSX.Element | null;
|
|
118
125
|
displayName: string;
|
|
119
126
|
}>;
|
|
120
127
|
|
|
@@ -152,7 +159,7 @@ type RedactoNoticeAssistedProps = {
|
|
|
152
159
|
* submit, `onComplete` fires immediately with no confirmation screen (mirroring
|
|
153
160
|
* RedactoNoticeConsent's `onAccept`). Steps: `notice` → `verify` (with `otpSent`).
|
|
154
161
|
*/
|
|
155
|
-
declare const RedactoNoticeAssisted: ({ organisationUuid, workspaceUuid, noticeUuid, baseUrl, onDecline, onComplete, }: RedactoNoticeAssistedProps) =>
|
|
162
|
+
declare const RedactoNoticeAssisted: ({ organisationUuid, workspaceUuid, noticeUuid, baseUrl, onDecline, onComplete, }: RedactoNoticeAssistedProps) => react.JSX.Element;
|
|
156
163
|
|
|
157
164
|
/**
|
|
158
165
|
* DigiLockerCallback Component
|
package/dist/index.js
CHANGED
|
@@ -181,6 +181,7 @@ var fetchConsentContent = async ({
|
|
|
181
181
|
};
|
|
182
182
|
var submitConsentEvent = async ({
|
|
183
183
|
accessToken,
|
|
184
|
+
baseUrl,
|
|
184
185
|
ledgerBaseUrl,
|
|
185
186
|
noticeUuid,
|
|
186
187
|
purposes,
|
|
@@ -202,10 +203,7 @@ var submitConsentEvent = async ({
|
|
|
202
203
|
if (!ORGANISATION_UUID || !WORKSPACE_UUID) {
|
|
203
204
|
throw new Error("Invalid token: missing organization or workspace UUID");
|
|
204
205
|
}
|
|
205
|
-
|
|
206
|
-
throw new Error("ledgerBaseUrl is required to submit consent");
|
|
207
|
-
}
|
|
208
|
-
const apiBaseUrl = ledgerBaseUrl;
|
|
206
|
+
const apiBaseUrl = ledgerBaseUrl || baseUrl || BASE_URL;
|
|
209
207
|
const validatedPurposes = purposes.map((purpose) => {
|
|
210
208
|
if (!purpose.uuid) {
|
|
211
209
|
throw new Error(`Invalid purpose data: missing uuid`);
|
|
@@ -2997,6 +2995,7 @@ var RedactoNoticeConsent = ({
|
|
|
2997
2995
|
if (content) {
|
|
2998
2996
|
await submitConsentEvent({
|
|
2999
2997
|
accessToken,
|
|
2998
|
+
baseUrl,
|
|
3000
2999
|
ledgerBaseUrl,
|
|
3001
3000
|
noticeUuid: content.notice_uuid,
|
|
3002
3001
|
purposes: content.purposes.map((purpose) => {
|
|
@@ -4778,16 +4777,14 @@ var submitConsentEvent2 = async ({
|
|
|
4778
4777
|
org_uuid,
|
|
4779
4778
|
workspace_uuid,
|
|
4780
4779
|
accessToken,
|
|
4780
|
+
baseUrl,
|
|
4781
4781
|
ledgerBaseUrl,
|
|
4782
4782
|
noticeUuid,
|
|
4783
4783
|
purposes,
|
|
4784
4784
|
declined,
|
|
4785
4785
|
meta_data
|
|
4786
4786
|
}) => {
|
|
4787
|
-
|
|
4788
|
-
throw new Error("ledgerBaseUrl is required to submit consent");
|
|
4789
|
-
}
|
|
4790
|
-
const apiBaseUrl = ledgerBaseUrl;
|
|
4787
|
+
const apiBaseUrl = ledgerBaseUrl || baseUrl || BASE_URL2;
|
|
4791
4788
|
const payload = {
|
|
4792
4789
|
notice_uuid: noticeUuid,
|
|
4793
4790
|
purposes: purposes.map((purpose) => {
|
|
@@ -5472,6 +5469,7 @@ var RedactoConsentInlineComponent = ({
|
|
|
5472
5469
|
org_uuid,
|
|
5473
5470
|
workspace_uuid,
|
|
5474
5471
|
accessToken: tokenToUse,
|
|
5472
|
+
baseUrl,
|
|
5475
5473
|
ledgerBaseUrl,
|
|
5476
5474
|
noticeUuid: content.notice_uuid,
|
|
5477
5475
|
purposes: content.purposes.map((purpose) => {
|
package/dist/index.mjs
CHANGED
|
@@ -155,6 +155,7 @@ var fetchConsentContent = async ({
|
|
|
155
155
|
};
|
|
156
156
|
var submitConsentEvent = async ({
|
|
157
157
|
accessToken,
|
|
158
|
+
baseUrl,
|
|
158
159
|
ledgerBaseUrl,
|
|
159
160
|
noticeUuid,
|
|
160
161
|
purposes,
|
|
@@ -176,10 +177,7 @@ var submitConsentEvent = async ({
|
|
|
176
177
|
if (!ORGANISATION_UUID || !WORKSPACE_UUID) {
|
|
177
178
|
throw new Error("Invalid token: missing organization or workspace UUID");
|
|
178
179
|
}
|
|
179
|
-
|
|
180
|
-
throw new Error("ledgerBaseUrl is required to submit consent");
|
|
181
|
-
}
|
|
182
|
-
const apiBaseUrl = ledgerBaseUrl;
|
|
180
|
+
const apiBaseUrl = ledgerBaseUrl || baseUrl || BASE_URL;
|
|
183
181
|
const validatedPurposes = purposes.map((purpose) => {
|
|
184
182
|
if (!purpose.uuid) {
|
|
185
183
|
throw new Error(`Invalid purpose data: missing uuid`);
|
|
@@ -2944,6 +2942,7 @@ var RedactoNoticeConsent = ({
|
|
|
2944
2942
|
if (content) {
|
|
2945
2943
|
await submitConsentEvent({
|
|
2946
2944
|
accessToken,
|
|
2945
|
+
baseUrl,
|
|
2947
2946
|
ledgerBaseUrl,
|
|
2948
2947
|
noticeUuid: content.notice_uuid,
|
|
2949
2948
|
purposes: content.purposes.map((purpose) => {
|
|
@@ -4725,16 +4724,14 @@ var submitConsentEvent2 = async ({
|
|
|
4725
4724
|
org_uuid,
|
|
4726
4725
|
workspace_uuid,
|
|
4727
4726
|
accessToken,
|
|
4727
|
+
baseUrl,
|
|
4728
4728
|
ledgerBaseUrl,
|
|
4729
4729
|
noticeUuid,
|
|
4730
4730
|
purposes,
|
|
4731
4731
|
declined,
|
|
4732
4732
|
meta_data
|
|
4733
4733
|
}) => {
|
|
4734
|
-
|
|
4735
|
-
throw new Error("ledgerBaseUrl is required to submit consent");
|
|
4736
|
-
}
|
|
4737
|
-
const apiBaseUrl = ledgerBaseUrl;
|
|
4734
|
+
const apiBaseUrl = ledgerBaseUrl || baseUrl || BASE_URL2;
|
|
4738
4735
|
const payload = {
|
|
4739
4736
|
notice_uuid: noticeUuid,
|
|
4740
4737
|
purposes: purposes.map((purpose) => {
|
|
@@ -5419,6 +5416,7 @@ var RedactoConsentInlineComponent = ({
|
|
|
5419
5416
|
org_uuid,
|
|
5420
5417
|
workspace_uuid,
|
|
5421
5418
|
accessToken: tokenToUse,
|
|
5419
|
+
baseUrl,
|
|
5422
5420
|
ledgerBaseUrl,
|
|
5423
5421
|
noticeUuid: content.notice_uuid,
|
|
5424
5422
|
purposes: content.purposes.map((purpose) => {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react from 'react';
|
|
2
2
|
import { ReactNode } from 'react';
|
|
3
3
|
import * as _tanstack_react_query from '@tanstack/react-query';
|
|
4
4
|
|
|
@@ -33,9 +33,12 @@ type BaseRequest = {
|
|
|
33
33
|
* Creates a client instance with a specific base URL.
|
|
34
34
|
* @param baseUrl - Consent server base URL (Python service, e.g. http://host/consent)
|
|
35
35
|
* @param ledgerBaseUrl - Go ledger base URL (e.g. http://host:8090/consent-ledger).
|
|
36
|
-
* Used for user-consents reads
|
|
36
|
+
* Used for user-consents reads/writes served from the ledger's `/public/...` paths.
|
|
37
|
+
* When omitted, those calls fall back to the legacy Python
|
|
38
|
+
* `/dsar/privacy-center` endpoints and payloads (pre-ledger behavior), so
|
|
39
|
+
* integrations without a deployed ledger keep working.
|
|
37
40
|
*/
|
|
38
|
-
declare function createConsentClient(baseUrl: string, ledgerBaseUrl
|
|
41
|
+
declare function createConsentClient(baseUrl: string, ledgerBaseUrl?: string): {
|
|
39
42
|
/**
|
|
40
43
|
* Get form data (privacy center)
|
|
41
44
|
*/
|
|
@@ -96,14 +99,17 @@ declare function createConsentClient(baseUrl: string, ledgerBaseUrl: string): {
|
|
|
96
99
|
/**
|
|
97
100
|
* Manage consent (privacy center) - revoke, regrant, or renew.
|
|
98
101
|
*
|
|
99
|
-
* The Go ledger has no manage-consent route, so
|
|
100
|
-
* `partial` submit-consent on the ledger — mirroring
|
|
101
|
-
* relay (`build_consent_management_payload`): the
|
|
102
|
-
* re-submitted with `selected: false` to revoke or
|
|
103
|
-
* regrant/renew, and `partial: true` so the rest of the
|
|
104
|
-
* are left untouched. The principal is resolved from the
|
|
105
|
-
* `contact`/identifiers are sent in the body, and
|
|
106
|
-
* omitted so the ledger mints a fresh event.
|
|
102
|
+
* The Go ledger has no manage-consent route, so with a ledger configured
|
|
103
|
+
* this is expressed as a `partial` submit-consent on the ledger — mirroring
|
|
104
|
+
* the Python dual-write relay (`build_consent_management_payload`): the
|
|
105
|
+
* affected purpose is re-submitted with `selected: false` to revoke or
|
|
106
|
+
* `selected: true` to regrant/renew, and `partial: true` so the rest of the
|
|
107
|
+
* notice's purposes are left untouched. The principal is resolved from the
|
|
108
|
+
* JWT, so no `contact`/identifiers are sent in the body, and
|
|
109
|
+
* `consent_event_uuid` is omitted so the ledger mints a fresh event.
|
|
110
|
+
*
|
|
111
|
+
* Without a ledger, the legacy Python `/manage-consent?status=` endpoint is
|
|
112
|
+
* used with its `{ purpose_uuid, contact, ... }` payload.
|
|
107
113
|
*/
|
|
108
114
|
manageConsent(baseRequest: BaseRequest, purposeId: string, contact: string, status: "revoke" | "regrant" | "renew", authToken?: string, options?: Omit<ApiFetchOptions, "getAuthToken">, nominatorContact?: string, dataElementUuids?: string[], productUuid?: string, noticeUuid?: string, dataElements?: Array<{
|
|
109
115
|
uuid: string;
|
|
@@ -113,6 +119,18 @@ declare function createConsentClient(baseUrl: string, ledgerBaseUrl: string): {
|
|
|
113
119
|
* Get activities (privacy center)
|
|
114
120
|
*/
|
|
115
121
|
getActivities(baseRequest: BaseRequest, offset?: number, limit?: number, language?: string, authToken?: string, options?: Omit<ApiFetchOptions, "getAuthToken">): Promise<unknown>;
|
|
122
|
+
/**
|
|
123
|
+
* List all data principals that share this session's contact
|
|
124
|
+
* (shared-contact profile picker). Identity is derived server-side from the
|
|
125
|
+
* JWT — the caller sends nothing but its bearer token.
|
|
126
|
+
*/
|
|
127
|
+
listIdentities(baseRequest: BaseRequest, authToken?: string, options?: Omit<ApiFetchOptions, "getAuthToken">): Promise<IdentityListResponse>;
|
|
128
|
+
/**
|
|
129
|
+
* Re-scope the session to a chosen principal uuid (must be one of the
|
|
130
|
+
* principals sharing this session's contact). Returns fresh access/refresh
|
|
131
|
+
* tokens scoped to that principal.
|
|
132
|
+
*/
|
|
133
|
+
selectPrincipal(baseRequest: BaseRequest, principalUuid: string, authToken?: string, options?: Omit<ApiFetchOptions, "getAuthToken">): Promise<SelectPrincipalResponse>;
|
|
116
134
|
/**
|
|
117
135
|
* Get receipts (privacy center) — consent receipts for the authenticated user
|
|
118
136
|
*/
|
|
@@ -372,6 +390,8 @@ type PurposeItem = {
|
|
|
372
390
|
method: string;
|
|
373
391
|
data_elements: ConsentDataElement[];
|
|
374
392
|
link_reason: string | null;
|
|
393
|
+
revocable?: boolean;
|
|
394
|
+
revoke_warning_message?: string | null;
|
|
375
395
|
notice_uuid: string | null;
|
|
376
396
|
};
|
|
377
397
|
type ConsentGroup = {
|
|
@@ -607,6 +627,21 @@ type NotificationQueryParams = {
|
|
|
607
627
|
include_summary?: boolean;
|
|
608
628
|
language?: string;
|
|
609
629
|
};
|
|
630
|
+
type IdentityCandidate = Readonly<{
|
|
631
|
+
uuid: string;
|
|
632
|
+
org_user_id?: string | null;
|
|
633
|
+
primary_email?: string | null;
|
|
634
|
+
primary_mobile?: string | null;
|
|
635
|
+
created_at?: string | null;
|
|
636
|
+
}>;
|
|
637
|
+
type IdentityListResponse = Readonly<{
|
|
638
|
+
identities: IdentityCandidate[];
|
|
639
|
+
}>;
|
|
640
|
+
type SelectPrincipalResponse = Readonly<{
|
|
641
|
+
token: string;
|
|
642
|
+
refresh_token: string;
|
|
643
|
+
expires_at?: string;
|
|
644
|
+
}>;
|
|
610
645
|
|
|
611
646
|
type InternalPage = 'consent-manager' | 'form' | 'activity' | 'case-details' | 'notifications' | 'receipts';
|
|
612
647
|
interface NavigationContextType {
|
|
@@ -619,12 +654,12 @@ interface NavigationContextType {
|
|
|
619
654
|
declare const NavigationProvider: ({ children, initialPage }: {
|
|
620
655
|
children: ReactNode;
|
|
621
656
|
initialPage?: InternalPage;
|
|
622
|
-
}) =>
|
|
657
|
+
}) => react.JSX.Element;
|
|
623
658
|
declare const useInternalNavigation: () => NavigationContextType;
|
|
624
659
|
|
|
625
660
|
interface RedactoPrivacyCenterProps {
|
|
626
661
|
baseUrl: string;
|
|
627
|
-
ledgerBaseUrl
|
|
662
|
+
ledgerBaseUrl?: string;
|
|
628
663
|
slug: string;
|
|
629
664
|
accessToken: string;
|
|
630
665
|
refreshToken: string;
|
|
@@ -632,26 +667,26 @@ interface RedactoPrivacyCenterProps {
|
|
|
632
667
|
initialPage?: InternalPage;
|
|
633
668
|
onBack?: 'back' | 'signout';
|
|
634
669
|
}
|
|
635
|
-
declare function RedactoPrivacyCenter({ baseUrl, ledgerBaseUrl, slug, accessToken, refreshToken, onError, initialPage, onBack, }: RedactoPrivacyCenterProps):
|
|
670
|
+
declare function RedactoPrivacyCenter({ baseUrl, ledgerBaseUrl, slug, accessToken, refreshToken, onError, initialPage, onBack, }: RedactoPrivacyCenterProps): react.JSX.Element;
|
|
636
671
|
|
|
637
672
|
interface PrivacyCenterLayoutProps {
|
|
638
673
|
children: ReactNode;
|
|
639
674
|
slug: string;
|
|
640
675
|
onBack?: 'back' | 'signout';
|
|
641
676
|
}
|
|
642
|
-
declare function PrivacyCenterLayout({ children, slug, onBack }: PrivacyCenterLayoutProps):
|
|
677
|
+
declare function PrivacyCenterLayout({ children, slug, onBack }: PrivacyCenterLayoutProps): react.JSX.Element;
|
|
643
678
|
|
|
644
|
-
declare function PrivacyCenterHomePage():
|
|
679
|
+
declare function PrivacyCenterHomePage(): react.JSX.Element;
|
|
645
680
|
|
|
646
|
-
declare function PrivacyCenterConsentManagerPage():
|
|
681
|
+
declare function PrivacyCenterConsentManagerPage(): react.JSX.Element;
|
|
647
682
|
|
|
648
|
-
declare function PrivacyCenterFormPage():
|
|
683
|
+
declare function PrivacyCenterFormPage(): react.JSX.Element;
|
|
649
684
|
|
|
650
|
-
declare function PrivacyCenterActivityPage():
|
|
685
|
+
declare function PrivacyCenterActivityPage(): react.JSX.Element;
|
|
651
686
|
|
|
652
|
-
declare const PrivacyCenterCaseDetailsPage: () =>
|
|
687
|
+
declare const PrivacyCenterCaseDetailsPage: () => react.JSX.Element | null;
|
|
653
688
|
|
|
654
|
-
declare const NotificationsPage: () =>
|
|
689
|
+
declare const NotificationsPage: () => react.JSX.Element;
|
|
655
690
|
|
|
656
691
|
type AuthContextValue = Readonly<{
|
|
657
692
|
accessToken: string;
|
|
@@ -662,18 +697,18 @@ type AuthContextValue = Readonly<{
|
|
|
662
697
|
}>;
|
|
663
698
|
type BaseUrlContextValue = Readonly<{
|
|
664
699
|
baseUrl: string;
|
|
665
|
-
ledgerBaseUrl
|
|
700
|
+
ledgerBaseUrl?: string;
|
|
666
701
|
consentClient: ReturnType<typeof createConsentClient>;
|
|
667
702
|
}>;
|
|
668
703
|
|
|
669
704
|
declare const BaseUrlProvider: ({ children, baseUrl, ledgerBaseUrl, }: {
|
|
670
705
|
children: ReactNode;
|
|
671
706
|
baseUrl: string;
|
|
672
|
-
ledgerBaseUrl
|
|
673
|
-
}) =>
|
|
707
|
+
ledgerBaseUrl?: string;
|
|
708
|
+
}) => react.JSX.Element;
|
|
674
709
|
declare const useBaseUrl: () => Readonly<{
|
|
675
710
|
baseUrl: string;
|
|
676
|
-
ledgerBaseUrl
|
|
711
|
+
ledgerBaseUrl?: string;
|
|
677
712
|
consentClient: ReturnType<typeof createConsentClient>;
|
|
678
713
|
}>;
|
|
679
714
|
|
|
@@ -840,7 +875,7 @@ declare const manageConsent: ({ organizationId, workspaceId, purposeId, contact,
|
|
|
840
875
|
declare const fetchActivities: (organizationId: string, workspaceId: string, offset?: number, limit?: number, authContext?: AuthContext, consentClient?: BaseUrlContextValue["consentClient"], language?: string) => Promise<ActivityDetail | null>;
|
|
841
876
|
declare const fetchCaseHistory: (organizationId: string, workspaceId: string, contact: string, offset?: number, limit?: number, authContext?: AuthContext, consentClient?: BaseUrlContextValue["consentClient"], language?: string) => Promise<CaseHistoryDetail | null>;
|
|
842
877
|
|
|
843
|
-
declare const useCaseHistory: (organizationId: string | undefined, workspaceId: string | undefined, contact: string | undefined, authContext?: AuthContext) => _tanstack_react_query.UseQueryResult<CaseRequest[]
|
|
878
|
+
declare const useCaseHistory: (organizationId: string | undefined, workspaceId: string | undefined, contact: string | undefined, authContext?: AuthContext) => _tanstack_react_query.UseQueryResult<NoInfer<CaseRequest[]>, Error>;
|
|
844
879
|
|
|
845
880
|
interface AuthProviderProps {
|
|
846
881
|
children: ReactNode;
|
|
@@ -848,7 +883,7 @@ interface AuthProviderProps {
|
|
|
848
883
|
refreshToken: string;
|
|
849
884
|
onError: (error: Error) => boolean;
|
|
850
885
|
}
|
|
851
|
-
declare const AuthProvider: ({ children, accessToken: initialAccessToken, refreshToken: initialRefreshToken, onError, }: AuthProviderProps) =>
|
|
886
|
+
declare const AuthProvider: ({ children, accessToken: initialAccessToken, refreshToken: initialRefreshToken, onError, }: AuthProviderProps) => react.JSX.Element;
|
|
852
887
|
declare const useAuth: () => AuthContextValue;
|
|
853
888
|
|
|
854
889
|
/**
|