@transcend-io/sdk 1.2.4 → 1.2.6

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.mjs CHANGED
@@ -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$39 = 20;
287
+ const PAGE_SIZE$41 = 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$39,
302
+ first: PAGE_SIZE$41,
303
303
  offset
304
304
  },
305
305
  logger
306
306
  });
307
307
  businessEntities.push(...nodes);
308
- offset += PAGE_SIZE$39;
309
- shouldContinue = nodes.length === PAGE_SIZE$39;
308
+ offset += PAGE_SIZE$41;
309
+ shouldContinue = nodes.length === PAGE_SIZE$41;
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$38 = 20;
360
+ const PAGE_SIZE$40 = 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$38,
376
+ first: PAGE_SIZE$40,
377
377
  offset
378
378
  },
379
379
  logger
380
380
  });
381
381
  dataSubCategories.push(...nodes);
382
- offset += PAGE_SIZE$38;
383
- shouldContinue = nodes.length === PAGE_SIZE$38;
382
+ offset += PAGE_SIZE$40;
383
+ shouldContinue = nodes.length === PAGE_SIZE$40;
384
384
  } while (shouldContinue);
385
385
  return dataSubCategories.sort((a, b) => a.name.localeCompare(b.name));
386
386
  }
@@ -860,7 +860,7 @@ const IDENTIFIERS = parse(gql`
860
860
  `);
861
861
  //#endregion
862
862
  //#region src/data-inventory/fetchAllIdentifiers.ts
863
- const PAGE_SIZE$37 = 20;
863
+ const PAGE_SIZE$39 = 20;
864
864
  /**
865
865
  * Fetch all identifiers in the organization
866
866
  *
@@ -877,13 +877,13 @@ async function fetchAllIdentifiers(client, options = {}) {
877
877
  const { identifiers: { nodes } } = await makeGraphQLRequest(client, IDENTIFIERS, {
878
878
  logger,
879
879
  variables: {
880
- first: PAGE_SIZE$37,
880
+ first: PAGE_SIZE$39,
881
881
  offset
882
882
  }
883
883
  });
884
884
  identifiers.push(...nodes);
885
- offset += PAGE_SIZE$37;
886
- shouldContinue = nodes.length === PAGE_SIZE$37;
885
+ offset += PAGE_SIZE$39;
886
+ shouldContinue = nodes.length === PAGE_SIZE$39;
887
887
  } while (shouldContinue);
888
888
  return identifiers.sort((a, b) => a.name.localeCompare(b.name));
889
889
  }
@@ -962,7 +962,7 @@ const UPDATE_PROCESSING_ACTIVITIES = gql`
962
962
  `;
963
963
  //#endregion
964
964
  //#region src/data-inventory/fetchAllProcessingActivities.ts
965
- const PAGE_SIZE$36 = 20;
965
+ const PAGE_SIZE$38 = 20;
966
966
  /**
967
967
  * Fetch all processingActivities in the organization
968
968
  *
@@ -978,14 +978,14 @@ async function fetchAllProcessingActivities(client, options = {}) {
978
978
  do {
979
979
  const { processingActivities: { nodes } } = await makeGraphQLRequest(client, PROCESSING_ACTIVITIES, {
980
980
  variables: {
981
- first: PAGE_SIZE$36,
981
+ first: PAGE_SIZE$38,
982
982
  offset
983
983
  },
984
984
  logger
985
985
  });
986
986
  processingActivities.push(...nodes);
987
- offset += PAGE_SIZE$36;
988
- shouldContinue = nodes.length === PAGE_SIZE$36;
987
+ offset += PAGE_SIZE$38;
988
+ shouldContinue = nodes.length === PAGE_SIZE$38;
989
989
  } while (shouldContinue);
990
990
  return processingActivities.sort((a, b) => a.title.localeCompare(b.title));
991
991
  }
@@ -1050,7 +1050,7 @@ const UPDATE_VENDORS = gql`
1050
1050
  `;
1051
1051
  //#endregion
1052
1052
  //#region src/data-inventory/fetchAllVendors.ts
1053
- const PAGE_SIZE$35 = 20;
1053
+ const PAGE_SIZE$37 = 20;
1054
1054
  /**
1055
1055
  * Fetch all vendors in the organization
1056
1056
  *
@@ -1065,14 +1065,14 @@ async function fetchAllVendors(client, options = {}) {
1065
1065
  do {
1066
1066
  const { vendors: { nodes } } = await makeGraphQLRequest(client, VENDORS, {
1067
1067
  variables: {
1068
- first: PAGE_SIZE$35,
1068
+ first: PAGE_SIZE$37,
1069
1069
  offset
1070
1070
  },
1071
1071
  logger
1072
1072
  });
1073
1073
  vendors.push(...nodes);
1074
- offset += PAGE_SIZE$35;
1075
- shouldContinue = nodes.length === PAGE_SIZE$35;
1074
+ offset += PAGE_SIZE$37;
1075
+ shouldContinue = nodes.length === PAGE_SIZE$37;
1076
1076
  } while (shouldContinue);
1077
1077
  return vendors.sort((a, b) => a.title.localeCompare(b.title));
1078
1078
  }
@@ -1521,7 +1521,7 @@ const PURPOSES$1 = parse(gql`
1521
1521
  `);
1522
1522
  //#endregion
1523
1523
  //#region src/preference-management/fetchAllPurposes.ts
1524
- const PAGE_SIZE$34 = 20;
1524
+ const PAGE_SIZE$36 = 20;
1525
1525
  /**
1526
1526
  * Fetch all purposes in the organization
1527
1527
  *
@@ -1538,14 +1538,14 @@ async function fetchAllPurposes(client, options = {}) {
1538
1538
  const { purposes: { nodes } } = await makeGraphQLRequest(client, PURPOSES$1, {
1539
1539
  logger,
1540
1540
  variables: {
1541
- first: PAGE_SIZE$34,
1541
+ first: PAGE_SIZE$36,
1542
1542
  offset,
1543
1543
  input: { includeDeleted }
1544
1544
  }
1545
1545
  });
1546
1546
  purposes.push(...nodes);
1547
- offset += PAGE_SIZE$34;
1548
- shouldContinue = nodes.length === PAGE_SIZE$34;
1547
+ offset += PAGE_SIZE$36;
1548
+ shouldContinue = nodes.length === PAGE_SIZE$36;
1549
1549
  } while (shouldContinue);
1550
1550
  return purposes.sort((a, b) => a.trackingType.localeCompare(b.trackingType));
1551
1551
  }
@@ -1588,7 +1588,7 @@ const PREFERENCE_TOPICS = parse(gql`
1588
1588
  `);
1589
1589
  //#endregion
1590
1590
  //#region src/preference-management/fetchAllPreferenceTopics.ts
1591
- const PAGE_SIZE$33 = 20;
1591
+ const PAGE_SIZE$35 = 20;
1592
1592
  /**
1593
1593
  * Fetch all preference topics in the organization
1594
1594
  *
@@ -1605,13 +1605,13 @@ async function fetchAllPreferenceTopics(client, options = {}) {
1605
1605
  const { preferenceTopics: { nodes } } = await makeGraphQLRequest(client, PREFERENCE_TOPICS, {
1606
1606
  logger,
1607
1607
  variables: {
1608
- first: PAGE_SIZE$33,
1608
+ first: PAGE_SIZE$35,
1609
1609
  offset
1610
1610
  }
1611
1611
  });
1612
1612
  preferenceTopics.push(...nodes);
1613
- offset += PAGE_SIZE$33;
1614
- shouldContinue = nodes.length === PAGE_SIZE$33;
1613
+ offset += PAGE_SIZE$35;
1614
+ shouldContinue = nodes.length === PAGE_SIZE$35;
1615
1615
  } while (shouldContinue);
1616
1616
  return preferenceTopics.sort((a, b) => `${a.slug}:${a.purpose.trackingType}`.localeCompare(`${b.slug}:${b.purpose.trackingType}`));
1617
1617
  }
@@ -1689,12 +1689,43 @@ async function createPreferenceAccessTokens(client, options) {
1689
1689
  /**
1690
1690
  * New response codec for the query endpoint
1691
1691
  */
