ethyca-fides 2.56.3b2__py2.py3-none-any.whl → 2.57.1b0__py2.py3-none-any.whl
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.
- {ethyca_fides-2.56.3b2.dist-info → ethyca_fides-2.57.1b0.dist-info}/METADATA +1 -1
- {ethyca_fides-2.56.3b2.dist-info → ethyca_fides-2.57.1b0.dist-info}/RECORD +109 -107
- fides/_version.py +3 -3
- fides/api/alembic/migrations/versions/9a1eacd2666b_add_description_column_to_asset.py +25 -0
- fides/api/models/asset.py +36 -18
- fides/api/service/connectors/query_configs/bigquery_query_config.py +46 -15
- fides/api/service/connectors/query_configs/query_config.py +118 -21
- fides/api/util/collection_util.py +29 -4
- fides/api/util/logger_context_utils.py +36 -1
- fides/service/privacy_request/privacy_request_service.py +14 -5
- fides/ui-build/static/admin/404.html +1 -1
- fides/ui-build/static/admin/_next/static/7v-H0NGW-LcEPEo86bsrZ/_buildManifest.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/5574-a4047e826a8cd4c3.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/5834-bd9ed01c4ab2ef5c.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/5973-67c7562997f7d5cb.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/6277-515c922445b8edc5.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/9767-4c591bd478c72650.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{[id]-fdbafb5a47a6a28c.js → [id]-443e6dd191ce5588.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{new-fc4635c6eea7165f.js → new-36162d5bea29dcc2.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{[id]-bdc686761a0d2d60.js → [id]-2d651499c07d12d9.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{new-8618ab5fa45cd074.js → new-36e57d2f2446be82.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-740824dfa6823e26.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset-5541ecd2f62711a5.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{[id]-a6e793e9a8ed00a9.js → [id]-0616437e1a82d3ed.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{new-7d314bb7238af067.js → new-f8218440494e8532.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-a6448ce6ba7f0cf5.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations-1a6965d78bfb26b0.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/{[id]-c6396feeefca887b.js → [id]-82d9af34546adaa2.js} +1 -1
- fides/ui-build/static/admin/_next/static/css/{bd5a72c010fa9c14.css → b8dbda131f8d4c05.css} +1 -1
- fides/ui-build/static/admin/add-systems/manual.html +1 -1
- fides/ui-build/static/admin/add-systems/multiple.html +1 -1
- fides/ui-build/static/admin/add-systems.html +1 -1
- fides/ui-build/static/admin/ant-poc.html +1 -1
- fides/ui-build/static/admin/consent/configure/add-vendors.html +1 -1
- fides/ui-build/static/admin/consent/configure.html +1 -1
- fides/ui-build/static/admin/consent/privacy-experience/[id].html +1 -1
- fides/ui-build/static/admin/consent/privacy-experience/new.html +1 -1
- fides/ui-build/static/admin/consent/privacy-experience.html +1 -1
- fides/ui-build/static/admin/consent/privacy-notices/[id].html +1 -1
- fides/ui-build/static/admin/consent/privacy-notices/new.html +1 -1
- fides/ui-build/static/admin/consent/privacy-notices.html +1 -1
- fides/ui-build/static/admin/consent/properties.html +1 -1
- fides/ui-build/static/admin/consent/reporting.html +1 -1
- fides/ui-build/static/admin/consent.html +1 -1
- fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn].html +1 -1
- fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn].html +1 -1
- fides/ui-build/static/admin/data-catalog/[systemId]/projects.html +1 -1
- fides/ui-build/static/admin/data-catalog/[systemId]/resources/[resourceUrn].html +1 -1
- fides/ui-build/static/admin/data-catalog/[systemId]/resources.html +1 -1
- fides/ui-build/static/admin/data-catalog.html +1 -1
- fides/ui-build/static/admin/data-discovery/action-center/[monitorId]/[systemId].html +1 -1
- fides/ui-build/static/admin/data-discovery/action-center/[monitorId].html +1 -1
- fides/ui-build/static/admin/data-discovery/action-center.html +1 -1
- fides/ui-build/static/admin/data-discovery/activity.html +1 -1
- fides/ui-build/static/admin/data-discovery/detection/[resourceUrn].html +1 -1
- fides/ui-build/static/admin/data-discovery/detection.html +1 -1
- fides/ui-build/static/admin/data-discovery/discovery/[resourceUrn].html +1 -1
- fides/ui-build/static/admin/data-discovery/discovery.html +1 -1
- fides/ui-build/static/admin/datamap.html +1 -1
- fides/ui-build/static/admin/dataset/[datasetId]/[collectionName]/[...subfieldNames].html +1 -1
- fides/ui-build/static/admin/dataset/[datasetId]/[collectionName].html +1 -1
- fides/ui-build/static/admin/dataset/[datasetId].html +1 -1
- fides/ui-build/static/admin/dataset/new.html +1 -1
- fides/ui-build/static/admin/dataset.html +1 -1
- fides/ui-build/static/admin/datastore-connection/[id].html +1 -1
- fides/ui-build/static/admin/datastore-connection/new.html +1 -1
- fides/ui-build/static/admin/datastore-connection.html +1 -1
- fides/ui-build/static/admin/index.html +1 -1
- fides/ui-build/static/admin/integrations/[id].html +1 -1
- fides/ui-build/static/admin/integrations.html +1 -1
- fides/ui-build/static/admin/lib/fides-headless.js +1 -1
- fides/ui-build/static/admin/lib/fides-tcf.js +3 -3
- fides/ui-build/static/admin/lib/fides.js +2 -2
- fides/ui-build/static/admin/login/[provider].html +1 -1
- fides/ui-build/static/admin/login.html +1 -1
- fides/ui-build/static/admin/messaging/[id].html +1 -1
- fides/ui-build/static/admin/messaging/add-template.html +1 -1
- fides/ui-build/static/admin/messaging.html +1 -1
- fides/ui-build/static/admin/privacy-requests/[id].html +1 -1
- fides/ui-build/static/admin/privacy-requests/configure/messaging.html +1 -1
- fides/ui-build/static/admin/privacy-requests/configure/storage.html +1 -1
- fides/ui-build/static/admin/privacy-requests/configure.html +1 -1
- fides/ui-build/static/admin/privacy-requests.html +1 -1
- fides/ui-build/static/admin/properties/[id].html +1 -1
- fides/ui-build/static/admin/properties/add-property.html +1 -1
- fides/ui-build/static/admin/properties.html +1 -1
- fides/ui-build/static/admin/reporting/datamap.html +1 -1
- fides/ui-build/static/admin/settings/about.html +1 -1
- fides/ui-build/static/admin/settings/consent.html +1 -1
- fides/ui-build/static/admin/settings/custom-fields.html +1 -1
- fides/ui-build/static/admin/settings/domain-records.html +1 -1
- fides/ui-build/static/admin/settings/domains.html +1 -1
- fides/ui-build/static/admin/settings/email-templates.html +1 -1
- fides/ui-build/static/admin/settings/locations.html +1 -1
- fides/ui-build/static/admin/settings/organization.html +1 -1
- fides/ui-build/static/admin/settings/regulations.html +1 -1
- fides/ui-build/static/admin/systems/configure/[id]/test-datasets.html +1 -1
- fides/ui-build/static/admin/systems/configure/[id].html +1 -1
- fides/ui-build/static/admin/systems.html +1 -1
- fides/ui-build/static/admin/taxonomy.html +1 -1
- fides/ui-build/static/admin/user-management/new.html +1 -1
- fides/ui-build/static/admin/user-management/profile/[id].html +1 -1
- fides/ui-build/static/admin/user-management.html +1 -1
- fides/ui-build/static/admin/_next/static/chunks/2201-abd6092e6df98c26.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/6277-b55810d66362f56e.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/6362-8f79e403fdc2404a.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/7495-a61f0c9fcb458664.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/new-fc00dbeb18a7b731.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset-295756e1fd640b59.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-20489bceb7b068b8.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations-21c9902e7b098b39.js +0 -1
- fides/ui-build/static/admin/_next/static/n4uO6TqGfiKHQ-X5XYkoy/_buildManifest.js +0 -1
- {ethyca_fides-2.56.3b2.dist-info → ethyca_fides-2.57.1b0.dist-info}/LICENSE +0 -0
- {ethyca_fides-2.56.3b2.dist-info → ethyca_fides-2.57.1b0.dist-info}/WHEEL +0 -0
- {ethyca_fides-2.56.3b2.dist-info → ethyca_fides-2.57.1b0.dist-info}/entry_points.txt +0 -0
- {ethyca_fides-2.56.3b2.dist-info → ethyca_fides-2.57.1b0.dist-info}/top_level.txt +0 -0
- /fides/ui-build/static/admin/_next/static/{n4uO6TqGfiKHQ-X5XYkoy → 7v-H0NGW-LcEPEo86bsrZ}/_ssgManifest.js +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/{_app-3b7bbcdb61d952e7.js → _app-c580f4c12ff5a438.js} +0 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from typing import Any, Dict, List, Optional, Union, cast
|
|
2
2
|
|
|
3
|
+
import pydash
|
|
3
4
|
from fideslang.models import MaskingStrategies
|
|
4
5
|
from loguru import logger
|
|
5
6
|
from sqlalchemy import MetaData, Table, text
|
|
@@ -17,7 +18,14 @@ from fides.api.schemas.namespace_meta.bigquery_namespace_meta import (
|
|
|
17
18
|
from fides.api.service.connectors.query_configs.query_config import (
|
|
18
19
|
QueryStringWithoutTuplesOverrideQueryConfig,
|
|
19
20
|
)
|
|
20
|
-
from fides.api.util.collection_util import
|
|
21
|
+
from fides.api.util.collection_util import (
|
|
22
|
+
Row,
|
|
23
|
+
filter_nonempty_values,
|
|
24
|
+
flatten_dict,
|
|
25
|
+
merge_dicts,
|
|
26
|
+
replace_none_arrays,
|
|
27
|
+
unflatten_dict,
|
|
28
|
+
)
|
|
21
29
|
|
|
22
30
|
|
|
23
31
|
class BigQueryQueryConfig(QueryStringWithoutTuplesOverrideQueryConfig):
|
|
@@ -120,18 +128,45 @@ class BigQueryQueryConfig(QueryStringWithoutTuplesOverrideQueryConfig):
|
|
|
120
128
|
A List of multiple Update objects are returned for partitioned tables; for a non-partitioned table,
|
|
121
129
|
a single Update object is returned in a List for consistent typing.
|
|
122
130
|
|
|
123
|
-
|
|
131
|
+
This implementation handles nested fields by grouping them as JSON objects rather than
|
|
132
|
+
individual field updates.
|
|
133
|
+
|
|
134
|
+
See the README.md in this directory for a detailed example of how nested data is handled.
|
|
124
135
|
"""
|
|
136
|
+
|
|
137
|
+
# 1. Take update_value_map as-is (already flattened)
|
|
125
138
|
update_value_map: Dict[str, Any] = self.update_value_map(row, policy, request)
|
|
139
|
+
|
|
140
|
+
# 2. Flatten the row
|
|
141
|
+
flattened_row = flatten_dict(row)
|
|
142
|
+
|
|
143
|
+
# 3. Merge flattened_row with update_value_map (update_value_map takes precedence)
|
|
144
|
+
merged_dict = merge_dicts(flattened_row, update_value_map)
|
|
145
|
+
|
|
146
|
+
# 4. Unflatten the merged dictionary
|
|
147
|
+
nested_result = unflatten_dict(merged_dict)
|
|
148
|
+
|
|
149
|
+
# 5. Replace any arrays containing only None values with empty arrays
|
|
150
|
+
nested_result = replace_none_arrays(nested_result) # type: ignore
|
|
151
|
+
|
|
152
|
+
# 6. Only keep top-level keys that are in the update_value_map
|
|
153
|
+
top_level_keys = {key.split(".")[0] for key in update_value_map}
|
|
154
|
+
|
|
155
|
+
# Filter the nested result to only include those top-level keys
|
|
156
|
+
final_update_map = {
|
|
157
|
+
k: v for k, v in nested_result.items() if k in top_level_keys
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
# Use existing non-empty reference fields mechanism for WHERE clause
|
|
126
161
|
non_empty_reference_field_keys: Dict[str, Field] = filter_nonempty_values(
|
|
127
162
|
{
|
|
128
|
-
fpath.string_path: fld.cast(row
|
|
163
|
+
fpath.string_path: fld.cast(pydash.get(row, fpath.string_path))
|
|
129
164
|
for fpath, fld in self.reference_field_paths.items()
|
|
130
|
-
if fpath.string_path
|
|
165
|
+
if pydash.get(row, fpath.string_path) is not None
|
|
131
166
|
}
|
|
132
167
|
)
|
|
133
168
|
|
|
134
|
-
valid = len(non_empty_reference_field_keys) > 0 and
|
|
169
|
+
valid = len(non_empty_reference_field_keys) > 0 and final_update_map
|
|
135
170
|
if not valid:
|
|
136
171
|
logger.warning(
|
|
137
172
|
"There is not enough data to generate a valid update statement for {}",
|
|
@@ -154,12 +189,12 @@ class BigQueryQueryConfig(QueryStringWithoutTuplesOverrideQueryConfig):
|
|
|
154
189
|
partitioned_queries.append(
|
|
155
190
|
table.update()
|
|
156
191
|
.where(*(where_clauses + [text(partition_clause)]))
|
|
157
|
-
.values(**
|
|
192
|
+
.values(**final_update_map)
|
|
158
193
|
)
|
|
159
194
|
|
|
160
195
|
return partitioned_queries
|
|
161
196
|
|
|
162
|
-
return [table.update().where(*where_clauses).values(**
|
|
197
|
+
return [table.update().where(*where_clauses).values(**final_update_map)]
|
|
163
198
|
|
|
164
199
|
def generate_delete(self, row: Row, client: Engine) -> List[Delete]:
|
|
165
200
|
"""Returns a List of SQLAlchemy DELETE statements for BigQuery. Does not actually execute the delete statement.
|
|
@@ -213,18 +248,14 @@ class BigQueryQueryConfig(QueryStringWithoutTuplesOverrideQueryConfig):
|
|
|
213
248
|
self,
|
|
214
249
|
field_paths: List[FieldPath],
|
|
215
250
|
) -> List[str]:
|
|
216
|
-
"""
|
|
217
|
-
|
|
251
|
+
"""
|
|
252
|
+
Returns field paths in a format they can be added into SQL queries.
|
|
218
253
|
Only returns non-nested fields (fields with exactly one level).
|
|
219
|
-
Nested fields are skipped with a warning log.
|
|
220
254
|
"""
|
|
255
|
+
|
|
221
256
|
formatted_fields = []
|
|
222
257
|
for field_path in field_paths:
|
|
223
|
-
if len(field_path.levels)
|
|
224
|
-
logger.warning(
|
|
225
|
-
f"Skipping nested field '{'.'.join(field_path.levels)}' as nested fields are not supported"
|
|
226
|
-
)
|
|
227
|
-
else:
|
|
258
|
+
if len(field_path.levels) == 1:
|
|
228
259
|
formatted_fields.append(field_path.levels[0])
|
|
229
260
|
return formatted_fields
|
|
230
261
|
|
|
@@ -144,6 +144,45 @@ class QueryConfig(Generic[T], ABC):
|
|
|
144
144
|
|
|
145
145
|
return data
|
|
146
146
|
|
|
147
|
+
def _is_child_of_masked_parent(
|
|
148
|
+
self, path: str, masked_parent_paths: List[str]
|
|
149
|
+
) -> bool:
|
|
150
|
+
"""
|
|
151
|
+
Check if the given path is a child of any already masked parent object.
|
|
152
|
+
"""
|
|
153
|
+
for parent_path in masked_parent_paths:
|
|
154
|
+
if path == parent_path or path.startswith(parent_path + "."):
|
|
155
|
+
return True
|
|
156
|
+
return False
|
|
157
|
+
|
|
158
|
+
def _is_object_or_array_with_data_category(
|
|
159
|
+
self, field_val: Any, field: Optional[Field]
|
|
160
|
+
) -> bool:
|
|
161
|
+
"""
|
|
162
|
+
Check if field is an object or array of objects with data categories
|
|
163
|
+
"""
|
|
164
|
+
# First check if the field has data categories
|
|
165
|
+
has_data_category = (
|
|
166
|
+
field and field.data_categories and len(field.data_categories) > 0
|
|
167
|
+
)
|
|
168
|
+
|
|
169
|
+
if not has_data_category:
|
|
170
|
+
return False
|
|
171
|
+
|
|
172
|
+
# Check if it's an object
|
|
173
|
+
is_object = isinstance(field_val, dict)
|
|
174
|
+
|
|
175
|
+
# Check if it's a non-empty array of objects
|
|
176
|
+
is_array_of_objects = False
|
|
177
|
+
if (
|
|
178
|
+
isinstance(field_val, list) and field_val
|
|
179
|
+
): # Check if it's a list and not empty
|
|
180
|
+
# Only check first element if the list is not empty
|
|
181
|
+
is_array_of_objects = isinstance(field_val[0], dict)
|
|
182
|
+
|
|
183
|
+
# Return true if it's either an object or an array of objects and has data categories
|
|
184
|
+
return is_object or is_array_of_objects
|
|
185
|
+
|
|
147
186
|
def update_value_map( # pylint: disable=R0914
|
|
148
187
|
self, row: Row, policy: Policy, request: PrivacyRequest
|
|
149
188
|
) -> Dict[str, Any]:
|
|
@@ -154,27 +193,44 @@ class QueryConfig(Generic[T], ABC):
|
|
|
154
193
|
In this example, a Null Masking Strategy was used to determine that the name/ccn/code fields, nested
|
|
155
194
|
workplace_info.employer field, and the first element in 'children' for a given customer_id will be replaced
|
|
156
195
|
with null values.
|
|
157
|
-
|
|
158
196
|
"""
|
|
159
197
|
rule_to_collection_field_paths: Dict[Rule, List[FieldPath]] = (
|
|
160
198
|
self.build_rule_target_field_paths(policy)
|
|
161
199
|
)
|
|
162
200
|
|
|
163
201
|
value_map: Dict[str, Any] = {}
|
|
202
|
+
# Track which parent paths have been masked as whole objects/arrays
|
|
203
|
+
masked_parent_paths: List[str] = []
|
|
204
|
+
|
|
164
205
|
for rule, field_paths in rule_to_collection_field_paths.items():
|
|
165
206
|
strategy_config = rule.masking_strategy
|
|
166
207
|
if not strategy_config:
|
|
167
208
|
continue
|
|
209
|
+
|
|
168
210
|
for rule_field_path in field_paths:
|
|
211
|
+
# Check if field is read-only before processing
|
|
212
|
+
field = self.field_map().get(rule_field_path)
|
|
213
|
+
if field and field.read_only:
|
|
214
|
+
logger.debug(
|
|
215
|
+
f"Skipping read-only field: {rule_field_path.string_path}"
|
|
216
|
+
)
|
|
217
|
+
continue
|
|
218
|
+
|
|
219
|
+
# Skip if this field is a child of an already masked parent object
|
|
220
|
+
if self._is_child_of_masked_parent(
|
|
221
|
+
rule_field_path.string_path, masked_parent_paths
|
|
222
|
+
):
|
|
223
|
+
logger.debug(
|
|
224
|
+
f"Skipping field {rule_field_path.string_path} because its parent object has already been masked"
|
|
225
|
+
)
|
|
226
|
+
continue
|
|
227
|
+
|
|
228
|
+
# Determine masking strategy
|
|
169
229
|
strategy: MaskingStrategy = MaskingStrategy.get_strategy(
|
|
170
230
|
strategy_config["strategy"], strategy_config["configuration"]
|
|
171
231
|
)
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
for field_path, field in self.field_map().items()
|
|
175
|
-
if field_path == rule_field_path
|
|
176
|
-
][0]
|
|
177
|
-
field = self.field_map().get(rule_field_path)
|
|
232
|
+
|
|
233
|
+
# Apply field-level masking strategy override if present
|
|
178
234
|
if field and field.masking_strategy_override:
|
|
179
235
|
masking_strategy_override = field.masking_strategy_override
|
|
180
236
|
strategy = MaskingStrategy.get_strategy(
|
|
@@ -184,7 +240,14 @@ class QueryConfig(Generic[T], ABC):
|
|
|
184
240
|
logger.warning(
|
|
185
241
|
f"Using field-level masking override of type '{strategy.name}' for {rule_field_path.string_path}"
|
|
186
242
|
)
|
|
243
|
+
|
|
187
244
|
null_masking: bool = strategy.name == NullMaskingStrategy.name
|
|
245
|
+
truncation: MaskingTruncation = [
|
|
246
|
+
MaskingTruncation(field.data_type_converter, field.length)
|
|
247
|
+
for field_path, field in self.field_map().items()
|
|
248
|
+
if field_path == rule_field_path
|
|
249
|
+
][0]
|
|
250
|
+
|
|
188
251
|
if not self._supported_data_type(truncation, null_masking, strategy):
|
|
189
252
|
logger.warning(
|
|
190
253
|
"Unable to generate a query for field {}: data_type is either not present on the field or not supported for the {} masking strategy. Received data type: {}",
|
|
@@ -194,21 +257,55 @@ class QueryConfig(Generic[T], ABC):
|
|
|
194
257
|
)
|
|
195
258
|
continue
|
|
196
259
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
value_map[detailed_path] = self._generate_masked_value(
|
|
205
|
-
request_id=request.id,
|
|
206
|
-
strategy=strategy,
|
|
207
|
-
val=pydash.objects.get(row, detailed_path),
|
|
208
|
-
masking_truncation=truncation,
|
|
209
|
-
null_masking=null_masking,
|
|
210
|
-
str_field_path=detailed_path,
|
|
260
|
+
# Get the actual field value to determine its type
|
|
261
|
+
field_val = pydash.objects.get(row, rule_field_path.string_path)
|
|
262
|
+
|
|
263
|
+
# Handle objects and arrays with data categories - mask as whole entities
|
|
264
|
+
if self._is_object_or_array_with_data_category(field_val, field):
|
|
265
|
+
logger.info(
|
|
266
|
+
f"Field {rule_field_path.string_path} is an object or array of objects with data category. Masking entire field."
|
|
211
267
|
)
|
|
268
|
+
if field_val is not None:
|
|
269
|
+
value_map[rule_field_path.string_path] = (
|
|
270
|
+
self._generate_masked_value(
|
|
271
|
+
request_id=request.id,
|
|
272
|
+
strategy=strategy,
|
|
273
|
+
val=field_val,
|
|
274
|
+
masking_truncation=truncation,
|
|
275
|
+
null_masking=null_masking,
|
|
276
|
+
str_field_path=rule_field_path.string_path,
|
|
277
|
+
)
|
|
278
|
+
)
|
|
279
|
+
# Add this path to masked parent paths to skip its children later
|
|
280
|
+
masked_parent_paths.append(rule_field_path.string_path)
|
|
281
|
+
else:
|
|
282
|
+
# Standard approach: build refined target paths for individual fields
|
|
283
|
+
paths_to_mask = [
|
|
284
|
+
join_detailed_path(path)
|
|
285
|
+
for path in build_refined_target_paths(
|
|
286
|
+
row, query_paths={rule_field_path: None}
|
|
287
|
+
)
|
|
288
|
+
]
|
|
289
|
+
|
|
290
|
+
# Process each detailed path, skipping those that are children of masked parents
|
|
291
|
+
for detailed_path in paths_to_mask:
|
|
292
|
+
if self._is_child_of_masked_parent(
|
|
293
|
+
detailed_path, masked_parent_paths
|
|
294
|
+
):
|
|
295
|
+
logger.debug(
|
|
296
|
+
f"Skipping detailed path {detailed_path} because its parent object has already been masked"
|
|
297
|
+
)
|
|
298
|
+
continue
|
|
299
|
+
|
|
300
|
+
value_map[detailed_path] = self._generate_masked_value(
|
|
301
|
+
request_id=request.id,
|
|
302
|
+
strategy=strategy,
|
|
303
|
+
val=pydash.objects.get(row, detailed_path),
|
|
304
|
+
masking_truncation=truncation,
|
|
305
|
+
null_masking=null_masking,
|
|
306
|
+
str_field_path=detailed_path,
|
|
307
|
+
)
|
|
308
|
+
|
|
212
309
|
return value_map
|
|
213
310
|
|
|
214
311
|
@staticmethod
|
|
@@ -204,15 +204,12 @@ def flatten_dict(data: Any, prefix: str = "", separator: str = ".") -> Dict[str,
|
|
|
204
204
|
}
|
|
205
205
|
|
|
206
206
|
Args:
|
|
207
|
-
data: The data to flatten (
|
|
207
|
+
data: The data to flatten (dict, list, or scalar value)
|
|
208
208
|
prefix: The current key prefix (used in recursion)
|
|
209
209
|
separator: The separator to use between key segments (default: ".")
|
|
210
210
|
|
|
211
211
|
Returns:
|
|
212
212
|
A flattened dictionary with dot-notation keys
|
|
213
|
-
|
|
214
|
-
Raises:
|
|
215
|
-
FidesopsException: If input is not a dict or list
|
|
216
213
|
"""
|
|
217
214
|
items = {}
|
|
218
215
|
|
|
@@ -236,3 +233,31 @@ def flatten_dict(data: Any, prefix: str = "", separator: str = ".") -> Dict[str,
|
|
|
236
233
|
)
|
|
237
234
|
|
|
238
235
|
return items
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
def replace_none_arrays(
|
|
239
|
+
data: Any,
|
|
240
|
+
) -> Any:
|
|
241
|
+
"""
|
|
242
|
+
Recursively replace any arrays containing only None values with empty arrays.
|
|
243
|
+
|
|
244
|
+
Args:
|
|
245
|
+
data: Any Python object (dict, list, etc.)
|
|
246
|
+
|
|
247
|
+
Returns:
|
|
248
|
+
The transformed data structure with None-only arrays replaced by empty arrays
|
|
249
|
+
"""
|
|
250
|
+
if isinstance(data, dict):
|
|
251
|
+
# Process each key-value pair in dictionaries
|
|
252
|
+
return {k: replace_none_arrays(v) for k, v in data.items()}
|
|
253
|
+
|
|
254
|
+
if isinstance(data, list):
|
|
255
|
+
# Check if list contains only None values
|
|
256
|
+
if all(item is None for item in data):
|
|
257
|
+
return []
|
|
258
|
+
|
|
259
|
+
# Otherwise process each item in the list
|
|
260
|
+
return [replace_none_arrays(item) for item in data]
|
|
261
|
+
|
|
262
|
+
# Return other data types unchanged
|
|
263
|
+
return data
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import inspect
|
|
1
2
|
from abc import abstractmethod
|
|
2
3
|
from enum import Enum
|
|
3
4
|
from functools import wraps
|
|
@@ -81,12 +82,46 @@ def log_context(
|
|
|
81
82
|
def wrapper(*args: Any, **kwargs: Any) -> Any:
|
|
82
83
|
context = dict(additional_context)
|
|
83
84
|
|
|
84
|
-
# extract specified param values from kwargs
|
|
85
|
+
# extract specified param values from kwargs and args
|
|
85
86
|
if capture_args:
|
|
87
|
+
# First, process kwargs as they're explicitly named
|
|
86
88
|
for arg_name, context_name in capture_args.items():
|
|
87
89
|
if arg_name in kwargs:
|
|
88
90
|
context[context_name.value] = kwargs[arg_name]
|
|
89
91
|
|
|
92
|
+
# Process args using signature binding for more robust parameter mapping
|
|
93
|
+
if args:
|
|
94
|
+
try:
|
|
95
|
+
# Get the signature and bind the arguments
|
|
96
|
+
sig = inspect.signature(func)
|
|
97
|
+
# This will map positional args to their parameter names correctly
|
|
98
|
+
bound_args = sig.bind_partial(*args, **kwargs)
|
|
99
|
+
|
|
100
|
+
# Now we can iterate through the bound arguments
|
|
101
|
+
for param_name, arg_value in bound_args.arguments.items():
|
|
102
|
+
# Only process if this parameter is in capture_args and wasn't already found in kwargs
|
|
103
|
+
if param_name in capture_args and param_name not in kwargs:
|
|
104
|
+
context_name = capture_args[param_name]
|
|
105
|
+
context[context_name.value] = arg_value
|
|
106
|
+
except TypeError:
|
|
107
|
+
# Handle the case where the arguments don't match the signature
|
|
108
|
+
pass
|
|
109
|
+
|
|
110
|
+
# Handle default parameters that weren't provided in args or kwargs
|
|
111
|
+
if capture_args:
|
|
112
|
+
sig = inspect.signature(func)
|
|
113
|
+
for param_name, param in sig.parameters.items():
|
|
114
|
+
# Check if parameter has a default value and is in capture_args
|
|
115
|
+
# and hasn't been processed yet (not in context)
|
|
116
|
+
if (
|
|
117
|
+
param.default is not param.empty
|
|
118
|
+
and param_name in capture_args
|
|
119
|
+
and capture_args[param_name].value not in context
|
|
120
|
+
):
|
|
121
|
+
context_name = capture_args[param_name]
|
|
122
|
+
context[context_name.value] = param.default
|
|
123
|
+
|
|
124
|
+
# Process Contextualizable args
|
|
90
125
|
for arg in args:
|
|
91
126
|
if isinstance(arg, Contextualizable):
|
|
92
127
|
arg_context = arg.get_log_context()
|
|
@@ -332,11 +332,20 @@ class PrivacyRequestService:
|
|
|
332
332
|
)
|
|
333
333
|
|
|
334
334
|
if _manual_approval_required(self.config_proxy, privacy_request):
|
|
335
|
-
self.
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
335
|
+
has_webhooks = self.db.query(PreApprovalWebhook).count() > 0
|
|
336
|
+
# If there are pre-approval webhooks, then we do nothing since the
|
|
337
|
+
# create_privacy_request method will have already triggered them,
|
|
338
|
+
# and they will be responsible of approving the request.
|
|
339
|
+
|
|
340
|
+
# If there are no pre-approval webhooks, approve the request immediately
|
|
341
|
+
# since it was originally approved by a person and we don't want them to
|
|
342
|
+
# have to manually re-approve
|
|
343
|
+
if not has_webhooks:
|
|
344
|
+
self.approve_privacy_requests(
|
|
345
|
+
[privacy_request_id],
|
|
346
|
+
reviewed_by=reviewed_by,
|
|
347
|
+
suppress_notification=True,
|
|
348
|
+
)
|
|
340
349
|
|
|
341
350
|
return privacy_request
|
|
342
351
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link data-next-font="" rel="preconnect" href="/" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/
|
|
1
|
+
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link data-next-font="" rel="preconnect" href="/" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/b8dbda131f8d4c05.css" as="style"/><link rel="stylesheet" href="/_next/static/css/b8dbda131f8d4c05.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-4df2ba5ee2d40f0a.js" defer=""></script><script src="/_next/static/chunks/framework-c92fc3344e6fd165.js" defer=""></script><script src="/_next/static/chunks/main-ce7f38a12ea8c223.js" defer=""></script><script src="/_next/static/chunks/pages/_app-c580f4c12ff5a438.js" defer=""></script><script src="/_next/static/chunks/pages/404-1087258931760074.js" defer=""></script><script src="/_next/static/7v-H0NGW-LcEPEo86bsrZ/_buildManifest.js" defer=""></script><script src="/_next/static/7v-H0NGW-LcEPEo86bsrZ/_ssgManifest.js" defer=""></script><style>.data-ant-cssinjs-cache-path{content:"";}</style></head><body><div id="__next"><div style="height:100%;display:flex"></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/404","query":{},"buildId":"7v-H0NGW-LcEPEo86bsrZ","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
self.__BUILD_MANIFEST=function(s,e,t,a,c,n,i,d,o,r,u,g,p,f,b,j,k,h,m,y,l,v,I,U,_,w,q,x,N,B,F,z,A,D,E,L,M,S,T,C,P,G,H,J,K,O,Q){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/":[w,"static/chunks/pages/index-94e6d589c4edf360.js"],"/404":["static/chunks/pages/404-1087258931760074.js"],"/_error":["static/chunks/pages/_error-bede3a8288930dcf.js"],"/add-systems":[w,"static/chunks/pages/add-systems-136bcbd20ac59bf5.js"],"/add-systems/manual":[s,e,a,c,n,j,t,o,u,k,y,q,"static/chunks/pages/add-systems/manual-d7f60624cbc12217.js"],"/add-systems/multiple":[s,e,t,u,l,x,"static/chunks/pages/add-systems/multiple-18b0b521255289a3.js"],"/ant-poc":["static/chunks/pages/ant-poc-b3b4d0a98450ffd1.js"],"/consent":["static/chunks/pages/consent-24bef021ee71e36c.js"],"/consent/configure":[s,e,t,u,l,"static/chunks/pages/consent/configure-e11ace4f273ebb47.js"],"/consent/configure/add-vendors":[s,e,t,u,l,x,"static/chunks/pages/consent/configure/add-vendors-64f83e9a2b777bf3.js"],"/consent/privacy-experience":[s,e,j,t,N,"static/chunks/pages/consent/privacy-experience-35e9df60b21e21a6.js"],"/consent/privacy-experience/new":[a,c,g,B,i,p,h,F,"static/chunks/pages/consent/privacy-experience/new-36162d5bea29dcc2.js"],"/consent/privacy-experience/[id]":[a,c,g,B,i,p,h,F,"static/chunks/pages/consent/privacy-experience/[id]-443e6dd191ce5588.js"],"/consent/privacy-notices":[s,e,t,N,"static/chunks/pages/consent/privacy-notices-da37afbe5ec81339.js"],"/consent/privacy-notices/new":[a,c,g,z,i,p,h,A,"static/chunks/pages/consent/privacy-notices/new-36e57d2f2446be82.js"],"/consent/privacy-notices/[id]":[a,c,g,z,i,p,h,A,"static/chunks/pages/consent/privacy-notices/[id]-2d651499c07d12d9.js"],"/consent/properties":[s,e,t,D,"static/chunks/pages/consent/properties-c57b209feef7c2da.js"],"/consent/reporting":[s,e,a,t,"static/chunks/pages/consent/reporting-97fea4ac45093cbd.js"],"/data-catalog":[s,e,a,c,n,t,"static/css/95ac327e5d70148d.css","static/chunks/pages/data-catalog-942d68a88b321067.js"],"/data-catalog/[systemId]/projects":[s,e,a,c,n,t,f,v,d,"static/chunks/pages/data-catalog/[systemId]/projects-1f965b9c496071d1.js"],"/data-catalog/[systemId]/projects/[projectUrn]":[s,e,t,E,"static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]-46b9790da2fec05a.js"],"/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]":[s,e,a,c,n,t,f,v,L,d,"static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]-6cbd79481199812d.js"],"/data-catalog/[systemId]/resources":[s,e,t,E,"static/chunks/pages/data-catalog/[systemId]/resources-bed368d048ea6883.js"],"/data-catalog/[systemId]/resources/[resourceUrn]":[s,e,a,c,n,t,f,v,L,d,"static/chunks/pages/data-catalog/[systemId]/resources/[resourceUrn]-e7833c1c606081a9.js"],"/data-discovery/action-center":[s,e,t,"static/chunks/pages/data-discovery/action-center-2220c30c3863b5a5.js"],"/data-discovery/action-center/[monitorId]":[s,e,a,c,n,t,r,"static/chunks/pages/data-discovery/action-center/[monitorId]-f0ab51d0d5f995de.js"],"/data-discovery/action-center/[monitorId]/[systemId]":[s,e,a,c,n,t,y,d,"static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-00526324583139ab.js"],"/data-discovery/activity":[s,e,t,r,I,"static/chunks/pages/data-discovery/activity-1d7936f05d23097f.js"],"/data-discovery/detection":[s,e,t,r,I,M,"static/chunks/pages/data-discovery/detection-0ceaf3c555e84714.js"],"/data-discovery/detection/[resourceUrn]":[s,e,t,r,I,M,"static/chunks/pages/data-discovery/detection/[resourceUrn]-68122dbf449a11b4.js"],"/data-discovery/discovery":[s,e,a,c,n,t,r,f,S,d,"static/chunks/pages/data-discovery/discovery-8f2b102e19b0b8f2.js"],"/data-discovery/discovery/[resourceUrn]":[s,e,a,c,n,t,r,f,S,d,"static/chunks/pages/data-discovery/discovery/[resourceUrn]-22c27fe0f898ad2a.js"],"/datamap":[s,e,"static/chunks/255-bf1797f78249d090.js",t,o,k,T,"static/chunks/pages/datamap-9cd0c40bef77b120.js"],"/dataset":[s,e,b,t,m,"static/chunks/pages/dataset-5541ecd2f62711a5.js"],"/dataset/new":[b,m,"static/chunks/pages/dataset/new-740824dfa6823e26.js"],"/dataset/[datasetId]":[s,e,"static/chunks/9729-fcf6ff4e3534e4a8.js",t,U,"static/chunks/pages/dataset/[datasetId]-e14c1c07658f8a10.js"],"/dataset/[datasetId]/[collectionName]":[s,e,a,c,n,C,t,U,d,"static/chunks/pages/dataset/[datasetId]/[collectionName]-17ec8385bb1fa6d4.js"],"/dataset/[datasetId]/[collectionName]/[...subfieldNames]":[s,e,a,c,n,C,t,U,d,"static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-ab9bc1a3640547db.js"],"/datastore-connection":["static/css/5f393dea1c0d031c.css","static/chunks/pages/datastore-connection-b8eaa9b9d3832b30.js"],"/datastore-connection/new":[b,j,m,P,"static/chunks/pages/datastore-connection/new-f8218440494e8532.js"],"/datastore-connection/[id]":[b,m,P,"static/chunks/pages/datastore-connection/[id]-0616437e1a82d3ed.js"],"/integrations":[a,c,n,"static/chunks/6834-dcda0a8ed484775e.js",G,"static/chunks/pages/integrations-1a6965d78bfb26b0.js"],"/integrations/[id]":[s,e,a,c,n,"static/chunks/9255-336a890ada321f89.js",t,p,G,"static/chunks/pages/integrations/[id]-a6448ce6ba7f0cf5.js"],"/login":["static/chunks/pages/login-0cb0eb44bf2dd24c.js"],"/login/[provider]":["static/chunks/pages/login/[provider]-c58beef131c3a82d.js"],"/messaging":[s,e,a,c,n,t,"static/chunks/pages/messaging-f263e6bacf0f2d19.js"],"/messaging/add-template":[i,H,"static/chunks/pages/messaging/add-template-c0d6ae68ff7979c6.js"],"/messaging/[id]":[i,H,"static/chunks/pages/messaging/[id]-6b032de0a6c2c400.js"],"/privacy-requests":[s,e,t,J,"static/chunks/pages/privacy-requests-eebd2f4ead19cfd6.js"],"/privacy-requests/configure":["static/chunks/pages/privacy-requests/configure-4bad69cd42c9722c.js"],"/privacy-requests/configure/messaging":["static/chunks/pages/privacy-requests/configure/messaging-b96ee3fea3920fcf.js"],"/privacy-requests/configure/storage":["static/chunks/pages/privacy-requests/configure/storage-1b0f9469cb65abfc.js"],"/privacy-requests/[id]":[J,"static/css/15fb7d4837a1de34.css","static/chunks/pages/privacy-requests/[id]-c685d19a131d6960.js"],"/properties":[s,e,t,D,"static/chunks/pages/properties-9a1899dfe052023e.js"],"/properties/add-property":[i,K,"static/chunks/pages/properties/add-property-5a701477b006a63b.js"],"/properties/[id]":[i,K,"static/chunks/pages/properties/[id]-b4c808a8a0287d11.js"],"/reporting/datamap":[s,e,a,c,n,"static/chunks/3967-845c902667e47c4f.js",t,o,k,T,"static/chunks/pages/reporting/datamap-a3fa3ad77730a03b.js"],"/settings/about":["static/chunks/pages/settings/about-d073be113e9ca7b0.js"],"/settings/consent":["static/chunks/pages/settings/consent-4769f55b138073f7.js"],"/settings/custom-fields":[s,e,t,o,"static/chunks/pages/settings/custom-fields-744e7bbc200557e7.js"],"/settings/domain-records":[s,e,t,"static/chunks/pages/settings/domain-records-c5cd5fb578de9515.js"],"/settings/domains":["static/chunks/pages/settings/domains-775f55b3f80cd452.js"],"/settings/email-templates":["static/chunks/pages/settings/email-templates-39c7ae3602ac69b2.js"],"/settings/locations":[s,O,"static/chunks/pages/settings/locations-45e33ba111f8f8b0.js"],"/settings/organization":["static/chunks/pages/settings/organization-14def4ca3cc9cda5.js"],"/settings/regulations":[s,O,"static/chunks/pages/settings/regulations-94975aeab348528e.js"],"/systems":[s,e,t,"static/chunks/pages/systems-c320df35d51dc537.js"],"/systems/configure/[id]":[s,e,a,c,n,j,t,o,u,k,y,q,"static/chunks/pages/systems/configure/[id]-82d9af34546adaa2.js"],"/systems/configure/[id]/test-datasets":[b,"static/chunks/pages/systems/configure/[id]/test-datasets-21f26c0dc4d09e9f.js"],"/taxonomy":["static/chunks/3e38ba78-4487e45fd4ed2479.js",a,c,n,g,"static/chunks/5960-8895f51b30c35798.js",o,"static/css/34a7eb08b86ddb57.css","static/chunks/pages/taxonomy-181ea5b0ac975239.js"],"/user-management":[_,"static/chunks/pages/user-management-aa872b21bb835d34.js"],"/user-management/new":[_,Q,"static/chunks/pages/user-management/new-d6717378b42982d5.js"],"/user-management/profile/[id]":[_,Q,"static/chunks/pages/user-management/profile/[id]-622e16a17a11c096.js"],sortedPages:["/","/404","/_app","/_error","/add-systems","/add-systems/manual","/add-systems/multiple","/ant-poc","/consent","/consent/configure","/consent/configure/add-vendors","/consent/privacy-experience","/consent/privacy-experience/new","/consent/privacy-experience/[id]","/consent/privacy-notices","/consent/privacy-notices/new","/consent/privacy-notices/[id]","/consent/properties","/consent/reporting","/data-catalog","/data-catalog/[systemId]/projects","/data-catalog/[systemId]/projects/[projectUrn]","/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]","/data-catalog/[systemId]/resources","/data-catalog/[systemId]/resources/[resourceUrn]","/data-discovery/action-center","/data-discovery/action-center/[monitorId]","/data-discovery/action-center/[monitorId]/[systemId]","/data-discovery/activity","/data-discovery/detection","/data-discovery/detection/[resourceUrn]","/data-discovery/discovery","/data-discovery/discovery/[resourceUrn]","/datamap","/dataset","/dataset/new","/dataset/[datasetId]","/dataset/[datasetId]/[collectionName]","/dataset/[datasetId]/[collectionName]/[...subfieldNames]","/datastore-connection","/datastore-connection/new","/datastore-connection/[id]","/integrations","/integrations/[id]","/login","/login/[provider]","/messaging","/messaging/add-template","/messaging/[id]","/privacy-requests","/privacy-requests/configure","/privacy-requests/configure/messaging","/privacy-requests/configure/storage","/privacy-requests/[id]","/properties","/properties/add-property","/properties/[id]","/reporting/datamap","/settings/about","/settings/consent","/settings/custom-fields","/settings/domain-records","/settings/domains","/settings/email-templates","/settings/locations","/settings/organization","/settings/regulations","/systems","/systems/configure/[id]","/systems/configure/[id]/test-datasets","/taxonomy","/user-management","/user-management/new","/user-management/profile/[id]"]}}("static/chunks/c78d26b1-88a3e1bacb2a03c2.js","static/chunks/2780-8328de94968d05e4.js","static/chunks/4481-ca8d2c75d634b6bc.js","static/chunks/2858-0b44609b6be7850b.js","static/chunks/2866-a73888c17a195cbe.js","static/chunks/9278-9b1b5970f0702668.js","static/chunks/9282-1a5a2f6f4d9ed586.js","static/css/d2d4e9a6923e6730.css","static/chunks/7980-2597c279c30fbcda.js","static/chunks/9999-f2e40d5b13343220.js","static/chunks/3949-9888699e2ac564c4.js","static/chunks/4294-5b3aa9d605217915.js","static/chunks/5834-bd9ed01c4ab2ef5c.js","static/chunks/6372-f1b54f3cb4888660.js","static/chunks/3005-373de16453ed7eea.js","static/chunks/4833-a85bd5d25ebc40c4.js","static/chunks/8499-07507004e8275df2.js","static/chunks/6277-515c922445b8edc5.js","static/chunks/5574-a4047e826a8cd4c3.js","static/chunks/3627-fb83adac32c128e6.js","static/chunks/4723-81d28e5be5c7b6d7.js","static/chunks/7751-25e0c1307988ffd7.js","static/chunks/6315-dee79f6861c94d2d.js","static/chunks/5487-d96e1abc93f92631.js","static/chunks/5480-f5bec5e881f72f8d.js","static/css/972dc7eef106ee7c.css","static/chunks/7044-9dc90893067f38ae.js","static/chunks/5826-16e497af363a0cbc.js","static/chunks/6853-cacea421af3bfc26.js","static/chunks/5908-532dfbc9d930f635.js","static/chunks/3320-87c75df57a47487e.js","static/chunks/8837-cf26e5ca1ae5aaf5.js","static/chunks/6954-6eb480eb132239c3.js","static/chunks/79-ba88d0cf4c65aaa2.js","static/chunks/3872-f3d5054bdc584eaa.js","static/chunks/3855-5c7b11871f59e0e0.js","static/chunks/2397-7177ecf4ebe68feb.js","static/chunks/9046-80f1ea44f89fe32c.js","static/chunks/5258-3a650be9142cf914.js","static/chunks/1995-0e4fc4f7b44ed72b.js","static/chunks/9767-4c591bd478c72650.js","static/chunks/5973-67c7562997f7d5cb.js","static/chunks/5246-9fc6af1a6499e0a4.js","static/chunks/8433-969280d321d1c3a2.js","static/chunks/3662-420d9807c30008ab.js","static/chunks/3086-be6b52546c3efc90.js","static/chunks/1150-73440d7b319558e8.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5574],{77213:function(e,i,t){t.d(i,{Z:function(){return h}});var r=t(24246),n=t(56351),s=t(88038),o=t.n(s),l=t(86677);t(27378);var d=t(25980),a=t(90867),c=t(77830),x=()=>{let e=(0,l.useRouter)();return(0,r.jsx)(n.xuv,{bg:"gray.50",border:"1px solid",borderColor:"blue.400",borderRadius:"md",justifyContent:"space-between",p:5,mb:5,mt:5,children:(0,r.jsxs)(n.xuv,{children:[(0,r.jsxs)(n.Kqy,{direction:{base:"column",sm:"row"},justifyContent:"space-between",children:[(0,r.jsx)(n.xvT,{fontWeight:"semibold",children:"Configure your storage and messaging provider"}),(0,r.jsx)(n.wpx,{onClick:()=>{e.push(c.fz)},children:"Configure"})]}),(0,r.jsxs)(n.xvT,{children:["Before Fides can process your privacy requests we need two simple steps to configure your storage and email client."," "]})]})})},h=e=>{let{children:i,title:t,padded:s=!0,mainProps:c}=e,h=(0,d.hz)(),u=(0,l.useRouter)(),p="/privacy-requests"===u.pathname||"/datastore-connection"===u.pathname,m=!(h.flags.privacyRequestsConfiguration&&p),{data:g}=(0,a.JE)(void 0,{skip:m}),{data:j}=(0,a.PW)(void 0,{skip:m}),f=h.flags.privacyRequestsConfiguration&&(!g||!j)&&p;return(0,r.jsxs)(n.kCb,{"data-testid":t,direction:"column",h:"100vh",children:[(0,r.jsxs)(o(),{children:[(0,r.jsxs)("title",{children:["Fides Admin UI - ",t]}),(0,r.jsx)("meta",{name:"description",content:"Privacy Engineering Platform"}),(0,r.jsx)("link",{rel:"icon",href:"/favicon.ico"})]}),(0,r.jsxs)(n.kCb,{as:"main",direction:"column",py:s?6:0,px:s?10:0,h:s?"calc(100% - 48px)":"full",flex:1,minWidth:0,overflow:"auto",...c,children:[f?(0,r.jsx)(x,{}):null,i]})]})}},58754:function(e,i,t){var r=t(24246),n=t(56351),s=t(70788);i.Z=e=>{let{heading:i,breadcrumbItems:t,isSticky:o=!0,children:l,rightContent:d,style:a,...c}=e;return(0,r.jsxs)("div",{...c,style:o?{position:"sticky",top:"-24px",paddingTop:"24px",paddingBottom:"24px",paddingLeft:"40px",marginLeft:"-40px",paddingRight:"40px",marginRight:"-40px",marginTop:"-24px",left:0,zIndex:20,backgroundColor:"white",...a}:{paddingBottom:"24px",...a},children:[(0,r.jsxs)(n.jqI,{justify:"space-between",children:["string"==typeof i?(0,r.jsx)(n.X6q,{className:t||l?"pb-4":void 0,fontSize:"2xl","data-testid":"page-heading",children:i}):i,d&&(0,r.jsx)("div",{"data-testid":"page-header-right-content",children:d})]}),!!t&&(0,r.jsx)(s.m,{className:l?"pb-4":void 0,items:t,"data-testid":"page-breadcrumb"}),l]})}},84306:function(e,i,t){t.d(i,{V:function(){return s}});var r=t(24246),n=t(56351);let s=()=>{let e=(0,n.pmc)();return{errorAlert:(i,t,s)=>{let o={...s,position:(null==s?void 0:s.position)||"top",render:e=>{let{onClose:s}=e;return(0,r.jsxs)(n.bZj,{alignItems:"normal",status:"error","data-testid":"error-alert",children:[(0,r.jsx)(n.zMQ,{}),(0,r.jsxs)(n.xuv,{children:[t&&(0,r.jsx)(n.CdC,{children:t}),(0,r.jsx)(n.XaZ,{children:i})]}),(0,r.jsx)(n.PZ7,{onClick:s,position:"relative",right:0,size:"sm",top:-1})]})}};(null==s?void 0:s.id)&&e.isActive(s.id)?e.update(s.id,o):e(o)},successAlert:(i,t,s)=>{let o={...s,position:(null==s?void 0:s.position)||"top",render:e=>{let{onClose:s}=e;return(0,r.jsxs)(n.bZj,{alignItems:"normal",status:"success",variant:"subtle","data-testid":"success-alert",children:[(0,r.jsx)(n.zMQ,{}),(0,r.jsxs)(n.xuv,{children:[t&&(0,r.jsx)(n.CdC,{children:t}),(0,r.jsx)(n.XaZ,{children:i})]}),(0,r.jsx)(n.PZ7,{onClick:s,position:"relative",right:0,size:"sm",top:-1})]})}};(null==s?void 0:s.id)&&e.isActive(s.id)?e.update(s.id,o):e(o)}}}},70788:function(e,i,t){t.d(i,{m:function(){return a}});var r=t(24246),n=t(56351),s=t(79894),o=t.n(s),l=t(27378);let{Text:d}=n.AntTypography,a=e=>{let{items:i,...t}=e,s=(0,l.useMemo)(()=>null==i?void 0:i.map((e,t)=>{let s=t===i.length-1,l={...e},a=l.onClick&&!l.href;return("string"==typeof l.title&&(l.title=(0,r.jsx)(d,{style:{color:"inherit",maxWidth:s?void 0:400},ellipsis:!s,children:l.title})),a)?l.title=(0,r.jsx)(n.wpx,{type:"text",size:"small",icon:l.icon,onClick:l.onClick,className:"ant-breadcrumb-link -mt-px px-1 text-inherit",children:l.title}):(l.icon&&(l.title=(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("span",{className:"anticon align-text-bottom",children:l.icon}),l.title]})),l.href&&l.title&&(l.title=(0,r.jsx)(o(),{href:l.href,className:"ant-breadcrumb-link",children:l.title}),delete l.href)),l}),[i]);return(0,r.jsx)(n.zrq,{items:s,...t})}},39715:function(e,i,t){var r=t(24246),n=t(56351);t(27378),i.Z=e=>{let{isEmptyState:i,yamlError:t}=e;return(0,r.jsx)(n.Rg9,{in:!0,children:(0,r.jsxs)(n.xuv,{w:"fit-content",bg:"white",p:3,borderRadius:3,children:[(0,r.jsxs)(n.Ugi,{children:[(0,r.jsx)(n.X6q,{as:"h5",color:"gray.700",size:"xs",children:"YAML"}),(0,r.jsx)(n.Vp9,{colorScheme:"red",size:"sm",variant:"solid",children:"Error"})]}),(0,r.jsx)(n.xuv,{bg:"red.50",border:"1px solid",borderColor:"red.300",color:"red.300",mt:"16px",borderRadius:"6px",children:(0,r.jsxs)(n.Ugi,{alignItems:"flex-start",margin:["14px","17px","14px","17px"],children:[(0,r.jsx)(n.f9v,{}),i&&(0,r.jsxs)(n.xuv,{children:[(0,r.jsx)(n.X6q,{as:"h5",color:"red.500",fontWeight:"semibold",size:"xs",children:"Error message:"}),(0,r.jsx)(n.xvT,{color:"gray.700",fontSize:"sm",fontWeight:"400",children:"Yaml system is required"})]}),t&&(0,r.jsxs)(n.xuv,{children:[(0,r.jsx)(n.X6q,{as:"h5",color:"red.500",fontWeight:"semibold",size:"xs",children:"Error message:"}),(0,r.jsx)(n.xvT,{color:"gray.700",fontSize:"sm",fontWeight:"400",children:t.message}),(0,r.jsx)(n.xvT,{color:"gray.700",fontSize:"sm",fontWeight:"400",children:t.reason}),(0,r.jsxs)(n.xvT,{color:"gray.700",fontSize:"sm",fontWeight:"400",children:["Ln ",(0,r.jsx)("b",{children:t.mark.line}),", Col"," ",(0,r.jsx)("b",{children:t.mark.column}),", Pos"," ",(0,r.jsx)("b",{children:t.mark.position})]})]})]})})]})})}},41207:function(e,i,t){t.d(i,{F:function(){return o},M:function(){return s}});var r=t(76649),n=t(65218);let s=t.n(n)()(()=>t.e(7088).then(t.bind(t,57088)).then(e=>e.default),{loadableGenerated:{webpack:()=>[57088]},ssr:!1}),o=e=>(0,r.Ln)({name:"string"},e)&&"YAMLException"===e.name}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5834],{97181:function(e,a,_){_.d(a,{d:function(){return t}});var n=_(24246),i=_(56351),l=_(34090),r=_(27378),d=_(91613),o=_(40324);let t=e=>{let{name:a,label:_,labelProps:t,tooltip:F,isRequired:u,layout:c="inline",...s}=e,[S,b,{setValue:p}]=(0,l.U$)(a),C=!!(b.touched&&b.error),[v,A]=(0,r.useState)("");S.value||"tags"!==s.mode&&"multiple"!==s.mode||(S.value=[]),"tags"===s.mode&&"string"==typeof S.value&&(S.value=[S.value]);let M="tags"===s.mode?(e,a)=>e?e.value!==v||S.value.includes(v)?s.optionRender?s.optionRender(e,a):e.label:'Create "'.concat(v,'"'):void 0:s.optionRender||void 0,N=e=>{A(e),s.onSearch&&s.onSearch(e)},m=(e,a)=>{p(e),s.onChange&&s.onChange(e,a)};return"inline"===c?(0,n.jsx)(i.NIc,{isInvalid:C,isRequired:u,children:(0,n.jsxs)(i.rjZ,{templateColumns:_?"1fr 3fr":"1fr",children:[_?(0,n.jsx)(o.__,{htmlFor:s.id||a,...t,children:_}):null,(0,n.jsxs)(i.jqI,{align:"center",children:[(0,n.jsxs)(i.jqI,{vertical:!0,flex:1,className:"mr-2",children:[(0,n.jsx)(i.WPr,{...S,id:s.id||a,"data-testid":"controlled-select-".concat(S.name),...s,optionRender:M,onSearch:"tags"===s.mode?N:void 0,onChange:m,value:S.value||void 0}),(0,n.jsx)(o.Bc,{isInvalid:C,message:b.error,fieldName:S.name})]}),F?(0,n.jsx)(d.Z,{label:F}):null]})]})}):(0,n.jsx)(i.NIc,{isInvalid:C,isRequired:u,children:(0,n.jsxs)(i.gCW,{alignItems:"start",children:[(0,n.jsxs)(i.jqI,{align:"center",children:[_?(0,n.jsx)(o.__,{htmlFor:s.id||a,fontSize:"xs",my:0,mr:1,...t,children:_}):null,F?(0,n.jsx)(d.Z,{label:F}):null]}),(0,n.jsx)(i.WPr,{...S,id:s.id||a,"data-testid":"controlled-select-".concat(S.name),...s,optionRender:M,onSearch:"tags"===s.mode?N:void 0,onChange:m,value:S.value||void 0}),(0,n.jsx)(o.Bc,{isInvalid:C,message:b.error,fieldName:S.name})]})})}},8411:function(e,a,_){_.d(a,{NA:function(){return l},Z8:function(){return i}});var n=_(21702);let i={[n._F.ER]:"Eritrea",[n._F.DJ]:"Djibouti",[n._F.MR]:"Mauritania",[n._F.NA]:"Namibia",[n._F.GH]:"Ghana",[n._F.SS]:"South Sudan",[n._F.SC]:"Seychelles",[n._F.IO]:"British Indian Ocean Territory",[n._F.GQ]:"Equatorial Guinea",[n._F.AO]:"Angola",[n._F.CG]:"Republic of the Congo",[n._F.BW]:"Botswana",[n._F.BI]:"Burundi",[n._F.DZ]:"Algeria",[n._F.TD]:"Chad",[n._F.NG]:"Nigeria",[n._F.TZ]:"Tanzania",[n._F.EH]:"Western Sahara",[n._F.SN]:"Senegal",[n._F.LR]:"Liberia",[n._F.ZA]:"South Africa",[n._F.CV]:"Cape Verde",[n._F.GM]:"Gambia",[n._F.SD]:"Sudan",[n._F.KM]:"Comoros",[n._F.SZ]:"Eswatini",[n._F.UG]:"Uganda",[n._F.MG]:"Madagascar",[n._F.RW]:"Rwanda",[n._F.CD]:"DR Congo",[n._F.CM]:"Cameroon",[n._F.SH]:"Saint Helena, Ascension and Tristan da Cunha",[n._F.TG]:"Togo",[n._F.MU]:"Mauritius",[n._F.NE]:"Niger",[n._F.BJ]:"Benin",[n._F.EG]:"Egypt",[n._F.LS]:"Lesotho",[n._F.ET]:"Ethiopia",[n._F.MA]:"Morocco",[n._F.YT]:"Mayotte",[n._F.BF]:"Burkina Faso",[n._F.RE]:"R\xe9union",[n._F.ST]:"S\xe3o Tom\xe9 and Pr\xedncipe",[n._F.CF]:"Central African Republic",[n._F.MZ]:"Mozambique",[n._F.MW]:"Malawi",[n._F.ML]:"Mali",[n._F.ZM]:"Zambia",[n._F.LY]:"Libya",[n._F.GW]:"Guinea-Bissau",[n._F.SO]:"Somalia",[n._F.KE]:"Kenya",[n._F.GN]:"Guinea",[n._F.ZW]:"Zimbabwe",[n._F.TN]:"Tunisia",[n._F.SL]:"Sierra Leone",[n._F.GA]:"Gabon",[n._F.CI]:"Ivory Coast",[n._F.JO]:"Jordan",[n._F.PK]:"Pakistan",[n._F.KP]:"North Korea",[n._F.MO]:"Macau",[n._F.AM]:"Armenia",[n._F.SY]:"Syria",[n._F.TJ]:"Tajikistan",[n._F.SA]:"Saudi Arabia",[n._F.KR]:"South Korea",[n._F.NP]:"Nepal",[n._F.PH]:"Philippines",[n._F.IQ]:"Iraq",[n._F.LB]:"Lebanon",[n._F.MN]:"Mongolia",[n._F.PS]:"Palestine",[n._F.YE]:"Yemen",[n._F.JP]:"Japan",[n._F.KZ]:"Kazakhstan",[n._F.LK]:"Sri Lanka",[n._F.MM]:"Myanmar",[n._F.KG]:"Kyrgyzstan",[n._F.CN]:"China",[n._F.AF]:"Afghanistan",[n._F.OM]:"Oman",[n._F.IN]:"India",[n._F.LA]:"Laos",[n._F.UZ]:"Uzbekistan",[n._F.MV]:"Maldives",[n._F.ID]:"Indonesia",[n._F.VN]:"Vietnam",[n._F.MY]:"Malaysia",[n._F.TW]:"Taiwan",[n._F.KH]:"Cambodia",[n._F.AE]:"United Arab Emirates",[n._F.HK]:"Hong Kong",[n._F.GE]:"Georgia",[n._F.BD]:"Bangladesh",[n._F.KW]:"Kuwait",[n._F.TM]:"Turkmenistan",[n._F.QA]:"Qatar",[n._F.BH]:"Bahrain",[n._F.BN]:"Brunei",[n._F.TH]:"Thailand",[n._F.BT]:"Bhutan",[n._F.SG]:"Singapore",[n._F.IL]:"Israel",[n._F.AZ]:"Azerbaijan",[n._F.TL]:"Timor-Leste",[n._F.IR]:"Iran",[n._F.TR]:"Turkey",[n._F.MK]:"North Macedonia",[n._F.IE]:"Ireland",[n._F.DK]:"Denmark",[n._F.SK]:"Slovakia",[n._F.MD]:"Moldova",[n._F.AX]:"\xc5land Islands",[n._F.PL]:"Poland",[n._F.BA]:"Bosnia and Herzegovina",[n._F.SM]:"San Marino",[n._F.CZ]:"Czechia",[n._F.EE]:"Estonia",[n._F.XK]:"Kosovo",[n._F.FO]:"Faroe Islands",[n._F.SJ]:"Svalbard and Jan Mayen",[n._F.GG]:"Guernsey",[n._F.FR]:"France",[n._F.NL]:"Netherlands",[n._F.FI]:"Finland",[n._F.PT]:"Portugal",[n._F.DE]:"Germany",[n._F.MT]:"Malta",[n._F.JE]:"Jersey",[n._F.IS]:"Iceland",[n._F.ES]:"Spain",[n._F.GI]:"Gibraltar",[n._F.NO]:"Norway",[n._F.CY]:"Cyprus",[n._F.RS]:"Serbia",[n._F.LT]:"Lithuania",[n._F.MC]:"Monaco",[n._F.LU]:"Luxembourg",[n._F.UA]:"Ukraine",[n._F.IM]:"Isle of Man",[n._F.RO]:"Romania",[n._F.BE]:"Belgium",[n._F.SE]:"Sweden",[n._F.ME]:"Montenegro",[n._F.LV]:"Latvia",[n._F.VA]:"Vatican City",[n._F.AT]:"Austria",[n._F.AL]:"Albania",[n._F.LI]:"Liechtenstein",[n._F.GR]:"Greece",[n._F.IT]:"Italy",[n._F.AD]:"Andorra",[n._F.GB]:"United Kingdom",[n._F.RU]:"Russia",[n._F.SI]:"Slovenia",[n._F.BY]:"Belarus",[n._F.CH]:"Switzerland",[n._F.HU]:"Hungary",[n._F.BG]:"Bulgaria",[n._F.HR]:"Croatia",[n._F.TC]:"Turks and Caicos Islands",[n._F.CW]:"Cura\xe7ao",[n._F.GP]:"Guadeloupe",[n._F.UM]:"United States Minor Outlying Islands",[n._F.GT]:"Guatemala",[n._F.PM]:"Saint Pierre and Miquelon",[n._F.BQ]:"Caribbean Netherlands",[n._F.GL]:"Greenland",[n._F.SX]:"Sint Maarten",[n._F.PA]:"Panama",[n._F.AW]:"Aruba",[n._F.MQ]:"Martinique",[n._F.AG]:"Antigua and Barbuda",[n._F.BM]:"Bermuda",[n._F.CU]:"Cuba",[n._F.GD]:"Grenada",[n._F.NI]:"Nicaragua",[n._F.LC]:"Saint Lucia",[n._F.KN]:"Saint Kitts and Nevis",[n._F.DO]:"Dominican Republic",[n._F.VC]:"Saint Vincent and the Grenadines",[n._F.BZ]:"Belize",[n._F.HT]:"Haiti",[n._F.JM]:"Jamaica",[n._F.BS]:"Bahamas",[n._F.MX]:"Mexico",[n._F.MF]:"Saint Martin",[n._F.SV]:"El Salvador",[n._F.BL]:"Saint Barth\xe9lemy",[n._F.AI]:"Anguilla",[n._F.MS]:"Montserrat",[n._F.VG]:"British Virgin Islands",[n._F.BB]:"Barbados",[n._F.HN]:"Honduras",[n._F.KY]:"Cayman Islands",[n._F.DM]:"Dominica",[n._F.TT]:"Trinidad and Tobago",[n._F.CR]:"Costa Rica",[n._F.SR]:"Suriname",[n._F.CX]:"Christmas Island",[n._F.WS]:"Samoa",[n._F.PF]:"French Polynesia",[n._F.AS]:"American Samoa",[n._F.NC]:"New Caledonia",[n._F.TK]:"Tokelau",[n._F.PW]:"Palau",[n._F.KI]:"Kiribati",[n._F.VU]:"Vanuatu",[n._F.PN]:"Pitcairn Islands",[n._F.CK]:"Cook Islands",[n._F.FJ]:"Fiji",[n._F.PG]:"Papua New Guinea",[n._F.MP]:"Northern Mariana Islands",[n._F.NU]:"Niue",[n._F.TV]:"Tuvalu",[n._F.NF]:"Norfolk Island",[n._F.TO]:"Tonga",[n._F.FM]:"Micronesia",[n._F.SB]:"Solomon Islands",[n._F.NR]:"Nauru",[n._F.WF]:"Wallis and Futuna",[n._F.GU]:"Guam",[n._F.AU]:"Australia",[n._F.NZ]:"New Zealand",[n._F.MH]:"Marshall Islands",[n._F.CC]:"Cocos (Keeling) Islands",[n._F.VE]:"Venezuela",[n._F.PY]:"Paraguay",[n._F.BR]:"Brazil",[n._F.CO]:"Colombia",[n._F.PE]:"Peru",[n._F.CL]:"Chile",[n._F.UY]:"Uruguay",[n._F.AR]:"Argentina",[n._F.GY]:"Guyana",[n._F.BO]:"Bolivia",[n._F.GF]:"French Guiana",[n._F.EC]:"Ecuador",[n._F.FK]:"Falkland Islands",[n._F.US_AL]:"Alabama",[n._F.US_AK]:"Alaska",[n._F.US_AZ]:"Arizona",[n._F.US_AR]:"Arkansas",[n._F.US_CA]:"California",[n._F.US_CO]:"Colorado",[n._F.US_CT]:"Connecticut",[n._F.US_DE]:"Delaware",[n._F.US_DC]:"District of Columbia (DC)",[n._F.US_FL]:"Florida",[n._F.US_GA]:"Georgia",[n._F.US_HI]:"Hawaii",[n._F.US_ID]:"Idaho",[n._F.US_IL]:"Illinois",[n._F.US_IN]:"Indiana",[n._F.US_IA]:"Iowa",[n._F.US_KS]:"Kansas",[n._F.US_KY]:"Kentucky",[n._F.US_LA]:"Louisiana",[n._F.US_ME]:"Maine",[n._F.US_MD]:"Maryland",[n._F.US_MA]:"Massachusetts",[n._F.US_MI]:"Michigan",[n._F.US_MN]:"Minnesota",[n._F.US_MS]:"Mississippi",[n._F.US_MO]:"Missouri",[n._F.US_MT]:"Montana",[n._F.US_NE]:"Nebraska",[n._F.US_NV]:"Nevada",[n._F.US_NH]:"New Hampshire",[n._F.US_NJ]:"New Jersey",[n._F.US_NM]:"New Mexico",[n._F.US_NY]:"New York",[n._F.US_NC]:"North Carolina",[n._F.US_ND]:"North Dakota",[n._F.US_OH]:"Ohio",[n._F.US_OK]:"Oklahoma",[n._F.US_OR]:"Oregon",[n._F.US_PA]:"Pennsylvania",[n._F.US_PR]:"Puerto Rico",[n._F.US_RI]:"Rhode Island",[n._F.US_SC]:"South Carolina",[n._F.US_SD]:"San Diego",[n._F.US_TN]:"Tennessee",[n._F.US_TX]:"Texas",[n._F.US_UT]:"Utah",[n._F.US_VA]:"Virginia",[n._F.US_VI]:"United States Virgin Islands",[n._F.US_VT]:"Vermon",[n._F.US_WA]:"Washington",[n._F.US_WV]:"West Virginia",[n._F.US_WI]:"Wisconsin",[n._F.US_WY]:"Wyoming",[n._F.CA_AB]:"Alberta",[n._F.CA_BC]:"British Columbia",[n._F.CA_MB]:"Manitoba",[n._F.CA_NB]:"New Brunswick",[n._F.CA_NL]:"Newfoundland and Labrador",[n._F.CA_NS]:"Nova Scotia",[n._F.CA_ON]:"Ontario",[n._F.CA_PE]:"Prince Edward Island",[n._F.CA_QC]:"Quebec",[n._F.CA_SK]:"Saskatchewan",[n._F.CA_NT]:"Northwest Territories",[n._F.CA_NU]:"Nunavut",[n._F.CA_YT]:"Yukon",[n._F.CA]:"Canada",[n._F.US]:"United States",[n._F.MEXICO_CENTRAL_AMERICA]:"Mexico and Central America",[n._F.CARIBBEAN]:"Caribbean",[n._F.EEA]:"European Economic Area (EEA)",[n._F.NON_EEA]:"Non European Economic Area"},l=new Map(Object.entries(i));Object.entries(i).map(e=>({value:e[0],label:e[1]}))},48515:function(e,a,_){var n,i;_.d(a,{O:function(){return n}}),(i=n||(n={})).ACKNOWLEDGE="acknowledge",i.OPT_IN_OPT_OUT="opt_in_opt_out"},60325:function(e,a,_){_.d(a,{DD:function(){return d},Go:function(){return o},TK:function(){return l},Uv:function(){return F},y3:function(){return u}});var n=_(21702),i=_(48515);let l=e=>{var a;return null!==(a=null==e?void 0:e.filter(e=>e.selected).map(e=>e.id))&&void 0!==a?a:[]},r=[{language:n.eU.EN,is_default:!0,title:"Title",description:"Description",accept_button_label:"Accept",reject_button_label:"Reject",save_button_label:"Save",acknowledge_button_label:"OK",privacy_preferences_link_label:"Privacy Preferences"}],d={name:"",disabled:!1,dismissable:!0,allow_language_selection:!1,show_layer1_notices:!1,layer1_button_options:i.O.OPT_IN_OPT_OUT,regions:[],translations:r,auto_detect_language:!0,auto_subdomain_cookie_deletion:!0},o=(e,a)=>{let _=a.find(a=>a.id===e.language);return _?_.name:e.language},t=e=>{var a,_,n,i,l,r,d,o,t;let{language:F,is_default:u,accept_button_label:c,reject_button_label:s}=e;return{language:F,is_default:u,accept_button_label:c,reject_button_label:s,title:e.title,description:e.description,acknowledge_button_label:null!==(a=e.acknowledge_button_label)&&void 0!==a?a:void 0,banner_title:null!==(_=e.banner_title)&&void 0!==_?_:void 0,banner_description:null!==(n=e.banner_description)&&void 0!==n?n:void 0,purpose_header:null!==(i=e.purpose_header)&&void 0!==i?i:void 0,privacy_policy_link_label:null!==(l=e.privacy_policy_link_label)&&void 0!==l?l:void 0,privacy_policy_url:null!==(r=e.privacy_policy_url)&&void 0!==r?r:void 0,privacy_preferences_link_label:null!==(d=e.privacy_preferences_link_label)&&void 0!==d?d:void 0,save_button_label:null!==(o=e.save_button_label)&&void 0!==o?o:void 0,modal_link_label:null!==(t=e.modal_link_label)&&void 0!==t?t:void 0}},F=e=>{let{created_at:a,updated_at:_,privacy_notices:n,origin:i,id:l,...r}=e;return{...r,privacy_notice_ids:n?n.map(e=>e.id):[],translations:e.translations?e.translations.map(e=>t(e)):[]}},u=e=>e===n.re.PRIVACY_CENTER?{title:{included:!0,required:!0},description:{included:!0,required:!0},save_button_label:{included:!0,required:!0},accept_button_label:{included:!0,required:!0},reject_button_label:{included:!0,required:!0},privacy_policy_link_label:{included:!0},privacy_policy_url:{included:!0},modal_link_label:{included:!0}}:e===n.re.MODAL?{title:{included:!0,required:!0},description:{included:!0,required:!0},accept_button_label:{included:!0,required:!0},reject_button_label:{included:!0,required:!0},save_button_label:{included:!0,required:!0},acknowledge_button_label:{included:!0,required:!0},privacy_policy_link_label:{included:!0},privacy_policy_url:{included:!0},privacy_preferences_link_label:{included:!0},modal_link_label:{included:!0}}:e===n.re.BANNER_AND_MODAL?{title:{included:!0,required:!0},banner_title:{included:!0},description:{included:!0,required:!0},banner_description:{included:!0},accept_button_label:{included:!0,required:!0},reject_button_label:{included:!0,required:!0},save_button_label:{included:!0,required:!0},acknowledge_button_label:{included:!0,required:!0},privacy_policy_link_label:{included:!0},privacy_policy_url:{included:!0},privacy_preferences_link_label:{included:!0,required:!0},modal_link_label:{included:!0}}:e===n.re.TCF_OVERLAY?{title:{included:!0,required:!0},banner_title:{included:!0},description:{included:!0,required:!0},banner_description:{included:!0},purpose_header:{included:!0},accept_button_label:{included:!0,required:!0},reject_button_label:{included:!0,required:!0},save_button_label:{included:!0,required:!0},acknowledge_button_label:{included:!0,required:!0},privacy_policy_link_label:{included:!0},privacy_policy_url:{included:!0},privacy_preferences_link_label:{included:!0,required:!0},modal_link_label:{included:!0}}:{title:{included:!0,required:!0},description:{included:!0,required:!0},accept_button_label:{included:!0,required:!0},reject_button_label:{included:!0,required:!0},save_button_label:{included:!0,required:!0},acknowledge_button_label:{included:!0,required:!0},privacy_policy_link_label:{included:!0},privacy_policy_url:{included:!0},privacy_preferences_link_label:{included:!0,required:!0},modal_link_label:{included:!0}}}}]);
|