@transcend-io/sdk 1.3.1 → 1.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/dist/index.d.mts +299 -5
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +605 -128
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/dist/index.mjs
CHANGED
|
@@ -3,7 +3,7 @@ import { GraphQLClient, gql } from "graphql-request";
|
|
|
3
3
|
import got from "got";
|
|
4
4
|
import { parse } from "graphql";
|
|
5
5
|
import { chunk, difference, flatten, groupBy, keyBy, sortBy, uniq, uniqBy } from "lodash-es";
|
|
6
|
-
import { AssessmentsDisplayLogicAction, AttributeKeyType, ComparisonOperator, ConsentTrackerStatus, EnricherType, IdentifierType, IsoCountryCode, IsoCountrySubdivisionCode, LogicOperator, OrderDirection, PreferenceQueryResponseItem, PreferenceStoreAuthLevel, PreferenceStoreIdentifier, PreferenceTopicType, PreferenceUpdateItem, RequestAction } from "@transcend-io/privacy-types";
|
|
6
|
+
import { AssessmentsDisplayLogicAction, AttributeKeyType, ComparisonOperator, ConsentTrackerStatus, EnricherType, IdentifierType, IsoCountryCode, IsoCountrySubdivisionCode, LogicOperator, OrderDirection, PreferenceQueryResponseItem, PreferenceStoreAuthLevel, PreferenceStoreIdentifier, PreferenceTopicType, PreferenceUpdateItem, RequestAction, WorkflowConfigType, WorkflowConfigVisibility } from "@transcend-io/privacy-types";
|
|
7
7
|
import * as t from "io-ts";
|
|
8
8
|
import { InitialViewState, KnownDefaultPurpose, OnConsentExpiry, UserPrivacySignalEnum } from "@transcend-io/airgap.js-types";
|
|
9
9
|
import { apply, decodeCodec, valuesOf } from "@transcend-io/type-utils";
|
|
@@ -284,7 +284,7 @@ const UPDATE_BUSINESS_ENTITIES = gql`
|
|
|
284
284
|
`;
|
|
285
285
|
//#endregion
|
|
286
286
|
//#region src/data-inventory/fetchAllBusinessEntities.ts
|
|
287
|
-
const PAGE_SIZE$
|
|
287
|
+
const PAGE_SIZE$43 = 20;
|
|
288
288
|
/**
|
|
289
289
|
* Fetch all businessEntities in the organization
|
|
290
290
|
*
|
|
@@ -299,14 +299,14 @@ async function fetchAllBusinessEntities(client, options = {}) {
|
|
|
299
299
|
do {
|
|
300
300
|
const { businessEntities: { nodes } } = await makeGraphQLRequest(client, BUSINESS_ENTITIES, {
|
|
301
301
|
variables: {
|
|
302
|
-
first: PAGE_SIZE$
|
|
302
|
+
first: PAGE_SIZE$43,
|
|
303
303
|
offset
|
|
304
304
|
},
|
|
305
305
|
logger
|
|
306
306
|
});
|
|
307
307
|
businessEntities.push(...nodes);
|
|
308
|
-
offset += PAGE_SIZE$
|
|
309
|
-
shouldContinue = nodes.length === PAGE_SIZE$
|
|
308
|
+
offset += PAGE_SIZE$43;
|
|
309
|
+
shouldContinue = nodes.length === PAGE_SIZE$43;
|
|
310
310
|
} while (shouldContinue);
|
|
311
311
|
return businessEntities.sort((a, b) => a.title.localeCompare(b.title));
|
|
312
312
|
}
|
|
@@ -357,7 +357,7 @@ const UPDATE_DATA_SUB_CATEGORIES = gql`
|
|
|
357
357
|
`;
|
|
358
358
|
//#endregion
|
|
359
359
|
//#region src/data-inventory/fetchAllDataCategories.ts
|
|
360
|
-
const PAGE_SIZE$
|
|
360
|
+
const PAGE_SIZE$42 = 20;
|
|
361
361
|
/**
|
|
362
362
|
* Fetch all dataSubCategories in the organization
|
|
363
363
|
*
|
|
@@ -373,14 +373,14 @@ async function fetchAllDataCategories(client, options = {}) {
|
|
|
373
373
|
do {
|
|
374
374
|
const { dataSubCategories: { nodes } } = await makeGraphQLRequest(client, DATA_SUB_CATEGORIES, {
|
|
375
375
|
variables: {
|
|
376
|
-
first: PAGE_SIZE$
|
|
376
|
+
first: PAGE_SIZE$42,
|
|
377
377
|
offset
|
|
378
378
|
},
|
|
379
379
|
logger
|
|
380
380
|
});
|
|
381
381
|
dataSubCategories.push(...nodes);
|
|
382
|
-
offset += PAGE_SIZE$
|
|
383
|
-
shouldContinue = nodes.length === PAGE_SIZE$
|
|
382
|
+
offset += PAGE_SIZE$42;
|
|
383
|
+
shouldContinue = nodes.length === PAGE_SIZE$42;
|
|
384
384
|
} while (shouldContinue);
|
|
385
385
|
return dataSubCategories.sort((a, b) => a.name.localeCompare(b.name));
|
|
386
386
|
}
|
|
@@ -768,6 +768,20 @@ const DATA_SILOS_ENRICHED = gql`
|
|
|
768
768
|
}
|
|
769
769
|
}
|
|
770
770
|
`;
|
|
771
|
+
/**
|
|
772
|
+
* Singular data silo fetch — `sombra` is available on `DataSilo` but not on
|
|
773
|
+
* the `DataSiloBulkPreview` nodes returned by the paginated `dataSilos` query.
|
|
774
|
+
*/
|
|
775
|
+
const DATA_SILO_SOMBRA = gql`
|
|
776
|
+
query TranscendCliDataSiloSombra($id: String!) {
|
|
777
|
+
dataSilo(id: $id) {
|
|
778
|
+
id
|
|
779
|
+
sombra {
|
|
780
|
+
id
|
|
781
|
+
}
|
|
782
|
+
}
|
|
783
|
+
}
|
|
784
|
+
`;
|
|
771
785
|
const UPDATE_DATA_SILOS = gql`
|
|
772
786
|
mutation TranscendCliUpdateDataSilo($input: UpdateDataSilosInput!) {
|
|
773
787
|
updateDataSilos(input: $input) {
|
|
@@ -860,7 +874,7 @@ const IDENTIFIERS = parse(gql`
|
|
|
860
874
|
`);
|
|
861
875
|
//#endregion
|
|
862
876
|
//#region src/data-inventory/fetchAllIdentifiers.ts
|
|
863
|
-
const PAGE_SIZE$
|
|
877
|
+
const PAGE_SIZE$41 = 20;
|
|
864
878
|
/**
|
|
865
879
|
* Fetch all identifiers in the organization
|
|
866
880
|
*
|
|
@@ -877,13 +891,13 @@ async function fetchAllIdentifiers(client, options = {}) {
|
|
|
877
891
|
const { identifiers: { nodes } } = await makeGraphQLRequest(client, IDENTIFIERS, {
|
|
878
892
|
logger,
|
|
879
893
|
variables: {
|
|
880
|
-
first: PAGE_SIZE$
|
|
894
|
+
first: PAGE_SIZE$41,
|
|
881
895
|
offset
|
|
882
896
|
}
|
|
883
897
|
});
|
|
884
898
|
identifiers.push(...nodes);
|
|
885
|
-
offset += PAGE_SIZE$
|
|
886
|
-
shouldContinue = nodes.length === PAGE_SIZE$
|
|
899
|
+
offset += PAGE_SIZE$41;
|
|
900
|
+
shouldContinue = nodes.length === PAGE_SIZE$41;
|
|
887
901
|
} while (shouldContinue);
|
|
888
902
|
return identifiers.sort((a, b) => a.name.localeCompare(b.name));
|
|
889
903
|
}
|
|
@@ -962,7 +976,7 @@ const UPDATE_PROCESSING_ACTIVITIES = gql`
|
|
|
962
976
|
`;
|
|
963
977
|
//#endregion
|
|
964
978
|
//#region src/data-inventory/fetchAllProcessingActivities.ts
|
|
965
|
-
const PAGE_SIZE$
|
|
979
|
+
const PAGE_SIZE$40 = 20;
|
|
966
980
|
/**
|
|
967
981
|
* Fetch all processingActivities in the organization
|
|
968
982
|
*
|
|
@@ -978,14 +992,14 @@ async function fetchAllProcessingActivities(client, options = {}) {
|
|
|
978
992
|
do {
|
|
979
993
|
const { processingActivities: { nodes } } = await makeGraphQLRequest(client, PROCESSING_ACTIVITIES, {
|
|
980
994
|
variables: {
|
|
981
|
-
first: PAGE_SIZE$
|
|
995
|
+
first: PAGE_SIZE$40,
|
|
982
996
|
offset
|
|
983
997
|
},
|
|
984
998
|
logger
|
|
985
999
|
});
|
|
986
1000
|
processingActivities.push(...nodes);
|
|
987
|
-
offset += PAGE_SIZE$
|
|
988
|
-
shouldContinue = nodes.length === PAGE_SIZE$
|
|
1001
|
+
offset += PAGE_SIZE$40;
|
|
1002
|
+
shouldContinue = nodes.length === PAGE_SIZE$40;
|
|
989
1003
|
} while (shouldContinue);
|
|
990
1004
|
return processingActivities.sort((a, b) => a.title.localeCompare(b.title));
|
|
991
1005
|
}
|
|
@@ -1050,7 +1064,7 @@ const UPDATE_VENDORS = gql`
|
|
|
1050
1064
|
`;
|
|
1051
1065
|
//#endregion
|
|
1052
1066
|
//#region src/data-inventory/fetchAllVendors.ts
|
|
1053
|
-
const PAGE_SIZE$
|
|
1067
|
+
const PAGE_SIZE$39 = 20;
|
|
1054
1068
|
/**
|
|
1055
1069
|
* Fetch all vendors in the organization
|
|
1056
1070
|
*
|
|
@@ -1065,14 +1079,14 @@ async function fetchAllVendors(client, options = {}) {
|
|
|
1065
1079
|
do {
|
|
1066
1080
|
const { vendors: { nodes } } = await makeGraphQLRequest(client, VENDORS, {
|
|
1067
1081
|
variables: {
|
|
1068
|
-
first: PAGE_SIZE$
|
|
1082
|
+
first: PAGE_SIZE$39,
|
|
1069
1083
|
offset
|
|
1070
1084
|
},
|
|
1071
1085
|
logger
|
|
1072
1086
|
});
|
|
1073
1087
|
vendors.push(...nodes);
|
|
1074
|
-
offset += PAGE_SIZE$
|
|
1075
|
-
shouldContinue = nodes.length === PAGE_SIZE$
|
|
1088
|
+
offset += PAGE_SIZE$39;
|
|
1089
|
+
shouldContinue = nodes.length === PAGE_SIZE$39;
|
|
1076
1090
|
} while (shouldContinue);
|
|
1077
1091
|
return vendors.sort((a, b) => a.title.localeCompare(b.title));
|
|
1078
1092
|
}
|
|
@@ -1096,6 +1110,13 @@ async function fetchEnrichedDataSilos(client, options) {
|
|
|
1096
1110
|
gql: DATA_SILOS_ENRICHED,
|
|
1097
1111
|
logger
|
|
1098
1112
|
});
|
|
1113
|
+
await mapSeries(silos, async (silo) => {
|
|
1114
|
+
const { dataSilo: { sombra } } = await makeGraphQLRequest(client, DATA_SILO_SOMBRA, {
|
|
1115
|
+
variables: { id: silo.id },
|
|
1116
|
+
logger
|
|
1117
|
+
});
|
|
1118
|
+
silo.sombra = sombra;
|
|
1119
|
+
});
|
|
1099
1120
|
if (!skipDatapoints) await mapSeries(silos, async (silo, index) => {
|
|
1100
1121
|
logger.info(`[${index + 1}/${silos.length}] Fetching data silo - ${silo.title}`);
|
|
1101
1122
|
const dataPoints = await fetchAllDataPoints(client, {
|
|
@@ -1109,6 +1130,9 @@ async function fetchEnrichedDataSilos(client, options) {
|
|
|
1109
1130
|
if (debug) logger.info(`[${index + 1}/${silos.length}] Successfully fetched datapoint for - ${silo.title}`);
|
|
1110
1131
|
dataSilos.push([silo, dataPoints]);
|
|
1111
1132
|
});
|
|
1133
|
+
else silos.forEach((silo) => {
|
|
1134
|
+
dataSilos.push([silo, []]);
|
|
1135
|
+
});
|
|
1112
1136
|
logger.info(`Successfully fetched all ${silos.length} data silo configurations`);
|
|
1113
1137
|
return dataSilos;
|
|
1114
1138
|
}
|
|
@@ -1541,7 +1565,7 @@ const UPDATE_PURPOSE = parse(gql`
|
|
|
1541
1565
|
`);
|
|
1542
1566
|
//#endregion
|
|
1543
1567
|
//#region src/preference-management/fetchAllPurposes.ts
|
|
1544
|
-
const PAGE_SIZE$
|
|
1568
|
+
const PAGE_SIZE$38 = 20;
|
|
1545
1569
|
/**
|
|
1546
1570
|
* Fetch all purposes in the organization
|
|
1547
1571
|
*
|
|
@@ -1558,14 +1582,14 @@ async function fetchAllPurposes(client, options = {}) {
|
|
|
1558
1582
|
const { purposes: { nodes } } = await makeGraphQLRequest(client, PURPOSES$1, {
|
|
1559
1583
|
logger,
|
|
1560
1584
|
variables: {
|
|
1561
|
-
first: PAGE_SIZE$
|
|
1585
|
+
first: PAGE_SIZE$38,
|
|
1562
1586
|
offset,
|
|
1563
1587
|
input: { includeDeleted }
|
|
1564
1588
|
}
|
|
1565
1589
|
});
|
|
1566
1590
|
purposes.push(...nodes);
|
|
1567
|
-
offset += PAGE_SIZE$
|
|
1568
|
-
shouldContinue = nodes.length === PAGE_SIZE$
|
|
1591
|
+
offset += PAGE_SIZE$38;
|
|
1592
|
+
shouldContinue = nodes.length === PAGE_SIZE$38;
|
|
1569
1593
|
} while (shouldContinue);
|
|
1570
1594
|
return purposes.sort((a, b) => a.trackingType.localeCompare(b.trackingType));
|
|
1571
1595
|
}
|
|
@@ -1619,7 +1643,7 @@ const CREATE_OR_UPDATE_PREFERENCE_TOPIC = parse(gql`
|
|
|
1619
1643
|
`);
|
|
1620
1644
|
//#endregion
|
|
1621
1645
|
//#region src/preference-management/fetchAllPreferenceTopics.ts
|
|
1622
|
-
const PAGE_SIZE$
|
|
1646
|
+
const PAGE_SIZE$37 = 20;
|
|
1623
1647
|
/**
|
|
1624
1648
|
* Fetch all preference topics in the organization
|
|
1625
1649
|
*
|
|
@@ -1636,13 +1660,13 @@ async function fetchAllPreferenceTopics(client, options = {}) {
|
|
|
1636
1660
|
const { preferenceTopics: { nodes } } = await makeGraphQLRequest(client, PREFERENCE_TOPICS, {
|
|
1637
1661
|
logger,
|
|
1638
1662
|
variables: {
|
|
1639
|
-
first: PAGE_SIZE$
|
|
1663
|
+
first: PAGE_SIZE$37,
|
|
1640
1664
|
offset
|
|
1641
1665
|
}
|
|
1642
1666
|
});
|
|
1643
1667
|
preferenceTopics.push(...nodes);
|
|
1644
|
-
offset += PAGE_SIZE$
|
|
1645
|
-
shouldContinue = nodes.length === PAGE_SIZE$
|
|
1668
|
+
offset += PAGE_SIZE$37;
|
|
1669
|
+
shouldContinue = nodes.length === PAGE_SIZE$37;
|
|
1646
1670
|
} while (shouldContinue);
|
|
1647
1671
|
return preferenceTopics.sort((a, b) => `${a.slug}:${a.purpose.trackingType}`.localeCompare(`${b.slug}:${b.purpose.trackingType}`));
|
|
1648
1672
|
}
|
|
@@ -2816,7 +2840,7 @@ const CREATE_OR_UPDATE_PREFERENCE_OPTION_VALUES = parse(gql`
|
|
|
2816
2840
|
`);
|
|
2817
2841
|
//#endregion
|
|
2818
2842
|
//#region src/preference-management/fetchAllPreferenceOptionValues.ts
|
|
2819
|
-
const PAGE_SIZE$
|
|
2843
|
+
const PAGE_SIZE$36 = 50;
|
|
2820
2844
|
/**
|
|
2821
2845
|
* Fetch all preference option values in the organization
|
|
2822
2846
|
*
|
|
@@ -2832,14 +2856,14 @@ async function fetchAllPreferenceOptionValues(client, options = {}) {
|
|
|
2832
2856
|
do {
|
|
2833
2857
|
const { preferenceOptionValues: { nodes } } = await makeGraphQLRequest(client, PREFERENCE_OPTION_VALUES, {
|
|
2834
2858
|
variables: {
|
|
2835
|
-
first: PAGE_SIZE$
|
|
2859
|
+
first: PAGE_SIZE$36,
|
|
2836
2860
|
offset
|
|
2837
2861
|
},
|
|
2838
2862
|
logger
|
|
2839
2863
|
});
|
|
2840
2864
|
preferenceOptionValues.push(...nodes);
|
|
2841
|
-
offset += PAGE_SIZE$
|
|
2842
|
-
shouldContinue = nodes.length === PAGE_SIZE$
|
|
2865
|
+
offset += PAGE_SIZE$36;
|
|
2866
|
+
shouldContinue = nodes.length === PAGE_SIZE$36;
|
|
2843
2867
|
} while (shouldContinue);
|
|
2844
2868
|
return preferenceOptionValues.sort((a, b) => a.slug.localeCompare(b.slug));
|
|
2845
2869
|
}
|
|
@@ -3230,7 +3254,7 @@ const SET_RESOURCE_ATTRIBUTES = gql`
|
|
|
3230
3254
|
`;
|
|
3231
3255
|
//#endregion
|
|
3232
3256
|
//#region src/administration/fetchAllAttributes.ts
|
|
3233
|
-
const PAGE_SIZE$
|
|
3257
|
+
const PAGE_SIZE$35 = 100;
|
|
3234
3258
|
/**
|
|
3235
3259
|
* Fetch all attribute values for an attribute key
|
|
3236
3260
|
*
|
|
@@ -3246,15 +3270,15 @@ async function fetchAllAttributeValues(client, options) {
|
|
|
3246
3270
|
do {
|
|
3247
3271
|
const { attributeValues: { nodes } } = await makeGraphQLRequest(client, ATTRIBUTE_VALUES, {
|
|
3248
3272
|
variables: {
|
|
3249
|
-
first: PAGE_SIZE$
|
|
3273
|
+
first: PAGE_SIZE$35,
|
|
3250
3274
|
offset,
|
|
3251
3275
|
attributeKeyId
|
|
3252
3276
|
},
|
|
3253
3277
|
logger
|
|
3254
3278
|
});
|
|
3255
3279
|
attributeValues.push(...nodes);
|
|
3256
|
-
offset += PAGE_SIZE$
|
|
3257
|
-
shouldContinue = nodes.length === PAGE_SIZE$
|
|
3280
|
+
offset += PAGE_SIZE$35;
|
|
3281
|
+
shouldContinue = nodes.length === PAGE_SIZE$35;
|
|
3258
3282
|
} while (shouldContinue);
|
|
3259
3283
|
return attributeValues.sort((a, b) => a.name.localeCompare(b.name));
|
|
3260
3284
|
}
|
|
@@ -3273,7 +3297,7 @@ async function fetchAllAttributes(client, options = {}) {
|
|
|
3273
3297
|
do {
|
|
3274
3298
|
const { attributeKeys: { nodes } } = await makeGraphQLRequest(client, ATTRIBUTES, {
|
|
3275
3299
|
variables: {
|
|
3276
|
-
first: PAGE_SIZE$
|
|
3300
|
+
first: PAGE_SIZE$35,
|
|
3277
3301
|
offset
|
|
3278
3302
|
},
|
|
3279
3303
|
logger
|
|
@@ -3285,8 +3309,8 @@ async function fetchAllAttributes(client, options = {}) {
|
|
|
3285
3309
|
filterBy: { attributeKeyId: node.id }
|
|
3286
3310
|
}) : []
|
|
3287
3311
|
}))));
|
|
3288
|
-
offset += PAGE_SIZE$
|
|
3289
|
-
shouldContinue = nodes.length === PAGE_SIZE$
|
|
3312
|
+
offset += PAGE_SIZE$35;
|
|
3313
|
+
shouldContinue = nodes.length === PAGE_SIZE$35;
|
|
3290
3314
|
} while (shouldContinue);
|
|
3291
3315
|
return attributes.sort((a, b) => a.name.localeCompare(b.name));
|
|
3292
3316
|
}
|
|
@@ -3403,7 +3427,7 @@ const UPDATE_TEAM = gql`
|
|
|
3403
3427
|
`;
|
|
3404
3428
|
//#endregion
|
|
3405
3429
|
//#region src/administration/fetchAllTeams.ts
|
|
3406
|
-
const PAGE_SIZE$
|
|
3430
|
+
const PAGE_SIZE$34 = 20;
|
|
3407
3431
|
/**
|
|
3408
3432
|
* Fetch all teams in the organization
|
|
3409
3433
|
*
|
|
@@ -3419,20 +3443,20 @@ async function fetchAllTeams(client, options = {}) {
|
|
|
3419
3443
|
do {
|
|
3420
3444
|
const { teams: { nodes } } = await makeGraphQLRequest(client, TEAMS, {
|
|
3421
3445
|
variables: {
|
|
3422
|
-
first: PAGE_SIZE$
|
|
3446
|
+
first: PAGE_SIZE$34,
|
|
3423
3447
|
offset
|
|
3424
3448
|
},
|
|
3425
3449
|
logger
|
|
3426
3450
|
});
|
|
3427
3451
|
teams.push(...nodes);
|
|
3428
|
-
offset += PAGE_SIZE$
|
|
3429
|
-
shouldContinue = nodes.length === PAGE_SIZE$
|
|
3452
|
+
offset += PAGE_SIZE$34;
|
|
3453
|
+
shouldContinue = nodes.length === PAGE_SIZE$34;
|
|
3430
3454
|
} while (shouldContinue);
|
|
3431
3455
|
return teams.sort((a, b) => a.name.localeCompare(b.name));
|
|
3432
3456
|
}
|
|
3433
3457
|
//#endregion
|
|
3434
3458
|
//#region src/administration/fetchParentOrganizationTeams.ts
|
|
3435
|
-
const PAGE_SIZE$
|
|
3459
|
+
const PAGE_SIZE$33 = 20;
|
|
3436
3460
|
/**
|
|
3437
3461
|
* Fetch teams from the parent organization that can be linked to child-org teams
|
|
3438
3462
|
*
|
|
@@ -3448,15 +3472,15 @@ async function fetchParentOrganizationTeams(client, options = {}) {
|
|
|
3448
3472
|
do {
|
|
3449
3473
|
const { parentOrganizationTeams: { nodes } } = await makeGraphQLRequest(client, PARENT_ORGANIZATION_TEAMS, {
|
|
3450
3474
|
variables: {
|
|
3451
|
-
first: PAGE_SIZE$
|
|
3475
|
+
first: PAGE_SIZE$33,
|
|
3452
3476
|
offset,
|
|
3453
3477
|
filterBy
|
|
3454
3478
|
},
|
|
3455
3479
|
logger
|
|
3456
3480
|
});
|
|
3457
3481
|
teams.push(...nodes);
|
|
3458
|
-
offset += PAGE_SIZE$
|
|
3459
|
-
shouldContinue = nodes.length === PAGE_SIZE$
|
|
3482
|
+
offset += PAGE_SIZE$33;
|
|
3483
|
+
shouldContinue = nodes.length === PAGE_SIZE$33;
|
|
3460
3484
|
} while (shouldContinue);
|
|
3461
3485
|
return teams.sort((a, b) => a.name.localeCompare(b.name));
|
|
3462
3486
|
}
|
|
@@ -3502,7 +3526,7 @@ const USERS = gql`
|
|
|
3502
3526
|
`;
|
|
3503
3527
|
//#endregion
|
|
3504
3528
|
//#region src/administration/fetchAllUsers.ts
|
|
3505
|
-
const PAGE_SIZE$
|
|
3529
|
+
const PAGE_SIZE$32 = 20;
|
|
3506
3530
|
/**
|
|
3507
3531
|
* Fetch all users in the organization
|
|
3508
3532
|
*
|
|
@@ -3518,14 +3542,14 @@ async function fetchAllUsers(client, options = {}) {
|
|
|
3518
3542
|
do {
|
|
3519
3543
|
const { users: { nodes } } = await makeGraphQLRequest(client, USERS, {
|
|
3520
3544
|
variables: {
|
|
3521
|
-
first: PAGE_SIZE$
|
|
3545
|
+
first: PAGE_SIZE$32,
|
|
3522
3546
|
offset
|
|
3523
3547
|
},
|
|
3524
3548
|
logger
|
|
3525
3549
|
});
|
|
3526
3550
|
users.push(...nodes);
|
|
3527
|
-
offset += PAGE_SIZE$
|
|
3528
|
-
shouldContinue = nodes.length === PAGE_SIZE$
|
|
3551
|
+
offset += PAGE_SIZE$32;
|
|
3552
|
+
shouldContinue = nodes.length === PAGE_SIZE$32;
|
|
3529
3553
|
} while (shouldContinue);
|
|
3530
3554
|
return users.sort((a, b) => a.email.localeCompare(b.email));
|
|
3531
3555
|
}
|
|
@@ -3567,7 +3591,7 @@ const DELETE_API_KEY = gql`
|
|
|
3567
3591
|
`;
|
|
3568
3592
|
//#endregion
|
|
3569
3593
|
//#region src/administration/fetchApiKeys.ts
|
|
3570
|
-
const PAGE_SIZE$
|
|
3594
|
+
const PAGE_SIZE$31 = 20;
|
|
3571
3595
|
const ADMIN_LINK = "https://app.transcend.io/infrastructure/api-keys";
|
|
3572
3596
|
/**
|
|
3573
3597
|
* Fetch all API keys in an organization
|
|
@@ -3584,15 +3608,15 @@ async function fetchAllApiKeys(client, options = {}) {
|
|
|
3584
3608
|
do {
|
|
3585
3609
|
const { apiKeys: { nodes } } = await makeGraphQLRequest(client, API_KEYS, {
|
|
3586
3610
|
variables: {
|
|
3587
|
-
first: PAGE_SIZE$
|
|
3611
|
+
first: PAGE_SIZE$31,
|
|
3588
3612
|
offset,
|
|
3589
3613
|
titles
|
|
3590
3614
|
},
|
|
3591
3615
|
logger
|
|
3592
3616
|
});
|
|
3593
3617
|
apiKeys.push(...nodes);
|
|
3594
|
-
offset += PAGE_SIZE$
|
|
3595
|
-
shouldContinue = nodes.length === PAGE_SIZE$
|
|
3618
|
+
offset += PAGE_SIZE$31;
|
|
3619
|
+
shouldContinue = nodes.length === PAGE_SIZE$31;
|
|
3596
3620
|
} while (shouldContinue);
|
|
3597
3621
|
return apiKeys.sort((a, b) => a.title.localeCompare(b.title));
|
|
3598
3622
|
}
|
|
@@ -4567,7 +4591,7 @@ const DELETE_COOKIES = gql`
|
|
|
4567
4591
|
`;
|
|
4568
4592
|
//#endregion
|
|
4569
4593
|
//#region src/consent/fetchAllCookies.ts
|
|
4570
|
-
const PAGE_SIZE$
|
|
4594
|
+
const PAGE_SIZE$30 = 20;
|
|
4571
4595
|
const DEFAULT_COOKIE_ORDER = [{
|
|
4572
4596
|
field: "createdAt",
|
|
4573
4597
|
direction: OrderDirection.Asc
|
|
@@ -4592,7 +4616,7 @@ async function fetchAllCookies(client, options = {}) {
|
|
|
4592
4616
|
const { cookies: { nodes } } = await makeGraphQLRequest(client, COOKIES, {
|
|
4593
4617
|
variables: {
|
|
4594
4618
|
input: { airgapBundleId },
|
|
4595
|
-
first: PAGE_SIZE$
|
|
4619
|
+
first: PAGE_SIZE$30,
|
|
4596
4620
|
offset,
|
|
4597
4621
|
filterBy: { status },
|
|
4598
4622
|
orderBy
|
|
@@ -4600,8 +4624,8 @@ async function fetchAllCookies(client, options = {}) {
|
|
|
4600
4624
|
logger
|
|
4601
4625
|
});
|
|
4602
4626
|
cookies.push(...nodes);
|
|
4603
|
-
offset += PAGE_SIZE$
|
|
4604
|
-
shouldContinue = nodes.length === PAGE_SIZE$
|
|
4627
|
+
offset += PAGE_SIZE$30;
|
|
4628
|
+
shouldContinue = nodes.length === PAGE_SIZE$30;
|
|
4605
4629
|
} while (shouldContinue);
|
|
4606
4630
|
return cookies.sort((a, b) => a.name.localeCompare(b.name));
|
|
4607
4631
|
}
|
|
@@ -4713,7 +4737,7 @@ const DELETE_DATA_FLOWS = gql`
|
|
|
4713
4737
|
`;
|
|
4714
4738
|
//#endregion
|
|
4715
4739
|
//#region src/consent/fetchAllDataFlows.ts
|
|
4716
|
-
const PAGE_SIZE$
|
|
4740
|
+
const PAGE_SIZE$29 = 20;
|
|
4717
4741
|
const DEFAULT_DATA_FLOW_ORDER = [{
|
|
4718
4742
|
field: "createdAt",
|
|
4719
4743
|
direction: OrderDirection.Asc
|
|
@@ -4738,7 +4762,7 @@ async function fetchAllDataFlows(client, options = {}) {
|
|
|
4738
4762
|
const { dataFlows: { nodes } } = await makeGraphQLRequest(client, DATA_FLOWS, {
|
|
4739
4763
|
variables: {
|
|
4740
4764
|
input: { airgapBundleId },
|
|
4741
|
-
first: PAGE_SIZE$
|
|
4765
|
+
first: PAGE_SIZE$29,
|
|
4742
4766
|
offset,
|
|
4743
4767
|
filterBy: {
|
|
4744
4768
|
status,
|
|
@@ -4749,8 +4773,8 @@ async function fetchAllDataFlows(client, options = {}) {
|
|
|
4749
4773
|
logger
|
|
4750
4774
|
});
|
|
4751
4775
|
dataFlows.push(...nodes);
|
|
4752
|
-
offset += PAGE_SIZE$
|
|
4753
|
-
shouldContinue = nodes.length === PAGE_SIZE$
|
|
4776
|
+
offset += PAGE_SIZE$29;
|
|
4777
|
+
shouldContinue = nodes.length === PAGE_SIZE$29;
|
|
4754
4778
|
} while (shouldContinue);
|
|
4755
4779
|
return dataFlows.sort((a, b) => a.value.localeCompare(b.value));
|
|
4756
4780
|
}
|
|
@@ -4792,7 +4816,36 @@ const PRIVACY_CENTER = gql`
|
|
|
4792
4816
|
useNoReplyEmailAddress
|
|
4793
4817
|
useCustomEmailDomain
|
|
4794
4818
|
transformAccessReportJsonToCsv
|
|
4819
|
+
home {
|
|
4820
|
+
defaultMessage
|
|
4821
|
+
}
|
|
4822
|
+
expandSideMenuByDefault
|
|
4823
|
+
workflowsCustomFieldsRequired
|
|
4824
|
+
footerLayout
|
|
4795
4825
|
themeStr
|
|
4826
|
+
childOrganizations {
|
|
4827
|
+
id
|
|
4828
|
+
uri
|
|
4829
|
+
name
|
|
4830
|
+
}
|
|
4831
|
+
footerLinks {
|
|
4832
|
+
id
|
|
4833
|
+
displayOrder
|
|
4834
|
+
title {
|
|
4835
|
+
defaultMessage
|
|
4836
|
+
}
|
|
4837
|
+
url {
|
|
4838
|
+
defaultMessage
|
|
4839
|
+
}
|
|
4840
|
+
icon {
|
|
4841
|
+
id
|
|
4842
|
+
src
|
|
4843
|
+
key
|
|
4844
|
+
size
|
|
4845
|
+
mimetype
|
|
4846
|
+
}
|
|
4847
|
+
iconOnly
|
|
4848
|
+
}
|
|
4796
4849
|
}
|
|
4797
4850
|
}
|
|
4798
4851
|
`;
|
|
@@ -4803,6 +4856,25 @@ const UPDATE_PRIVACY_CENTER = gql`
|
|
|
4803
4856
|
}
|
|
4804
4857
|
}
|
|
4805
4858
|
`;
|
|
4859
|
+
const UPDATE_PRIVACY_CENTER_FOOTER_LINKS = gql`
|
|
4860
|
+
mutation TranscendCliUpdatePrivacyCenterFooterLinks(
|
|
4861
|
+
$input: UpdatePrivacyCenterFooterLinksInput!
|
|
4862
|
+
) {
|
|
4863
|
+
updatePrivacyCenterFooterLinks(input: $input) {
|
|
4864
|
+
clientMutationId
|
|
4865
|
+
}
|
|
4866
|
+
}
|
|
4867
|
+
`;
|
|
4868
|
+
const DELETE_PRIVACY_CENTER_FOOTER_LINKS = gql`
|
|
4869
|
+
mutation TranscendCliDeletePrivacyCenterFooterLinks(
|
|
4870
|
+
$input: DeletePrivacyCenterFooterLinksInput!
|
|
4871
|
+
) {
|
|
4872
|
+
deletePrivacyCenterFooterLinks(input: $input) {
|
|
4873
|
+
clientMutationId
|
|
4874
|
+
success
|
|
4875
|
+
}
|
|
4876
|
+
}
|
|
4877
|
+
`;
|
|
4806
4878
|
//#endregion
|
|
4807
4879
|
//#region src/consent/fetchPrivacyCenterId.ts
|
|
4808
4880
|
/**
|
|
@@ -4890,12 +4962,21 @@ async function fetchAllPolicies(client, options = {}) {
|
|
|
4890
4962
|
*/
|
|
4891
4963
|
async function fetchAllPrivacyCenters(client, options = {}) {
|
|
4892
4964
|
const { logger } = options;
|
|
4893
|
-
const { privacyCenter: { themeStr, ...rest } } = await makeGraphQLRequest(client, PRIVACY_CENTER, {
|
|
4965
|
+
const { privacyCenter: { themeStr, footerLinks, home, ...rest } } = await makeGraphQLRequest(client, PRIVACY_CENTER, {
|
|
4894
4966
|
variables: { url: await fetchPrivacyCenterUrl(client, { logger }) },
|
|
4895
4967
|
logger
|
|
4896
4968
|
});
|
|
4897
4969
|
return [{
|
|
4898
4970
|
...rest,
|
|
4971
|
+
home: home.defaultMessage,
|
|
4972
|
+
footerLinks: footerLinks.map((link) => ({
|
|
4973
|
+
id: link.id,
|
|
4974
|
+
displayOrder: link.displayOrder,
|
|
4975
|
+
title: link.title,
|
|
4976
|
+
url: link.url.defaultMessage,
|
|
4977
|
+
...link.icon ? { icon: link.icon } : {},
|
|
4978
|
+
iconOnly: link.iconOnly
|
|
4979
|
+
})),
|
|
4899
4980
|
theme: JSON.parse(themeStr)
|
|
4900
4981
|
}];
|
|
4901
4982
|
}
|
|
@@ -4954,7 +5035,7 @@ const UPDATE_PROCESSING_PURPOSE_SUB_CATEGORIES = gql`
|
|
|
4954
5035
|
`;
|
|
4955
5036
|
//#endregion
|
|
4956
5037
|
//#region src/consent/fetchAllProcessingPurposes.ts
|
|
4957
|
-
const PAGE_SIZE$
|
|
5038
|
+
const PAGE_SIZE$28 = 20;
|
|
4958
5039
|
/**
|
|
4959
5040
|
* Fetch all processingPurposeSubCategories in the organization
|
|
4960
5041
|
*
|
|
@@ -4969,14 +5050,14 @@ async function fetchAllProcessingPurposes(client, options = {}) {
|
|
|
4969
5050
|
do {
|
|
4970
5051
|
const { processingPurposeSubCategories: { nodes } } = await makeGraphQLRequest(client, PROCESSING_PURPOSE_SUB_CATEGORIES, {
|
|
4971
5052
|
variables: {
|
|
4972
|
-
first: PAGE_SIZE$
|
|
5053
|
+
first: PAGE_SIZE$28,
|
|
4973
5054
|
offset
|
|
4974
5055
|
},
|
|
4975
5056
|
logger: options.logger
|
|
4976
5057
|
});
|
|
4977
5058
|
processingPurposeSubCategories.push(...nodes);
|
|
4978
|
-
offset += PAGE_SIZE$
|
|
4979
|
-
shouldContinue = nodes.length === PAGE_SIZE$
|
|
5059
|
+
offset += PAGE_SIZE$28;
|
|
5060
|
+
shouldContinue = nodes.length === PAGE_SIZE$28;
|
|
4980
5061
|
} while (shouldContinue);
|
|
4981
5062
|
return processingPurposeSubCategories.sort((a, b) => a.name.localeCompare(b.name));
|
|
4982
5063
|
}
|
|
@@ -5078,7 +5159,7 @@ const CREATE_CONSENT_EXPERIENCE = gql`
|
|
|
5078
5159
|
`;
|
|
5079
5160
|
//#endregion
|
|
5080
5161
|
//#region src/consent/fetchConsentManagerExperiences.ts
|
|
5081
|
-
const PAGE_SIZE$
|
|
5162
|
+
const PAGE_SIZE$27 = 50;
|
|
5082
5163
|
/**
|
|
5083
5164
|
* Fetch consent manager experiences
|
|
5084
5165
|
*
|
|
@@ -5093,14 +5174,14 @@ async function fetchConsentManagerExperiences(client, options = {}) {
|
|
|
5093
5174
|
do {
|
|
5094
5175
|
const { experiences: { nodes } } = await makeGraphQLRequest(client, EXPERIENCES, {
|
|
5095
5176
|
variables: {
|
|
5096
|
-
first: PAGE_SIZE$
|
|
5177
|
+
first: PAGE_SIZE$27,
|
|
5097
5178
|
offset
|
|
5098
5179
|
},
|
|
5099
5180
|
logger: options.logger
|
|
5100
5181
|
});
|
|
5101
5182
|
experiences.push(...nodes);
|
|
5102
|
-
offset += PAGE_SIZE$
|
|
5103
|
-
shouldContinue = nodes.length === PAGE_SIZE$
|
|
5183
|
+
offset += PAGE_SIZE$27;
|
|
5184
|
+
shouldContinue = nodes.length === PAGE_SIZE$27;
|
|
5104
5185
|
} while (shouldContinue);
|
|
5105
5186
|
return experiences.sort((a, b) => a.name.localeCompare(b.name));
|
|
5106
5187
|
}
|
|
@@ -5122,7 +5203,7 @@ async function fetchConsentManagerTheme(client, options) {
|
|
|
5122
5203
|
}
|
|
5123
5204
|
//#endregion
|
|
5124
5205
|
//#region src/consent/fetchConsentThemes.ts
|
|
5125
|
-
const PAGE_SIZE$
|
|
5206
|
+
const PAGE_SIZE$26 = 50;
|
|
5126
5207
|
/**
|
|
5127
5208
|
* Fetch consent themes
|
|
5128
5209
|
*
|
|
@@ -5139,20 +5220,20 @@ async function fetchConsentThemes(client, options = {}) {
|
|
|
5139
5220
|
const { consentUiThemes: { nodes } } = await makeGraphQLRequest(client, FETCH_CONSENT_UI_THEMES, {
|
|
5140
5221
|
variables: {
|
|
5141
5222
|
airgapBundleId,
|
|
5142
|
-
first: PAGE_SIZE$
|
|
5223
|
+
first: PAGE_SIZE$26,
|
|
5143
5224
|
offset
|
|
5144
5225
|
},
|
|
5145
5226
|
logger: options.logger
|
|
5146
5227
|
});
|
|
5147
5228
|
themes.push(...nodes);
|
|
5148
|
-
offset += PAGE_SIZE$
|
|
5149
|
-
shouldContinue = nodes.length === PAGE_SIZE$
|
|
5229
|
+
offset += PAGE_SIZE$26;
|
|
5230
|
+
shouldContinue = nodes.length === PAGE_SIZE$26;
|
|
5150
5231
|
} while (shouldContinue);
|
|
5151
5232
|
return themes;
|
|
5152
5233
|
}
|
|
5153
5234
|
//#endregion
|
|
5154
5235
|
//#region src/consent/fetchConsentVariants.ts
|
|
5155
|
-
const PAGE_SIZE$
|
|
5236
|
+
const PAGE_SIZE$25 = 50;
|
|
5156
5237
|
/**
|
|
5157
5238
|
* Fetch consent variants
|
|
5158
5239
|
*
|
|
@@ -5169,14 +5250,14 @@ async function fetchConsentVariants(client, options = {}) {
|
|
|
5169
5250
|
const { consentUiVariants: { nodes } } = await makeGraphQLRequest(client, FETCH_CONSENT_UI_VARIANTS, {
|
|
5170
5251
|
variables: {
|
|
5171
5252
|
airgapBundleId,
|
|
5172
|
-
first: PAGE_SIZE$
|
|
5253
|
+
first: PAGE_SIZE$25,
|
|
5173
5254
|
offset
|
|
5174
5255
|
},
|
|
5175
5256
|
logger: options.logger
|
|
5176
5257
|
});
|
|
5177
5258
|
variants.push(...nodes);
|
|
5178
|
-
offset += PAGE_SIZE$
|
|
5179
|
-
shouldContinue = nodes.length === PAGE_SIZE$
|
|
5259
|
+
offset += PAGE_SIZE$25;
|
|
5260
|
+
shouldContinue = nodes.length === PAGE_SIZE$25;
|
|
5180
5261
|
} while (shouldContinue);
|
|
5181
5262
|
return variants;
|
|
5182
5263
|
}
|
|
@@ -5337,6 +5418,28 @@ const DATA_FLOW_STATS = gql`
|
|
|
5337
5418
|
}
|
|
5338
5419
|
`;
|
|
5339
5420
|
//#endregion
|
|
5421
|
+
//#region src/consent/resolveDisplayedChildOrganizationIds.ts
|
|
5422
|
+
/**
|
|
5423
|
+
* Resolve displayed child organization URIs or IDs to organization IDs.
|
|
5424
|
+
*
|
|
5425
|
+
* Each value may be either an organization ID or URI. IDs are matched first,
|
|
5426
|
+
* then URIs. Throws if any value cannot be resolved.
|
|
5427
|
+
*
|
|
5428
|
+
* @param childOrganizations - Child organizations available on the privacy center
|
|
5429
|
+
* @param urisOrIds - URIs and/or IDs from transcend.yml
|
|
5430
|
+
* @returns Resolved organization IDs (same order as input)
|
|
5431
|
+
*/
|
|
5432
|
+
function resolveDisplayedChildOrganizationIds(childOrganizations, urisOrIds) {
|
|
5433
|
+
return urisOrIds.map((value) => {
|
|
5434
|
+
const byId = childOrganizations.find((child) => child.id === value);
|
|
5435
|
+
if (byId) return byId.id;
|
|
5436
|
+
const byUri = childOrganizations.find((child) => child.uri === value);
|
|
5437
|
+
if (byUri) return byUri.id;
|
|
5438
|
+
const available = childOrganizations.length > 0 ? childOrganizations.map((child) => `${child.uri} (${child.id})`).join(", ") : "(none)";
|
|
5439
|
+
throw new Error(`Failed to resolve displayed child organization URI or ID: "${value}". Available: ${available}`);
|
|
5440
|
+
});
|
|
5441
|
+
}
|
|
5442
|
+
//#endregion
|
|
5340
5443
|
//#region src/consent/syncConsentUi.ts
|
|
5341
5444
|
/**
|
|
5342
5445
|
* Parse a JSON configuration string from transcend.yml
|
|
@@ -5467,7 +5570,7 @@ async function syncConsentUiVariants(client, airgapBundleId, yamlVariants, synce
|
|
|
5467
5570
|
}
|
|
5468
5571
|
//#endregion
|
|
5469
5572
|
//#region src/consent/syncPartitions.ts
|
|
5470
|
-
const PAGE_SIZE$
|
|
5573
|
+
const PAGE_SIZE$24 = 50;
|
|
5471
5574
|
/**
|
|
5472
5575
|
* Fetch the list of partitions
|
|
5473
5576
|
*
|
|
@@ -5483,14 +5586,14 @@ async function fetchPartitions(client, options = {}) {
|
|
|
5483
5586
|
do {
|
|
5484
5587
|
const { consentPartitions: { nodes } } = await makeGraphQLRequest(client, CONSENT_PARTITIONS, {
|
|
5485
5588
|
variables: {
|
|
5486
|
-
first: PAGE_SIZE$
|
|
5589
|
+
first: PAGE_SIZE$24,
|
|
5487
5590
|
offset
|
|
5488
5591
|
},
|
|
5489
5592
|
logger
|
|
5490
5593
|
});
|
|
5491
5594
|
partitions.push(...nodes);
|
|
5492
|
-
offset += PAGE_SIZE$
|
|
5493
|
-
shouldContinue = nodes.length === PAGE_SIZE$
|
|
5595
|
+
offset += PAGE_SIZE$24;
|
|
5596
|
+
shouldContinue = nodes.length === PAGE_SIZE$24;
|
|
5494
5597
|
} while (shouldContinue);
|
|
5495
5598
|
return partitions.sort((a, b) => a.name.localeCompare(b.name));
|
|
5496
5599
|
}
|
|
@@ -5924,6 +6027,54 @@ async function syncPolicies(client, policies, options = {}) {
|
|
|
5924
6027
|
return !encounteredError;
|
|
5925
6028
|
}
|
|
5926
6029
|
//#endregion
|
|
6030
|
+
//#region src/consent/syncPrivacyCenterFooterLinks.ts
|
|
6031
|
+
/**
|
|
6032
|
+
* Sync privacy center footer links. Matches existing links by title, upserts
|
|
6033
|
+
* the provided list, and deletes any existing links omitted from the YAML.
|
|
6034
|
+
*
|
|
6035
|
+
* @param client - GraphQL client
|
|
6036
|
+
* @param privacyCenterId - Privacy center ID
|
|
6037
|
+
* @param footerLinks - Desired footer links
|
|
6038
|
+
* @param existingFooterLinks - Existing footer links from the privacy center
|
|
6039
|
+
* @param options - Options
|
|
6040
|
+
*/
|
|
6041
|
+
async function syncPrivacyCenterFooterLinks(client, privacyCenterId, footerLinks, existingFooterLinks, options = {}) {
|
|
6042
|
+
const { logger = NOOP_LOGGER } = options;
|
|
6043
|
+
const notUnique = footerLinks.filter((link) => footerLinks.filter((other) => other.title === link.title).length > 1);
|
|
6044
|
+
if (notUnique.length > 0) throw new Error(`Failed to sync privacy center footer links as there were non-unique titles: ${[...new Set(notUnique.map(({ title }) => title))].join(", ")}`);
|
|
6045
|
+
const existingByTitle = keyBy(existingFooterLinks, ({ title }) => title.defaultMessage);
|
|
6046
|
+
const resolved = footerLinks.map((link) => {
|
|
6047
|
+
return {
|
|
6048
|
+
id: existingByTitle[link.title]?.id,
|
|
6049
|
+
title: link.title,
|
|
6050
|
+
...link.url !== void 0 ? { url: link.url } : {},
|
|
6051
|
+
...link.iconOnly !== void 0 ? { iconOnly: link.iconOnly } : {}
|
|
6052
|
+
};
|
|
6053
|
+
});
|
|
6054
|
+
const keptIds = new Set(resolved.map((link) => link.id).filter((id) => !!id));
|
|
6055
|
+
const idsToDelete = existingFooterLinks.map(({ id }) => id).filter((id) => !keptIds.has(id));
|
|
6056
|
+
if (idsToDelete.length > 0) {
|
|
6057
|
+
logger.info(`Deleting "${idsToDelete.length}" privacy center footer links...`);
|
|
6058
|
+
await makeGraphQLRequest(client, DELETE_PRIVACY_CENTER_FOOTER_LINKS, {
|
|
6059
|
+
variables: { input: {
|
|
6060
|
+
privacyCenterId,
|
|
6061
|
+
ids: idsToDelete
|
|
6062
|
+
} },
|
|
6063
|
+
logger
|
|
6064
|
+
});
|
|
6065
|
+
}
|
|
6066
|
+
if (resolved.length > 0) {
|
|
6067
|
+
logger.info(`Upserting "${resolved.length}" privacy center footer links...`);
|
|
6068
|
+
await makeGraphQLRequest(client, UPDATE_PRIVACY_CENTER_FOOTER_LINKS, {
|
|
6069
|
+
variables: { input: {
|
|
6070
|
+
privacyCenterId,
|
|
6071
|
+
footerLinks: resolved
|
|
6072
|
+
} },
|
|
6073
|
+
logger
|
|
6074
|
+
});
|
|
6075
|
+
}
|
|
6076
|
+
}
|
|
6077
|
+
//#endregion
|
|
5927
6078
|
//#region src/consent/syncPrivacyCenter.ts
|
|
5928
6079
|
/**
|
|
5929
6080
|
* Sync the privacy center
|
|
@@ -5934,10 +6085,14 @@ async function syncPolicies(client, policies, options = {}) {
|
|
|
5934
6085
|
* @returns Whether the privacy center was synced successfully
|
|
5935
6086
|
*/
|
|
5936
6087
|
async function syncPrivacyCenter(client, privacyCenter, options = {}) {
|
|
5937
|
-
const { logger = NOOP_LOGGER } = options;
|
|
6088
|
+
const { logger = NOOP_LOGGER, skipPublish } = options;
|
|
5938
6089
|
let encounteredError = false;
|
|
5939
6090
|
logger.info("Syncing privacy center...");
|
|
5940
6091
|
const privacyCenterId = await fetchPrivacyCenterId(client, { logger });
|
|
6092
|
+
const { displayedChildOrganizationUris, footerLinks } = privacyCenter;
|
|
6093
|
+
const [existing] = !!displayedChildOrganizationUris || footerLinks !== void 0 ? await fetchAllPrivacyCenters(client, { logger }) : [];
|
|
6094
|
+
let displayedChildOrganizationIds;
|
|
6095
|
+
if (displayedChildOrganizationUris) displayedChildOrganizationIds = resolveDisplayedChildOrganizationIds(existing?.childOrganizations ?? [], displayedChildOrganizationUris);
|
|
5941
6096
|
try {
|
|
5942
6097
|
await makeGraphQLRequest(client, UPDATE_PRIVACY_CENTER, {
|
|
5943
6098
|
variables: { input: {
|
|
@@ -5959,6 +6114,12 @@ async function syncPrivacyCenter(client, privacyCenter, options = {}) {
|
|
|
5959
6114
|
showTrackingTechnologies: privacyCenter.showTrackingTechnologies,
|
|
5960
6115
|
showPrivacyRequestButton: privacyCenter.showPrivacyRequestButton,
|
|
5961
6116
|
isDisabled: privacyCenter.isDisabled,
|
|
6117
|
+
home: privacyCenter.home,
|
|
6118
|
+
expandSideMenuByDefault: privacyCenter.expandSideMenuByDefault,
|
|
6119
|
+
workflowsCustomFieldsRequired: privacyCenter.workflowsCustomFieldsRequired,
|
|
6120
|
+
footerLayout: privacyCenter.footerLayout,
|
|
6121
|
+
...displayedChildOrganizationIds ? { displayedChildOrganizationIds } : {},
|
|
6122
|
+
...skipPublish !== void 0 ? { skipPublish } : {},
|
|
5962
6123
|
...privacyCenter.theme ? {
|
|
5963
6124
|
colorPalette: privacyCenter.theme.colors,
|
|
5964
6125
|
componentStyles: privacyCenter.theme.componentStyles,
|
|
@@ -5967,10 +6128,11 @@ async function syncPrivacyCenter(client, privacyCenter, options = {}) {
|
|
|
5967
6128
|
} },
|
|
5968
6129
|
logger
|
|
5969
6130
|
});
|
|
6131
|
+
if (footerLinks !== void 0) await syncPrivacyCenterFooterLinks(client, privacyCenterId, footerLinks, existing?.footerLinks ?? [], { logger });
|
|
5970
6132
|
logger.info("Successfully synced privacy center!");
|
|
5971
6133
|
} catch (err) {
|
|
5972
6134
|
encounteredError = true;
|
|
5973
|
-
logger.error(`Failed to
|
|
6135
|
+
logger.error(`Failed to sync privacy center! - ${err.message}`);
|
|
5974
6136
|
}
|
|
5975
6137
|
return !encounteredError;
|
|
5976
6138
|
}
|
|
@@ -6099,7 +6261,7 @@ const SKIP_REQUEST_ENRICHER = gql`
|
|
|
6099
6261
|
`;
|
|
6100
6262
|
//#endregion
|
|
6101
6263
|
//#region src/dsr-automation/fetchAllRequestEnrichers.ts
|
|
6102
|
-
const PAGE_SIZE$
|
|
6264
|
+
const PAGE_SIZE$23 = 50;
|
|
6103
6265
|
/**
|
|
6104
6266
|
* Fetch all request enrichers for a particular request
|
|
6105
6267
|
*
|
|
@@ -6115,15 +6277,15 @@ async function fetchAllRequestEnrichers(client, options) {
|
|
|
6115
6277
|
do {
|
|
6116
6278
|
const { requestEnrichers: { nodes } } = await makeGraphQLRequest(client, REQUEST_ENRICHERS, {
|
|
6117
6279
|
variables: {
|
|
6118
|
-
first: PAGE_SIZE$
|
|
6280
|
+
first: PAGE_SIZE$23,
|
|
6119
6281
|
offset,
|
|
6120
6282
|
requestId
|
|
6121
6283
|
},
|
|
6122
6284
|
logger
|
|
6123
6285
|
});
|
|
6124
6286
|
requestEnrichers.push(...nodes);
|
|
6125
|
-
offset += PAGE_SIZE$
|
|
6126
|
-
shouldContinue = nodes.length === PAGE_SIZE$
|
|
6287
|
+
offset += PAGE_SIZE$23;
|
|
6288
|
+
shouldContinue = nodes.length === PAGE_SIZE$23;
|
|
6127
6289
|
} while (shouldContinue);
|
|
6128
6290
|
return requestEnrichers;
|
|
6129
6291
|
}
|
|
@@ -6151,7 +6313,7 @@ const RequestIdentifier = t.type({
|
|
|
6151
6313
|
/** Type of identifier */
|
|
6152
6314
|
type: valuesOf(IdentifierType)
|
|
6153
6315
|
});
|
|
6154
|
-
const PAGE_SIZE$
|
|
6316
|
+
const PAGE_SIZE$22 = 50;
|
|
6155
6317
|
const RequestIdentifiersResponse = t.type({ identifiers: t.array(RequestIdentifier) });
|
|
6156
6318
|
/**
|
|
6157
6319
|
* Validate that the Sombra version meets the minimum requirement for
|
|
@@ -6182,7 +6344,7 @@ async function fetchAllRequestIdentifiers(client, sombra, options) {
|
|
|
6182
6344
|
if (!skipSombraCheck) await validateSombraVersion(client, { logger });
|
|
6183
6345
|
do {
|
|
6184
6346
|
const { identifiers: nodes } = decodeCodec(RequestIdentifiersResponse, await withTransientRetry("Failed to fetch request identifiers", () => sombra.post("v1/request-identifiers", { json: {
|
|
6185
|
-
first: PAGE_SIZE$
|
|
6347
|
+
first: PAGE_SIZE$22,
|
|
6186
6348
|
offset,
|
|
6187
6349
|
requestId
|
|
6188
6350
|
} }).json(), {
|
|
@@ -6191,8 +6353,8 @@ async function fetchAllRequestIdentifiers(client, sombra, options) {
|
|
|
6191
6353
|
baseDelayMs: 500
|
|
6192
6354
|
}));
|
|
6193
6355
|
requestIdentifiers.push(...nodes);
|
|
6194
|
-
offset += PAGE_SIZE$
|
|
6195
|
-
shouldContinue = nodes.length === PAGE_SIZE$
|
|
6356
|
+
offset += PAGE_SIZE$22;
|
|
6357
|
+
shouldContinue = nodes.length === PAGE_SIZE$22;
|
|
6196
6358
|
} while (shouldContinue);
|
|
6197
6359
|
return requestIdentifiers;
|
|
6198
6360
|
}
|
|
@@ -6235,7 +6397,7 @@ const REQUEST_IDENTIFIERS = parse(gql`
|
|
|
6235
6397
|
`);
|
|
6236
6398
|
//#endregion
|
|
6237
6399
|
//#region src/dsr-automation/fetchAllRequestIdentifierMetadata.ts
|
|
6238
|
-
const PAGE_SIZE$
|
|
6400
|
+
const PAGE_SIZE$21 = 50;
|
|
6239
6401
|
/**
|
|
6240
6402
|
* Fetch all request identifier metadata for a particular request
|
|
6241
6403
|
*
|
|
@@ -6253,7 +6415,7 @@ async function fetchAllRequestIdentifierMetadata(client, options = {}) {
|
|
|
6253
6415
|
do {
|
|
6254
6416
|
const { requestIdentifiers: { nodes } } = await makeGraphQLRequest(client, REQUEST_IDENTIFIERS, {
|
|
6255
6417
|
variables: {
|
|
6256
|
-
first: PAGE_SIZE$
|
|
6418
|
+
first: PAGE_SIZE$21,
|
|
6257
6419
|
offset,
|
|
6258
6420
|
requestIds: resolvedRequestIds,
|
|
6259
6421
|
updatedAtBefore: updatedAtBefore ? updatedAtBefore.toISOString() : void 0,
|
|
@@ -6262,8 +6424,8 @@ async function fetchAllRequestIdentifierMetadata(client, options = {}) {
|
|
|
6262
6424
|
logger
|
|
6263
6425
|
});
|
|
6264
6426
|
requestIdentifiers.push(...nodes);
|
|
6265
|
-
offset += PAGE_SIZE$
|
|
6266
|
-
shouldContinue = nodes.length === PAGE_SIZE$
|
|
6427
|
+
offset += PAGE_SIZE$21;
|
|
6428
|
+
shouldContinue = nodes.length === PAGE_SIZE$21;
|
|
6267
6429
|
} while (shouldContinue);
|
|
6268
6430
|
return requestIdentifiers;
|
|
6269
6431
|
}
|
|
@@ -6543,7 +6705,7 @@ const UPDATE_ENRICHER = gql`
|
|
|
6543
6705
|
`;
|
|
6544
6706
|
//#endregion
|
|
6545
6707
|
//#region src/dsr-automation/syncEnrichers.ts
|
|
6546
|
-
const PAGE_SIZE$
|
|
6708
|
+
const PAGE_SIZE$20 = 20;
|
|
6547
6709
|
/**
|
|
6548
6710
|
* Fetch all enrichers in the organization
|
|
6549
6711
|
*
|
|
@@ -6560,15 +6722,15 @@ async function fetchAllEnrichers(client, options = {}) {
|
|
|
6560
6722
|
do {
|
|
6561
6723
|
const { enrichers: { nodes } } = await makeGraphQLRequest(client, ENRICHERS, {
|
|
6562
6724
|
variables: {
|
|
6563
|
-
first: PAGE_SIZE$
|
|
6725
|
+
first: PAGE_SIZE$20,
|
|
6564
6726
|
offset,
|
|
6565
6727
|
title
|
|
6566
6728
|
},
|
|
6567
6729
|
logger
|
|
6568
6730
|
});
|
|
6569
6731
|
enrichers.push(...nodes);
|
|
6570
|
-
offset += PAGE_SIZE$
|
|
6571
|
-
shouldContinue = nodes.length === PAGE_SIZE$
|
|
6732
|
+
offset += PAGE_SIZE$20;
|
|
6733
|
+
shouldContinue = nodes.length === PAGE_SIZE$20;
|
|
6572
6734
|
} while (shouldContinue);
|
|
6573
6735
|
return enrichers.sort((a, b) => a.title.localeCompare(b.title));
|
|
6574
6736
|
}
|
|
@@ -6738,7 +6900,7 @@ const UPDATE_ACTION = gql`
|
|
|
6738
6900
|
`;
|
|
6739
6901
|
//#endregion
|
|
6740
6902
|
//#region src/dsr-automation/fetchAllActions.ts
|
|
6741
|
-
const PAGE_SIZE$
|
|
6903
|
+
const PAGE_SIZE$19 = 20;
|
|
6742
6904
|
/**
|
|
6743
6905
|
* Fetch all actions in the organization
|
|
6744
6906
|
*
|
|
@@ -6754,20 +6916,20 @@ async function fetchAllActions(client, options = {}) {
|
|
|
6754
6916
|
do {
|
|
6755
6917
|
const { actions: { nodes } } = await makeGraphQLRequest(client, ACTIONS, {
|
|
6756
6918
|
variables: {
|
|
6757
|
-
first: PAGE_SIZE$
|
|
6919
|
+
first: PAGE_SIZE$19,
|
|
6758
6920
|
offset
|
|
6759
6921
|
},
|
|
6760
6922
|
logger
|
|
6761
6923
|
});
|
|
6762
6924
|
actions.push(...nodes);
|
|
6763
|
-
offset += PAGE_SIZE$
|
|
6764
|
-
shouldContinue = nodes.length === PAGE_SIZE$
|
|
6925
|
+
offset += PAGE_SIZE$19;
|
|
6926
|
+
shouldContinue = nodes.length === PAGE_SIZE$19;
|
|
6765
6927
|
} while (shouldContinue);
|
|
6766
6928
|
return actions.sort((a, b) => a.type.localeCompare(b.type));
|
|
6767
6929
|
}
|
|
6768
6930
|
//#endregion
|
|
6769
6931
|
//#region src/dsr-automation/fetchAllAttributeKeys.ts
|
|
6770
|
-
const PAGE_SIZE$
|
|
6932
|
+
const PAGE_SIZE$18 = 20;
|
|
6771
6933
|
/**
|
|
6772
6934
|
* Fetch all attribute keys enabled for privacy requests
|
|
6773
6935
|
*
|
|
@@ -6783,14 +6945,14 @@ async function fetchAllRequestAttributeKeys(client, options = {}) {
|
|
|
6783
6945
|
do {
|
|
6784
6946
|
const { attributeKeys: { nodes } } = await makeGraphQLRequest(client, ATTRIBUTE_KEYS_REQUESTS, {
|
|
6785
6947
|
variables: {
|
|
6786
|
-
first: PAGE_SIZE$
|
|
6948
|
+
first: PAGE_SIZE$18,
|
|
6787
6949
|
offset
|
|
6788
6950
|
},
|
|
6789
6951
|
logger
|
|
6790
6952
|
});
|
|
6791
6953
|
attributeKeys.push(...nodes);
|
|
6792
|
-
offset += PAGE_SIZE$
|
|
6793
|
-
shouldContinue = nodes.length === PAGE_SIZE$
|
|
6954
|
+
offset += PAGE_SIZE$18;
|
|
6955
|
+
shouldContinue = nodes.length === PAGE_SIZE$18;
|
|
6794
6956
|
} while (shouldContinue);
|
|
6795
6957
|
return attributeKeys.sort((a, b) => a.name.localeCompare(b.name));
|
|
6796
6958
|
}
|
|
@@ -6821,7 +6983,7 @@ const SILO_DISCOVERY_RESULTS = gql`
|
|
|
6821
6983
|
`;
|
|
6822
6984
|
//#endregion
|
|
6823
6985
|
//#region src/dsr-automation/fetchAllSiloDiscoveryResults.ts
|
|
6824
|
-
const PAGE_SIZE$
|
|
6986
|
+
const PAGE_SIZE$17 = 30;
|
|
6825
6987
|
/**
|
|
6826
6988
|
* Fetch all silo discovery results in the organization
|
|
6827
6989
|
*
|
|
@@ -6837,7 +6999,7 @@ async function fetchAllSiloDiscoveryResults(client, options = {}) {
|
|
|
6837
6999
|
do {
|
|
6838
7000
|
const { siloDiscoveryResults: { nodes } } = await makeGraphQLRequest(client, SILO_DISCOVERY_RESULTS, {
|
|
6839
7001
|
variables: {
|
|
6840
|
-
first: PAGE_SIZE$
|
|
7002
|
+
first: PAGE_SIZE$17,
|
|
6841
7003
|
offset,
|
|
6842
7004
|
input: {},
|
|
6843
7005
|
filterBy: {}
|
|
@@ -6849,8 +7011,8 @@ async function fetchAllSiloDiscoveryResults(client, options = {}) {
|
|
|
6849
7011
|
title: node.suggestedCatalog.title
|
|
6850
7012
|
} : node);
|
|
6851
7013
|
siloDiscoveryResults.push(...titledNodes);
|
|
6852
|
-
offset += PAGE_SIZE$
|
|
6853
|
-
shouldContinue = nodes.length === PAGE_SIZE$
|
|
7014
|
+
offset += PAGE_SIZE$17;
|
|
7015
|
+
shouldContinue = nodes.length === PAGE_SIZE$17;
|
|
6854
7016
|
} while (shouldContinue);
|
|
6855
7017
|
return siloDiscoveryResults;
|
|
6856
7018
|
}
|
|
@@ -6869,7 +7031,7 @@ const CATALOGS = gql`
|
|
|
6869
7031
|
`;
|
|
6870
7032
|
//#endregion
|
|
6871
7033
|
//#region src/dsr-automation/fetchCatalogs.ts
|
|
6872
|
-
const PAGE_SIZE$
|
|
7034
|
+
const PAGE_SIZE$16 = 100;
|
|
6873
7035
|
/**
|
|
6874
7036
|
* Fetch all integration catalogs in an organization
|
|
6875
7037
|
*
|
|
@@ -6885,14 +7047,14 @@ async function fetchAllCatalogs(client, options = {}) {
|
|
|
6885
7047
|
do {
|
|
6886
7048
|
const { catalogs: { nodes } } = await makeGraphQLRequest(client, CATALOGS, {
|
|
6887
7049
|
variables: {
|
|
6888
|
-
first: PAGE_SIZE$
|
|
7050
|
+
first: PAGE_SIZE$16,
|
|
6889
7051
|
offset
|
|
6890
7052
|
},
|
|
6891
7053
|
logger
|
|
6892
7054
|
});
|
|
6893
7055
|
catalogs.push(...nodes);
|
|
6894
|
-
offset += PAGE_SIZE$
|
|
6895
|
-
shouldContinue = nodes.length === PAGE_SIZE$
|
|
7056
|
+
offset += PAGE_SIZE$16;
|
|
7057
|
+
shouldContinue = nodes.length === PAGE_SIZE$16;
|
|
6896
7058
|
} while (shouldContinue);
|
|
6897
7059
|
return catalogs.sort((a, b) => a.integrationName.localeCompare(b.integrationName));
|
|
6898
7060
|
}
|
|
@@ -6995,7 +7157,7 @@ async function fetchRequestDataSilosCount(client, options = {}) {
|
|
|
6995
7157
|
});
|
|
6996
7158
|
return totalCount;
|
|
6997
7159
|
}
|
|
6998
|
-
const PAGE_SIZE$
|
|
7160
|
+
const PAGE_SIZE$15 = 100;
|
|
6999
7161
|
/**
|
|
7000
7162
|
* Fetch all request data silos by some filter criteria
|
|
7001
7163
|
*
|
|
@@ -7011,7 +7173,7 @@ async function fetchRequestDataSilos(client, options = {}) {
|
|
|
7011
7173
|
do {
|
|
7012
7174
|
const { requestDataSilos: { nodes } } = await makeGraphQLRequest(client, REQUEST_DATA_SILOS, {
|
|
7013
7175
|
variables: {
|
|
7014
|
-
first: PAGE_SIZE$
|
|
7176
|
+
first: PAGE_SIZE$15,
|
|
7015
7177
|
offset,
|
|
7016
7178
|
filterBy: {
|
|
7017
7179
|
dataSiloId,
|
|
@@ -7023,8 +7185,8 @@ async function fetchRequestDataSilos(client, options = {}) {
|
|
|
7023
7185
|
logger
|
|
7024
7186
|
});
|
|
7025
7187
|
requestDataSilos.push(...nodes);
|
|
7026
|
-
offset += PAGE_SIZE$
|
|
7027
|
-
shouldContinue = nodes.length === PAGE_SIZE$
|
|
7188
|
+
offset += PAGE_SIZE$15;
|
|
7189
|
+
shouldContinue = nodes.length === PAGE_SIZE$15;
|
|
7028
7190
|
onProgress?.(nodes.length);
|
|
7029
7191
|
} while (shouldContinue && (!limit || offset < limit));
|
|
7030
7192
|
return requestDataSilos;
|
|
@@ -7189,7 +7351,7 @@ const CREATE_TEMPLATE = gql`
|
|
|
7189
7351
|
`;
|
|
7190
7352
|
//#endregion
|
|
7191
7353
|
//#region src/dsr-automation/syncTemplates.ts
|
|
7192
|
-
const PAGE_SIZE$
|
|
7354
|
+
const PAGE_SIZE$14 = 20;
|
|
7193
7355
|
/**
|
|
7194
7356
|
* Fetch all Templates in the organization
|
|
7195
7357
|
*
|
|
@@ -7205,15 +7367,15 @@ async function fetchAllTemplates(client, options = {}) {
|
|
|
7205
7367
|
do {
|
|
7206
7368
|
const { templates: { nodes } } = await makeGraphQLRequest(client, TEMPLATES, {
|
|
7207
7369
|
variables: {
|
|
7208
|
-
first: PAGE_SIZE$
|
|
7370
|
+
first: PAGE_SIZE$14,
|
|
7209
7371
|
offset,
|
|
7210
7372
|
title
|
|
7211
7373
|
},
|
|
7212
7374
|
logger
|
|
7213
7375
|
});
|
|
7214
7376
|
templates.push(...nodes);
|
|
7215
|
-
offset += PAGE_SIZE$
|
|
7216
|
-
shouldContinue = nodes.length === PAGE_SIZE$
|
|
7377
|
+
offset += PAGE_SIZE$14;
|
|
7378
|
+
shouldContinue = nodes.length === PAGE_SIZE$14;
|
|
7217
7379
|
} while (shouldContinue);
|
|
7218
7380
|
return templates.sort((a, b) => a.title.localeCompare(b.title));
|
|
7219
7381
|
}
|
|
@@ -7235,6 +7397,321 @@ async function syncTemplate(client, template, options = {}) {
|
|
|
7235
7397
|
});
|
|
7236
7398
|
}
|
|
7237
7399
|
//#endregion
|
|
7400
|
+
//#region src/dsr-automation/gqls/workflowConfig.ts
|
|
7401
|
+
const WORKFLOW_CONFIGS = parse(gql`
|
|
7402
|
+
query TranscendCliWorkflowConfigs($first: Int!, $offset: Int!, $filterBy: WorkflowFilterInput) {
|
|
7403
|
+
workflows(first: $first, offset: $offset, filterBy: $filterBy) {
|
|
7404
|
+
nodes {
|
|
7405
|
+
id
|
|
7406
|
+
title {
|
|
7407
|
+
defaultMessage
|
|
7408
|
+
}
|
|
7409
|
+
subtitle {
|
|
7410
|
+
defaultMessage
|
|
7411
|
+
}
|
|
7412
|
+
description {
|
|
7413
|
+
defaultMessage
|
|
7414
|
+
}
|
|
7415
|
+
internalName
|
|
7416
|
+
workflowConfigVisibility
|
|
7417
|
+
workflowConfigType
|
|
7418
|
+
collectDataSubjectRegions
|
|
7419
|
+
regionList
|
|
7420
|
+
expiryTime {
|
|
7421
|
+
region
|
|
7422
|
+
value
|
|
7423
|
+
}
|
|
7424
|
+
action {
|
|
7425
|
+
type
|
|
7426
|
+
}
|
|
7427
|
+
subject {
|
|
7428
|
+
id
|
|
7429
|
+
type
|
|
7430
|
+
}
|
|
7431
|
+
WorkflowConfigAttributeKeys {
|
|
7432
|
+
attributeKey {
|
|
7433
|
+
id
|
|
7434
|
+
name
|
|
7435
|
+
}
|
|
7436
|
+
}
|
|
7437
|
+
}
|
|
7438
|
+
totalCount
|
|
7439
|
+
}
|
|
7440
|
+
}
|
|
7441
|
+
`);
|
|
7442
|
+
const CREATE_WORKFLOW = parse(gql`
|
|
7443
|
+
mutation TranscendCliCreateWorkflow($input: CreateWorkflowInput!) {
|
|
7444
|
+
createWorkflow(input: $input) {
|
|
7445
|
+
workflowConfig {
|
|
7446
|
+
id
|
|
7447
|
+
internalName
|
|
7448
|
+
}
|
|
7449
|
+
}
|
|
7450
|
+
}
|
|
7451
|
+
`);
|
|
7452
|
+
const UPDATE_WORKFLOW_CONFIG = parse(gql`
|
|
7453
|
+
mutation TranscendCliUpdateWorkflowConfig($input: UpdateWorkflowConfigInput!) {
|
|
7454
|
+
updateWorkflowConfig(input: $input) {
|
|
7455
|
+
success
|
|
7456
|
+
}
|
|
7457
|
+
}
|
|
7458
|
+
`);
|
|
7459
|
+
//#endregion
|
|
7460
|
+
//#region src/dsr-automation/fetchAllWorkflowConfigs.ts
|
|
7461
|
+
const PAGE_SIZE$13 = 50;
|
|
7462
|
+
/**
|
|
7463
|
+
* Fetch all workflow configs in the organization
|
|
7464
|
+
*
|
|
7465
|
+
* @param client - GraphQL client
|
|
7466
|
+
* @param options - Options
|
|
7467
|
+
* @returns All workflow configs
|
|
7468
|
+
*/
|
|
7469
|
+
async function fetchAllWorkflowConfigs(client, options = {}) {
|
|
7470
|
+
const { logger, workflowConfigType } = options;
|
|
7471
|
+
const configs = [];
|
|
7472
|
+
let offset = 0;
|
|
7473
|
+
let shouldContinue = false;
|
|
7474
|
+
do {
|
|
7475
|
+
const { workflows: { nodes } } = await makeGraphQLRequest(client, WORKFLOW_CONFIGS, {
|
|
7476
|
+
variables: {
|
|
7477
|
+
first: PAGE_SIZE$13,
|
|
7478
|
+
offset,
|
|
7479
|
+
filterBy: workflowConfigType ? { workflowConfigType } : void 0
|
|
7480
|
+
},
|
|
7481
|
+
logger
|
|
7482
|
+
});
|
|
7483
|
+
configs.push(...nodes);
|
|
7484
|
+
offset += PAGE_SIZE$13;
|
|
7485
|
+
shouldContinue = nodes.length === PAGE_SIZE$13;
|
|
7486
|
+
} while (shouldContinue);
|
|
7487
|
+
return configs.sort((a, b) => a.title.defaultMessage.localeCompare(b.title.defaultMessage));
|
|
7488
|
+
}
|
|
7489
|
+
//#endregion
|
|
7490
|
+
//#region src/dsr-automation/resolveWorkflowConfigMatch.ts
|
|
7491
|
+
/**
|
|
7492
|
+
* Stable key for title + action + data subject + region-list identity.
|
|
7493
|
+
*
|
|
7494
|
+
* @param config - Workflow config node
|
|
7495
|
+
* @returns Match key string
|
|
7496
|
+
*/
|
|
7497
|
+
function workflowConfigMatchKey(config) {
|
|
7498
|
+
return [
|
|
7499
|
+
config.title.defaultMessage,
|
|
7500
|
+
config.action.type,
|
|
7501
|
+
config.subject?.type ?? "",
|
|
7502
|
+
workflowRegionListKey(config.regionList)
|
|
7503
|
+
].join("\0");
|
|
7504
|
+
}
|
|
7505
|
+
/**
|
|
7506
|
+
* Order-independent region list key for workflow matching.
|
|
7507
|
+
*
|
|
7508
|
+
* @param regions - Region list
|
|
7509
|
+
* @returns Sorted comma-separated region codes
|
|
7510
|
+
*/
|
|
7511
|
+
function workflowRegionListKey(regions) {
|
|
7512
|
+
return [...regions ?? []].sort().join(",");
|
|
7513
|
+
}
|
|
7514
|
+
/**
|
|
7515
|
+
* Human-readable label for logging and errors.
|
|
7516
|
+
*
|
|
7517
|
+
* @param input - Workflow config sync input
|
|
7518
|
+
* @returns Label string
|
|
7519
|
+
*/
|
|
7520
|
+
function workflowConfigInputLabel(input) {
|
|
7521
|
+
return input["internal-name"] ?? input.title;
|
|
7522
|
+
}
|
|
7523
|
+
function sameRegionList(inputRegions, configRegions) {
|
|
7524
|
+
return workflowRegionListKey(inputRegions) === workflowRegionListKey(configRegions);
|
|
7525
|
+
}
|
|
7526
|
+
function narrowToOneOrContinue(candidates, next) {
|
|
7527
|
+
const [only] = candidates;
|
|
7528
|
+
if (candidates.length === 1 && only !== void 0) return {
|
|
7529
|
+
kind: "match",
|
|
7530
|
+
config: only
|
|
7531
|
+
};
|
|
7532
|
+
if (candidates.length === 0) return { kind: "create" };
|
|
7533
|
+
return next(candidates);
|
|
7534
|
+
}
|
|
7535
|
+
function continueCascade(candidates, input) {
|
|
7536
|
+
return narrowToOneOrContinue(candidates.filter((config) => config.title.defaultMessage === input.title), (byTitle) => narrowToOneOrContinue(byTitle.filter((config) => config.action.type === input["action-type"]), (byAction) => {
|
|
7537
|
+
const dataSubjectType = input["data-subject-type"];
|
|
7538
|
+
if (dataSubjectType) return narrowToOneOrContinue(byAction.filter((config) => config.subject?.type === dataSubjectType), (bySubject) => filterByRegions(bySubject, input));
|
|
7539
|
+
return filterByRegions(byAction, input);
|
|
7540
|
+
}));
|
|
7541
|
+
}
|
|
7542
|
+
function filterByRegions(candidates, input) {
|
|
7543
|
+
const matches = candidates.filter((config) => sameRegionList(input["region-list"], config.regionList));
|
|
7544
|
+
const [only] = matches;
|
|
7545
|
+
if (matches.length === 1 && only !== void 0) return {
|
|
7546
|
+
kind: "match",
|
|
7547
|
+
config: only
|
|
7548
|
+
};
|
|
7549
|
+
if (matches.length === 0) return { kind: "create" };
|
|
7550
|
+
if (!input["internal-name"]) {
|
|
7551
|
+
const [firstUnnamed] = matches.filter((config) => config.internalName == null);
|
|
7552
|
+
if (firstUnnamed !== void 0) return {
|
|
7553
|
+
kind: "match",
|
|
7554
|
+
config: firstUnnamed
|
|
7555
|
+
};
|
|
7556
|
+
}
|
|
7557
|
+
return {
|
|
7558
|
+
kind: "ambiguous",
|
|
7559
|
+
candidates: matches
|
|
7560
|
+
};
|
|
7561
|
+
}
|
|
7562
|
+
/**
|
|
7563
|
+
* Resolve which existing workflow config a YAML entry should update, if any.
|
|
7564
|
+
*
|
|
7565
|
+
* Cascade order: internal-name → title → action-type → data-subject-type (when
|
|
7566
|
+
* provided) → region-list. A provided internal-name with zero matches creates a
|
|
7567
|
+
* new workflow instead of falling through to title. When internal-name is
|
|
7568
|
+
* omitted and the cascade still matches multiple configs, prefer the candidate
|
|
7569
|
+
* with a null internal name.
|
|
7570
|
+
*
|
|
7571
|
+
* @param input - Workflow config sync input
|
|
7572
|
+
* @param existingConfigs - Existing workflow configs in the org
|
|
7573
|
+
* @returns Match resolution
|
|
7574
|
+
*/
|
|
7575
|
+
function resolveWorkflowConfigMatch(input, existingConfigs) {
|
|
7576
|
+
const internalName = input["internal-name"];
|
|
7577
|
+
if (internalName) {
|
|
7578
|
+
const byName = existingConfigs.filter((config) => config.internalName === internalName);
|
|
7579
|
+
const [onlyByName] = byName;
|
|
7580
|
+
if (byName.length === 1 && onlyByName !== void 0) return {
|
|
7581
|
+
kind: "match",
|
|
7582
|
+
config: onlyByName
|
|
7583
|
+
};
|
|
7584
|
+
if (byName.length === 0) return { kind: "create" };
|
|
7585
|
+
return continueCascade(byName, input);
|
|
7586
|
+
}
|
|
7587
|
+
return continueCascade(existingConfigs, input);
|
|
7588
|
+
}
|
|
7589
|
+
//#endregion
|
|
7590
|
+
//#region src/dsr-automation/syncWorkflowConfigs.ts
|
|
7591
|
+
/**
|
|
7592
|
+
* Sync workflow configs to Transcend.
|
|
7593
|
+
*
|
|
7594
|
+
* Matches each input using a cascading key: internal-name → title → action-type
|
|
7595
|
+
* → data-subject-type (when provided) → region-list. Missing configs are
|
|
7596
|
+
* created via `createWorkflow` (DSR only; starts as Draft with default
|
|
7597
|
+
* associations), then updated with the remaining YAML fields. Successfully
|
|
7598
|
+
* matched configs are claimed (removed from the match pool) so later YAML
|
|
7599
|
+
* entries can resolve remaining duplicates.
|
|
7600
|
+
*
|
|
7601
|
+
* @param client - GraphQL client
|
|
7602
|
+
* @param inputs - Workflow config inputs from YAML
|
|
7603
|
+
* @param options - Options
|
|
7604
|
+
* @returns True if run without error
|
|
7605
|
+
*/
|
|
7606
|
+
async function syncWorkflowConfigs(client, inputs, options = {}) {
|
|
7607
|
+
const { logger } = options;
|
|
7608
|
+
logger?.info(`Syncing "${inputs.length}" workflow configs...`);
|
|
7609
|
+
let encounteredError = false;
|
|
7610
|
+
const needsSubjects = inputs.some((config) => config["data-subject-type"]);
|
|
7611
|
+
const needsAttributeKeys = inputs.some((config) => config["attribute-keys"]?.length);
|
|
7612
|
+
const [fetchedConfigs, actions] = await Promise.all([fetchAllWorkflowConfigs(client, {
|
|
7613
|
+
logger,
|
|
7614
|
+
workflowConfigType: WorkflowConfigType.DSR
|
|
7615
|
+
}), fetchAllActions(client, { logger })]);
|
|
7616
|
+
const existingConfigs = [...fetchedConfigs];
|
|
7617
|
+
let dataSubjects = [];
|
|
7618
|
+
if (needsSubjects) dataSubjects = await fetchAllDataSubjects(client, { logger });
|
|
7619
|
+
let attributeKeys = [];
|
|
7620
|
+
if (needsAttributeKeys) attributeKeys = await fetchAllRequestAttributeKeys(client, { logger });
|
|
7621
|
+
const actionByType = keyBy(actions, "type");
|
|
7622
|
+
const dataSubjectByType = keyBy(dataSubjects, "type");
|
|
7623
|
+
const attributeKeyByName = keyBy(attributeKeys, "name");
|
|
7624
|
+
await mapSeries(inputs, async (config) => {
|
|
7625
|
+
const label = workflowConfigInputLabel(config);
|
|
7626
|
+
try {
|
|
7627
|
+
if (config.type && config.type !== WorkflowConfigType.DSR) throw new Error(`Workflow config "${label}" has type "${config.type}". Only DSR workflow configs can be synced — preference management workflows have purpose-based semantics and must be managed in the Admin Dashboard.`);
|
|
7628
|
+
const resolution = resolveWorkflowConfigMatch(config, existingConfigs);
|
|
7629
|
+
if (resolution.kind === "ambiguous") throw new Error(`Found "${resolution.candidates.length}" workflow configs matching "${label}" after applying title, action-type, data-subject-type, and region-list. Add a unique internal-name or disambiguating region-list to sync this workflow.`);
|
|
7630
|
+
const existingConfig = resolution.kind === "match" ? resolution.config : void 0;
|
|
7631
|
+
if (existingConfig && existingConfig.workflowConfigType !== WorkflowConfigType.DSR) throw new Error(`Workflow config "${label}" has type "${existingConfig.workflowConfigType}". Only DSR workflow configs can be synced — preference management workflows have purpose-based semantics and must be managed in the Admin Dashboard.`);
|
|
7632
|
+
const expiryTime = config["expiry-time"];
|
|
7633
|
+
if (expiryTime && expiryTime.length > 0) {
|
|
7634
|
+
if (!expiryTime.some(({ region }) => region === "default")) throw new Error(`Workflow config "${label}" has an expiry-time list without a "default" region entry. A \`region: default\` entry is required.`);
|
|
7635
|
+
const invalidEntries = expiryTime.filter(({ value }) => value <= 0);
|
|
7636
|
+
if (invalidEntries.length > 0) throw new Error(`Workflow config "${label}" has expiry-time values that are not positive: ${invalidEntries.map(({ region, value }) => `${region}=${value}`).join(", ")}. All expiry times must be greater than 0 days.`);
|
|
7637
|
+
}
|
|
7638
|
+
let subjectId;
|
|
7639
|
+
if (config["data-subject-type"]) {
|
|
7640
|
+
const subject = dataSubjectByType[config["data-subject-type"]];
|
|
7641
|
+
if (!subject) throw new Error(`Failed to find data subject with type: ${config["data-subject-type"]}`);
|
|
7642
|
+
subjectId = subject.id;
|
|
7643
|
+
}
|
|
7644
|
+
if (!actionByType[config["action-type"]]) throw new Error(`Failed to find action with type: ${config["action-type"]}`);
|
|
7645
|
+
let attributeKeyIds;
|
|
7646
|
+
if (config["attribute-keys"] !== void 0) attributeKeyIds = config["attribute-keys"].map((name) => {
|
|
7647
|
+
const attributeKey = attributeKeyByName[name];
|
|
7648
|
+
if (!attributeKey) throw new Error(`Failed to find attribute key with name: ${name}`);
|
|
7649
|
+
return attributeKey.id;
|
|
7650
|
+
});
|
|
7651
|
+
let workflowConfigId;
|
|
7652
|
+
if (!existingConfig) {
|
|
7653
|
+
const internalName = config["internal-name"];
|
|
7654
|
+
const { createWorkflow: { workflowConfig: created } } = await makeGraphQLRequest(client, CREATE_WORKFLOW, {
|
|
7655
|
+
variables: { input: {
|
|
7656
|
+
title: config.title,
|
|
7657
|
+
actionType: config["action-type"],
|
|
7658
|
+
...internalName ? { internalName } : {},
|
|
7659
|
+
workflowConfigType: WorkflowConfigType.DSR
|
|
7660
|
+
} },
|
|
7661
|
+
logger
|
|
7662
|
+
});
|
|
7663
|
+
workflowConfigId = created.id;
|
|
7664
|
+
existingConfigs.push({
|
|
7665
|
+
id: created.id,
|
|
7666
|
+
title: { defaultMessage: config.title },
|
|
7667
|
+
subtitle: null,
|
|
7668
|
+
description: null,
|
|
7669
|
+
internalName: created.internalName ?? internalName ?? null,
|
|
7670
|
+
workflowConfigVisibility: WorkflowConfigVisibility.Draft,
|
|
7671
|
+
workflowConfigType: WorkflowConfigType.DSR,
|
|
7672
|
+
collectDataSubjectRegions: null,
|
|
7673
|
+
regionList: config["region-list"] ?? [],
|
|
7674
|
+
expiryTime: null,
|
|
7675
|
+
action: { type: config["action-type"] },
|
|
7676
|
+
subject: subjectId ? {
|
|
7677
|
+
id: subjectId,
|
|
7678
|
+
type: config["data-subject-type"]
|
|
7679
|
+
} : null,
|
|
7680
|
+
WorkflowConfigAttributeKeys: null
|
|
7681
|
+
});
|
|
7682
|
+
logger?.info(`Successfully created workflow config "${label}" (${created.id})!`);
|
|
7683
|
+
} else workflowConfigId = existingConfig.id;
|
|
7684
|
+
await makeGraphQLRequest(client, UPDATE_WORKFLOW_CONFIG, {
|
|
7685
|
+
variables: { input: {
|
|
7686
|
+
workflowConfigId,
|
|
7687
|
+
...config.title !== void 0 ? { title: config.title } : {},
|
|
7688
|
+
...config.subtitle !== void 0 ? { subtitle: config.subtitle } : {},
|
|
7689
|
+
...config.description !== void 0 ? { description: config.description } : {},
|
|
7690
|
+
...config.visibility !== void 0 ? { workflowConfigVisibility: config.visibility } : {},
|
|
7691
|
+
...config["internal-name"] !== void 0 ? { internalName: config["internal-name"] } : {},
|
|
7692
|
+
actionType: config["action-type"],
|
|
7693
|
+
...config["collect-data-subject-regions"] !== void 0 ? { collectDataSubjectRegions: config["collect-data-subject-regions"] } : {},
|
|
7694
|
+
...subjectId ? { subjectId } : {},
|
|
7695
|
+
...config["region-list"] !== void 0 ? { regionList: config["region-list"] } : {},
|
|
7696
|
+
...config["expiry-time"] !== void 0 ? { expiryTime: config["expiry-time"] } : {},
|
|
7697
|
+
...attributeKeyIds !== void 0 ? { attributeKeyIds } : {}
|
|
7698
|
+
} },
|
|
7699
|
+
logger
|
|
7700
|
+
});
|
|
7701
|
+
if (existingConfig) {
|
|
7702
|
+
const claimedIndex = existingConfigs.findIndex((config) => config.id === existingConfig.id);
|
|
7703
|
+
if (claimedIndex >= 0) existingConfigs.splice(claimedIndex, 1);
|
|
7704
|
+
}
|
|
7705
|
+
logger?.info(`Successfully synced workflow config "${label}" (${workflowConfigId})!`);
|
|
7706
|
+
} catch (err) {
|
|
7707
|
+
encounteredError = true;
|
|
7708
|
+
logger?.error(`Failed to sync workflow config "${label}"! - ${err.message}`);
|
|
7709
|
+
}
|
|
7710
|
+
});
|
|
7711
|
+
logger?.info(`Synced "${inputs.length}" workflow configs!`);
|
|
7712
|
+
return !encounteredError;
|
|
7713
|
+
}
|
|
7714
|
+
//#endregion
|
|
7238
7715
|
//#region src/dsr-automation/uploadSiloDiscoveryResults.ts
|
|
7239
7716
|
const CHUNK_SIZE$2 = 1e3;
|
|
7240
7717
|
/**
|
|
@@ -9682,6 +10159,6 @@ function createMonorepoPackageDefinition(name, directory) {
|
|
|
9682
10159
|
};
|
|
9683
10160
|
}
|
|
9684
10161
|
//#endregion
|
|
9685
|
-
export { AIRGAP_BUNDLE_AGGREGATE_ANALYTICS, AIRGAP_BUNDLE_TIMESERIES_ANALYTICS, ASSESSMENTS, ASSESSMENT_SECTION_FIELDS, ATTRIBUTE_KEYS_REQUESTS, ATTRIBUTE_VALUE_FIELDS, AssessmentAction, AssessmentNestedRule, AssessmentRiskLogic, AssessmentRule, AssessmentRuleWithOperands, AssessmentRuleWithoutOperands, BULK_REQUEST_FILES, CHANGE_REQUEST_DATA_SILO_STATUS, CODE_PACKAGES, CONSENT_MANAGER_ANALYTICS_DATA, CONSENT_PARTITIONS, COOKIES, COOKIE_STATS, CREATE_CODE_PACKAGE, CREATE_CONSENT_EXPERIENCE, CREATE_CONSENT_MANAGER, CREATE_CONSENT_PARTITION, CREATE_CONSENT_UI_THEME, CREATE_CONSENT_UI_VARIANT, CREATE_DATA_FLOWS, CREATE_DATA_SILOS, CREATE_DATA_SUBJECT, CREATE_ENRICHER, CREATE_IDENTIFIER, CREATE_PROCESSING_PURPOSE_SUB_CATEGORY, ColumnIdentifierMap, ColumnMetadataMap, ColumnPurposeMap, ConsentPreferenceResponse, DATAPOINT_EXPORT, DATA_FLOWS, DATA_FLOW_STATS, DATA_POINTS, DATA_POINT_COUNT, DATA_SILOS, DATA_SILOS_ENRICHED, DATA_SILO_EXPORT, DATA_SUBJECTS, DELETE_COOKIES, DELETE_DATA_FLOWS, DEPLOYED_PRIVACY_CENTER_URL, DEPLOY_CONSENT_MANAGER, DeletePreferenceRecordCliCsvRow, DeletePreferenceRecordsInput, DeletePreferenceRecordsResponse, ENRICHERS, EXPERIENCES, FETCH_CONSENT_MANAGER, FETCH_CONSENT_MANAGER_ID, FETCH_CONSENT_MANAGER_THEME, FETCH_CONSENT_UI_THEMES, FETCH_CONSENT_UI_VARIANTS, FETCH_PRIVACY_CENTER_ID, FailingPreferenceUpdates, FileFormatState, FileMetadataState, IMPORT_ONE_TRUST_ASSESSMENT_FORMS, INITIALIZER, IdentifierMetadataForPreference, MetadataMapping, NEW_IDENTIFIER_TYPES, NOOP_LOGGER, OWNER_FIELDS, POLICIES, PRIVACY_CENTER, PROCESSING_PURPOSE_SUB_CATEGORIES, PURPOSES, PendingSafePreferenceUpdates, PendingWithConflictPreferenceUpdates, PreferenceOptionValueInput, PreferenceState, PreferenceTopicSyncInput, PreferenceUpdateMap, PurposeInput, PurposeRowMapping, REDUCED_REQUESTS_FOR_DATA_SILO_COUNT, REMOVE_REQUEST_IDENTIFIERS, REQUEST_DATA_SILOS, REQUEST_ENRICHERS, REQUEST_FILES, REQUEST_IDENTIFIERS, RETRY_REQUEST_DATA_SILO, RETRY_REQUEST_ENRICHER, RETRY_TRANSIENT_MSGS, RequestIdentifiersResponse, RequestUploadReceipts, SERVICE_FIELDS, SKIP_REQUEST_ENRICHER, SOMBRA_VERSION, SUB_DATA_POINTS, SUB_DATA_POINTS_COUNT, SUB_DATA_POINTS_WITH_GUESSES, SYNC_ATTRIBUTE_TYPES, SkippedPreferenceUpdates, TEAM_FIELDS, TOGGLE_CONSENT_PRECEDENCE, TOGGLE_DATA_SUBJECT, TOGGLE_TELEMETRY_PARTITION_STRATEGY, TOGGLE_UNKNOWN_COOKIE_POLICY, TOGGLE_UNKNOWN_REQUEST_POLICY, TRACKING_PURPOSE_FIELDS, UPDATE_CODE_PACKAGES, UPDATE_CONSENT_EXPERIENCE, UPDATE_CONSENT_MANAGER_DOMAINS, UPDATE_CONSENT_MANAGER_PARTITION, UPDATE_CONSENT_MANAGER_THEME, UPDATE_CONSENT_MANAGER_TO_LATEST, UPDATE_CONSENT_MANAGER_VERSION, UPDATE_CONSENT_UI_THEME, UPDATE_CONSENT_UI_VARIANT, UPDATE_DATA_FLOWS, UPDATE_DATA_SILOS, UPDATE_DATA_SUBJECT, UPDATE_ENRICHER, UPDATE_IDENTIFIER, UPDATE_LOAD_OPTIONS, UPDATE_OR_CREATE_COOKIES, UPDATE_OR_CREATE_DATA_POINT, UPDATE_POLICIES, UPDATE_PRIVACY_CENTER, UPDATE_PROCESSING_PURPOSE_SUB_CATEGORIES, addMessagesToPromptRun, assumeRole, buildConsentChunks, buildTranscendGraphQLClient, buildTranscendGraphQLClientGeneric, checkIfPendingPreferenceUpdatesAreNoOp, checkIfPendingPreferenceUpdatesCauseConflict, consentWindowHasAny, convertToDataSubjectAllowlist, convertToDataSubjectBlockList, createActionItemCollection, createActionItems, createAgent, createAgentFile, createAgentFunction, createApiKey, createBusinessEntity, createDataCategory, createDataFlows, createDataSubject, createMonorepoPackageDefinition, createOrUpdatePreferenceOptionValues, createPreferenceAccessTokens, createProcessingPurpose, createPrompt, createPromptGroup, createPromptPartial, createRepository, createSoftwareDevelopmentKit, createSombraGotInstance, createTeam, createTranscendConsentGotInstance, createVendor, deleteApiKey, deployConsentManager, fetchActiveSiloDiscoPlugin, fetchAirgapBundleAggregateAnalytics, fetchAirgapBundleTimeseriesAnalytics, fetchAllActionItemCollections, fetchAllActionItems, fetchAllActions, fetchAllAgentFiles, fetchAllAgentFunctions, fetchAllAgents, fetchAllApiKeys, fetchAllAssessments, fetchAllAttributeValues, fetchAllAttributes, fetchAllBusinessEntities, fetchAllCatalogs, fetchAllCodePackages, fetchAllCookies, fetchAllDataCategories, fetchAllDataFlows, fetchAllDataPoints, fetchAllDataSilos, fetchAllDataSubjects, fetchAllEnrichers, fetchAllIdentifiers, fetchAllLargeLanguageModels, fetchAllMessages, fetchAllPolicies, fetchAllPreferenceOptionValues, fetchAllPreferenceTopics, fetchAllPrivacyCenters, fetchAllProcessingActivities, fetchAllProcessingPurposes, fetchAllPromptGroups, fetchAllPromptPartials, fetchAllPromptThreads, fetchAllPrompts, fetchAllPurposes, fetchAllPurposesAndPreferences, fetchAllRepositories, fetchAllRequestAttributeKeys, fetchAllRequestEnrichers, fetchAllRequestIdentifierMetadata, fetchAllRequestIdentifiers, fetchAllSiloDiscoveryResults, fetchAllSoftwareDevelopmentKits, fetchAllSubDataPoints, fetchAllTeams, fetchAllTemplates, fetchAllUsers, fetchAllVendors, fetchAndIndexCatalogs, fetchApiKeys, fetchConsentManager, fetchConsentManagerAnalyticsData, fetchConsentManagerExperiences, fetchConsentManagerId, fetchConsentManagerTheme, fetchConsentPreferences, fetchConsentPreferencesChunked, fetchConsentThemes, fetchConsentVariants, fetchEnrichedDataSilos, fetchIdentifiersAndCreateMissing, fetchParentOrganizationTeams, fetchPartitions, fetchPrivacyCenterId, fetchPrivacyCenterUrl, fetchPromptsWithVariables, fetchRequestDataSilo, fetchRequestDataSilos, fetchRequestDataSilosCount, fetchRequestFilesForRequest, findEarliestDayWithData, findLatestDayWithData, formatAttributeValues, formatRegions, getBoundsFromConsentFilter, getComparisonTimeForRecord, getPreferenceIdentifiersFromRow, getPreferenceMetadataFromRow, getPreferenceUpdatesFromRow, getPreferencesForIdentifiers, getUniquePreferenceIdentifierNamesFromRow, isTransientError, iterateConsentPages, loadReferenceData, loginUser, makeGraphQLRequest, parseAssessmentDisplayLogic, parseAssessmentRiskLogic, pickConsentChunkMode, reportPromptRun, resolveParentTeamIdsByName, retryRequestEnricher, setResourceAttributes, syncAction, syncActionItemCollections, syncActionItems, syncAgentFiles, syncAgentFunctions, syncAgents, syncAttribute, syncBusinessEntities, syncConsentManager, syncConsentManagerExperiences, syncConsentUiThemes, syncConsentUiVariants, syncCookies, syncDataCategories, syncDataFlows, syncDataSiloDependencies, syncDataSubject, syncEnricher, syncIdentifier, syncIntlMessages, syncPartitions, syncPolicies, syncPreferenceOptionValues, syncPreferenceTopics, syncPrivacyCenter, syncProcessingActivities, syncProcessingPurposes, syncPromptGroups, syncPromptPartials, syncPrompts, syncPurposes, syncRepositories, syncSoftwareDevelopmentKits, syncTeams, syncTemplate, syncVendors, transformPreferenceRecordToCsv, updateActionItem, updateActionItemCollection, updateAgentFiles, updateAgentFunctions, updateAgents, updateBusinessEntities, updateConsentManagerToLatest, updateDataCategories, updateDataFlows, updateIntlMessages, updateOrCreateCookies, updatePolicies, updateProcessingPurposes, updatePromptGroups, updatePromptPartials, updatePrompts, updateRepositories, updateSoftwareDevelopmentKits, updateTeam, updateVendors, uploadSiloDiscoveryResults, validateSombraVersion, withTransientRetry };
|
|
10162
|
+
export { AIRGAP_BUNDLE_AGGREGATE_ANALYTICS, AIRGAP_BUNDLE_TIMESERIES_ANALYTICS, ASSESSMENTS, ASSESSMENT_SECTION_FIELDS, ATTRIBUTE_KEYS_REQUESTS, ATTRIBUTE_VALUE_FIELDS, AssessmentAction, AssessmentNestedRule, AssessmentRiskLogic, AssessmentRule, AssessmentRuleWithOperands, AssessmentRuleWithoutOperands, BULK_REQUEST_FILES, CHANGE_REQUEST_DATA_SILO_STATUS, CODE_PACKAGES, CONSENT_MANAGER_ANALYTICS_DATA, CONSENT_PARTITIONS, COOKIES, COOKIE_STATS, CREATE_CODE_PACKAGE, CREATE_CONSENT_EXPERIENCE, CREATE_CONSENT_MANAGER, CREATE_CONSENT_PARTITION, CREATE_CONSENT_UI_THEME, CREATE_CONSENT_UI_VARIANT, CREATE_DATA_FLOWS, CREATE_DATA_SILOS, CREATE_DATA_SUBJECT, CREATE_ENRICHER, CREATE_IDENTIFIER, CREATE_PROCESSING_PURPOSE_SUB_CATEGORY, ColumnIdentifierMap, ColumnMetadataMap, ColumnPurposeMap, ConsentPreferenceResponse, DATAPOINT_EXPORT, DATA_FLOWS, DATA_FLOW_STATS, DATA_POINTS, DATA_POINT_COUNT, DATA_SILOS, DATA_SILOS_ENRICHED, DATA_SILO_EXPORT, DATA_SILO_SOMBRA, DATA_SUBJECTS, DELETE_COOKIES, DELETE_DATA_FLOWS, DELETE_PRIVACY_CENTER_FOOTER_LINKS, DEPLOYED_PRIVACY_CENTER_URL, DEPLOY_CONSENT_MANAGER, DeletePreferenceRecordCliCsvRow, DeletePreferenceRecordsInput, DeletePreferenceRecordsResponse, ENRICHERS, EXPERIENCES, FETCH_CONSENT_MANAGER, FETCH_CONSENT_MANAGER_ID, FETCH_CONSENT_MANAGER_THEME, FETCH_CONSENT_UI_THEMES, FETCH_CONSENT_UI_VARIANTS, FETCH_PRIVACY_CENTER_ID, FailingPreferenceUpdates, FileFormatState, FileMetadataState, IMPORT_ONE_TRUST_ASSESSMENT_FORMS, INITIALIZER, IdentifierMetadataForPreference, MetadataMapping, NEW_IDENTIFIER_TYPES, NOOP_LOGGER, OWNER_FIELDS, POLICIES, PRIVACY_CENTER, PROCESSING_PURPOSE_SUB_CATEGORIES, PURPOSES, PendingSafePreferenceUpdates, PendingWithConflictPreferenceUpdates, PreferenceOptionValueInput, PreferenceState, PreferenceTopicSyncInput, PreferenceUpdateMap, PurposeInput, PurposeRowMapping, REDUCED_REQUESTS_FOR_DATA_SILO_COUNT, REMOVE_REQUEST_IDENTIFIERS, REQUEST_DATA_SILOS, REQUEST_ENRICHERS, REQUEST_FILES, REQUEST_IDENTIFIERS, RETRY_REQUEST_DATA_SILO, RETRY_REQUEST_ENRICHER, RETRY_TRANSIENT_MSGS, RequestIdentifiersResponse, RequestUploadReceipts, SERVICE_FIELDS, SKIP_REQUEST_ENRICHER, SOMBRA_VERSION, SUB_DATA_POINTS, SUB_DATA_POINTS_COUNT, SUB_DATA_POINTS_WITH_GUESSES, SYNC_ATTRIBUTE_TYPES, SkippedPreferenceUpdates, TEAM_FIELDS, TOGGLE_CONSENT_PRECEDENCE, TOGGLE_DATA_SUBJECT, TOGGLE_TELEMETRY_PARTITION_STRATEGY, TOGGLE_UNKNOWN_COOKIE_POLICY, TOGGLE_UNKNOWN_REQUEST_POLICY, TRACKING_PURPOSE_FIELDS, UPDATE_CODE_PACKAGES, UPDATE_CONSENT_EXPERIENCE, UPDATE_CONSENT_MANAGER_DOMAINS, UPDATE_CONSENT_MANAGER_PARTITION, UPDATE_CONSENT_MANAGER_THEME, UPDATE_CONSENT_MANAGER_TO_LATEST, UPDATE_CONSENT_MANAGER_VERSION, UPDATE_CONSENT_UI_THEME, UPDATE_CONSENT_UI_VARIANT, UPDATE_DATA_FLOWS, UPDATE_DATA_SILOS, UPDATE_DATA_SUBJECT, UPDATE_ENRICHER, UPDATE_IDENTIFIER, UPDATE_LOAD_OPTIONS, UPDATE_OR_CREATE_COOKIES, UPDATE_OR_CREATE_DATA_POINT, UPDATE_POLICIES, UPDATE_PRIVACY_CENTER, UPDATE_PRIVACY_CENTER_FOOTER_LINKS, UPDATE_PROCESSING_PURPOSE_SUB_CATEGORIES, addMessagesToPromptRun, assumeRole, buildConsentChunks, buildTranscendGraphQLClient, buildTranscendGraphQLClientGeneric, checkIfPendingPreferenceUpdatesAreNoOp, checkIfPendingPreferenceUpdatesCauseConflict, consentWindowHasAny, convertToDataSubjectAllowlist, convertToDataSubjectBlockList, createActionItemCollection, createActionItems, createAgent, createAgentFile, createAgentFunction, createApiKey, createBusinessEntity, createDataCategory, createDataFlows, createDataSubject, createMonorepoPackageDefinition, createOrUpdatePreferenceOptionValues, createPreferenceAccessTokens, createProcessingPurpose, createPrompt, createPromptGroup, createPromptPartial, createRepository, createSoftwareDevelopmentKit, createSombraGotInstance, createTeam, createTranscendConsentGotInstance, createVendor, deleteApiKey, deployConsentManager, fetchActiveSiloDiscoPlugin, fetchAirgapBundleAggregateAnalytics, fetchAirgapBundleTimeseriesAnalytics, fetchAllActionItemCollections, fetchAllActionItems, fetchAllActions, fetchAllAgentFiles, fetchAllAgentFunctions, fetchAllAgents, fetchAllApiKeys, fetchAllAssessments, fetchAllAttributeValues, fetchAllAttributes, fetchAllBusinessEntities, fetchAllCatalogs, fetchAllCodePackages, fetchAllCookies, fetchAllDataCategories, fetchAllDataFlows, fetchAllDataPoints, fetchAllDataSilos, fetchAllDataSubjects, fetchAllEnrichers, fetchAllIdentifiers, fetchAllLargeLanguageModels, fetchAllMessages, fetchAllPolicies, fetchAllPreferenceOptionValues, fetchAllPreferenceTopics, fetchAllPrivacyCenters, fetchAllProcessingActivities, fetchAllProcessingPurposes, fetchAllPromptGroups, fetchAllPromptPartials, fetchAllPromptThreads, fetchAllPrompts, fetchAllPurposes, fetchAllPurposesAndPreferences, fetchAllRepositories, fetchAllRequestAttributeKeys, fetchAllRequestEnrichers, fetchAllRequestIdentifierMetadata, fetchAllRequestIdentifiers, fetchAllSiloDiscoveryResults, fetchAllSoftwareDevelopmentKits, fetchAllSubDataPoints, fetchAllTeams, fetchAllTemplates, fetchAllUsers, fetchAllVendors, fetchAllWorkflowConfigs, fetchAndIndexCatalogs, fetchApiKeys, fetchConsentManager, fetchConsentManagerAnalyticsData, fetchConsentManagerExperiences, fetchConsentManagerId, fetchConsentManagerTheme, fetchConsentPreferences, fetchConsentPreferencesChunked, fetchConsentThemes, fetchConsentVariants, fetchEnrichedDataSilos, fetchIdentifiersAndCreateMissing, fetchParentOrganizationTeams, fetchPartitions, fetchPrivacyCenterId, fetchPrivacyCenterUrl, fetchPromptsWithVariables, fetchRequestDataSilo, fetchRequestDataSilos, fetchRequestDataSilosCount, fetchRequestFilesForRequest, findEarliestDayWithData, findLatestDayWithData, formatAttributeValues, formatRegions, getBoundsFromConsentFilter, getComparisonTimeForRecord, getPreferenceIdentifiersFromRow, getPreferenceMetadataFromRow, getPreferenceUpdatesFromRow, getPreferencesForIdentifiers, getUniquePreferenceIdentifierNamesFromRow, isTransientError, iterateConsentPages, loadReferenceData, loginUser, makeGraphQLRequest, parseAssessmentDisplayLogic, parseAssessmentRiskLogic, pickConsentChunkMode, reportPromptRun, resolveDisplayedChildOrganizationIds, resolveParentTeamIdsByName, resolveWorkflowConfigMatch, retryRequestEnricher, setResourceAttributes, syncAction, syncActionItemCollections, syncActionItems, syncAgentFiles, syncAgentFunctions, syncAgents, syncAttribute, syncBusinessEntities, syncConsentManager, syncConsentManagerExperiences, syncConsentUiThemes, syncConsentUiVariants, syncCookies, syncDataCategories, syncDataFlows, syncDataSiloDependencies, syncDataSubject, syncEnricher, syncIdentifier, syncIntlMessages, syncPartitions, syncPolicies, syncPreferenceOptionValues, syncPreferenceTopics, syncPrivacyCenter, syncPrivacyCenterFooterLinks, syncProcessingActivities, syncProcessingPurposes, syncPromptGroups, syncPromptPartials, syncPrompts, syncPurposes, syncRepositories, syncSoftwareDevelopmentKits, syncTeams, syncTemplate, syncVendors, syncWorkflowConfigs, transformPreferenceRecordToCsv, updateActionItem, updateActionItemCollection, updateAgentFiles, updateAgentFunctions, updateAgents, updateBusinessEntities, updateConsentManagerToLatest, updateDataCategories, updateDataFlows, updateIntlMessages, updateOrCreateCookies, updatePolicies, updateProcessingPurposes, updatePromptGroups, updatePromptPartials, updatePrompts, updateRepositories, updateSoftwareDevelopmentKits, updateTeam, updateVendors, uploadSiloDiscoveryResults, validateSombraVersion, withTransientRetry, workflowConfigInputLabel, workflowConfigMatchKey, workflowRegionListKey };
|
|
9686
10163
|
|
|
9687
10164
|
//# sourceMappingURL=index.mjs.map
|