1692
- const ConsentPreferenceResponse = t.intersection([t.type({ nodes: t.array(PreferenceQueryResponseItem) }), t.partial({ cursor: t.string })]);
1692
+ const ConsentPreferenceResponse = t.intersection([t.type({ nodes: t.array(PreferenceQueryResponseItem) }), t.partial({
1693
+ /** Cursor for next page (opaque) */
1694
+ cursor: t.string })]);
1693
1695
  //#endregion
1694
1696
  //#region src/preference-management/codecs.ts
1695
1697
  const PurposeRowMapping = t.type({
1698
+ /**
1699
+ * The slug or trackingType of the purpose to map to
1700
+ *
1701
+ * e.g. `Marketing`
1702
+ */
1696
1703
  purpose: t.string,
1704
+ /**
1705
+ * If the column maps to a preference instead of a purpose
1706
+ * this is the slug of the purpose.
1707
+ *
1708
+ * null value indicates that this column maps to the true/false
1709
+ * value of the purpose
1710
+ */
1697
1711
  preference: t.union([t.string, t.null]),
1712
+ /**
1713
+ * The mapping between each row value and purpose/preference value.
1714
+ *
1715
+ * e.g. for a boolean preference or purpose
1716
+ * {
1717
+ * 'true': true,
1718
+ * 'false': false,
1719
+ * '': true,
1720
+ * }
1721
+ *
1722
+ * or for a single or multi select preference
1723
+ * {
1724
+ * '': true,
1725
+ * 'value1': 'Value1',
1726
+ * 'value2': 'Value2',
1727
+ * }
1728
+ */
1698
1729
  valueMapping: t.record(t.string, t.union([
1699
1730
  t.string,
1700
1731
  t.boolean,
@@ -1709,7 +1740,9 @@ const PurposeRowMapping = t.type({
1709
1740
  */
1710
1741
  const ColumnPurposeMap = t.record(t.string, PurposeRowMapping);
1711
1742
  const IdentifierMetadataForPreference = t.type({
1743
+ /** The identifier name */
1712
1744
  name: t.string,
1745
+ /** Is unique on preference store */
1713
1746
  isUniqueOnPreferenceStore: t.boolean
1714
1747
  });
1715
1748
  /**
@@ -1718,20 +1751,41 @@ const IdentifierMetadataForPreference = t.type({
1718
1751
  */
1719
1752
  const ColumnIdentifierMap = t.record(t.string, IdentifierMetadataForPreference);
1720
1753
  /** Mapping of a CSV column to a metadata key in the preference store. */
1721
- const MetadataMapping = t.type({ key: t.string });
1754
+ const MetadataMapping = t.type({
1755
+ /** The metadata key name in the preference store */
1756
+ key: t.string });
1722
1757
  /** Record mapping CSV column names to metadata keys. */
1723
1758
  const ColumnMetadataMap = t.record(t.string, MetadataMapping);
1724
1759
  const FileMetadataState = t.intersection([t.type({
1760
+ /**
1761
+ * Definition of how to map each column in the CSV to
1762
+ * the relevant purpose and preference definitions in transcend
1763
+ */
1725
1764
  columnToPurposeName: t.record(t.string, PurposeRowMapping),
1765
+ /** Last time the file was last parsed at */
1726
1766
  lastFetchedAt: t.string,
1767
+ /**
1768
+ * Mapping of userId to the rows in the file that need to be uploaded
1769
+ * These uploads are overwriting non-existent preferences and are safe
1770
+ */
1727
1771
  pendingSafeUpdates: t.record(t.string, t.record(t.string, t.string)),
1772
+ /**
1773
+ * Mapping of userId to the rows in the file that need to be uploaded
1774
+ * these records have conflicts with existing consent preferences
1775
+ */
1728
1776
  pendingConflictUpdates: t.record(t.string, t.type({
1729
1777
  record: PreferenceQueryResponseItem,
1730
1778
  row: t.record(t.string, t.string)
1731
1779
  })),
1780
+ /**
1781
+ * Mapping of userId to the rows in the file that can be skipped because
1782
+ * their preferences are already in the store
1783
+ */
1732
1784
  skippedUpdates: t.record(t.string, t.record(t.string, t.string))
1733
1785
  }), t.partial({
1786
+ /** Determine which column name in file maps to consent record identifier to upload on */
1734
1787
  identifierColumn: t.string,
1788
+ /** Determine which column name in file maps to the timestamp */
1735
1789
  timestampColum: t.string
1736
1790
  })]);
1737
1791
  /**
@@ -1741,12 +1795,18 @@ const FileMetadataState = t.intersection([t.type({
1741
1795
  * describes how columns map to identifiers, purposes, timestamps, and metadata.
1742
1796
  */
1743
1797
  const FileFormatState = t.intersection([t.type({
1798
+ /** Maps each CSV column to its purpose/preference definition in Transcend */
1744
1799
  columnToPurposeName: ColumnPurposeMap,
1800
+ /** ISO 8601 timestamp of when this config was last generated or refreshed */
1745
1801
  lastFetchedAt: t.string,
1802
+ /** Maps each CSV column to the identifier it represents (e.g. email, userId) */
1746
1803
  columnToIdentifier: ColumnIdentifierMap
1747
1804
  }), t.partial({
1805
+ /** CSV column whose values contain the consent timestamp */
1748
1806
  timestampColumn: t.string,
1807
+ /** Maps CSV columns to metadata keys stored alongside the preference record */
1749
1808
  columnToMetadata: ColumnMetadataMap,
1809
+ /** CSV columns that should be skipped during upload */
1750
1810
  columnsToIgnore: t.array(t.string)
1751
1811
  })]);
1752
1812
  /**
@@ -1768,8 +1828,11 @@ const PendingSafePreferenceUpdates = t.record(t.string, t.union([t.boolean, t.re
1768
1828
  * These are the updates that failed to be uploaded to the API.
1769
1829
  */
1770
1830
  const FailingPreferenceUpdates = t.record(t.string, t.type({
1831
+ /** Time upload ran at */
1771
1832
  uploadedAt: t.string,
1833
+ /** Attempts to upload that resulted in an error */
1772
1834
  error: t.string,
1835
+ /** The update body */
1773
1836
  update: PreferenceUpdateItem
1774
1837
  }));
1775
1838
  /**
@@ -1779,7 +1842,9 @@ const FailingPreferenceUpdates = t.record(t.string, t.type({
1779
1842
  * The value is the row in the file that is pending upload.
1780
1843
  */
1781
1844
  const PendingWithConflictPreferenceUpdates = t.record(t.string, t.type({
1845
+ /** Record to be inserted to transcend v1/preferences API */
1782
1846
  record: PreferenceQueryResponseItem,
1847
+ /** The row in the file that is pending upload */
1783
1848
  row: t.record(t.string, t.string)
1784
1849
  }));
1785
1850
  /**
@@ -1793,37 +1858,74 @@ const PendingWithConflictPreferenceUpdates = t.record(t.string, t.type({
1793
1858
  const SkippedPreferenceUpdates = t.record(t.string, t.record(t.string, t.string));
1794
1859
  /** Persist this data between runs of the script */
1795
1860
  const PreferenceState = t.type({
1861
+ /**
1862
+ * Store a cache of previous files read in
1863
+ */
1796
1864
  fileMetadata: t.record(t.string, FileMetadataState),
1865
+ /**
1866
+ * The set of successful uploads to Transcend
1867
+ * Mapping from userId to the upload metadata
1868
+ */
1797
1869
  failingUpdates: t.record(t.string, t.type({
1870
+ /** Time upload ran at */
1798
1871
  uploadedAt: t.string,
1872
+ /** Attempts to upload that resulted in an error */
1799
1873
  error: t.string,
1874
+ /** The update body */
1800
1875
  update: PreferenceUpdateItem
1801
1876
  })),
1877
+ /**
1878
+ * The set of pending uploads to Transcend
1879
+ * Mapping from userId to the upload metadata
1880
+ */
1802
1881
  pendingUpdates: t.record(t.string, PreferenceUpdateItem)
1803
1882
  });
1804
1883
  const RequestUploadReceipts = t.type({
1884
+ /** ISO 8601 timestamp of when the receipt file was last written */
1805
1885
  lastFetchedAt: t.string,
1886
+ /** Updates that can be applied without conflicting with existing preferences */
1806
1887
  pendingSafeUpdates: PendingSafePreferenceUpdates,
1888
+ /** Updates that conflict with existing preference values and need review */
1807
1889
  pendingConflictUpdates: PendingWithConflictPreferenceUpdates,
1890
+ /** Rows skipped because their preferences already match the store */
1808
1891
  skippedUpdates: SkippedPreferenceUpdates,
1892
+ /** Updates that were attempted but failed with an API error */
1809
1893
  failingUpdates: FailingPreferenceUpdates,
1894
+ /** Updates still queued to be sent to the API */
1810
1895
  pendingUpdates: PreferenceUpdateMap,
1896
+ /** Updates that have been successfully written to the preference store */
1811
1897
  successfulUpdates: PreferenceUpdateMap
1812
1898
  });
1813
- const DeletePreferenceRecordsInput = t.type({ records: t.array(t.type({
1899
+ const DeletePreferenceRecordsInput = t.type({
1900
+ /** Array of consent preference records to delete */
1901
+ records: t.array(t.type({
1902
+ /** The anchor identifier to locate the consent record */
1814
1903
  anchorIdentifier: PreferenceStoreIdentifier,
1904
+ /** The ISO 8601 timestamp of when the deletion is requested */
1815
1905
  timestamp: t.string
1816
1906
  })) });
1817
1907
  const DeletePreferenceRecordsResponse = t.intersection([t.type({
1818
- records: t.array(t.intersection([t.type({ success: t.boolean }), t.partial({ errorMessage: t.string })])),
1908
+ /** Array of results for each preference record deletion */
1909
+ records: t.array(t.intersection([t.type({
1910
+ /** Whether the deletion was successful */
1911
+ success: t.boolean }), t.partial({
1912
+ /** An error message if the deletion failed */
1913
+ errorMessage: t.string })])),
1914
+ /** The list of failed deletions with their respective errors */
1819
1915
  failures: t.array(t.type({
1916
+ /** The index of the failed update in the original request */
1820
1917
  index: t.number,
1918
+ /** The error message associated with the failure */
1821
1919
  error: t.string
1822
1920
  }))
1823
- }), t.partial({ errors: t.array(t.string) })]);
1921
+ }), t.partial({
1922
+ /** Any general errors that occurred during the operation */
1923
+ errors: t.array(t.string) })]);
1824
1924
  /** CLI CSV Row for deleting preference records */
1825
1925
  const DeletePreferenceRecordCliCsvRow = t.type({
1926
+ /** The name of the identifier type (e.g., email, userId) */
1826
1927
  name: t.string,
1928
+ /** The value of the identifier */
1827
1929
  value: t.string
1828
1930
  });
1829
1931
  //#endregion
@@ -2696,7 +2798,7 @@ const SET_RESOURCE_ATTRIBUTES = gql`
2696
2798
  `;
2697
2799
  //#endregion
2698
2800
  //#region src/administration/fetchAllAttributes.ts
2699
- const PAGE_SIZE$32 = 100;
2801
+ const PAGE_SIZE$34 = 100;
2700
2802
  /**
2701
2803
  * Fetch all attribute values for an attribute key
2702
2804
  *
@@ -2712,15 +2814,15 @@ async function fetchAllAttributeValues(client, options) {
2712
2814
  do {
2713
2815
  const { attributeValues: { nodes } } = await makeGraphQLRequest(client, ATTRIBUTE_VALUES, {
2714
2816
  variables: {
2715
- first: PAGE_SIZE$32,
2817
+ first: PAGE_SIZE$34,
2716
2818
  offset,
2717
2819
  attributeKeyId
2718
2820
  },
2719
2821
  logger
2720
2822
  });
2721
2823
  attributeValues.push(...nodes);
2722
- offset += PAGE_SIZE$32;
2723
- shouldContinue = nodes.length === PAGE_SIZE$32;
2824
+ offset += PAGE_SIZE$34;
2825
+ shouldContinue = nodes.length === PAGE_SIZE$34;
2724
2826
  } while (shouldContinue);
2725
2827
  return attributeValues.sort((a, b) => a.name.localeCompare(b.name));
2726
2828
  }
@@ -2739,7 +2841,7 @@ async function fetchAllAttributes(client, options = {}) {
2739
2841
  do {
2740
2842
  const { attributeKeys: { nodes } } = await makeGraphQLRequest(client, ATTRIBUTES, {
2741
2843
  variables: {
2742
- first: PAGE_SIZE$32,
2844
+ first: PAGE_SIZE$34,
2743
2845
  offset
2744
2846
  },
2745
2847
  logger
@@ -2751,8 +2853,8 @@ async function fetchAllAttributes(client, options = {}) {
2751
2853
  filterBy: { attributeKeyId: node.id }
2752
2854
  }) : []
2753
2855
  }))));
2754
- offset += PAGE_SIZE$32;
2755
- shouldContinue = nodes.length === PAGE_SIZE$32;
2856
+ offset += PAGE_SIZE$34;
2857
+ shouldContinue = nodes.length === PAGE_SIZE$34;
2756
2858
  } while (shouldContinue);
2757
2859
  return attributes.sort((a, b) => a.name.localeCompare(b.name));
2758
2860
  }
@@ -2869,7 +2971,7 @@ const UPDATE_TEAM = gql`
2869
2971
  `;
2870
2972
  //#endregion
2871
2973
  //#region src/administration/fetchAllTeams.ts
2872
- const PAGE_SIZE$31 = 20;
2974
+ const PAGE_SIZE$33 = 20;
2873
2975
  /**
2874
2976
  * Fetch all teams in the organization
2875
2977
  *
@@ -2885,20 +2987,20 @@ async function fetchAllTeams(client, options = {}) {
2885
2987
  do {
2886
2988
  const { teams: { nodes } } = await makeGraphQLRequest(client, TEAMS, {
2887
2989
  variables: {
2888
- first: PAGE_SIZE$31,
2990
+ first: PAGE_SIZE$33,
2889
2991
  offset
2890
2992
  },
2891
2993
  logger
2892
2994
  });
2893
2995
  teams.push(...nodes);
2894
- offset += PAGE_SIZE$31;
2895
- shouldContinue = nodes.length === PAGE_SIZE$31;
2996
+ offset += PAGE_SIZE$33;
2997
+ shouldContinue = nodes.length === PAGE_SIZE$33;
2896
2998
  } while (shouldContinue);
2897
2999
  return teams.sort((a, b) => a.name.localeCompare(b.name));
2898
3000
  }
2899
3001
  //#endregion
2900
3002
  //#region src/administration/fetchParentOrganizationTeams.ts
2901
- const PAGE_SIZE$30 = 20;
3003
+ const PAGE_SIZE$32 = 20;
2902
3004
  /**
2903
3005
  * Fetch teams from the parent organization that can be linked to child-org teams
2904
3006
  *
@@ -2914,15 +3016,15 @@ async function fetchParentOrganizationTeams(client, options = {}) {
2914
3016
  do {
2915
3017
  const { parentOrganizationTeams: { nodes } } = await makeGraphQLRequest(client, PARENT_ORGANIZATION_TEAMS, {
2916
3018
  variables: {
2917
- first: PAGE_SIZE$30,
3019
+ first: PAGE_SIZE$32,
2918
3020
  offset,
2919
3021
  filterBy
2920
3022
  },
2921
3023
  logger
2922
3024
  });
2923
3025
  teams.push(...nodes);
2924
- offset += PAGE_SIZE$30;
2925
- shouldContinue = nodes.length === PAGE_SIZE$30;
3026
+ offset += PAGE_SIZE$32;
3027
+ shouldContinue = nodes.length === PAGE_SIZE$32;
2926
3028
  } while (shouldContinue);
2927
3029
  return teams.sort((a, b) => a.name.localeCompare(b.name));
2928
3030
  }
@@ -2968,7 +3070,7 @@ const USERS = gql`
2968
3070
  `;
2969
3071
  //#endregion
2970
3072
  //#region src/administration/fetchAllUsers.ts
2971
- const PAGE_SIZE$29 = 20;
3073
+ const PAGE_SIZE$31 = 20;
2972
3074
  /**
2973
3075
  * Fetch all users in the organization
2974
3076
  *
@@ -2984,14 +3086,14 @@ async function fetchAllUsers(client, options = {}) {
2984
3086
  do {
2985
3087
  const { users: { nodes } } = await makeGraphQLRequest(client, USERS, {
2986
3088
  variables: {
2987
- first: PAGE_SIZE$29,
3089
+ first: PAGE_SIZE$31,
2988
3090
  offset
2989
3091
  },
2990
3092
  logger
2991
3093
  });
2992
3094
  users.push(...nodes);
2993
- offset += PAGE_SIZE$29;
2994
- shouldContinue = nodes.length === PAGE_SIZE$29;
3095
+ offset += PAGE_SIZE$31;
3096
+ shouldContinue = nodes.length === PAGE_SIZE$31;
2995
3097
  } while (shouldContinue);
2996
3098
  return users.sort((a, b) => a.email.localeCompare(b.email));
2997
3099
  }
@@ -3033,7 +3135,7 @@ const DELETE_API_KEY = gql`
3033
3135
  `;
3034
3136
  //#endregion
3035
3137
  //#region src/administration/fetchApiKeys.ts
3036
- const PAGE_SIZE$28 = 20;
3138
+ const PAGE_SIZE$30 = 20;
3037
3139
  const ADMIN_LINK = "https://app.transcend.io/infrastructure/api-keys";
3038
3140
  /**
3039
3141
  * Fetch all API keys in an organization
@@ -3050,15 +3152,15 @@ async function fetchAllApiKeys(client, options = {}) {
3050
3152
  do {
3051
3153
  const { apiKeys: { nodes } } = await makeGraphQLRequest(client, API_KEYS, {
3052
3154
  variables: {
3053
- first: PAGE_SIZE$28,
3155
+ first: PAGE_SIZE$30,
3054
3156
  offset,
3055
3157
  titles
3056
3158
  },
3057
3159
  logger
3058
3160
  });
3059
3161
  apiKeys.push(...nodes);
3060
- offset += PAGE_SIZE$28;
3061
- shouldContinue = nodes.length === PAGE_SIZE$28;
3162
+ offset += PAGE_SIZE$30;
3163
+ shouldContinue = nodes.length === PAGE_SIZE$30;
3062
3164
  } while (shouldContinue);
3063
3165
  return apiKeys.sort((a, b) => a.title.localeCompare(b.title));
3064
3166
  }
@@ -3643,6 +3745,264 @@ const UPDATE_CONSENT_MANAGER_THEME = gql`
3643
3745
  }
3644
3746
  }
3645
3747
  `;
3748
+ const FETCH_CONSENT_UI_VARIANTS = gql`
3749
+ query TranscendCliConsentUiVariants($airgapBundleId: ID!, $first: Int!, $offset: Int!) {
3750
+ consentUiVariants(input: { airgapBundleId: $airgapBundleId }, first: $first, offset: $offset) {
3751
+ totalCount
3752
+ nodes {
3753
+ id
3754
+ name
3755
+ slug
3756
+ description
3757
+ status
3758
+ locales
3759
+ configuration {
3760
+ firstLayerConfig {
3761
+ showCloseButton
3762
+ alphaMask
3763
+ footer {
3764
+ showTranscendBadge
3765
+ showGpcDetected
3766
+ showLocalePicker
3767
+ }
3768
+ links
3769
+ buttons {
3770
+ type
3771
+ action
3772
+ }
3773
+ showHeader
3774
+ }
3775
+ secondLayerConfig {
3776
+ showCloseButton
3777
+ alphaMask
3778
+ footer {
3779
+ showTranscendBadge
3780
+ showGpcDetected
3781
+ showLocalePicker
3782
+ }
3783
+ links
3784
+ buttons {
3785
+ type
3786
+ action
3787
+ }
3788
+ showBulkActions
3789
+ closeAfterBulkAction
3790
+ showPurposeDescriptions
3791
+ showToggleText
3792
+ showToggleIcon
3793
+ }
3794
+ defaultLocale
3795
+ }
3796
+ theme {
3797
+ id
3798
+ slug
3799
+ }
3800
+ userFlow
3801
+ }
3802
+ }
3803
+ }
3804
+ `;
3805
+ const FETCH_CONSENT_UI_THEMES = gql`
3806
+ query TranscendCliConsentUiThemes($airgapBundleId: ID!, $first: Int!, $offset: Int!) {
3807
+ consentUiThemes(input: { airgapBundleId: $airgapBundleId }, first: $first, offset: $offset) {
3808
+ totalCount
3809
+ nodes {
3810
+ id
3811
+ name
3812
+ slug
3813
+ configuration {
3814
+ buttonThemes {
3815
+ backgroundColor
3816
+ backgroundHoverColor
3817
+ textColor
3818
+ textHoverColor
3819
+ borderRadius
3820
+ borderColor
3821
+ borderHoverColor
3822
+ linkColor
3823
+ linkHoverColor
3824
+ linkUnderline
3825
+ }
3826
+ firstLayer {
3827
+ alwaysShowScrollbar
3828
+ background {
3829
+ backgroundColor
3830
+ }
3831
+ buttons
3832
+ closeButton {
3833
+ backgroundColor
3834
+ backgroundHoverColor
3835
+ borderRadius
3836
+ borderColor
3837
+ borderHoverColor
3838
+ iconColor
3839
+ iconHoverColor
3840
+ }
3841
+ container {
3842
+ backgroundColor
3843
+ borderRadius
3844
+ borderColor
3845
+ }
3846
+ contentFlow
3847
+ contentLayout {
3848
+ breakpoint {
3849
+ value
3850
+ unit
3851
+ }
3852
+ maxWidths {
3853
+ flow
3854
+ width
3855
+ }
3856
+ fullWidth
3857
+ }
3858
+ cookieAndPrivacyPolicy {
3859
+ linkColor
3860
+ linkUnderline
3861
+ }
3862
+ poweredByTranscend {
3863
+ linkColor
3864
+ }
3865
+ description {
3866
+ textColor
3867
+ linkColor
3868
+ linkUnderline
3869
+ }
3870
+ footer {
3871
+ backgroundColor
3872
+ localePickerColor
3873
+ }
3874
+ header {
3875
+ textColor
3876
+ logoPosition
3877
+ logoImageUrl
3878
+ }
3879
+ horizontalAlign
3880
+ verticalAlign
3881
+ }
3882
+ secondLayer {
3883
+ alwaysOnText {
3884
+ textColor
3885
+ }
3886
+ alwaysShowScrollbar
3887
+ background {
3888
+ backgroundColor
3889
+ }
3890
+ bulkActionButtons
3891
+ buttons
3892
+ cardTitle {
3893
+ textColor
3894
+ }
3895
+ caretIcon {
3896
+ iconColor
3897
+ }
3898
+ closeButton {
3899
+ backgroundColor
3900
+ backgroundHoverColor
3901
+ borderColor
3902
+ borderHoverColor
3903
+ borderRadius
3904
+ iconColor
3905
+ iconHoverColor
3906
+ }
3907
+ container {
3908
+ backgroundColor
3909
+ borderRadius
3910
+ borderColor
3911
+ }
3912
+ cookieAndPrivacyPolicy {
3913
+ linkColor
3914
+ linkUnderline
3915
+ }
3916
+ poweredByTranscend {
3917
+ linkColor
3918
+ }
3919
+ description {
3920
+ textColor
3921
+ linkColor
3922
+ linkUnderline
3923
+ }
3924
+ footer {
3925
+ backgroundColor
3926
+ localePickerColor
3927
+ }
3928
+ header {
3929
+ logoImageUrl
3930
+ logoPosition
3931
+ textColor
3932
+ }
3933
+ horizontalAlign
3934
+ lockToEdges
3935
+ maxWidth
3936
+ modalSubtitle {
3937
+ textColor
3938
+ }
3939
+ modalTitle {
3940
+ textColor
3941
+ }
3942
+ purposeCard {
3943
+ backgroundColor
3944
+ borderRadius
3945
+ borderColor
3946
+ }
3947
+ purposeDescription {
3948
+ textColor
3949
+ linkColor
3950
+ linkUnderline
3951
+ }
3952
+ purposeListTitle {
3953
+ textColor
3954
+ }
3955
+ shrinkToFullWidth
3956
+ toggle {
3957
+ textColor
3958
+ iconColor
3959
+ enabledColor
3960
+ disabledColor
3961
+ knobColor
3962
+ }
3963
+ }
3964
+ }
3965
+ }
3966
+ }
3967
+ }
3968
+ `;
3969
+ const CREATE_CONSENT_UI_VARIANT = gql`
3970
+ mutation TranscendCliCreateConsentUiVariant($input: CreateConsentUiVariantInput!) {
3971
+ createConsentUiVariant(input: $input) {
3972
+ consentUiVariant {
3973
+ id
3974
+ }
3975
+ }
3976
+ }
3977
+ `;
3978
+ const UPDATE_CONSENT_UI_VARIANT = gql`
3979
+ mutation TranscendCliUpdateConsentUiVariant($input: UpdateConsentUiVariantInput!) {
3980
+ updateConsentUiVariant(input: $input) {
3981
+ consentUiVariant {
3982
+ id
3983
+ }
3984
+ }
3985
+ }
3986
+ `;
3987
+ const CREATE_CONSENT_UI_THEME = gql`
3988
+ mutation TranscendCliCreateConsentUiTheme($input: CreateConsentUiThemeInput!) {
3989
+ createConsentUiTheme(input: $input) {
3990
+ consentUiTheme {
3991
+ id
3992
+ name
3993
+ }
3994
+ }
3995
+ }
3996
+ `;
3997
+ const UPDATE_CONSENT_UI_THEME = gql`
3998
+ mutation TranscendCliUpdateConsentUiTheme($input: UpdateConsentUiThemeInput!) {
3999
+ updateConsentUiTheme(input: $input) {
4000
+ consentUiTheme {
4001
+ id
4002
+ }
4003
+ }
4004
+ }
4005
+ `;
3646
4006
  //#endregion
3647
4007
  //#region src/consent/deployConsentManager.ts
3648
4008
  /**
@@ -3678,81 +4038,8 @@ async function updateConsentManagerToLatest(client, options) {
3678
4038
  });
3679
4039
  }
3680
4040
  //#endregion
3681
- //#region src/consent/gqls/consentManagerMetrics.ts
3682
- const CONSENT_MANAGER_ANALYTICS_DATA = gql`
3683
- query TranscendCliConsentManagerAnalyticsData($input: AnalyticsInput!) {
3684
- analyticsData(input: $input) {
3685
- series {
3686
- name
3687
- points {
3688
- key
3689
- value
3690
- }
3691
- }
3692
- }
3693
- }
3694
- `;
3695
- //#endregion
3696
- //#region src/consent/gqls/experiences.ts
3697
- const EXPERIENCES = gql`
3698
- query TranscendCliExperiences($first: Int!, $offset: Int!) {
3699
- experiences(first: $first, offset: $offset, useMaster: false) {
3700
- totalCount
3701
- nodes {
3702
- id
3703
- name
3704
- displayName
3705
- regions {
3706
- countrySubDivision
3707
- country
3708
- }
3709
- operator
3710
- displayPriority
3711
- onConsentExpiry
3712
- consentExpiry
3713
- viewState
3714
- purposes {
3715
- name
3716
- trackingType
3717
- }
3718
- optedOutPurposes {
3719
- name
3720
- trackingType
3721
- }
3722
- browserLanguages
3723
- browserTimeZones
3724
- }
3725
- }
3726
- }
3727
- `;
3728
- const UPDATE_CONSENT_EXPERIENCE = gql`
3729
- mutation TranscendCliUpdateConsentExperience($input: UpdateExperienceInput!) {
3730
- updateExperience(input: $input) {
3731
- clientMutationId
3732
- }
3733
- }
3734
- `;
3735
- const CREATE_CONSENT_EXPERIENCE = gql`
3736
- mutation TranscendCliCreateConsentExperience($input: CreateExperienceInput!) {
3737
- createExperience(input: $input) {
3738
- clientMutationId
3739
- }
3740
- }
3741
- `;
3742
- //#endregion
3743
4041
  //#region src/consent/fetchConsentManagerId.ts
3744
4042
  /**
3745
- * Fetch consent manager
3746
- *
3747
- * @param client - GraphQL client
3748
- * @param options - Options
3749
- * @returns Consent manager ID in organization
3750
- */
3751
- async function fetchConsentManager(client, options = {}) {
3752
- const { consentManager: { consentManager } } = await makeGraphQLRequest(client, FETCH_CONSENT_MANAGER, { logger: options.logger });
3753
- return consentManager;
3754
- }
3755
- /**
3756
4043
  * Fetch consent manager ID
3757
4044
  *
3758
4045
  * @param client - GraphQL client
@@ -3766,62 +4053,6 @@ async function fetchConsentManagerId(client, options = {}) {
3766
4053
  });
3767
4054
  return consentManager.id;
3768
4055
  }
3769
- const PAGE_SIZE$27 = 50;
3770
- /**
3771
- * Fetch consent manager experiences
3772
- *
3773
- * @param client - GraphQL client
3774
- * @param options - Options
3775
- * @returns Consent manager experiences in the organization
3776
- */
3777
- async function fetchConsentManagerExperiences(client, options = {}) {
3778
- const experiences = [];
3779
- let offset = 0;
3780
- let shouldContinue = false;
3781
- do {
3782
- const { experiences: { nodes } } = await makeGraphQLRequest(client, EXPERIENCES, {
3783
- variables: {
3784
- first: PAGE_SIZE$27,
3785
- offset
3786
- },
3787
- logger: options.logger
3788
- });
3789
- experiences.push(...nodes);
3790
- offset += PAGE_SIZE$27;
3791
- shouldContinue = nodes.length === PAGE_SIZE$27;
3792
- } while (shouldContinue);
3793
- return experiences.sort((a, b) => a.name.localeCompare(b.name));
3794
- }
3795
- /**
3796
- * Fetch consent manager analytics data
3797
- *
3798
- * @param client - GraphQL client
3799
- * @param input - Input for fetching data
3800
- * @param options - Options
3801
- * @returns Consent manager purposes in the organization
3802
- */
3803
- async function fetchConsentManagerAnalyticsData(client, input, options = {}) {
3804
- const { analyticsData: { series } } = await makeGraphQLRequest(client, CONSENT_MANAGER_ANALYTICS_DATA, {
3805
- variables: { input },
3806
- logger: options.logger
3807
- });
3808
- return series;
3809
- }
3810
- /**
3811
- * Fetch consent manager theme
3812
- *
3813
- * @param client - GraphQL client
3814
- * @param airgapBundleId - Airgap bundle ID to fetch for
3815
- * @param options - Options
3816
- * @returns Consent manager ID in organization
3817
- */
3818
- async function fetchConsentManagerTheme(client, options) {
3819
- const { consentManagerTheme: { theme } } = await makeGraphQLRequest(client, FETCH_CONSENT_MANAGER_THEME, {
3820
- variables: { airgapBundleId: options.filterBy.airgapBundleId },
3821
- logger: options.logger
3822
- });
3823
- return theme;
3824
- }
3825
4056
  //#endregion
3826
4057
  //#region src/consent/gqls/shared.ts
3827
4058
  /** Service fields shared by cookies and data flows */
@@ -3904,7 +4135,7 @@ const DELETE_COOKIES = gql`
3904
4135
  `;
3905
4136
  //#endregion
3906
4137
  //#region src/consent/fetchAllCookies.ts
3907
- const PAGE_SIZE$26 = 20;
4138
+ const PAGE_SIZE$29 = 20;
3908
4139
  const DEFAULT_COOKIE_ORDER = [{
3909
4140
  field: "createdAt",
3910
4141
  direction: OrderDirection.Asc
@@ -3929,7 +4160,7 @@ async function fetchAllCookies(client, options = {}) {
3929
4160
  const { cookies: { nodes } } = await makeGraphQLRequest(client, COOKIES, {
3930
4161
  variables: {
3931
4162
  input: { airgapBundleId },
3932
- first: PAGE_SIZE$26,
4163
+ first: PAGE_SIZE$29,
3933
4164
  offset,
3934
4165
  filterBy: { status },
3935
4166
  orderBy
@@ -3937,8 +4168,8 @@ async function fetchAllCookies(client, options = {}) {
3937
4168
  logger
3938
4169
  });
3939
4170
  cookies.push(...nodes);
3940
- offset += PAGE_SIZE$26;
3941
- shouldContinue = nodes.length === PAGE_SIZE$26;
4171
+ offset += PAGE_SIZE$29;
4172
+ shouldContinue = nodes.length === PAGE_SIZE$29;
3942
4173
  } while (shouldContinue);
3943
4174
  return cookies.sort((a, b) => a.name.localeCompare(b.name));
3944
4175
  }
@@ -4050,7 +4281,7 @@ const DELETE_DATA_FLOWS = gql`
4050
4281
  `;
4051
4282
  //#endregion
4052
4283
  //#region src/consent/fetchAllDataFlows.ts
4053
- const PAGE_SIZE$25 = 20;
4284
+ const PAGE_SIZE$28 = 20;
4054
4285
  const DEFAULT_DATA_FLOW_ORDER = [{
4055
4286
  field: "createdAt",
4056
4287
  direction: OrderDirection.Asc
@@ -4075,7 +4306,7 @@ async function fetchAllDataFlows(client, options = {}) {
4075
4306
  const { dataFlows: { nodes } } = await makeGraphQLRequest(client, DATA_FLOWS, {
4076
4307
  variables: {
4077
4308
  input: { airgapBundleId },
4078
- first: PAGE_SIZE$25,
4309
+ first: PAGE_SIZE$28,
4079
4310
  offset,
4080
4311
  filterBy: {
4081
4312
  status,
@@ -4086,8 +4317,8 @@ async function fetchAllDataFlows(client, options = {}) {
4086
4317
  logger
4087
4318
  });
4088
4319
  dataFlows.push(...nodes);
4089
- offset += PAGE_SIZE$25;
4090
- shouldContinue = nodes.length === PAGE_SIZE$25;
4320
+ offset += PAGE_SIZE$28;
4321
+ shouldContinue = nodes.length === PAGE_SIZE$28;
4091
4322
  } while (shouldContinue);
4092
4323
  return dataFlows.sort((a, b) => a.value.localeCompare(b.value));
4093
4324
  }
@@ -4291,7 +4522,7 @@ const UPDATE_PROCESSING_PURPOSE_SUB_CATEGORIES = gql`
4291
4522
  `;
4292
4523
  //#endregion
4293
4524
  //#region src/consent/fetchAllProcessingPurposes.ts
4294
- const PAGE_SIZE$24 = 20;
4525
+ const PAGE_SIZE$27 = 20;
4295
4526
  /**
4296
4527
  * Fetch all processingPurposeSubCategories in the organization
4297
4528
  *
@@ -4306,16 +4537,216 @@ async function fetchAllProcessingPurposes(client, options = {}) {
4306
4537
  do {
4307
4538
  const { processingPurposeSubCategories: { nodes } } = await makeGraphQLRequest(client, PROCESSING_PURPOSE_SUB_CATEGORIES, {
4308
4539
  variables: {
4309
- first: PAGE_SIZE$24,
4540
+ first: PAGE_SIZE$27,
4310
4541
  offset
4311
4542
  },
4312
4543
  logger: options.logger
4313
4544
  });
4314
4545
  processingPurposeSubCategories.push(...nodes);
4546
+ offset += PAGE_SIZE$27;
4547
+ shouldContinue = nodes.length === PAGE_SIZE$27;
4548
+ } while (shouldContinue);
4549
+ return processingPurposeSubCategories.sort((a, b) => a.name.localeCompare(b.name));
4550
+ }
4551
+ //#endregion
4552
+ //#region src/consent/fetchConsentManager.ts
4553
+ /**
4554
+ * Fetch consent manager
4555
+ *
4556
+ * @param client - GraphQL client
4557
+ * @param options - Options
4558
+ * @returns Consent manager ID in organization
4559
+ */
4560
+ async function fetchConsentManager(client, options = {}) {
4561
+ const { consentManager: { consentManager } } = await makeGraphQLRequest(client, FETCH_CONSENT_MANAGER, { logger: options.logger });
4562
+ return consentManager;
4563
+ }
4564
+ //#endregion
4565
+ //#region src/consent/gqls/consentManagerMetrics.ts
4566
+ const CONSENT_MANAGER_ANALYTICS_DATA = gql`
4567
+ query TranscendCliConsentManagerAnalyticsData($input: AnalyticsInput!) {
4568
+ analyticsData(input: $input) {
4569
+ series {
4570
+ name
4571
+ points {
4572
+ key
4573
+ value
4574
+ }
4575
+ }
4576
+ }
4577
+ }
4578
+ `;
4579
+ //#endregion
4580
+ //#region src/consent/fetchConsentManagerAnalyticsData.ts
4581
+ /**
4582
+ * Fetch consent manager analytics data
4583
+ *
4584
+ * @param client - GraphQL client
4585
+ * @param input - Input for fetching data
4586
+ * @param options - Options
4587
+ * @returns Consent manager purposes in the organization
4588
+ */
4589
+ async function fetchConsentManagerAnalyticsData(client, input, options = {}) {
4590
+ const { analyticsData: { series } } = await makeGraphQLRequest(client, CONSENT_MANAGER_ANALYTICS_DATA, {
4591
+ variables: { input },
4592
+ logger: options.logger
4593
+ });
4594
+ return series;
4595
+ }
4596
+ //#endregion
4597
+ //#region src/consent/gqls/experiences.ts
4598
+ const EXPERIENCES = gql`
4599
+ query TranscendCliExperiences($first: Int!, $offset: Int!) {
4600
+ experiences(first: $first, offset: $offset, useMaster: false) {
4601
+ totalCount
4602
+ nodes {
4603
+ id
4604
+ name
4605
+ displayName
4606
+ regions {
4607
+ countrySubDivision
4608
+ country
4609
+ }
4610
+ operator
4611
+ displayPriority
4612
+ onConsentExpiry
4613
+ consentExpiry
4614
+ viewState
4615
+ purposes {
4616
+ name
4617
+ trackingType
4618
+ }
4619
+ optedOutPurposes {
4620
+ name
4621
+ trackingType
4622
+ }
4623
+ browserLanguages
4624
+ browserTimeZones
4625
+ consentUiVariant {
4626
+ id
4627
+ slug
4628
+ }
4629
+ }
4630
+ }
4631
+ }
4632
+ `;
4633
+ const UPDATE_CONSENT_EXPERIENCE = gql`
4634
+ mutation TranscendCliUpdateConsentExperience($input: UpdateExperienceInput!) {
4635
+ updateExperience(input: $input) {
4636
+ clientMutationId
4637
+ }
4638
+ }
4639
+ `;
4640
+ const CREATE_CONSENT_EXPERIENCE = gql`
4641
+ mutation TranscendCliCreateConsentExperience($input: CreateExperienceInput!) {
4642
+ createExperience(input: $input) {
4643
+ clientMutationId
4644
+ }
4645
+ }
4646
+ `;
4647
+ //#endregion
4648
+ //#region src/consent/fetchConsentManagerExperiences.ts
4649
+ const PAGE_SIZE$26 = 50;
4650
+ /**
4651
+ * Fetch consent manager experiences
4652
+ *
4653
+ * @param client - GraphQL client
4654
+ * @param options - Options
4655
+ * @returns Consent manager experiences in the organization
4656
+ */
4657
+ async function fetchConsentManagerExperiences(client, options = {}) {
4658
+ const experiences = [];
4659
+ let offset = 0;
4660
+ let shouldContinue = false;
4661
+ do {
4662
+ const { experiences: { nodes } } = await makeGraphQLRequest(client, EXPERIENCES, {
4663
+ variables: {
4664
+ first: PAGE_SIZE$26,
4665
+ offset
4666
+ },
4667
+ logger: options.logger
4668
+ });
4669
+ experiences.push(...nodes);
4670
+ offset += PAGE_SIZE$26;
4671
+ shouldContinue = nodes.length === PAGE_SIZE$26;
4672
+ } while (shouldContinue);
4673
+ return experiences.sort((a, b) => a.name.localeCompare(b.name));
4674
+ }
4675
+ //#endregion
4676
+ //#region src/consent/fetchConsentManagerTheme.ts
4677
+ /**
4678
+ * Fetch consent manager theme
4679
+ *
4680
+ * @param client - GraphQL client
4681
+ * @param options - Options
4682
+ * @returns Consent manager theme
4683
+ */
4684
+ async function fetchConsentManagerTheme(client, options) {
4685
+ const { consentManagerTheme: { theme } } = await makeGraphQLRequest(client, FETCH_CONSENT_MANAGER_THEME, {
4686
+ variables: { airgapBundleId: options.filterBy.airgapBundleId },
4687
+ logger: options.logger
4688
+ });
4689
+ return theme;
4690
+ }
4691
+ //#endregion
4692
+ //#region src/consent/fetchConsentThemes.ts
4693
+ const PAGE_SIZE$25 = 50;
4694
+ /**
4695
+ * Fetch consent themes
4696
+ *
4697
+ * @param client - GraphQL client
4698
+ * @param options - Options
4699
+ * @returns consent UI themes
4700
+ */
4701
+ async function fetchConsentThemes(client, options = {}) {
4702
+ const themes = [];
4703
+ let offset = 0;
4704
+ const airgapBundleId = await fetchConsentManagerId(client, { logger: options.logger });
4705
+ let shouldContinue = false;
4706
+ do {
4707
+ const { consentUiThemes: { nodes } } = await makeGraphQLRequest(client, FETCH_CONSENT_UI_THEMES, {
4708
+ variables: {
4709
+ airgapBundleId,
4710
+ first: PAGE_SIZE$25,
4711
+ offset
4712
+ },
4713
+ logger: options.logger
4714
+ });
4715
+ themes.push(...nodes);
4716
+ offset += PAGE_SIZE$25;
4717
+ shouldContinue = nodes.length === PAGE_SIZE$25;
4718
+ } while (shouldContinue);
4719
+ return themes;
4720
+ }
4721
+ //#endregion
4722
+ //#region src/consent/fetchConsentVariants.ts
4723
+ const PAGE_SIZE$24 = 50;
4724
+ /**
4725
+ * Fetch consent variants
4726
+ *
4727
+ * @param client - GraphQL client
4728
+ * @param options - Options
4729
+ * @returns consent UI variants
4730
+ */
4731
+ async function fetchConsentVariants(client, options = {}) {
4732
+ const variants = [];
4733
+ let offset = 0;
4734
+ const airgapBundleId = await fetchConsentManagerId(client, { logger: options.logger });
4735
+ let shouldContinue = false;
4736
+ do {
4737
+ const { consentUiVariants: { nodes } } = await makeGraphQLRequest(client, FETCH_CONSENT_UI_VARIANTS, {
4738
+ variables: {
4739
+ airgapBundleId,
4740
+ first: PAGE_SIZE$24,
4741
+ offset
4742
+ },
4743
+ logger: options.logger
4744
+ });
4745
+ variants.push(...nodes);
4315
4746
  offset += PAGE_SIZE$24;
4316
4747
  shouldContinue = nodes.length === PAGE_SIZE$24;
4317
4748
  } while (shouldContinue);
4318
- return processingPurposeSubCategories.sort((a, b) => a.name.localeCompare(b.name));
4749
+ return variants;
4319
4750
  }
4320
4751
  //#endregion
4321
4752
  //#region src/consent/gqls/airgapBundleAnalytics.ts
@@ -4474,6 +4905,135 @@ const DATA_FLOW_STATS = gql`
4474
4905
  }
4475
4906
  `;
4476
4907
  //#endregion
4908
+ //#region src/consent/syncConsentUi.ts
4909
+ /**
4910
+ * Parse a JSON configuration string from transcend.yml
4911
+ *
4912
+ * @param configuration - JSON configuration string
4913
+ * @param resourceLabel - Label for error messages
4914
+ * @returns Parsed configuration object
4915
+ */
4916
+ function parseConsentUiConfiguration(configuration, resourceLabel) {
4917
+ try {
4918
+ return JSON.parse(configuration);
4919
+ } catch {
4920
+ throw new Error(`Invalid JSON configuration for ${resourceLabel}`);
4921
+ }
4922
+ }
4923
+ /**
4924
+ * Sync consent UI themes from transcend.yml
4925
+ *
4926
+ * @param client - GraphQL client
4927
+ * @param airgapBundleId - Airgap bundle ID
4928
+ * @param yamlThemes - Theme inputs from transcend.yml
4929
+ * @param options - Options
4930
+ * @returns Synced themes (id + slug) for resolving variant themeSlug assignments
4931
+ */
4932
+ async function syncConsentUiThemes(client, airgapBundleId, yamlThemes, options = {}) {
4933
+ const { logger = NOOP_LOGGER } = options;
4934
+ const remoteThemeBySlug = keyBy(await fetchConsentThemes(client, { logger }), "slug");
4935
+ const syncedThemes = [];
4936
+ await map(yamlThemes, async (yamlTheme, index) => {
4937
+ const resourceLabel = `consentManager.consentThemes[${index}]`;
4938
+ const configuration = parseConsentUiConfiguration(yamlTheme.configuration, resourceLabel);
4939
+ const remoteTheme = remoteThemeBySlug[yamlTheme.slug];
4940
+ if (remoteTheme) {
4941
+ await makeGraphQLRequest(client, UPDATE_CONSENT_UI_THEME, {
4942
+ variables: { input: {
4943
+ id: remoteTheme.id,
4944
+ airgapBundleId,
4945
+ name: yamlTheme.name,
4946
+ configuration
4947
+ } },
4948
+ logger
4949
+ });
4950
+ syncedThemes.push({
4951
+ id: remoteTheme.id,
4952
+ slug: yamlTheme.slug
4953
+ });
4954
+ logger.info(`Successfully synced consent UI theme "${yamlTheme.name}"!`);
4955
+ } else {
4956
+ const result = await makeGraphQLRequest(client, CREATE_CONSENT_UI_THEME, {
4957
+ variables: { input: {
4958
+ airgapBundleId,
4959
+ name: yamlTheme.name,
4960
+ slug: yamlTheme.slug,
4961
+ configuration
4962
+ } },
4963
+ logger
4964
+ });
4965
+ syncedThemes.push({
4966
+ id: result.createConsentUiTheme.consentUiTheme.id,
4967
+ slug: yamlTheme.slug
4968
+ });
4969
+ logger.info(`Successfully created consent UI theme "${yamlTheme.name}"!`);
4970
+ }
4971
+ }, { concurrency: 5 });
4972
+ return syncedThemes;
4973
+ }
4974
+ /**
4975
+ * Sync consent UI variants from transcend.yml
4976
+ *
4977
+ * @param client - GraphQL client
4978
+ * @param airgapBundleId - Airgap bundle ID
4979
+ * @param yamlVariants - Variant inputs from transcend.yml
4980
+ * @param syncedThemes - Themes synced by syncConsentUiThemes, used to resolve themeSlug
4981
+ * @param options - Options
4982
+ * @returns Synced variants (id + slug) for resolving experience consentUiVariantSlug assignments
4983
+ */
4984
+ async function syncConsentUiVariants(client, airgapBundleId, yamlVariants, syncedThemes, options = {}) {
4985
+ const { logger = NOOP_LOGGER } = options;
4986
+ const remoteVariantBySlug = keyBy(await fetchConsentVariants(client, { logger }), "slug");
4987
+ const syncedThemeBySlug = keyBy(syncedThemes, "slug");
4988
+ const syncedVariants = [];
4989
+ await map(yamlVariants, async (yamlVariant, index) => {
4990
+ const resourceLabel = `consentManager.consentVariants[${index}]`;
4991
+ const configuration = parseConsentUiConfiguration(yamlVariant.configuration, resourceLabel);
4992
+ const remoteThemeId = yamlVariant.themeSlug ? syncedThemeBySlug[yamlVariant.themeSlug]?.id : void 0;
4993
+ const remoteVariant = remoteVariantBySlug[yamlVariant.slug];
4994
+ if (remoteVariant) {
4995
+ await makeGraphQLRequest(client, UPDATE_CONSENT_UI_VARIANT, {
4996
+ variables: { input: {
4997
+ id: remoteVariant.id,
4998
+ airgapBundleId,
4999
+ name: yamlVariant.name,
5000
+ description: yamlVariant.description,
5001
+ locales: yamlVariant.locales,
5002
+ configuration,
5003
+ status: yamlVariant.status,
5004
+ ...remoteThemeId ? { themeId: remoteThemeId } : {}
5005
+ } },
5006
+ logger
5007
+ });
5008
+ syncedVariants.push({
5009
+ id: remoteVariant.id,
5010
+ slug: yamlVariant.slug
5011
+ });
5012
+ logger.info(`Successfully synced consent UI variant "${yamlVariant.name}"!`);
5013
+ } else {
5014
+ const result = await makeGraphQLRequest(client, CREATE_CONSENT_UI_VARIANT, {
5015
+ variables: { input: {
5016
+ airgapBundleId,
5017
+ name: yamlVariant.name,
5018
+ slug: yamlVariant.slug,
5019
+ description: yamlVariant.description,
5020
+ locales: yamlVariant.locales,
5021
+ configuration,
5022
+ status: yamlVariant.status,
5023
+ ...remoteThemeId ? { themeId: remoteThemeId } : {}
5024
+ } },
5025
+ logger
5026
+ });
5027
+ syncedVariants.push({
5028
+ id: result.createConsentUiVariant.consentUiVariant.id,
5029
+ slug: yamlVariant.slug
5030
+ });
5031
+ logger.info(`Successfully created consent UI variant "${yamlVariant.name}"!`);
5032
+ }
5033
+ }, { concurrency: 5 });
5034
+ return syncedVariants;
5035
+ }
5036
+ //#endregion
4477
5037
  //#region src/consent/syncPartitions.ts
4478
5038
  const PAGE_SIZE$23 = 50;
4479
5039
  /**
@@ -4540,12 +5100,14 @@ const PURPOSES_LINK = "https://app.transcend.io/consent-manager/regional-experie
4540
5100
  *
4541
5101
  * @param client - GraphQL client
4542
5102
  * @param experiences - The experience inputs
5103
+ * @param syncedVariants - Variants synced by syncConsentUiVariants, used to resolve consentUiVariantSlug
4543
5104
  * @param options - Options
4544
5105
  */
4545
- async function syncConsentManagerExperiences(client, experiences, options = {}) {
5106
+ async function syncConsentManagerExperiences(client, experiences, syncedVariants, options = {}) {
4546
5107
  const { logger = NOOP_LOGGER } = options;
4547
5108
  const experienceLookup = keyBy(await fetchConsentManagerExperiences(client, { logger }), "name");
4548
5109
  const purposeLookup = keyBy(await fetchAllPurposes(client, { logger }), "trackingType");
5110
+ const syncedVariantBySlug = keyBy(syncedVariants, "slug");
4549
5111
  await map(experiences, async (exp, ind) => {
4550
5112
  const purposeIds = exp.purposes?.map((purpose, ind2) => {
4551
5113
  const existingPurpose = purposeLookup[purpose.trackingType];
@@ -4557,6 +5119,7 @@ async function syncConsentManagerExperiences(client, experiences, options = {})
4557
5119
  if (!existingPurpose) throw new Error(`Invalid purpose trackingType provided at consentManager.experiences[${ind}].optedOutPurposes[${ind2}]: ${purpose.trackingType}. See list of valid purposes ${PURPOSES_LINK}`);
4558
5120
  return existingPurpose.id;
4559
5121
  });
5122
+ const remoteConsentUiVariantId = exp.consentUiVariantSlug ? syncedVariantBySlug[exp.consentUiVariantSlug]?.id : void 0;
4560
5123
  const existingExperience = experienceLookup[exp.name];
4561
5124
  if (existingExperience) {
4562
5125
  await makeGraphQLRequest(client, UPDATE_CONSENT_EXPERIENCE, {
@@ -4572,7 +5135,8 @@ async function syncConsentManagerExperiences(client, experiences, options = {})
4572
5135
  purposes: purposeIds,
4573
5136
  optedOutPurposes: optedOutPurposeIds,
4574
5137
  browserLanguages: exp.browserLanguages,
4575
- browserTimeZones: exp.browserTimeZones
5138
+ browserTimeZones: exp.browserTimeZones,
5139
+ ...remoteConsentUiVariantId ? { consentUiVariantId: remoteConsentUiVariantId } : {}
4576
5140
  } },
4577
5141
  logger
4578
5142
  });
@@ -4591,7 +5155,8 @@ async function syncConsentManagerExperiences(client, experiences, options = {})
4591
5155
  purposes: purposeIds || [],
4592
5156
  optedOutPurposes: optedOutPurposeIds || [],
4593
5157
  browserLanguages: exp.browserLanguages,
4594
- browserTimeZones: exp.browserTimeZones
5158
+ browserTimeZones: exp.browserTimeZones,
5159
+ ...remoteConsentUiVariantId ? { consentUiVariantId: remoteConsentUiVariantId } : {}
4595
5160
  } },
4596
5161
  logger
4597
5162
  });
@@ -4683,7 +5248,11 @@ async function syncConsentManager(client, consentManager, options = {}) {
4683
5248
  } },
4684
5249
  logger
4685
5250
  });
4686
- if (consentManager.experiences) await syncConsentManagerExperiences(client, consentManager.experiences, { logger });
5251
+ if (consentManager.consentThemes || consentManager.consentVariants || consentManager.experiences) {
5252
+ const syncedThemes = consentManager.consentThemes ? await syncConsentUiThemes(client, airgapBundleId, consentManager.consentThemes, { logger }) : [];
5253
+ const syncedVariants = consentManager.consentVariants ? await syncConsentUiVariants(client, airgapBundleId, consentManager.consentVariants, syncedThemes, { logger }) : [];
5254
+ if (consentManager.experiences) await syncConsentManagerExperiences(client, consentManager.experiences, syncedVariants, { logger });
5255
+ }
4687
5256
  if (consentManager.theme) await makeGraphQLRequest(client, UPDATE_CONSENT_MANAGER_THEME, {
4688
5257
  variables: { input: {
4689
5258
  airgapBundleId,
@@ -5141,9 +5710,13 @@ const SOMBRA_VERSION = parse(gql`
5141
5710
  //#region src/dsr-automation/fetchAllRequestIdentifiers.ts
5142
5711
  const MIN_SOMBRA_VERSION_TO_DECRYPT = "7.180.0";
5143
5712
  const RequestIdentifier = t.type({
5713
+ /** ID of request */
5144
5714
  id: t.string,
5715
+ /** Name of identifier */
5145
5716
  name: t.string,
5717
+ /** The underlying identifier value */
5146
5718
  value: t.string,
5719
+ /** Type of identifier */
5147
5720
  type: valuesOf(IdentifierType)
5148
5721
  });
5149
5722
  const PAGE_SIZE$21 = 50;
@@ -7885,8 +8458,12 @@ const AssessmentRuleWithoutOperands = t.type({
7885
8458
  * The final, flexible codec that accepts EITHER a rule with operands OR a rule without them.
7886
8459
  */
7887
8460
  const AssessmentRule = t.union([AssessmentRuleWithOperands, AssessmentRuleWithoutOperands]);
7888
- const AssessmentNestedRule = t.recursion("AssessmentNestedRule", (self) => t.intersection([t.type({ logicOperator: valuesOf(LogicOperator) }), t.partial({
8461
+ const AssessmentNestedRule = t.recursion("AssessmentNestedRule", (self) => t.intersection([t.type({
8462
+ /** The operator to use when comparing the nested rules */
8463
+ logicOperator: valuesOf(LogicOperator) }), t.partial({
8464
+ /** The rules to evaluate and be compared with to other using the LogicOperator */
7889
8465
  rules: t.array(AssessmentRule),
8466
+ /** The nested rules to add one more level of nesting to the rules. They are also compared to each other. */
7890
8467
  nestedRules: t.array(self)
7891
8468
  })]));
7892
8469
  const AssessmentAction = t.partial({
@@ -8673,6 +9250,6 @@ function createMonorepoPackageDefinition(name, directory) {
8673
9250
  };
8674
9251
  }
8675
9252
  //#endregion
8676
- 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_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_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, PreferenceState, PreferenceUpdateMap, 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_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, 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, 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, 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, syncCookies, syncDataCategories, syncDataFlows, syncDataSiloDependencies, syncDataSubject, syncEnricher, syncIdentifier, syncIntlMessages, syncPartitions, syncPolicies, syncPrivacyCenter, syncProcessingActivities, syncProcessingPurposes, syncPromptGroups, syncPromptPartials, syncPrompts, 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 };
9253
+ 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, PreferenceState, PreferenceUpdateMap, 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, 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, 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, syncPrivacyCenter, syncProcessingActivities, syncProcessingPurposes, syncPromptGroups, syncPromptPartials, syncPrompts, 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 };
8677
9254
 
8678
9255
  //# sourceMappingURL=index.mjs.map