@transcend-io/cli 8.0.6 → 8.0.7

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.
Files changed (109) hide show
  1. package/dist/bin/bash-complete.cjs +1 -1
  2. package/dist/bin/cli.cjs +1 -1
  3. package/dist/bin/deprecated-command.cjs +2 -2
  4. package/dist/{chunk-DCBE53LG.cjs → chunk-2VX4QD73.cjs} +3 -3
  5. package/dist/{chunk-DCBE53LG.cjs.map → chunk-2VX4QD73.cjs.map} +1 -1
  6. package/dist/{chunk-JZEDU4GZ.cjs → chunk-4GRQMYW2.cjs} +2 -2
  7. package/dist/{chunk-JZEDU4GZ.cjs.map → chunk-4GRQMYW2.cjs.map} +1 -1
  8. package/dist/{chunk-MFIMY5RY.cjs → chunk-E57K4DGX.cjs} +2 -2
  9. package/dist/{chunk-MFIMY5RY.cjs.map → chunk-E57K4DGX.cjs.map} +1 -1
  10. package/dist/{chunk-IU4E6MQW.cjs → chunk-GT7Q27PI.cjs} +2 -2
  11. package/dist/{chunk-IU4E6MQW.cjs.map → chunk-GT7Q27PI.cjs.map} +1 -1
  12. package/dist/{chunk-5Y7FIOUT.cjs → chunk-H6YI2HZS.cjs} +2 -2
  13. package/dist/{chunk-5Y7FIOUT.cjs.map → chunk-H6YI2HZS.cjs.map} +1 -1
  14. package/dist/{chunk-KU3UCRAF.cjs → chunk-HBKA5Z5A.cjs} +2 -2
  15. package/dist/{chunk-KU3UCRAF.cjs.map → chunk-HBKA5Z5A.cjs.map} +1 -1
  16. package/dist/{chunk-NAGRUVXK.cjs → chunk-K2E6TCB5.cjs} +2 -2
  17. package/dist/{chunk-NAGRUVXK.cjs.map → chunk-K2E6TCB5.cjs.map} +1 -1
  18. package/dist/{chunk-OKLX7XKW.cjs → chunk-NKFAEQ2Q.cjs} +2 -2
  19. package/dist/{chunk-OKLX7XKW.cjs.map → chunk-NKFAEQ2Q.cjs.map} +1 -1
  20. package/dist/{chunk-LPUZGMB6.cjs → chunk-OCNPZWYT.cjs} +4 -4
  21. package/dist/{chunk-LPUZGMB6.cjs.map → chunk-OCNPZWYT.cjs.map} +1 -1
  22. package/dist/chunk-RSN3DUTP.cjs +2920 -0
  23. package/dist/{chunk-7O5DWH3M.cjs.map → chunk-RSN3DUTP.cjs.map} +1 -1
  24. package/dist/{chunk-DTGC4M5U.cjs → chunk-S3HIPD4J.cjs} +2 -2
  25. package/dist/{chunk-DTGC4M5U.cjs.map → chunk-S3HIPD4J.cjs.map} +1 -1
  26. package/dist/{chunk-YMH24XQT.cjs → chunk-SQVECTFA.cjs} +19 -19
  27. package/dist/{chunk-YMH24XQT.cjs.map → chunk-SQVECTFA.cjs.map} +1 -1
  28. package/dist/{impl-WCRE3QMZ.cjs → impl-2GZWVX2N.cjs} +2 -2
  29. package/dist/{impl-WCRE3QMZ.cjs.map → impl-2GZWVX2N.cjs.map} +1 -1
  30. package/dist/{impl-4WFQNFXM.cjs → impl-2NI344VN.cjs} +2 -2
  31. package/dist/{impl-4WFQNFXM.cjs.map → impl-2NI344VN.cjs.map} +1 -1
  32. package/dist/{impl-LAYRDHOS.cjs → impl-5XZA6XDY.cjs} +2 -2
  33. package/dist/{impl-LAYRDHOS.cjs.map → impl-5XZA6XDY.cjs.map} +1 -1
  34. package/dist/{impl-S3QSYERT.cjs → impl-A7WOM6B2.cjs} +2 -2
  35. package/dist/{impl-S3QSYERT.cjs.map → impl-A7WOM6B2.cjs.map} +1 -1
  36. package/dist/{impl-GNNZ6ISS.cjs → impl-ACT4HEIF.cjs} +2 -2
  37. package/dist/{impl-GNNZ6ISS.cjs.map → impl-ACT4HEIF.cjs.map} +1 -1
  38. package/dist/{impl-2XFKDVXC.cjs → impl-ASZALW6O.cjs} +2 -2
  39. package/dist/{impl-2XFKDVXC.cjs.map → impl-ASZALW6O.cjs.map} +1 -1
  40. package/dist/{impl-YYLZH24L.cjs → impl-B4RGQNKY.cjs} +4 -4
  41. package/dist/{impl-YYLZH24L.cjs.map → impl-B4RGQNKY.cjs.map} +1 -1
  42. package/dist/{impl-DUKSVNOM.cjs → impl-BRA6TEVA.cjs} +2 -2
  43. package/dist/{impl-DUKSVNOM.cjs.map → impl-BRA6TEVA.cjs.map} +1 -1
  44. package/dist/{impl-IN2PQA3H.cjs → impl-CWWICDPC.cjs} +2 -2
  45. package/dist/{impl-IN2PQA3H.cjs.map → impl-CWWICDPC.cjs.map} +1 -1
  46. package/dist/{impl-LWPYKGCZ.cjs → impl-E7JWHVRJ.cjs} +2 -2
  47. package/dist/{impl-LWPYKGCZ.cjs.map → impl-E7JWHVRJ.cjs.map} +1 -1
  48. package/dist/{impl-SZM2IXSY.cjs → impl-ERCHNSZD.cjs} +3 -3
  49. package/dist/{impl-SZM2IXSY.cjs.map → impl-ERCHNSZD.cjs.map} +1 -1
  50. package/dist/{impl-TEADN2ZL.cjs → impl-EU6DPMR5.cjs} +5 -5
  51. package/dist/{impl-TEADN2ZL.cjs.map → impl-EU6DPMR5.cjs.map} +1 -1
  52. package/dist/{impl-OZ6XHZRW.cjs → impl-GS4CVUAP.cjs} +2 -2
  53. package/dist/{impl-OZ6XHZRW.cjs.map → impl-GS4CVUAP.cjs.map} +1 -1
  54. package/dist/{impl-5IVCXXAL.cjs → impl-GTJ5DPQ4.cjs} +2 -2
  55. package/dist/{impl-5IVCXXAL.cjs.map → impl-GTJ5DPQ4.cjs.map} +1 -1
  56. package/dist/{impl-VZDR2CDX.cjs → impl-HHPNH3QN.cjs} +2 -2
  57. package/dist/{impl-VZDR2CDX.cjs.map → impl-HHPNH3QN.cjs.map} +1 -1
  58. package/dist/{impl-I6ETF7X7.cjs → impl-JYM2T6AQ.cjs} +2 -2
  59. package/dist/{impl-I6ETF7X7.cjs.map → impl-JYM2T6AQ.cjs.map} +1 -1
  60. package/dist/{impl-XXGHYIS2.cjs → impl-K6UD53QP.cjs} +2 -2
  61. package/dist/{impl-XXGHYIS2.cjs.map → impl-K6UD53QP.cjs.map} +1 -1
  62. package/dist/{impl-5VNZMRQP.cjs → impl-KHR6CYYW.cjs} +2 -2
  63. package/dist/{impl-5VNZMRQP.cjs.map → impl-KHR6CYYW.cjs.map} +1 -1
  64. package/dist/{impl-3JDGUUXS.cjs → impl-KQNFC333.cjs} +2 -2
  65. package/dist/{impl-3JDGUUXS.cjs.map → impl-KQNFC333.cjs.map} +1 -1
  66. package/dist/{impl-VRTPR7ZC.cjs → impl-LTMYU2AY.cjs} +2 -2
  67. package/dist/{impl-VRTPR7ZC.cjs.map → impl-LTMYU2AY.cjs.map} +1 -1
  68. package/dist/{impl-LO7NADSE.cjs → impl-M6XVZEZC.cjs} +2 -2
  69. package/dist/{impl-LO7NADSE.cjs.map → impl-M6XVZEZC.cjs.map} +1 -1
  70. package/dist/{impl-DGMMPU6J.cjs → impl-MM7Z76YA.cjs} +2 -2
  71. package/dist/{impl-DGMMPU6J.cjs.map → impl-MM7Z76YA.cjs.map} +1 -1
  72. package/dist/{impl-2WH2UTIZ.cjs → impl-MNZZSLBI.cjs} +2 -2
  73. package/dist/{impl-2WH2UTIZ.cjs.map → impl-MNZZSLBI.cjs.map} +1 -1
  74. package/dist/{impl-OMOQK2HQ.cjs → impl-N2ANLQOJ.cjs} +6 -6
  75. package/dist/{impl-OMOQK2HQ.cjs.map → impl-N2ANLQOJ.cjs.map} +1 -1
  76. package/dist/{impl-EJMVBV6T.cjs → impl-NRS5JFKV.cjs} +2 -2
  77. package/dist/{impl-EJMVBV6T.cjs.map → impl-NRS5JFKV.cjs.map} +1 -1
  78. package/dist/{impl-7U3M4RGF.cjs → impl-NWMCEWUU.cjs} +2 -2
  79. package/dist/{impl-7U3M4RGF.cjs.map → impl-NWMCEWUU.cjs.map} +1 -1
  80. package/dist/{impl-ZXCX5CQQ.cjs → impl-P23VFJZF.cjs} +2 -2
  81. package/dist/{impl-ZXCX5CQQ.cjs.map → impl-P23VFJZF.cjs.map} +1 -1
  82. package/dist/{impl-B3OMYCGQ.cjs → impl-QC2QXWOW.cjs} +2 -2
  83. package/dist/{impl-B3OMYCGQ.cjs.map → impl-QC2QXWOW.cjs.map} +1 -1
  84. package/dist/{impl-JA34WWJ5.cjs → impl-R3CY7ZIW.cjs} +2 -2
  85. package/dist/{impl-JA34WWJ5.cjs.map → impl-R3CY7ZIW.cjs.map} +1 -1
  86. package/dist/{impl-7JEVVESR.cjs → impl-SVCHBYPB.cjs} +2 -2
  87. package/dist/{impl-7JEVVESR.cjs.map → impl-SVCHBYPB.cjs.map} +1 -1
  88. package/dist/{impl-ZY3HLGMV.cjs → impl-T5AW675H.cjs} +2 -2
  89. package/dist/{impl-ZY3HLGMV.cjs.map → impl-T5AW675H.cjs.map} +1 -1
  90. package/dist/{impl-TVRDO556.cjs → impl-TGY32SCN.cjs} +2 -2
  91. package/dist/{impl-TVRDO556.cjs.map → impl-TGY32SCN.cjs.map} +1 -1
  92. package/dist/{impl-X7QVQTTU.cjs → impl-U6XFUPLF.cjs} +2 -2
  93. package/dist/{impl-X7QVQTTU.cjs.map → impl-U6XFUPLF.cjs.map} +1 -1
  94. package/dist/impl-UFXTQLXO.cjs +2 -0
  95. package/dist/{impl-IKL2VVT5.cjs.map → impl-UFXTQLXO.cjs.map} +1 -1
  96. package/dist/{impl-SVLQQPHG.cjs → impl-UHENI4EC.cjs} +2 -2
  97. package/dist/{impl-SVLQQPHG.cjs.map → impl-UHENI4EC.cjs.map} +1 -1
  98. package/dist/{impl-ZZL5FMCH.cjs → impl-UOAWNR34.cjs} +3 -3
  99. package/dist/{impl-ZZL5FMCH.cjs.map → impl-UOAWNR34.cjs.map} +1 -1
  100. package/dist/{impl-Z3TEIP7I.cjs → impl-VUQ6T7ON.cjs} +2 -2
  101. package/dist/{impl-Z3TEIP7I.cjs.map → impl-VUQ6T7ON.cjs.map} +1 -1
  102. package/dist/{impl-22FRQBKA.cjs → impl-W4I4GTBC.cjs} +2 -2
  103. package/dist/{impl-22FRQBKA.cjs.map → impl-W4I4GTBC.cjs.map} +1 -1
  104. package/dist/index.cjs +3 -3
  105. package/dist/index.cjs.map +1 -1
  106. package/dist/index.d.cts +447 -429
  107. package/package.json +1 -1
  108. package/dist/chunk-7O5DWH3M.cjs +0 -2920
  109. package/dist/impl-IKL2VVT5.cjs +0 -2
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env node
2
- "use strict"; function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkT462ONFXcjs = require('../chunk-T462ONFX.cjs');var _chunkYMH24XQTcjs = require('../chunk-YMH24XQT.cjs');require('../chunk-5Y7FIOUT.cjs');require('../chunk-MFIMY5RY.cjs');require('../chunk-Q7I37FJV.cjs');var _core = require('@stricli/core');async function e(){let o=process.argv.slice(3);_optionalChain([process, 'access', _ => _.env, 'access', _2 => _2.COMP_LINE, 'optionalAccess', _3 => _3.endsWith, 'call', _4 => _4(" ")])&&o.push(""),await _core.proposeCompletions.call(void 0, _chunkYMH24XQTcjs.a,o,_chunkT462ONFXcjs.a.call(void 0, process));try{for(let{completion:r}of await _core.proposeCompletions.call(void 0, _chunkYMH24XQTcjs.a,o,_chunkT462ONFXcjs.a.call(void 0, process)))process.stdout.write(`${r}
2
+ "use strict"; function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkT462ONFXcjs = require('../chunk-T462ONFX.cjs');var _chunkSQVECTFAcjs = require('../chunk-SQVECTFA.cjs');require('../chunk-H6YI2HZS.cjs');require('../chunk-E57K4DGX.cjs');require('../chunk-Q7I37FJV.cjs');var _core = require('@stricli/core');async function e(){let o=process.argv.slice(3);_optionalChain([process, 'access', _ => _.env, 'access', _2 => _2.COMP_LINE, 'optionalAccess', _3 => _3.endsWith, 'call', _4 => _4(" ")])&&o.push(""),await _core.proposeCompletions.call(void 0, _chunkSQVECTFAcjs.a,o,_chunkT462ONFXcjs.a.call(void 0, process));try{for(let{completion:r}of await _core.proposeCompletions.call(void 0, _chunkSQVECTFAcjs.a,o,_chunkT462ONFXcjs.a.call(void 0, process)))process.stdout.write(`${r}
3
3
  `)}catch (e2){}}e();
4
4
  //# sourceMappingURL=bash-complete.cjs.map
package/dist/bin/cli.cjs CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
- "use strict";var _chunkT462ONFXcjs = require('../chunk-T462ONFX.cjs');var _chunkYMH24XQTcjs = require('../chunk-YMH24XQT.cjs');require('../chunk-5Y7FIOUT.cjs');require('../chunk-MFIMY5RY.cjs');require('../chunk-Q7I37FJV.cjs');var _core = require('@stricli/core');async function n(){await _core.run.call(void 0, _chunkYMH24XQTcjs.a,process.argv.slice(2),_chunkT462ONFXcjs.a.call(void 0, process))}n();
2
+ "use strict";var _chunkT462ONFXcjs = require('../chunk-T462ONFX.cjs');var _chunkSQVECTFAcjs = require('../chunk-SQVECTFA.cjs');require('../chunk-H6YI2HZS.cjs');require('../chunk-E57K4DGX.cjs');require('../chunk-Q7I37FJV.cjs');var _core = require('@stricli/core');async function n(){await _core.run.call(void 0, _chunkSQVECTFAcjs.a,process.argv.slice(2),_chunkT462ONFXcjs.a.call(void 0, process))}n();
3
3
  //# sourceMappingURL=cli.cjs.map
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
- "use strict"; function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkYMH24XQTcjs = require('../chunk-YMH24XQT.cjs');require('../chunk-5Y7FIOUT.cjs');var _chunkZUNVPK23cjs = require('../chunk-ZUNVPK23.cjs');require('../chunk-MFIMY5RY.cjs');require('../chunk-Q7I37FJV.cjs');var _core = require('@stricli/core');var o={"tr-build-xdi-sync-endpoint":["consent","build-xdi-sync-endpoint"],"tr-consent-manager-service-json-to-yml":["inventory","consent-manager-service-json-to-yml"],"tr-consent-managers-to-business-entities":["inventory","consent-managers-to-business-entities"],"tr-cron-mark-identifiers-completed":["request","cron","mark-identifiers-completed"],"tr-cron-pull-identifiers":["request","cron","pull-identifiers"],"tr-derive-data-silos-from-data-flows":["inventory","derive-data-silos-from-data-flows"],"tr-derive-data-silos-from-data-flows-cross-instance":["inventory","derive-data-silos-from-data-flows-cross-instance"],"tr-discover-silos":["inventory","discover-silos"],"tr-generate-api-keys":["admin","generate-api-keys"],"tr-manual-enrichment-pull-identifiers":["request","preflight","pull-identifiers"],"tr-manual-enrichment-push-identifiers":["request","preflight","push-identifiers"],"tr-mark-request-data-silos-completed":["request","system","mark-request-data-silos-completed"],"tr-pull":["inventory","pull"],"tr-pull-consent-metrics":["consent","pull-consent-metrics"],"tr-pull-consent-preferences":["consent","pull-consent-preferences"],"tr-pull-datapoints":["inventory","pull-datapoints"],"tr-pull-pull-unstructured-discovery-files":["inventory","pull-unstructured-discovery-files"],"tr-push":["inventory","push"],"tr-request-approve":["request","approve"],"tr-request-cancel":["request","cancel"],"tr-request-download-files":["request","download-files"],"tr-request-enricher-restart":["request","enricher-restart"],"tr-request-export":["request","export"],"tr-request-mark-silent":["request","mark-silent"],"tr-request-notify-additional-time":["request","notify-additional-time"],"tr-request-reject-unverified-identifiers":["request","reject-unverified-identifiers"],"tr-request-restart":["request","restart"],"tr-request-upload":["request","upload"],"tr-retry-request-data-silos":["request","system","retry-request-data-silos"],"tr-scan-packages":["inventory","scan-packages"],"tr-skip-preflight-jobs":["request","skip-preflight-jobs"],"tr-skip-request-data-silos":["request","system","skip-request-data-silos"],"tr-sync-ot":["migration","sync-ot"],"tr-update-consent-manager":["consent","update-consent-manager"],"tr-upload-consent-preferences":["consent","upload-consent-preferences"],"tr-upload-cookies-from-csv":["consent","upload-cookies-from-csv"],"tr-upload-data-flows-from-csv":["consent","upload-data-flows-from-csv"],"tr-upload-preferences":["consent","upload-preferences"]};function p(t){return _optionalChain([_core.generateHelpTextForAllCommands.call(void 0, _chunkYMH24XQTcjs.a), 'access', _ => _.find, 'call', _2 => _2(s=>s[0]===`${_chunkYMH24XQTcjs.a.config.name} ${t.join(" ")}`), 'optionalAccess', _3 => _3[1]])}function i(t){_chunkZUNVPK23cjs.a.log("[DEPRECATION NOTICE]");let e=o[t];if(!e){let a=Object.entries(o).map(([l,d])=>`\`${l}\` -> \`${_chunkYMH24XQTcjs.a.config.name} ${d.join(" ")}\``).join(`
2
+ "use strict"; function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkSQVECTFAcjs = require('../chunk-SQVECTFA.cjs');require('../chunk-H6YI2HZS.cjs');var _chunkZUNVPK23cjs = require('../chunk-ZUNVPK23.cjs');require('../chunk-E57K4DGX.cjs');require('../chunk-Q7I37FJV.cjs');var _core = require('@stricli/core');var o={"tr-build-xdi-sync-endpoint":["consent","build-xdi-sync-endpoint"],"tr-consent-manager-service-json-to-yml":["inventory","consent-manager-service-json-to-yml"],"tr-consent-managers-to-business-entities":["inventory","consent-managers-to-business-entities"],"tr-cron-mark-identifiers-completed":["request","cron","mark-identifiers-completed"],"tr-cron-pull-identifiers":["request","cron","pull-identifiers"],"tr-derive-data-silos-from-data-flows":["inventory","derive-data-silos-from-data-flows"],"tr-derive-data-silos-from-data-flows-cross-instance":["inventory","derive-data-silos-from-data-flows-cross-instance"],"tr-discover-silos":["inventory","discover-silos"],"tr-generate-api-keys":["admin","generate-api-keys"],"tr-manual-enrichment-pull-identifiers":["request","preflight","pull-identifiers"],"tr-manual-enrichment-push-identifiers":["request","preflight","push-identifiers"],"tr-mark-request-data-silos-completed":["request","system","mark-request-data-silos-completed"],"tr-pull":["inventory","pull"],"tr-pull-consent-metrics":["consent","pull-consent-metrics"],"tr-pull-consent-preferences":["consent","pull-consent-preferences"],"tr-pull-datapoints":["inventory","pull-datapoints"],"tr-pull-pull-unstructured-discovery-files":["inventory","pull-unstructured-discovery-files"],"tr-push":["inventory","push"],"tr-request-approve":["request","approve"],"tr-request-cancel":["request","cancel"],"tr-request-download-files":["request","download-files"],"tr-request-enricher-restart":["request","enricher-restart"],"tr-request-export":["request","export"],"tr-request-mark-silent":["request","mark-silent"],"tr-request-notify-additional-time":["request","notify-additional-time"],"tr-request-reject-unverified-identifiers":["request","reject-unverified-identifiers"],"tr-request-restart":["request","restart"],"tr-request-upload":["request","upload"],"tr-retry-request-data-silos":["request","system","retry-request-data-silos"],"tr-scan-packages":["inventory","scan-packages"],"tr-skip-preflight-jobs":["request","skip-preflight-jobs"],"tr-skip-request-data-silos":["request","system","skip-request-data-silos"],"tr-sync-ot":["migration","sync-ot"],"tr-update-consent-manager":["consent","update-consent-manager"],"tr-upload-consent-preferences":["consent","upload-consent-preferences"],"tr-upload-cookies-from-csv":["consent","upload-cookies-from-csv"],"tr-upload-data-flows-from-csv":["consent","upload-data-flows-from-csv"],"tr-upload-preferences":["consent","upload-preferences"]};function p(t){return _optionalChain([_core.generateHelpTextForAllCommands.call(void 0, _chunkSQVECTFAcjs.a), 'access', _ => _.find, 'call', _2 => _2(s=>s[0]===`${_chunkSQVECTFAcjs.a.config.name} ${t.join(" ")}`), 'optionalAccess', _3 => _3[1]])}function i(t){_chunkZUNVPK23cjs.a.log("[DEPRECATION NOTICE]");let e=o[t];if(!e){let a=Object.entries(o).map(([l,d])=>`\`${l}\` -> \`${_chunkSQVECTFAcjs.a.config.name} ${d.join(" ")}\``).join(`
3
3
  `);_chunkZUNVPK23cjs.a.log(`This command is deprecated as of v7.0.0. Here is a list of new commands, mapped to their legacy command names:
4
4
  ${a}`);return}_chunkZUNVPK23cjs.a.log(`\`${t}\` is deprecated as of v7.0.0.
5
- Use \`${_chunkYMH24XQTcjs.a.config.name} ${e.join(" ")}\` instead.
5
+ Use \`${_chunkSQVECTFAcjs.a.config.name} ${e.join(" ")}\` instead.
6
6
  `);let s=p(e);if(!s)throw new Error(`Failed to get help text for command: \`${e.join(" ")}\``);_chunkZUNVPK23cjs.a.log(s)}function m(){let e=_optionalChain([process, 'access', _4 => _4.argv, 'access', _5 => _5.at, 'call', _6 => _6(-1), 'optionalAccess', _7 => _7.split, 'call', _8 => _8("/"), 'access', _9 => _9.pop, 'call', _10 => _10(), 'optionalAccess', _11 => _11.trim, 'call', _12 => _12()]);if(e)i(e);else throw new Error("Deprecated command");process.exit(1)}m();
7
7
  //# sourceMappingURL=deprecated-command.cjs.map
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkJZEDU4GZcjs = require('./chunk-JZEDU4GZ.cjs');var _chunkQEM6S2W7cjs = require('./chunk-QEM6S2W7.cjs');var _chunk7O5DWH3Mcjs = require('./chunk-7O5DWH3M.cjs');var _chunkZUNVPK23cjs = require('./chunk-ZUNVPK23.cjs');var _chunkMFIMY5RYcjs = require('./chunk-MFIMY5RY.cjs');var _privacytypes = require('@transcend-io/privacy-types');var _bluebird = require('bluebird');var _colors = require('colors'); var _colors2 = _interopRequireDefault(_colors);async function at({auth:e,deploy:i=!1,transcendUrl:o=_chunkMFIMY5RYcjs.r,bundleTypes:t=Object.values(_privacytypes.ConsentBundleType)}){let r=_chunk7O5DWH3Mcjs.vc.call(void 0, o,e),n=await _chunk7O5DWH3Mcjs.Oc.call(void 0, r);await _bluebird.mapSeries.call(void 0, t,async a=>{_chunkZUNVPK23cjs.a.info(_colors2.default.magenta(`Update Consent Manager bundle with ID "${n}" and type "${a}" to latest version...`)),await _chunk7O5DWH3Mcjs.zc.call(void 0, r,{id:n,bundleType:a}),_chunkZUNVPK23cjs.a.info(_colors2.default.green(`Updated Consent Manager bundle with ID "${n}" and type "${a}" to latest version!`))}),i&&await _bluebird.mapSeries.call(void 0, t,async a=>{_chunkZUNVPK23cjs.a.info(_colors2.default.magenta(`Deploying Consent Manager bundle with ID "${n}" and type "${a}"...`)),await _chunk7O5DWH3Mcjs.yc.call(void 0, r,{id:n,bundleType:a}),_chunkZUNVPK23cjs.a.info(_colors2.default.green(`Deployed Consent Manager bundle with ID "${n}" and type "${a}"!`))})}var K=["ID","Activity","Encounters","Last Seen At","Has Native Do Not Sell/Share Support","IAB USP API Support","Service Description","Website URL","Categories of Recipients"];async function Ct({auth:e,trackerStatus:i,file:o,classifyService:t=!1,transcendUrl:r=_chunkMFIMY5RYcjs.r}){let n=_chunk7O5DWH3Mcjs.vc.call(void 0, r,e);_chunkZUNVPK23cjs.a.info(_colors2.default.magenta(`Reading "${o}" from disk`));let l=_chunk7O5DWH3Mcjs.qc.call(void 0, o,_chunkQEM6S2W7cjs.ia).map(({Type:d,Notes:m,Service:f,Purpose:E,Status:g,Owners:I,Teams:T,"Connections Made To":v,...y})=>({value:v,type:d,description:m,trackingPurposes:_chunk7O5DWH3Mcjs.nc.call(void 0, E),status:g||i,owners:I?_chunk7O5DWH3Mcjs.nc.call(void 0, I):void 0,teams:T?_chunk7O5DWH3Mcjs.nc.call(void 0, T):void 0,attributes:Object.entries(y).filter(([h])=>!K.includes(h)).map(([h,B])=>({key:h,values:_chunk7O5DWH3Mcjs.nc.call(void 0, B)}))}));await _chunk7O5DWH3Mcjs.Pe.call(void 0, n,l,t)||(_chunkZUNVPK23cjs.a.error(_colors2.default.red("Encountered error(s) syncing data flows from CSV, see logs above for more info. ")),process.exit(1))}var j=["ID","Activity","Encounters","Last Seen At","Has Native Do Not Sell/Share Support","IAB USP API Support","Service Description","Website URL","Categories of Recipients"];async function vt({auth:e,trackerStatus:i,file:o,transcendUrl:t=_chunkMFIMY5RYcjs.r}){let r=_chunk7O5DWH3Mcjs.vc.call(void 0, t,e);_chunkZUNVPK23cjs.a.info(_colors2.default.magenta(`Reading "${o}" from disk`));let a=_chunk7O5DWH3Mcjs.qc.call(void 0, o,_chunkQEM6S2W7cjs.ja).map(({"Is Regex?":s,Notes:d,Service:m,Purpose:f,Status:E,Owners:g,Teams:I,Name:T,...v})=>({...typeof s=="string"?{isRegex:s.toLowerCase()==="true"}:{},name:T,description:d,trackingPurposes:_chunk7O5DWH3Mcjs.nc.call(void 0, f),status:E||i,owners:g?_chunk7O5DWH3Mcjs.nc.call(void 0, g):void 0,teams:I?_chunk7O5DWH3Mcjs.nc.call(void 0, I):void 0,attributes:Object.entries(v).filter(([y])=>!j.includes(y)).map(([y,h])=>({key:y,values:_chunk7O5DWH3Mcjs.nc.call(void 0, h)}))}));await _chunk7O5DWH3Mcjs.Je.call(void 0, r,a)||(_chunkZUNVPK23cjs.a.error(_colors2.default.red("Encountered error(s) syncing cookies from CSV, see logs above for more info. ")),process.exit(1))}var Y=1e3,Q=60*Y,V=60*Q,X=24*V,z=7*X;async function Lt(e,{bin:i,start:o,end:t=new Date}){let r=await _chunk7O5DWH3Mcjs.Oc.call(void 0, e),n=Math.floor(o.getTime()/1e3),a=Math.floor(t.getTime()/1e3);if(n>a)throw new Error('Received "end" date that happened before "start" date');if(i==="1h"&&t.getTime()-o.getTime()>z*2)throw new Error("When using bin=1h, start and end time can be no more than 2 weeks apart");let l=o.toISOString(),s=t.toISOString(),[d,m,f]=await Promise.all([_chunk7O5DWH3Mcjs.Rc.call(void 0, e,{dataSource:"PRIVACY_SIGNAL_TIMESERIES",startDate:l,endDate:s,forceRefetch:!0,airgapBundleId:r,binInterval:i,smoothTimeseries:!1}),_chunk7O5DWH3Mcjs.Rc.call(void 0, e,{dataSource:"CONSENT_CHANGES_TIMESERIES",startDate:l,endDate:s,forceRefetch:!0,airgapBundleId:r,binInterval:i,smoothTimeseries:!1}),_chunk7O5DWH3Mcjs.Rc.call(void 0, e,{dataSource:"CONSENT_SESSIONS_BY_REGIME",startDate:l,endDate:s,forceRefetch:!0,airgapBundleId:r,binInterval:i,smoothTimeseries:!1})]);return{PRIVACY_SIGNAL_TIMESERIES:d,CONSENT_CHANGES_TIMESERIES:m,CONSENT_SESSIONS_BY_REGIME:f}}var $=e=>new URL(`https://${e}`).hostname.split(".").slice(-2).join(".");var J=/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;async function Ht(e,{xdiLocation:i,transcendUrl:o=_chunkMFIMY5RYcjs.r,removeIpAddresses:t=!0,domainBlockList:r=["localhost"],xdiAllowedCommands:n="ConsentManager:Sync"}){let a=Array.isArray(e)?e:[{apiKey:e,organizationId:"",organizationName:""}],l=await _bluebird.map.call(void 0, a,async m=>{_chunkZUNVPK23cjs.a.info(_colors2.default.magenta(`Pulling consent metadata for organization - ${m.organizationName}`));let f=_chunk7O5DWH3Mcjs.vc.call(void 0, o,m.apiKey);return await _chunk7O5DWH3Mcjs.Nc.call(void 0, f)},{concurrency:5}),s={};return l.forEach(m=>{let f=_optionalChain([m, 'access', _2 => _2.partition, 'optionalAccess', _3 => _3.partition])||m.bundleURL.split("/").reverse()[1];s[f]||(s[f]=[]);let E=_chunkMFIMY5RYcjs.c.call(void 0, m.configuration.domains.filter(g=>!t||!J.test(g)).map(g=>$(g)),r);s[f]=[...new Set([...s[f]||[],...E])]}),{html:`
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunk4GRQMYW2cjs = require('./chunk-4GRQMYW2.cjs');var _chunkQEM6S2W7cjs = require('./chunk-QEM6S2W7.cjs');var _chunkRSN3DUTPcjs = require('./chunk-RSN3DUTP.cjs');var _chunkZUNVPK23cjs = require('./chunk-ZUNVPK23.cjs');var _chunkE57K4DGXcjs = require('./chunk-E57K4DGX.cjs');var _privacytypes = require('@transcend-io/privacy-types');var _bluebird = require('bluebird');var _colors = require('colors'); var _colors2 = _interopRequireDefault(_colors);async function at({auth:e,deploy:i=!1,transcendUrl:o=_chunkE57K4DGXcjs.r,bundleTypes:t=Object.values(_privacytypes.ConsentBundleType)}){let r=_chunkRSN3DUTPcjs.vc.call(void 0, o,e),n=await _chunkRSN3DUTPcjs.Oc.call(void 0, r);await _bluebird.mapSeries.call(void 0, t,async a=>{_chunkZUNVPK23cjs.a.info(_colors2.default.magenta(`Update Consent Manager bundle with ID "${n}" and type "${a}" to latest version...`)),await _chunkRSN3DUTPcjs.zc.call(void 0, r,{id:n,bundleType:a}),_chunkZUNVPK23cjs.a.info(_colors2.default.green(`Updated Consent Manager bundle with ID "${n}" and type "${a}" to latest version!`))}),i&&await _bluebird.mapSeries.call(void 0, t,async a=>{_chunkZUNVPK23cjs.a.info(_colors2.default.magenta(`Deploying Consent Manager bundle with ID "${n}" and type "${a}"...`)),await _chunkRSN3DUTPcjs.yc.call(void 0, r,{id:n,bundleType:a}),_chunkZUNVPK23cjs.a.info(_colors2.default.green(`Deployed Consent Manager bundle with ID "${n}" and type "${a}"!`))})}var K=["ID","Activity","Encounters","Last Seen At","Has Native Do Not Sell/Share Support","IAB USP API Support","Service Description","Website URL","Categories of Recipients"];async function Ct({auth:e,trackerStatus:i,file:o,classifyService:t=!1,transcendUrl:r=_chunkE57K4DGXcjs.r}){let n=_chunkRSN3DUTPcjs.vc.call(void 0, r,e);_chunkZUNVPK23cjs.a.info(_colors2.default.magenta(`Reading "${o}" from disk`));let l=_chunkRSN3DUTPcjs.qc.call(void 0, o,_chunkQEM6S2W7cjs.ia).map(({Type:d,Notes:m,Service:f,Purpose:E,Status:g,Owners:I,Teams:T,"Connections Made To":v,...y})=>({value:v,type:d,description:m,trackingPurposes:_chunkRSN3DUTPcjs.nc.call(void 0, E),status:g||i,owners:I?_chunkRSN3DUTPcjs.nc.call(void 0, I):void 0,teams:T?_chunkRSN3DUTPcjs.nc.call(void 0, T):void 0,attributes:Object.entries(y).filter(([h])=>!K.includes(h)).map(([h,B])=>({key:h,values:_chunkRSN3DUTPcjs.nc.call(void 0, B)}))}));await _chunkRSN3DUTPcjs.Qe.call(void 0, n,l,t)||(_chunkZUNVPK23cjs.a.error(_colors2.default.red("Encountered error(s) syncing data flows from CSV, see logs above for more info. ")),process.exit(1))}var j=["ID","Activity","Encounters","Last Seen At","Has Native Do Not Sell/Share Support","IAB USP API Support","Service Description","Website URL","Categories of Recipients"];async function vt({auth:e,trackerStatus:i,file:o,transcendUrl:t=_chunkE57K4DGXcjs.r}){let r=_chunkRSN3DUTPcjs.vc.call(void 0, t,e);_chunkZUNVPK23cjs.a.info(_colors2.default.magenta(`Reading "${o}" from disk`));let a=_chunkRSN3DUTPcjs.qc.call(void 0, o,_chunkQEM6S2W7cjs.ja).map(({"Is Regex?":s,Notes:d,Service:m,Purpose:f,Status:E,Owners:g,Teams:I,Name:T,...v})=>({...typeof s=="string"?{isRegex:s.toLowerCase()==="true"}:{},name:T,description:d,trackingPurposes:_chunkRSN3DUTPcjs.nc.call(void 0, f),status:E||i,owners:g?_chunkRSN3DUTPcjs.nc.call(void 0, g):void 0,teams:I?_chunkRSN3DUTPcjs.nc.call(void 0, I):void 0,attributes:Object.entries(v).filter(([y])=>!j.includes(y)).map(([y,h])=>({key:y,values:_chunkRSN3DUTPcjs.nc.call(void 0, h)}))}));await _chunkRSN3DUTPcjs.Ke.call(void 0, r,a)||(_chunkZUNVPK23cjs.a.error(_colors2.default.red("Encountered error(s) syncing cookies from CSV, see logs above for more info. ")),process.exit(1))}var Y=1e3,Q=60*Y,V=60*Q,X=24*V,z=7*X;async function Lt(e,{bin:i,start:o,end:t=new Date}){let r=await _chunkRSN3DUTPcjs.Oc.call(void 0, e),n=Math.floor(o.getTime()/1e3),a=Math.floor(t.getTime()/1e3);if(n>a)throw new Error('Received "end" date that happened before "start" date');if(i==="1h"&&t.getTime()-o.getTime()>z*2)throw new Error("When using bin=1h, start and end time can be no more than 2 weeks apart");let l=o.toISOString(),s=t.toISOString(),[d,m,f]=await Promise.all([_chunkRSN3DUTPcjs.Rc.call(void 0, e,{dataSource:"PRIVACY_SIGNAL_TIMESERIES",startDate:l,endDate:s,forceRefetch:!0,airgapBundleId:r,binInterval:i,smoothTimeseries:!1}),_chunkRSN3DUTPcjs.Rc.call(void 0, e,{dataSource:"CONSENT_CHANGES_TIMESERIES",startDate:l,endDate:s,forceRefetch:!0,airgapBundleId:r,binInterval:i,smoothTimeseries:!1}),_chunkRSN3DUTPcjs.Rc.call(void 0, e,{dataSource:"CONSENT_SESSIONS_BY_REGIME",startDate:l,endDate:s,forceRefetch:!0,airgapBundleId:r,binInterval:i,smoothTimeseries:!1})]);return{PRIVACY_SIGNAL_TIMESERIES:d,CONSENT_CHANGES_TIMESERIES:m,CONSENT_SESSIONS_BY_REGIME:f}}var $=e=>new URL(`https://${e}`).hostname.split(".").slice(-2).join(".");var J=/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;async function Ht(e,{xdiLocation:i,transcendUrl:o=_chunkE57K4DGXcjs.r,removeIpAddresses:t=!0,domainBlockList:r=["localhost"],xdiAllowedCommands:n="ConsentManager:Sync"}){let a=Array.isArray(e)?e:[{apiKey:e,organizationId:"",organizationName:""}],l=await _bluebird.map.call(void 0, a,async m=>{_chunkZUNVPK23cjs.a.info(_colors2.default.magenta(`Pulling consent metadata for organization - ${m.organizationName}`));let f=_chunkRSN3DUTPcjs.vc.call(void 0, o,m.apiKey);return await _chunkRSN3DUTPcjs.Nc.call(void 0, f)},{concurrency:5}),s={};return l.forEach(m=>{let f=_optionalChain([m, 'access', _2 => _2.partition, 'optionalAccess', _3 => _3.partition])||m.bundleURL.split("/").reverse()[1];s[f]||(s[f]=[]);let E=_chunkE57K4DGXcjs.c.call(void 0, m.configuration.domains.filter(g=>!t||!J.test(g)).map(g=>$(g)),r);s[f]=[...new Set([...s[f]||[],...E])]}),{html:`
2
2
  <!DOCTYPE html>
3
3
  <script
4
4
  src="${i}"
@@ -8,5 +8,5 @@ data-xdi-commands="${n}"
8
8
  `,syncGroups:s}}function Yt(e){let i=e.map(({name:o,input:t})=>({title:o.replace(".yml",""),attributes:[..._optionalChain([t, 'optionalAccess', _4 => _4.domains])?[{key:"Transcend Domain List",values:[...new Set(t.domains)]}]:[],..._optionalChain([t, 'optionalAccess', _5 => _5.bundleUrls])?[{key:"Airgap Production URL",values:[t.bundleUrls.PRODUCTION]},{key:"Airgap Test URL",values:[t.bundleUrls.TEST]},{key:"Airgap XDI URL",values:[t.bundleUrls.PRODUCTION.replace("airgap.js","xdi.js")]}]:[],..._optionalChain([t, 'optionalAccess', _6 => _6.partition])?[{key:"Consent Partition Key",values:[t.partition]}]:[]]}));return _chunkZUNVPK23cjs.a.info(`
9
9
 
10
10
  ~~~~~~~~~~~
11
- Airgap scripts to host:`),i.forEach(({attributes:o,title:t},r)=>{_optionalChain([o, 'optionalAccess', _7 => _7.find, 'call', _8 => _8(n=>n.key==="Airgap Production URL"), 'optionalAccess', _9 => _9.values, 'optionalAccess', _10 => _10.forEach, 'call', _11 => _11(n=>{_chunkZUNVPK23cjs.a.info(`${r}) ${t} - ${n}`)})])}),i}var _iots = require('io-ts'); var p = _interopRequireWildcard(_iots);var _typeutils = require('@transcend-io/type-utils');var tt=p.intersection([p.type({nodes:p.array(_chunkJZEDU4GZcjs.c)}),p.partial({lastKey:p.partial({userId:p.string,partition:p.string,timestamp:p.string})})]);async function zt(e,{partition:i,filterBy:o={},limit:t=50}){let r,n=[],a=!0;for(;a;){let l=await e.post("v1/consent-preferences",{json:{partition:i,...o,startKey:r||void 0,limit:t}}).json(),{nodes:s,lastKey:d}=_typeutils.decodeCodec.call(void 0, tt,l);if(!s||s.length===0)break;n.push(...s),r=d,a=!!d&&Object.keys(d).length>0}return n}exports.a = at; exports.b = Ct; exports.c = vt; exports.d = Lt; exports.e = $; exports.f = J; exports.g = Ht; exports.h = Yt; exports.i = tt; exports.j = zt;
12
- //# sourceMappingURL=chunk-DCBE53LG.cjs.map
11
+ Airgap scripts to host:`),i.forEach(({attributes:o,title:t},r)=>{_optionalChain([o, 'optionalAccess', _7 => _7.find, 'call', _8 => _8(n=>n.key==="Airgap Production URL"), 'optionalAccess', _9 => _9.values, 'optionalAccess', _10 => _10.forEach, 'call', _11 => _11(n=>{_chunkZUNVPK23cjs.a.info(`${r}) ${t} - ${n}`)})])}),i}var _iots = require('io-ts'); var p = _interopRequireWildcard(_iots);var _typeutils = require('@transcend-io/type-utils');var tt=p.intersection([p.type({nodes:p.array(_chunk4GRQMYW2cjs.c)}),p.partial({lastKey:p.partial({userId:p.string,partition:p.string,timestamp:p.string})})]);async function zt(e,{partition:i,filterBy:o={},limit:t=50}){let r,n=[],a=!0;for(;a;){let l=await e.post("v1/consent-preferences",{json:{partition:i,...o,startKey:r||void 0,limit:t}}).json(),{nodes:s,lastKey:d}=_typeutils.decodeCodec.call(void 0, tt,l);if(!s||s.length===0)break;n.push(...s),r=d,a=!!d&&Object.keys(d).length>0}return n}exports.a = at; exports.b = Ct; exports.c = vt; exports.d = Lt; exports.e = $; exports.f = J; exports.g = Ht; exports.h = Yt; exports.i = tt; exports.j = zt;
12
+ //# sourceMappingURL=chunk-2VX4QD73.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/cli/cli/dist/chunk-DCBE53LG.cjs","../src/lib/consent-manager/updateConsentManagerVersionToLatest.ts","../src/lib/consent-manager/uploadDataFlowsFromCsv.ts","../src/lib/consent-manager/uploadCookiesFromCsv.ts","../src/lib/consent-manager/pullConsentManagerMetrics.ts","../src/lib/consent-manager/domainToHost.ts","../src/lib/consent-manager/buildXdiSyncEndpoint.ts","../src/lib/consent-manager/consentManagersToBusinessEntities.ts","../src/lib/consent-manager/fetchConsentPreferences.ts"],"names":["updateConsentManagerVersionToLatest","auth","deploy","transcendUrl","DEFAULT_TRANSCEND_API","bundleTypes","ConsentBundleType","client","buildTranscendGraphQLClient","consentManagerId","fetchConsentManagerId","mapSeries","bundleType","logger","colors","updateConsentManagerToLatest","deployConsentManager","OMIT_COLUMNS","uploadDataFlowsFromCsv","trackerStatus","file","classifyService","validatedDataFlowInputs","readCsv","DataFlowCsvInput","Type","Notes","Service","Purpose","Status","Owners","Teams","value","rest","splitCsvToList","key","syncDataFlows","uploadCookiesFromCsv","validatedCookieInputs","CookieCsvInput","isRegex","Name","syncCookies","ONE_SECOND","ONE_MINUTE","ONE_HOUR","ONE_DAY","ONE_WEEK","pullConsentManagerMetrics","bin","start","end","airgapBundleId","startTime","endTime","startDate","endDate","privacySignalData","consentChangesData","consentSessionsByRegimeData","fetchConsentManagerAnalyticsData","domainToHost","domain"],"mappings":"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","file":"/home/runner/work/cli/cli/dist/chunk-DCBE53LG.cjs","sourcesContent":[null,"import { ConsentBundleType } from '@transcend-io/privacy-types';\nimport { mapSeries } from 'bluebird';\nimport {\n updateConsentManagerToLatest,\n buildTranscendGraphQLClient,\n fetchConsentManagerId,\n deployConsentManager,\n} from '../graphql';\nimport colors from 'colors';\n\nimport { logger } from '../../logger';\nimport { DEFAULT_TRANSCEND_API } from '../../constants';\n\n/**\n * Update the consent manager to latest version\n *\n * @param options - Options\n */\nexport async function updateConsentManagerVersionToLatest({\n auth,\n deploy = false,\n transcendUrl = DEFAULT_TRANSCEND_API,\n bundleTypes = Object.values(ConsentBundleType),\n}: {\n /** Transcend API key authentication */\n auth: string;\n /** API URL for Transcend backend */\n transcendUrl?: string;\n /** Deploy consent manager with this update */\n deploy?: boolean;\n /** The bundle types to update and deploy */\n bundleTypes?: ConsentBundleType[];\n}): Promise<void> {\n // Find all requests made before createdAt that are in a removing data state\n const client = buildTranscendGraphQLClient(transcendUrl, auth);\n\n // Grab Consent Manager ID\n const consentManagerId = await fetchConsentManagerId(client);\n\n // Update each bundle type to latest version\n await mapSeries(bundleTypes, async (bundleType) => {\n logger.info(\n colors.magenta(\n `Update Consent Manager bundle with ID \"${consentManagerId}\" and type \"${bundleType}\" to latest version...`,\n ),\n );\n await updateConsentManagerToLatest(client, {\n id: consentManagerId,\n bundleType,\n });\n logger.info(\n colors.green(\n `Updated Consent Manager bundle with ID \"${consentManagerId}\" and type \"${bundleType}\" to latest version!`,\n ),\n );\n });\n\n // deploy Consent Managers\n if (deploy) {\n // Update each bundle type to latest version\n await mapSeries(bundleTypes, async (bundleType) => {\n logger.info(\n colors.magenta(\n `Deploying Consent Manager bundle with ID \"${consentManagerId}\" and type \"${bundleType}\"...`,\n ),\n );\n await deployConsentManager(client, {\n id: consentManagerId,\n bundleType,\n });\n logger.info(\n colors.green(\n `Deployed Consent Manager bundle with ID \"${consentManagerId}\" and type \"${bundleType}\"!`,\n ),\n );\n });\n }\n}\n","import colors from 'colors';\nimport { logger } from '../../logger';\nimport { ConsentTrackerStatus } from '@transcend-io/privacy-types';\nimport { buildTranscendGraphQLClient, syncDataFlows } from '../graphql';\nimport { readCsv } from '../requests/readCsv';\nimport { DataFlowInput, DataFlowCsvInput } from '../../codecs';\nimport { splitCsvToList } from '../requests';\nimport { DEFAULT_TRANSCEND_API } from '../../constants';\n\nconst OMIT_COLUMNS = [\n 'ID',\n 'Activity',\n 'Encounters',\n 'Last Seen At',\n 'Has Native Do Not Sell/Share Support',\n 'IAB USP API Support',\n 'Service Description',\n 'Website URL',\n 'Categories of Recipients',\n];\n\n/**\n * Upload a set of data flows from CSV\n *\n * @param options - Options\n */\nexport async function uploadDataFlowsFromCsv({\n auth,\n trackerStatus,\n file,\n classifyService = false,\n transcendUrl = DEFAULT_TRANSCEND_API,\n}: {\n /** CSV file path */\n file: string;\n /** Transcend API key authentication */\n auth: string;\n /** Sombra API key authentication */\n trackerStatus: ConsentTrackerStatus;\n /** classify data flow service if missing */\n classifyService?: boolean;\n /** API URL for Transcend backend */\n transcendUrl?: string;\n}): Promise<void> {\n // Build a GraphQL client\n const client = buildTranscendGraphQLClient(transcendUrl, auth);\n\n // Read from CSV the set of data flow inputs\n logger.info(colors.magenta(`Reading \"${file}\" from disk`));\n const dataFlowInputs = readCsv(file, DataFlowCsvInput);\n\n // Convert these data flow inputs into a format that the other function can use\n const validatedDataFlowInputs = dataFlowInputs.map(\n ({\n Type,\n Notes,\n // TODO: https://transcend.height.app/T-26391 - export in CSV\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Service,\n Purpose,\n Status,\n Owners,\n Teams,\n 'Connections Made To': value,\n ...rest\n }): DataFlowInput => ({\n value,\n type: Type,\n description: Notes,\n trackingPurposes: splitCsvToList(Purpose),\n // TODO: https://transcend.height.app/T-26391\n // service: Service,\n // Apply the trackerStatus to all values in the CSV -> allows for customer to define tracker status\n // on a row by row basis if needed\n status: Status || trackerStatus,\n owners: Owners ? splitCsvToList(Owners) : undefined,\n teams: Teams ? splitCsvToList(Teams) : undefined,\n // all remaining options are attribute\n attributes: Object.entries(rest)\n // filter out native columns that are exported from the admin dashboard\n // but not custom attributes\n .filter(([key]) => !OMIT_COLUMNS.includes(key))\n .map(([key, value]) => ({\n key,\n values: splitCsvToList(value),\n })),\n }),\n );\n\n // Upload the data flows into Transcend dashboard\n const syncedDataFlows = await syncDataFlows(\n client,\n validatedDataFlowInputs,\n classifyService,\n );\n\n // Log errors\n if (!syncedDataFlows) {\n logger.error(\n colors.red(\n 'Encountered error(s) syncing data flows from CSV, see logs above for more info. ',\n ),\n );\n process.exit(1);\n }\n}\n","import colors from 'colors';\nimport { logger } from '../../logger';\nimport { ConsentTrackerStatus } from '@transcend-io/privacy-types';\nimport { buildTranscendGraphQLClient, syncCookies } from '../graphql';\nimport { readCsv } from '../requests/readCsv';\nimport { CookieInput, CookieCsvInput } from '../../codecs';\nimport { splitCsvToList } from '../requests';\nimport { DEFAULT_TRANSCEND_API } from '../../constants';\n\nconst OMIT_COLUMNS = [\n 'ID',\n 'Activity',\n 'Encounters',\n 'Last Seen At',\n 'Has Native Do Not Sell/Share Support',\n 'IAB USP API Support',\n 'Service Description',\n 'Website URL',\n 'Categories of Recipients',\n];\n\n/**\n * Upload a set of cookies from CSV\n *\n * @param options - Options\n */\nexport async function uploadCookiesFromCsv({\n auth,\n trackerStatus,\n file,\n transcendUrl = DEFAULT_TRANSCEND_API,\n}: {\n /** CSV file path */\n file: string;\n /** Transcend API key authentication */\n auth: string;\n /** Sombra API key authentication */\n trackerStatus: ConsentTrackerStatus;\n /** API URL for Transcend backend */\n transcendUrl?: string;\n}): Promise<void> {\n // Build a GraphQL client\n const client = buildTranscendGraphQLClient(transcendUrl, auth);\n\n // Read from CSV the set of cookie inputs\n logger.info(colors.magenta(`Reading \"${file}\" from disk`));\n const cookieInputs = readCsv(file, CookieCsvInput);\n\n // Convert these inputs into a format that the other function can use\n const validatedCookieInputs = cookieInputs.map(\n ({\n 'Is Regex?': isRegex,\n Notes,\n // TODO: https://transcend.height.app/T-26391 - export in CSV\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Service,\n Purpose,\n Status,\n Owners,\n Teams,\n Name,\n ...rest\n }): CookieInput => ({\n ...(typeof isRegex === 'string'\n ? { isRegex: isRegex.toLowerCase() === 'true' }\n : {}),\n name: Name,\n description: Notes,\n trackingPurposes: splitCsvToList(Purpose),\n // TODO: https://transcend.height.app/T-26391\n // service: Service,\n // Apply the trackerStatus to all values in the CSV -> allows for customer to define tracker status\n // on a row by row basis if needed\n status: Status || trackerStatus,\n owners: Owners ? splitCsvToList(Owners) : undefined,\n teams: Teams ? splitCsvToList(Teams) : undefined,\n // all remaining options are attribute\n attributes: Object.entries(rest)\n // filter out native columns that are exported from the admin dashboard\n // but not custom attributes\n .filter(([key]) => !OMIT_COLUMNS.includes(key))\n .map(([key, value]) => ({\n key,\n values: splitCsvToList(value),\n })),\n }),\n );\n\n // Upload the cookies into Transcend dashboard\n const syncedCookies = await syncCookies(client, validatedCookieInputs);\n\n // Log errors\n if (!syncedCookies) {\n logger.error(\n colors.red(\n 'Encountered error(s) syncing cookies from CSV, see logs above for more info. ',\n ),\n );\n process.exit(1);\n }\n}\n","import type { GraphQLClient } from 'graphql-request';\nimport {\n ConsentManagerMetric,\n ConsentManagerMetricBin,\n fetchConsentManagerAnalyticsData,\n fetchConsentManagerId,\n} from '../graphql';\n\n/**\n * One second of time in ms\n */\nconst ONE_SECOND = 1000;\nconst ONE_MINUTE = 60 * ONE_SECOND;\nconst ONE_HOUR = 60 * ONE_MINUTE;\nconst ONE_DAY = 24 * ONE_HOUR;\nconst ONE_WEEK = 7 * ONE_DAY;\n\n/**\n * Pull consent manager metrics in an organization\n *\n * @param client - GraphQL client\n * @param options - Options\n * @returns The consent manager metrics\n */\nexport async function pullConsentManagerMetrics(\n client: GraphQLClient,\n {\n bin,\n start,\n end = new Date(),\n }: {\n /** Start date to pull metrics from */\n start: Date;\n /** End date to pull metrics from (assumes now) */\n end?: Date;\n /** Bin size to pull metrics */\n bin: ConsentManagerMetricBin;\n },\n): Promise<{\n /** Privacy signal data */\n PRIVACY_SIGNAL_TIMESERIES: ConsentManagerMetric[];\n /** Consent changes data */\n CONSENT_CHANGES_TIMESERIES: ConsentManagerMetric[];\n /** Consent sessions by regime */\n CONSENT_SESSIONS_BY_REGIME: ConsentManagerMetric[];\n}> {\n // Grab the bundleId associated with this API key\n const airgapBundleId = await fetchConsentManagerId(client);\n\n // convert start and end to times\n const startTime = Math.floor(start.getTime() / 1000);\n const endTime = Math.floor(end.getTime() / 1000);\n if (startTime > endTime) {\n throw new Error('Received \"end\" date that happened before \"start\" date');\n }\n\n // do not allow hourly bins greater than 2 weeks\n if (bin === '1h' && end.getTime() - start.getTime() > ONE_WEEK * 2) {\n throw new Error(\n 'When using bin=1h, start and end time can be no more than 2 weeks apart',\n );\n }\n\n // Pull in the metrics\n const startDate = start.toISOString();\n const endDate = end.toISOString();\n const [privacySignalData, consentChangesData, consentSessionsByRegimeData] =\n await Promise.all([\n fetchConsentManagerAnalyticsData(client, {\n dataSource: 'PRIVACY_SIGNAL_TIMESERIES',\n startDate,\n endDate,\n forceRefetch: true,\n airgapBundleId,\n binInterval: bin,\n smoothTimeseries: false,\n }),\n fetchConsentManagerAnalyticsData(client, {\n dataSource: 'CONSENT_CHANGES_TIMESERIES',\n startDate,\n endDate,\n forceRefetch: true,\n airgapBundleId,\n binInterval: bin,\n smoothTimeseries: false,\n }),\n fetchConsentManagerAnalyticsData(client, {\n dataSource: 'CONSENT_SESSIONS_BY_REGIME',\n startDate,\n endDate,\n forceRefetch: true,\n airgapBundleId,\n binInterval: bin,\n smoothTimeseries: false,\n }),\n ]);\n\n return {\n PRIVACY_SIGNAL_TIMESERIES: privacySignalData,\n CONSENT_CHANGES_TIMESERIES: consentChangesData,\n CONSENT_SESSIONS_BY_REGIME: consentSessionsByRegimeData,\n };\n}\n","/**\n * Convert a domain to host\n *\n * @param domain - e.g. test.acme.com\n * @returns Host acme.com\n */\nexport const domainToHost = (domain: string): string =>\n new URL(`https://${domain}`).hostname.split('.').slice(-2).join('.');\n","import colors from 'colors';\n\nimport { buildTranscendGraphQLClient, fetchConsentManager } from '../graphql';\nimport { difference } from 'lodash-es';\nimport { map } from 'bluebird';\nimport { StoredApiKey } from '../../codecs';\nimport { DEFAULT_TRANSCEND_API } from '../../constants';\nimport { logger } from '../../logger';\nimport { domainToHost } from './domainToHost';\n\n/**\n * Sync group configuration mapping\n * e.g.\n * {\n * \"abdb5e78-0d69-4554-a3bd-84b72ca3b3d9\": [\n * \"test.com\"\n * ],\n * \"f6b3ba87-c9df-444f-b420-6fac49e35910\": [\n * \"blue.com\"\n * ]\n * }\n */\nexport type XdiSyncGroups = { [k in string]: string[] };\n\n/** Regular expression for IP addresses - remove these from sync endpoint */\nexport const IP_ADDRESS_REGEX =\n // eslint-disable-next-line max-len\n /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;\n\n/**\n * Build the sync endpoint definition for a set of Transcend accounts\n *\n * @param apiKeys - The API keys that will be used to pull down configurations for\n * @param options - Options\n * @returns The XDI configuration\n */\nexport async function buildXdiSyncEndpoint(\n apiKeys: string | StoredApiKey[],\n {\n xdiLocation,\n transcendUrl = DEFAULT_TRANSCEND_API,\n removeIpAddresses = true,\n domainBlockList = ['localhost'],\n xdiAllowedCommands = 'ConsentManager:Sync',\n }: {\n /** The file location where the XDI file is hosted */\n xdiLocation: string;\n /** URL of Transcend API */\n transcendUrl?: string;\n /** When true, remove IP addresses (defaults to true) */\n removeIpAddresses?: boolean;\n /** Block list of domains to omit from sync endpoint - includes `localhost` by default */\n domainBlockList?: string[];\n /** Allows XDI commands */\n xdiAllowedCommands?: string;\n },\n): Promise<{\n /** Sync group configurations */\n syncGroups: XdiSyncGroups;\n /** The HTML string */\n html: string;\n}> {\n // Convert API keys to list\n const apiKeysAsList = Array.isArray(apiKeys)\n ? apiKeys\n : [{ apiKey: apiKeys, organizationId: '', organizationName: '' }];\n\n // Fetch configuration for each account\n const consentManagers = await map(\n apiKeysAsList,\n async (apiKey) => {\n logger.info(\n colors.magenta(\n `Pulling consent metadata for organization - ${apiKey.organizationName}`,\n ),\n );\n\n // Create a GraphQL client\n const client = buildTranscendGraphQLClient(transcendUrl, apiKey.apiKey);\n\n // Grab consent manager\n const consentManager = await fetchConsentManager(client);\n return consentManager;\n },\n { concurrency: 5 },\n );\n\n // construct the sync groups\n const syncGroups: XdiSyncGroups = {};\n consentManagers.forEach((consentManager) => {\n // grab the partition key\n const partitionKey =\n // take explicit key first\n consentManager.partition?.partition ||\n // fallback to bundle ID\n consentManager.bundleURL.split('/').reverse()[1];\n\n // Ensure that partition exists in the sync groups\n if (!syncGroups[partitionKey]) {\n syncGroups[partitionKey] = [];\n }\n\n // Map domain list to a host list\n const hosts = difference(\n consentManager.configuration.domains\n .filter(\n // ignore IP addresses\n (domain) => !removeIpAddresses || !IP_ADDRESS_REGEX.test(domain),\n )\n .map((domain) => domainToHost(domain)),\n // ignore block list\n domainBlockList,\n );\n // merge existing sync group with hosts for this consent manager\n syncGroups[partitionKey] = [\n ...new Set([...(syncGroups[partitionKey] || []), ...hosts]),\n ];\n });\n\n // Construct the HTML\n const syncEndpointHtml = `\n<!DOCTYPE html>\n<script\nsrc=\"${xdiLocation}\"\ndata-sync-groups='${JSON.stringify(syncGroups, null, 2)}'\ndata-xdi-commands=\"${xdiAllowedCommands}\"\n></script>\n`;\n\n return {\n html: syncEndpointHtml,\n syncGroups,\n };\n}\n","import { BusinessEntityInput, ConsentManagerInput } from '../../codecs';\nimport { logger } from '../../logger';\n\n/**\n * Combine multiple consent manager configurations into a list of business entity configurations\n *\n * @param inputs - Consent manager configurations to combine\n * @returns Business entity configuration input\n */\nexport function consentManagersToBusinessEntities(\n inputs: {\n /** Name of business entity */\n name: string;\n /** Consent manager input */\n input?: ConsentManagerInput;\n }[],\n): BusinessEntityInput[] {\n // Construct the business entities YAML definition\n const businessEntities = inputs.map(\n ({ name, input }): BusinessEntityInput => ({\n // Title of Transcend Instance\n title: name.replace('.yml', ''),\n attributes: [\n // Sync domain list\n ...(input?.domains\n ? [\n {\n key: 'Transcend Domain List',\n values: [...new Set(input.domains)],\n },\n ]\n : []),\n // Sync bundle URLs\n ...(input?.bundleUrls\n ? [\n {\n key: 'Airgap Production URL',\n values: [input.bundleUrls.PRODUCTION],\n },\n {\n key: 'Airgap Test URL',\n values: [input.bundleUrls.TEST],\n },\n {\n key: 'Airgap XDI URL',\n values: [\n input.bundleUrls.PRODUCTION.replace('airgap.js', 'xdi.js'),\n ],\n },\n ]\n : []),\n // Sync partition keys\n ...(input?.partition\n ? [\n {\n key: 'Consent Partition Key',\n values: [input.partition],\n },\n ]\n : []),\n ],\n }),\n );\n\n // Log out info on airgap scripts to host\n logger.info('\\n\\n~~~~~~~~~~~\\nAirgap scripts to host:');\n businessEntities.forEach(({ attributes, title }, ind) => {\n attributes\n ?.find((attr) => attr.key === 'Airgap Production URL')\n ?.values?.forEach((url) => {\n logger.info(`${ind}) ${title} - ${url}`);\n });\n });\n\n return businessEntities;\n}\n","import * as t from 'io-ts';\nimport { decodeCodec } from '@transcend-io/type-utils';\nimport type { Got } from 'got';\nimport { ConsentPreferenceFetch } from './types';\n\nexport const ConsentPreferenceResponse = t.intersection([\n t.type({\n nodes: t.array(ConsentPreferenceFetch),\n }),\n t.partial({\n lastKey: t.partial({\n userId: t.string,\n partition: t.string,\n timestamp: t.string,\n }),\n }),\n]);\n\n/** Type override */\nexport type ConsentPreferenceResponse = t.TypeOf<\n typeof ConsentPreferenceResponse\n>;\n\n/**\n * Fetch consent preferences for the managed consent database\n *\n * @param sombra - Sombra instance configured to make requests\n * @param options - Additional options\n * @returns The consent preferences\n */\nexport async function fetchConsentPreferences(\n sombra: Got,\n {\n partition,\n filterBy = {},\n limit = 50,\n }: {\n /** Partition key to fetch */\n partition: string;\n /** Filter consent preferences */\n filterBy?: {\n /** Fetch specific identifiers */\n identifiers?: string[];\n /** Filter before timestamp */\n timestampBefore?: string;\n /** Filter after timestamp */\n timestampAfter?: string;\n };\n /** Number of items to pull back at once */\n limit?: number;\n },\n): Promise<ConsentPreferenceFetch[]> {\n let currentLastKey: ConsentPreferenceResponse['lastKey'];\n const data: ConsentPreferenceFetch[] = [];\n let shouldContinue = true;\n\n while (shouldContinue) {\n const response = await sombra\n .post('v1/consent-preferences', {\n json: {\n partition,\n ...filterBy,\n // using lastKey to paginate if it exists (will not for first iteration)\n startKey: currentLastKey || undefined,\n limit,\n },\n })\n .json();\n const { nodes, lastKey } = decodeCodec(ConsentPreferenceResponse, response);\n\n if (!nodes || nodes.length === 0) {\n break;\n }\n\n // Process the data received from the API call\n // For example, push the new data into an array\n data.push(...nodes);\n\n // Extract the lastKey from the API response\n currentLastKey = lastKey;\n shouldContinue = !!lastKey && Object.keys(lastKey).length > 0;\n }\n\n return data;\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/cli/cli/dist/chunk-2VX4QD73.cjs","../src/lib/consent-manager/updateConsentManagerVersionToLatest.ts","../src/lib/consent-manager/uploadDataFlowsFromCsv.ts","../src/lib/consent-manager/uploadCookiesFromCsv.ts","../src/lib/consent-manager/pullConsentManagerMetrics.ts","../src/lib/consent-manager/domainToHost.ts","../src/lib/consent-manager/buildXdiSyncEndpoint.ts","../src/lib/consent-manager/consentManagersToBusinessEntities.ts","../src/lib/consent-manager/fetchConsentPreferences.ts"],"names":["updateConsentManagerVersionToLatest","auth","deploy","transcendUrl","DEFAULT_TRANSCEND_API","bundleTypes","ConsentBundleType","client","buildTranscendGraphQLClient","consentManagerId","fetchConsentManagerId","mapSeries","bundleType","logger","colors","updateConsentManagerToLatest","deployConsentManager","OMIT_COLUMNS","uploadDataFlowsFromCsv","trackerStatus","file","classifyService","validatedDataFlowInputs","readCsv","DataFlowCsvInput","Type","Notes","Service","Purpose","Status","Owners","Teams","value","rest","splitCsvToList","key","syncDataFlows","uploadCookiesFromCsv","validatedCookieInputs","CookieCsvInput","isRegex","Name","syncCookies","ONE_SECOND","ONE_MINUTE","ONE_HOUR","ONE_DAY","ONE_WEEK","pullConsentManagerMetrics","bin","start","end","airgapBundleId","startTime","endTime","startDate","endDate","privacySignalData","consentChangesData","consentSessionsByRegimeData","fetchConsentManagerAnalyticsData","domainToHost","domain"],"mappings":"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","file":"/home/runner/work/cli/cli/dist/chunk-2VX4QD73.cjs","sourcesContent":[null,"import { ConsentBundleType } from '@transcend-io/privacy-types';\nimport { mapSeries } from 'bluebird';\nimport {\n updateConsentManagerToLatest,\n buildTranscendGraphQLClient,\n fetchConsentManagerId,\n deployConsentManager,\n} from '../graphql';\nimport colors from 'colors';\n\nimport { logger } from '../../logger';\nimport { DEFAULT_TRANSCEND_API } from '../../constants';\n\n/**\n * Update the consent manager to latest version\n *\n * @param options - Options\n */\nexport async function updateConsentManagerVersionToLatest({\n auth,\n deploy = false,\n transcendUrl = DEFAULT_TRANSCEND_API,\n bundleTypes = Object.values(ConsentBundleType),\n}: {\n /** Transcend API key authentication */\n auth: string;\n /** API URL for Transcend backend */\n transcendUrl?: string;\n /** Deploy consent manager with this update */\n deploy?: boolean;\n /** The bundle types to update and deploy */\n bundleTypes?: ConsentBundleType[];\n}): Promise<void> {\n // Find all requests made before createdAt that are in a removing data state\n const client = buildTranscendGraphQLClient(transcendUrl, auth);\n\n // Grab Consent Manager ID\n const consentManagerId = await fetchConsentManagerId(client);\n\n // Update each bundle type to latest version\n await mapSeries(bundleTypes, async (bundleType) => {\n logger.info(\n colors.magenta(\n `Update Consent Manager bundle with ID \"${consentManagerId}\" and type \"${bundleType}\" to latest version...`,\n ),\n );\n await updateConsentManagerToLatest(client, {\n id: consentManagerId,\n bundleType,\n });\n logger.info(\n colors.green(\n `Updated Consent Manager bundle with ID \"${consentManagerId}\" and type \"${bundleType}\" to latest version!`,\n ),\n );\n });\n\n // deploy Consent Managers\n if (deploy) {\n // Update each bundle type to latest version\n await mapSeries(bundleTypes, async (bundleType) => {\n logger.info(\n colors.magenta(\n `Deploying Consent Manager bundle with ID \"${consentManagerId}\" and type \"${bundleType}\"...`,\n ),\n );\n await deployConsentManager(client, {\n id: consentManagerId,\n bundleType,\n });\n logger.info(\n colors.green(\n `Deployed Consent Manager bundle with ID \"${consentManagerId}\" and type \"${bundleType}\"!`,\n ),\n );\n });\n }\n}\n","import colors from 'colors';\nimport { logger } from '../../logger';\nimport { ConsentTrackerStatus } from '@transcend-io/privacy-types';\nimport { buildTranscendGraphQLClient, syncDataFlows } from '../graphql';\nimport { readCsv } from '../requests/readCsv';\nimport { DataFlowInput, DataFlowCsvInput } from '../../codecs';\nimport { splitCsvToList } from '../requests';\nimport { DEFAULT_TRANSCEND_API } from '../../constants';\n\nconst OMIT_COLUMNS = [\n 'ID',\n 'Activity',\n 'Encounters',\n 'Last Seen At',\n 'Has Native Do Not Sell/Share Support',\n 'IAB USP API Support',\n 'Service Description',\n 'Website URL',\n 'Categories of Recipients',\n];\n\n/**\n * Upload a set of data flows from CSV\n *\n * @param options - Options\n */\nexport async function uploadDataFlowsFromCsv({\n auth,\n trackerStatus,\n file,\n classifyService = false,\n transcendUrl = DEFAULT_TRANSCEND_API,\n}: {\n /** CSV file path */\n file: string;\n /** Transcend API key authentication */\n auth: string;\n /** Sombra API key authentication */\n trackerStatus: ConsentTrackerStatus;\n /** classify data flow service if missing */\n classifyService?: boolean;\n /** API URL for Transcend backend */\n transcendUrl?: string;\n}): Promise<void> {\n // Build a GraphQL client\n const client = buildTranscendGraphQLClient(transcendUrl, auth);\n\n // Read from CSV the set of data flow inputs\n logger.info(colors.magenta(`Reading \"${file}\" from disk`));\n const dataFlowInputs = readCsv(file, DataFlowCsvInput);\n\n // Convert these data flow inputs into a format that the other function can use\n const validatedDataFlowInputs = dataFlowInputs.map(\n ({\n Type,\n Notes,\n // TODO: https://transcend.height.app/T-26391 - export in CSV\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Service,\n Purpose,\n Status,\n Owners,\n Teams,\n 'Connections Made To': value,\n ...rest\n }): DataFlowInput => ({\n value,\n type: Type,\n description: Notes,\n trackingPurposes: splitCsvToList(Purpose),\n // TODO: https://transcend.height.app/T-26391\n // service: Service,\n // Apply the trackerStatus to all values in the CSV -> allows for customer to define tracker status\n // on a row by row basis if needed\n status: Status || trackerStatus,\n owners: Owners ? splitCsvToList(Owners) : undefined,\n teams: Teams ? splitCsvToList(Teams) : undefined,\n // all remaining options are attribute\n attributes: Object.entries(rest)\n // filter out native columns that are exported from the admin dashboard\n // but not custom attributes\n .filter(([key]) => !OMIT_COLUMNS.includes(key))\n .map(([key, value]) => ({\n key,\n values: splitCsvToList(value),\n })),\n }),\n );\n\n // Upload the data flows into Transcend dashboard\n const syncedDataFlows = await syncDataFlows(\n client,\n validatedDataFlowInputs,\n classifyService,\n );\n\n // Log errors\n if (!syncedDataFlows) {\n logger.error(\n colors.red(\n 'Encountered error(s) syncing data flows from CSV, see logs above for more info. ',\n ),\n );\n process.exit(1);\n }\n}\n","import colors from 'colors';\nimport { logger } from '../../logger';\nimport { ConsentTrackerStatus } from '@transcend-io/privacy-types';\nimport { buildTranscendGraphQLClient, syncCookies } from '../graphql';\nimport { readCsv } from '../requests/readCsv';\nimport { CookieInput, CookieCsvInput } from '../../codecs';\nimport { splitCsvToList } from '../requests';\nimport { DEFAULT_TRANSCEND_API } from '../../constants';\n\nconst OMIT_COLUMNS = [\n 'ID',\n 'Activity',\n 'Encounters',\n 'Last Seen At',\n 'Has Native Do Not Sell/Share Support',\n 'IAB USP API Support',\n 'Service Description',\n 'Website URL',\n 'Categories of Recipients',\n];\n\n/**\n * Upload a set of cookies from CSV\n *\n * @param options - Options\n */\nexport async function uploadCookiesFromCsv({\n auth,\n trackerStatus,\n file,\n transcendUrl = DEFAULT_TRANSCEND_API,\n}: {\n /** CSV file path */\n file: string;\n /** Transcend API key authentication */\n auth: string;\n /** Sombra API key authentication */\n trackerStatus: ConsentTrackerStatus;\n /** API URL for Transcend backend */\n transcendUrl?: string;\n}): Promise<void> {\n // Build a GraphQL client\n const client = buildTranscendGraphQLClient(transcendUrl, auth);\n\n // Read from CSV the set of cookie inputs\n logger.info(colors.magenta(`Reading \"${file}\" from disk`));\n const cookieInputs = readCsv(file, CookieCsvInput);\n\n // Convert these inputs into a format that the other function can use\n const validatedCookieInputs = cookieInputs.map(\n ({\n 'Is Regex?': isRegex,\n Notes,\n // TODO: https://transcend.height.app/T-26391 - export in CSV\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Service,\n Purpose,\n Status,\n Owners,\n Teams,\n Name,\n ...rest\n }): CookieInput => ({\n ...(typeof isRegex === 'string'\n ? { isRegex: isRegex.toLowerCase() === 'true' }\n : {}),\n name: Name,\n description: Notes,\n trackingPurposes: splitCsvToList(Purpose),\n // TODO: https://transcend.height.app/T-26391\n // service: Service,\n // Apply the trackerStatus to all values in the CSV -> allows for customer to define tracker status\n // on a row by row basis if needed\n status: Status || trackerStatus,\n owners: Owners ? splitCsvToList(Owners) : undefined,\n teams: Teams ? splitCsvToList(Teams) : undefined,\n // all remaining options are attribute\n attributes: Object.entries(rest)\n // filter out native columns that are exported from the admin dashboard\n // but not custom attributes\n .filter(([key]) => !OMIT_COLUMNS.includes(key))\n .map(([key, value]) => ({\n key,\n values: splitCsvToList(value),\n })),\n }),\n );\n\n // Upload the cookies into Transcend dashboard\n const syncedCookies = await syncCookies(client, validatedCookieInputs);\n\n // Log errors\n if (!syncedCookies) {\n logger.error(\n colors.red(\n 'Encountered error(s) syncing cookies from CSV, see logs above for more info. ',\n ),\n );\n process.exit(1);\n }\n}\n","import type { GraphQLClient } from 'graphql-request';\nimport {\n ConsentManagerMetric,\n ConsentManagerMetricBin,\n fetchConsentManagerAnalyticsData,\n fetchConsentManagerId,\n} from '../graphql';\n\n/**\n * One second of time in ms\n */\nconst ONE_SECOND = 1000;\nconst ONE_MINUTE = 60 * ONE_SECOND;\nconst ONE_HOUR = 60 * ONE_MINUTE;\nconst ONE_DAY = 24 * ONE_HOUR;\nconst ONE_WEEK = 7 * ONE_DAY;\n\n/**\n * Pull consent manager metrics in an organization\n *\n * @param client - GraphQL client\n * @param options - Options\n * @returns The consent manager metrics\n */\nexport async function pullConsentManagerMetrics(\n client: GraphQLClient,\n {\n bin,\n start,\n end = new Date(),\n }: {\n /** Start date to pull metrics from */\n start: Date;\n /** End date to pull metrics from (assumes now) */\n end?: Date;\n /** Bin size to pull metrics */\n bin: ConsentManagerMetricBin;\n },\n): Promise<{\n /** Privacy signal data */\n PRIVACY_SIGNAL_TIMESERIES: ConsentManagerMetric[];\n /** Consent changes data */\n CONSENT_CHANGES_TIMESERIES: ConsentManagerMetric[];\n /** Consent sessions by regime */\n CONSENT_SESSIONS_BY_REGIME: ConsentManagerMetric[];\n}> {\n // Grab the bundleId associated with this API key\n const airgapBundleId = await fetchConsentManagerId(client);\n\n // convert start and end to times\n const startTime = Math.floor(start.getTime() / 1000);\n const endTime = Math.floor(end.getTime() / 1000);\n if (startTime > endTime) {\n throw new Error('Received \"end\" date that happened before \"start\" date');\n }\n\n // do not allow hourly bins greater than 2 weeks\n if (bin === '1h' && end.getTime() - start.getTime() > ONE_WEEK * 2) {\n throw new Error(\n 'When using bin=1h, start and end time can be no more than 2 weeks apart',\n );\n }\n\n // Pull in the metrics\n const startDate = start.toISOString();\n const endDate = end.toISOString();\n const [privacySignalData, consentChangesData, consentSessionsByRegimeData] =\n await Promise.all([\n fetchConsentManagerAnalyticsData(client, {\n dataSource: 'PRIVACY_SIGNAL_TIMESERIES',\n startDate,\n endDate,\n forceRefetch: true,\n airgapBundleId,\n binInterval: bin,\n smoothTimeseries: false,\n }),\n fetchConsentManagerAnalyticsData(client, {\n dataSource: 'CONSENT_CHANGES_TIMESERIES',\n startDate,\n endDate,\n forceRefetch: true,\n airgapBundleId,\n binInterval: bin,\n smoothTimeseries: false,\n }),\n fetchConsentManagerAnalyticsData(client, {\n dataSource: 'CONSENT_SESSIONS_BY_REGIME',\n startDate,\n endDate,\n forceRefetch: true,\n airgapBundleId,\n binInterval: bin,\n smoothTimeseries: false,\n }),\n ]);\n\n return {\n PRIVACY_SIGNAL_TIMESERIES: privacySignalData,\n CONSENT_CHANGES_TIMESERIES: consentChangesData,\n CONSENT_SESSIONS_BY_REGIME: consentSessionsByRegimeData,\n };\n}\n","/**\n * Convert a domain to host\n *\n * @param domain - e.g. test.acme.com\n * @returns Host acme.com\n */\nexport const domainToHost = (domain: string): string =>\n new URL(`https://${domain}`).hostname.split('.').slice(-2).join('.');\n","import colors from 'colors';\n\nimport { buildTranscendGraphQLClient, fetchConsentManager } from '../graphql';\nimport { difference } from 'lodash-es';\nimport { map } from 'bluebird';\nimport { StoredApiKey } from '../../codecs';\nimport { DEFAULT_TRANSCEND_API } from '../../constants';\nimport { logger } from '../../logger';\nimport { domainToHost } from './domainToHost';\n\n/**\n * Sync group configuration mapping\n * e.g.\n * {\n * \"abdb5e78-0d69-4554-a3bd-84b72ca3b3d9\": [\n * \"test.com\"\n * ],\n * \"f6b3ba87-c9df-444f-b420-6fac49e35910\": [\n * \"blue.com\"\n * ]\n * }\n */\nexport type XdiSyncGroups = { [k in string]: string[] };\n\n/** Regular expression for IP addresses - remove these from sync endpoint */\nexport const IP_ADDRESS_REGEX =\n // eslint-disable-next-line max-len\n /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;\n\n/**\n * Build the sync endpoint definition for a set of Transcend accounts\n *\n * @param apiKeys - The API keys that will be used to pull down configurations for\n * @param options - Options\n * @returns The XDI configuration\n */\nexport async function buildXdiSyncEndpoint(\n apiKeys: string | StoredApiKey[],\n {\n xdiLocation,\n transcendUrl = DEFAULT_TRANSCEND_API,\n removeIpAddresses = true,\n domainBlockList = ['localhost'],\n xdiAllowedCommands = 'ConsentManager:Sync',\n }: {\n /** The file location where the XDI file is hosted */\n xdiLocation: string;\n /** URL of Transcend API */\n transcendUrl?: string;\n /** When true, remove IP addresses (defaults to true) */\n removeIpAddresses?: boolean;\n /** Block list of domains to omit from sync endpoint - includes `localhost` by default */\n domainBlockList?: string[];\n /** Allows XDI commands */\n xdiAllowedCommands?: string;\n },\n): Promise<{\n /** Sync group configurations */\n syncGroups: XdiSyncGroups;\n /** The HTML string */\n html: string;\n}> {\n // Convert API keys to list\n const apiKeysAsList = Array.isArray(apiKeys)\n ? apiKeys\n : [{ apiKey: apiKeys, organizationId: '', organizationName: '' }];\n\n // Fetch configuration for each account\n const consentManagers = await map(\n apiKeysAsList,\n async (apiKey) => {\n logger.info(\n colors.magenta(\n `Pulling consent metadata for organization - ${apiKey.organizationName}`,\n ),\n );\n\n // Create a GraphQL client\n const client = buildTranscendGraphQLClient(transcendUrl, apiKey.apiKey);\n\n // Grab consent manager\n const consentManager = await fetchConsentManager(client);\n return consentManager;\n },\n { concurrency: 5 },\n );\n\n // construct the sync groups\n const syncGroups: XdiSyncGroups = {};\n consentManagers.forEach((consentManager) => {\n // grab the partition key\n const partitionKey =\n // take explicit key first\n consentManager.partition?.partition ||\n // fallback to bundle ID\n consentManager.bundleURL.split('/').reverse()[1];\n\n // Ensure that partition exists in the sync groups\n if (!syncGroups[partitionKey]) {\n syncGroups[partitionKey] = [];\n }\n\n // Map domain list to a host list\n const hosts = difference(\n consentManager.configuration.domains\n .filter(\n // ignore IP addresses\n (domain) => !removeIpAddresses || !IP_ADDRESS_REGEX.test(domain),\n )\n .map((domain) => domainToHost(domain)),\n // ignore block list\n domainBlockList,\n );\n // merge existing sync group with hosts for this consent manager\n syncGroups[partitionKey] = [\n ...new Set([...(syncGroups[partitionKey] || []), ...hosts]),\n ];\n });\n\n // Construct the HTML\n const syncEndpointHtml = `\n<!DOCTYPE html>\n<script\nsrc=\"${xdiLocation}\"\ndata-sync-groups='${JSON.stringify(syncGroups, null, 2)}'\ndata-xdi-commands=\"${xdiAllowedCommands}\"\n></script>\n`;\n\n return {\n html: syncEndpointHtml,\n syncGroups,\n };\n}\n","import { BusinessEntityInput, ConsentManagerInput } from '../../codecs';\nimport { logger } from '../../logger';\n\n/**\n * Combine multiple consent manager configurations into a list of business entity configurations\n *\n * @param inputs - Consent manager configurations to combine\n * @returns Business entity configuration input\n */\nexport function consentManagersToBusinessEntities(\n inputs: {\n /** Name of business entity */\n name: string;\n /** Consent manager input */\n input?: ConsentManagerInput;\n }[],\n): BusinessEntityInput[] {\n // Construct the business entities YAML definition\n const businessEntities = inputs.map(\n ({ name, input }): BusinessEntityInput => ({\n // Title of Transcend Instance\n title: name.replace('.yml', ''),\n attributes: [\n // Sync domain list\n ...(input?.domains\n ? [\n {\n key: 'Transcend Domain List',\n values: [...new Set(input.domains)],\n },\n ]\n : []),\n // Sync bundle URLs\n ...(input?.bundleUrls\n ? [\n {\n key: 'Airgap Production URL',\n values: [input.bundleUrls.PRODUCTION],\n },\n {\n key: 'Airgap Test URL',\n values: [input.bundleUrls.TEST],\n },\n {\n key: 'Airgap XDI URL',\n values: [\n input.bundleUrls.PRODUCTION.replace('airgap.js', 'xdi.js'),\n ],\n },\n ]\n : []),\n // Sync partition keys\n ...(input?.partition\n ? [\n {\n key: 'Consent Partition Key',\n values: [input.partition],\n },\n ]\n : []),\n ],\n }),\n );\n\n // Log out info on airgap scripts to host\n logger.info('\\n\\n~~~~~~~~~~~\\nAirgap scripts to host:');\n businessEntities.forEach(({ attributes, title }, ind) => {\n attributes\n ?.find((attr) => attr.key === 'Airgap Production URL')\n ?.values?.forEach((url) => {\n logger.info(`${ind}) ${title} - ${url}`);\n });\n });\n\n return businessEntities;\n}\n","import * as t from 'io-ts';\nimport { decodeCodec } from '@transcend-io/type-utils';\nimport type { Got } from 'got';\nimport { ConsentPreferenceFetch } from './types';\n\nexport const ConsentPreferenceResponse = t.intersection([\n t.type({\n nodes: t.array(ConsentPreferenceFetch),\n }),\n t.partial({\n lastKey: t.partial({\n userId: t.string,\n partition: t.string,\n timestamp: t.string,\n }),\n }),\n]);\n\n/** Type override */\nexport type ConsentPreferenceResponse = t.TypeOf<\n typeof ConsentPreferenceResponse\n>;\n\n/**\n * Fetch consent preferences for the managed consent database\n *\n * @param sombra - Sombra instance configured to make requests\n * @param options - Additional options\n * @returns The consent preferences\n */\nexport async function fetchConsentPreferences(\n sombra: Got,\n {\n partition,\n filterBy = {},\n limit = 50,\n }: {\n /** Partition key to fetch */\n partition: string;\n /** Filter consent preferences */\n filterBy?: {\n /** Fetch specific identifiers */\n identifiers?: string[];\n /** Filter before timestamp */\n timestampBefore?: string;\n /** Filter after timestamp */\n timestampAfter?: string;\n };\n /** Number of items to pull back at once */\n limit?: number;\n },\n): Promise<ConsentPreferenceFetch[]> {\n let currentLastKey: ConsentPreferenceResponse['lastKey'];\n const data: ConsentPreferenceFetch[] = [];\n let shouldContinue = true;\n\n while (shouldContinue) {\n const response = await sombra\n .post('v1/consent-preferences', {\n json: {\n partition,\n ...filterBy,\n // using lastKey to paginate if it exists (will not for first iteration)\n startKey: currentLastKey || undefined,\n limit,\n },\n })\n .json();\n const { nodes, lastKey } = decodeCodec(ConsentPreferenceResponse, response);\n\n if (!nodes || nodes.length === 0) {\n break;\n }\n\n // Process the data received from the API call\n // For example, push the new data into an array\n data.push(...nodes);\n\n // Extract the lastKey from the API response\n currentLastKey = lastKey;\n shouldContinue = !!lastKey && Object.keys(lastKey).length > 0;\n }\n\n return data;\n}\n"]}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunk7O5DWH3Mcjs = require('./chunk-7O5DWH3M.cjs');var _chunkZUNVPK23cjs = require('./chunk-ZUNVPK23.cjs');var _chunkMFIMY5RYcjs = require('./chunk-MFIMY5RY.cjs');var _crypto = require('crypto'); var U = _interopRequireWildcard(_crypto);var _jsonwebtoken = require('jsonwebtoken'); var E = _interopRequireWildcard(_jsonwebtoken);function $(c,l,n){let o=Buffer.from(n,"base64"),f=Buffer.from(l,"base64"),u="id-aes256-wrap-pad",d=Buffer.from("A65959A6","hex"),s=U.createCipheriv(u,f,d),i={encryptedIdentifier:Buffer.concat([s.update(c),s.final()]).toString("base64")};return E.sign(i,o,{algorithm:"HS384"})}var _iots = require('io-ts'); var e = _interopRequireWildcard(_iots); var r = _interopRequireWildcard(_iots);var B=e.intersection([e.type({userId:e.string,timestamp:e.string}),e.partial({confirmed:e.union([e.literal("true"),e.literal("false")]),updated:e.union([e.literal("true"),e.literal("false")]),prompted:e.union([e.literal("true"),e.literal("false")]),metadata:e.string,usp:e.union([e.string,e.null]),gpp:e.union([e.string,e.null])})]),Y= exports.b =e.intersection([B,e.partial({purposes:e.string})]),G= exports.c =e.intersection([B,e.type({partition:e.string}),e.partial({tcf:e.union([e.string,e.null]),purposes:e.record(e.string,e.union([e.boolean,e.string]))})]);var _colors = require('colors'); var _colors2 = _interopRequireDefault(_colors);var _bluebird = require('bluebird');var _cliprogress = require('cli-progress'); var _cliprogress2 = _interopRequireDefault(_cliprogress);var _typeutils = require('@transcend-io/type-utils');var I=/^[0-9][Y|N]([Y|N])[Y|N]$/,R= exports.e =r.record(r.string,r.union([r.boolean,r.literal("Auto")]));async function Z({base64EncryptionKey:c,base64SigningKey:l,preferences:n,partition:o,concurrency:f=100,transcendUrl:u=_chunkMFIMY5RYcjs.s}){let d=_chunk7O5DWH3Mcjs.xc.call(void 0, u),s=n.filter(t=>t.usp&&!I.test(t.usp));if(s.length>0)throw new Error(`Received invalid usp strings: ${JSON.stringify(s,null,2)}`);let m=n.map((t,y)=>[t,y]).filter(([t])=>{if(!t.purposes)return!1;try{return _typeutils.decodeCodec.call(void 0, R,t.purposes),!1}catch (e2){return!0}});if(m.length>0)throw new Error(`Received invalid purpose maps: ${JSON.stringify(m,null,2)}`);let i=n.filter(t=>!t.usp&&!t.purposes);if(i.length>0)throw new Error(`Received invalid inputs, expected either purposes or usp to be defined: ${JSON.stringify(i,null,2)}`);_chunkZUNVPK23cjs.a.info(_colors2.default.magenta(`Uploading ${n.length} user preferences to partition ${o}`));let w=new Date().getTime(),g=new _cliprogress2.default.SingleBar({},_cliprogress2.default.Presets.shades_classic),S=0;g.start(n.length,0),await _bluebird.map.call(void 0, n,async({userId:t,confirmed:y="true",updated:T,prompted:v,purposes:x,...p})=>{let j=$(t,c,l),[,k]=p.usp?I.exec(p.usp)||[]:[],D={token:j,partition:o,consent:{confirmed:y==="true",purposes:x?_typeutils.decodeCodec.call(void 0, R,x):p.usp?{SaleOfInfo:k==="Y"}:{},...T?{updated:T==="true"}:{},...v?{prompted:v==="true"}:{},...p}};try{await d.post("sync",{json:D}).json()}catch(h){try{let C=JSON.parse(_optionalChain([h, 'optionalAccess', _2 => _2.response, 'optionalAccess', _3 => _3.body])||"{}");C.error&&_chunkZUNVPK23cjs.a.error(_colors2.default.red(`Error: ${C.error}`))}catch (e3){}throw new Error(`Received an error from server: ${_optionalChain([h, 'optionalAccess', _4 => _4.response, 'optionalAccess', _5 => _5.body])||_optionalChain([h, 'optionalAccess', _6 => _6.message])}`)}S+=1,g.update(S)},{concurrency:f}),g.stop();let _=new Date().getTime()-w;_chunkZUNVPK23cjs.a.info(_colors2.default.green(`Successfully uploaded ${n.length} user preferences to partition ${o} in "${_/1e3}" seconds!`))}exports.a = $; exports.b = Y; exports.c = G; exports.d = I; exports.e = R; exports.f = Z;
2
- //# sourceMappingURL=chunk-JZEDU4GZ.cjs.map
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkRSN3DUTPcjs = require('./chunk-RSN3DUTP.cjs');var _chunkZUNVPK23cjs = require('./chunk-ZUNVPK23.cjs');var _chunkE57K4DGXcjs = require('./chunk-E57K4DGX.cjs');var _crypto = require('crypto'); var U = _interopRequireWildcard(_crypto);var _jsonwebtoken = require('jsonwebtoken'); var E = _interopRequireWildcard(_jsonwebtoken);function $(c,l,n){let o=Buffer.from(n,"base64"),f=Buffer.from(l,"base64"),u="id-aes256-wrap-pad",d=Buffer.from("A65959A6","hex"),s=U.createCipheriv(u,f,d),i={encryptedIdentifier:Buffer.concat([s.update(c),s.final()]).toString("base64")};return E.sign(i,o,{algorithm:"HS384"})}var _iots = require('io-ts'); var e = _interopRequireWildcard(_iots); var r = _interopRequireWildcard(_iots);var B=e.intersection([e.type({userId:e.string,timestamp:e.string}),e.partial({confirmed:e.union([e.literal("true"),e.literal("false")]),updated:e.union([e.literal("true"),e.literal("false")]),prompted:e.union([e.literal("true"),e.literal("false")]),metadata:e.string,usp:e.union([e.string,e.null]),gpp:e.union([e.string,e.null])})]),Y= exports.b =e.intersection([B,e.partial({purposes:e.string})]),G= exports.c =e.intersection([B,e.type({partition:e.string}),e.partial({tcf:e.union([e.string,e.null]),purposes:e.record(e.string,e.union([e.boolean,e.string]))})]);var _colors = require('colors'); var _colors2 = _interopRequireDefault(_colors);var _bluebird = require('bluebird');var _cliprogress = require('cli-progress'); var _cliprogress2 = _interopRequireDefault(_cliprogress);var _typeutils = require('@transcend-io/type-utils');var I=/^[0-9][Y|N]([Y|N])[Y|N]$/,R= exports.e =r.record(r.string,r.union([r.boolean,r.literal("Auto")]));async function Z({base64EncryptionKey:c,base64SigningKey:l,preferences:n,partition:o,concurrency:f=100,transcendUrl:u=_chunkE57K4DGXcjs.s}){let d=_chunkRSN3DUTPcjs.xc.call(void 0, u),s=n.filter(t=>t.usp&&!I.test(t.usp));if(s.length>0)throw new Error(`Received invalid usp strings: ${JSON.stringify(s,null,2)}`);let m=n.map((t,y)=>[t,y]).filter(([t])=>{if(!t.purposes)return!1;try{return _typeutils.decodeCodec.call(void 0, R,t.purposes),!1}catch (e2){return!0}});if(m.length>0)throw new Error(`Received invalid purpose maps: ${JSON.stringify(m,null,2)}`);let i=n.filter(t=>!t.usp&&!t.purposes);if(i.length>0)throw new Error(`Received invalid inputs, expected either purposes or usp to be defined: ${JSON.stringify(i,null,2)}`);_chunkZUNVPK23cjs.a.info(_colors2.default.magenta(`Uploading ${n.length} user preferences to partition ${o}`));let w=new Date().getTime(),g=new _cliprogress2.default.SingleBar({},_cliprogress2.default.Presets.shades_classic),S=0;g.start(n.length,0),await _bluebird.map.call(void 0, n,async({userId:t,confirmed:y="true",updated:T,prompted:v,purposes:x,...p})=>{let j=$(t,c,l),[,k]=p.usp?I.exec(p.usp)||[]:[],D={token:j,partition:o,consent:{confirmed:y==="true",purposes:x?_typeutils.decodeCodec.call(void 0, R,x):p.usp?{SaleOfInfo:k==="Y"}:{},...T?{updated:T==="true"}:{},...v?{prompted:v==="true"}:{},...p}};try{await d.post("sync",{json:D}).json()}catch(h){try{let C=JSON.parse(_optionalChain([h, 'optionalAccess', _2 => _2.response, 'optionalAccess', _3 => _3.body])||"{}");C.error&&_chunkZUNVPK23cjs.a.error(_colors2.default.red(`Error: ${C.error}`))}catch (e3){}throw new Error(`Received an error from server: ${_optionalChain([h, 'optionalAccess', _4 => _4.response, 'optionalAccess', _5 => _5.body])||_optionalChain([h, 'optionalAccess', _6 => _6.message])}`)}S+=1,g.update(S)},{concurrency:f}),g.stop();let _=new Date().getTime()-w;_chunkZUNVPK23cjs.a.info(_colors2.default.green(`Successfully uploaded ${n.length} user preferences to partition ${o} in "${_/1e3}" seconds!`))}exports.a = $; exports.b = Y; exports.c = G; exports.d = I; exports.e = R; exports.f = Z;
2
+ //# sourceMappingURL=chunk-4GRQMYW2.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/cli/cli/dist/chunk-JZEDU4GZ.cjs","../src/lib/consent-manager/createConsentToken.ts","../src/lib/consent-manager/types.ts","../src/lib/consent-manager/uploadConsents.ts"],"names":["createConsentToken","userId","base64EncryptionKey","base64SigningKey","signingKey","encryptionKey","encryptionAlgorithm","iv","cipher","jwtPayload","ConsentPreferenceBase","ConsentPreferenceUpload","ConsentPreferenceFetch","USP_STRING_REGEX","PurposeMap","uploadConsents","preferences","partition","concurrency","transcendUrl","DEFAULT_TRANSCEND_CONSENT_API","transcendConsentApi","createTranscendConsentGotInstance","invalidUspStrings","pref"],"mappings":"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","file":"/home/runner/work/cli/cli/dist/chunk-JZEDU4GZ.cjs","sourcesContent":[null,"import * as crypto from 'crypto';\nimport * as jwt from 'jsonwebtoken';\n\n/**\n * Function to create a consent manager token\n *\n * @see https://docs.transcend.io/docs/consent/reference/managed-consent-database\n * @param userId - User ID\n * @param base64EncryptionKey - Encryption key\n * @param base64SigningKey - Signing key\n * @returns Token\n */\nexport function createConsentToken(\n userId: string,\n base64EncryptionKey: string,\n base64SigningKey: string,\n): string {\n // Read on for where to find these keys\n const signingKey = Buffer.from(base64SigningKey, 'base64');\n const encryptionKey = Buffer.from(base64EncryptionKey, 'base64');\n\n // NIST's AES-KWP implementation { aes 48 } - see https://tools.ietf.org/html/rfc5649\n const encryptionAlgorithm = 'id-aes256-wrap-pad';\n // Initial Value for AES-KWP integrity check - see https://tools.ietf.org/html/rfc5649#section-3\n const iv = Buffer.from('A65959A6', 'hex');\n // Set up encryption algorithm\n const cipher = crypto.createCipheriv(encryptionAlgorithm, encryptionKey, iv);\n\n // Encrypt the userId and base64-encode the result\n const encryptedIdentifier = Buffer.concat([\n cipher.update(userId),\n cipher.final(),\n ]).toString('base64');\n\n // Create the JWT content - jwt.sign will add a 'iat' (issued at) field to the payload\n // If you wanted to add something manually, consider\n // const issued: Date = new Date();\n // const isoDate = issued.toISOString();\n const jwtPayload = {\n encryptedIdentifier,\n };\n\n // Create a JSON web token and HMAC it with SHA-384\n const consentToken = jwt.sign(jwtPayload, signingKey, {\n algorithm: 'HS384',\n });\n\n return consentToken;\n}\n","import * as t from 'io-ts';\n\nexport const ConsentPreferenceBase = t.intersection([\n t.type({\n /** User ID */\n userId: t.string,\n /** Has the consent been updated (including no-change confirmation) since default resolution */\n timestamp: t.string,\n }),\n t.partial({\n /** Was tracking consent confirmed by the user? If this is false, the consent was resolved from defaults & is not yet confirmed */\n confirmed: t.union([t.literal('true'), t.literal('false')]),\n /**\n * Has the consent been updated (including no-change confirmation) since default resolution\n */\n updated: t.union([t.literal('true'), t.literal('false')]),\n /**\n * Whether or not the UI has been shown to the end-user (undefined in older versions of airgap.js)\n */\n prompted: t.union([t.literal('true'), t.literal('false')]),\n /** Consent metadata */\n metadata: t.string,\n /** US Privacy (USP) String */\n usp: t.union([t.string, t.null]),\n /** IAB GPP String */\n gpp: t.union([t.string, t.null]),\n }),\n]);\n\n/** Type override */\nexport type ConsentPreferenceBase = t.TypeOf<typeof ConsentPreferenceUpload>;\n\nexport const ConsentPreferenceUpload = t.intersection([\n ConsentPreferenceBase,\n t.partial({\n /**\n * Purpose map\n * This is a stringified JSON object with keys as purpose names and values as booleans or 'Auto'\n */\n purposes: t.string,\n }),\n]);\n\n/** Type override */\nexport type ConsentPreferenceUpload = t.TypeOf<typeof ConsentPreferenceUpload>;\n\nexport const ConsentPreferenceFetch = t.intersection([\n ConsentPreferenceBase,\n t.type({\n /** This is the partition key used for the dynamo entry */\n partition: t.string,\n }),\n t.partial({\n /** IAB TCF String */\n tcf: t.union([t.string, t.null]),\n /**\n * Purpose map\n * This is a JSON object with keys as purpose names and values as booleans or 'Auto'\n */\n purposes: t.record(t.string, t.union([t.boolean, t.string])),\n }),\n]);\n\n/** Type override */\nexport type ConsentPreferenceFetch = t.TypeOf<typeof ConsentPreferenceFetch>;\n","import { createTranscendConsentGotInstance } from '../graphql';\nimport colors from 'colors';\nimport * as t from 'io-ts';\nimport { DEFAULT_TRANSCEND_CONSENT_API } from '../../constants';\nimport { map } from 'bluebird';\nimport { createConsentToken } from './createConsentToken';\nimport { logger } from '../../logger';\nimport cliProgress from 'cli-progress';\nimport { decodeCodec } from '@transcend-io/type-utils';\nimport type { ConsentPreferenceUpload } from './types';\nimport { ConsentPreferencesBody } from '@transcend-io/airgap.js-types';\n\nexport const USP_STRING_REGEX = /^[0-9][Y|N]([Y|N])[Y|N]$/;\n\nexport const PurposeMap = t.record(\n t.string,\n t.union([t.boolean, t.literal('Auto')]),\n);\n\n/**\n * Upload a set of consent preferences\n *\n * @param options - Options\n */\nexport async function uploadConsents({\n base64EncryptionKey,\n base64SigningKey,\n preferences,\n partition,\n concurrency = 100,\n transcendUrl = DEFAULT_TRANSCEND_CONSENT_API,\n}: {\n /** base64 encryption key */\n base64EncryptionKey: string;\n /** base64 signing key */\n base64SigningKey: string;\n /** Partition key */\n partition: string;\n /** Sombra API key authentication */\n preferences: ConsentPreferenceUpload[];\n /** API URL for Transcend backend */\n transcendUrl?: string;\n /** Concurrency limit for approving */\n concurrency?: number;\n}): Promise<void> {\n // Create connection to API\n const transcendConsentApi = createTranscendConsentGotInstance(transcendUrl);\n\n // Ensure usp strings are valid\n const invalidUspStrings = preferences.filter(\n (pref) => pref.usp && !USP_STRING_REGEX.test(pref.usp),\n );\n if (invalidUspStrings.length > 0) {\n throw new Error(\n `Received invalid usp strings: ${JSON.stringify(\n invalidUspStrings,\n null,\n 2,\n )}`,\n );\n }\n\n // Ensure purpose maps are valid\n const invalidPurposeMaps = preferences\n .map((pref, ind) => [pref, ind] as [ConsentPreferenceUpload, number])\n .filter(([pref]) => {\n if (!pref.purposes) {\n return false;\n }\n try {\n decodeCodec(PurposeMap, pref.purposes);\n return false;\n } catch {\n return true;\n }\n });\n if (invalidPurposeMaps.length > 0) {\n throw new Error(\n `Received invalid purpose maps: ${JSON.stringify(\n invalidPurposeMaps,\n null,\n 2,\n )}`,\n );\n }\n\n // Ensure usp or preferences are provided\n const invalidInputs = preferences.filter(\n (pref) => !pref.usp && !pref.purposes,\n );\n if (invalidInputs.length > 0) {\n throw new Error(\n `Received invalid inputs, expected either purposes or usp to be defined: ${JSON.stringify(\n invalidInputs,\n null,\n 2,\n )}`,\n );\n }\n\n logger.info(\n colors.magenta(\n `Uploading ${preferences.length} user preferences to partition ${partition}`,\n ),\n );\n\n // Time duration\n const t0 = new Date().getTime();\n // create a new progress bar instance and use shades_classic theme\n const progressBar = new cliProgress.SingleBar(\n {},\n cliProgress.Presets.shades_classic,\n );\n\n // Build a GraphQL client\n let total = 0;\n progressBar.start(preferences.length, 0);\n await map(\n preferences,\n async ({\n userId,\n confirmed = 'true',\n updated,\n prompted,\n purposes,\n ...consent\n }) => {\n const token = createConsentToken(\n userId,\n base64EncryptionKey,\n base64SigningKey,\n );\n\n // parse usp string\n const [, saleStatus] = consent.usp\n ? USP_STRING_REGEX.exec(consent.usp) || []\n : [];\n\n const input = {\n token,\n partition,\n consent: {\n confirmed: confirmed === 'true',\n purposes: purposes\n ? decodeCodec(PurposeMap, purposes)\n : consent.usp\n ? { SaleOfInfo: saleStatus === 'Y' }\n : {},\n ...(updated ? { updated: updated === 'true' } : {}),\n ...(prompted ? { prompted: prompted === 'true' } : {}),\n ...consent,\n },\n } as ConsentPreferencesBody;\n\n // Make the request\n try {\n await transcendConsentApi\n .post('sync', {\n json: input,\n })\n .json();\n } catch (err) {\n try {\n const parsed = JSON.parse(err?.response?.body || '{}');\n if (parsed.error) {\n logger.error(colors.red(`Error: ${parsed.error}`));\n }\n } catch (e) {\n // continue\n }\n throw new Error(\n `Received an error from server: ${\n err?.response?.body || err?.message\n }`,\n );\n }\n\n total += 1;\n progressBar.update(total);\n },\n { concurrency },\n );\n\n progressBar.stop();\n const t1 = new Date().getTime();\n const totalTime = t1 - t0;\n\n logger.info(\n colors.green(\n `Successfully uploaded ${\n preferences.length\n } user preferences to partition ${partition} in \"${\n totalTime / 1000\n }\" seconds!`,\n ),\n );\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/cli/cli/dist/chunk-4GRQMYW2.cjs","../src/lib/consent-manager/createConsentToken.ts","../src/lib/consent-manager/types.ts","../src/lib/consent-manager/uploadConsents.ts"],"names":["createConsentToken","userId","base64EncryptionKey","base64SigningKey","signingKey","encryptionKey","encryptionAlgorithm","iv","cipher","jwtPayload","ConsentPreferenceBase","ConsentPreferenceUpload","ConsentPreferenceFetch","USP_STRING_REGEX","PurposeMap","uploadConsents","preferences","partition","concurrency","transcendUrl","DEFAULT_TRANSCEND_CONSENT_API","transcendConsentApi","createTranscendConsentGotInstance","invalidUspStrings","pref"],"mappings":"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","file":"/home/runner/work/cli/cli/dist/chunk-4GRQMYW2.cjs","sourcesContent":[null,"import * as crypto from 'crypto';\nimport * as jwt from 'jsonwebtoken';\n\n/**\n * Function to create a consent manager token\n *\n * @see https://docs.transcend.io/docs/consent/reference/managed-consent-database\n * @param userId - User ID\n * @param base64EncryptionKey - Encryption key\n * @param base64SigningKey - Signing key\n * @returns Token\n */\nexport function createConsentToken(\n userId: string,\n base64EncryptionKey: string,\n base64SigningKey: string,\n): string {\n // Read on for where to find these keys\n const signingKey = Buffer.from(base64SigningKey, 'base64');\n const encryptionKey = Buffer.from(base64EncryptionKey, 'base64');\n\n // NIST's AES-KWP implementation { aes 48 } - see https://tools.ietf.org/html/rfc5649\n const encryptionAlgorithm = 'id-aes256-wrap-pad';\n // Initial Value for AES-KWP integrity check - see https://tools.ietf.org/html/rfc5649#section-3\n const iv = Buffer.from('A65959A6', 'hex');\n // Set up encryption algorithm\n const cipher = crypto.createCipheriv(encryptionAlgorithm, encryptionKey, iv);\n\n // Encrypt the userId and base64-encode the result\n const encryptedIdentifier = Buffer.concat([\n cipher.update(userId),\n cipher.final(),\n ]).toString('base64');\n\n // Create the JWT content - jwt.sign will add a 'iat' (issued at) field to the payload\n // If you wanted to add something manually, consider\n // const issued: Date = new Date();\n // const isoDate = issued.toISOString();\n const jwtPayload = {\n encryptedIdentifier,\n };\n\n // Create a JSON web token and HMAC it with SHA-384\n const consentToken = jwt.sign(jwtPayload, signingKey, {\n algorithm: 'HS384',\n });\n\n return consentToken;\n}\n","import * as t from 'io-ts';\n\nexport const ConsentPreferenceBase = t.intersection([\n t.type({\n /** User ID */\n userId: t.string,\n /** Has the consent been updated (including no-change confirmation) since default resolution */\n timestamp: t.string,\n }),\n t.partial({\n /** Was tracking consent confirmed by the user? If this is false, the consent was resolved from defaults & is not yet confirmed */\n confirmed: t.union([t.literal('true'), t.literal('false')]),\n /**\n * Has the consent been updated (including no-change confirmation) since default resolution\n */\n updated: t.union([t.literal('true'), t.literal('false')]),\n /**\n * Whether or not the UI has been shown to the end-user (undefined in older versions of airgap.js)\n */\n prompted: t.union([t.literal('true'), t.literal('false')]),\n /** Consent metadata */\n metadata: t.string,\n /** US Privacy (USP) String */\n usp: t.union([t.string, t.null]),\n /** IAB GPP String */\n gpp: t.union([t.string, t.null]),\n }),\n]);\n\n/** Type override */\nexport type ConsentPreferenceBase = t.TypeOf<typeof ConsentPreferenceUpload>;\n\nexport const ConsentPreferenceUpload = t.intersection([\n ConsentPreferenceBase,\n t.partial({\n /**\n * Purpose map\n * This is a stringified JSON object with keys as purpose names and values as booleans or 'Auto'\n */\n purposes: t.string,\n }),\n]);\n\n/** Type override */\nexport type ConsentPreferenceUpload = t.TypeOf<typeof ConsentPreferenceUpload>;\n\nexport const ConsentPreferenceFetch = t.intersection([\n ConsentPreferenceBase,\n t.type({\n /** This is the partition key used for the dynamo entry */\n partition: t.string,\n }),\n t.partial({\n /** IAB TCF String */\n tcf: t.union([t.string, t.null]),\n /**\n * Purpose map\n * This is a JSON object with keys as purpose names and values as booleans or 'Auto'\n */\n purposes: t.record(t.string, t.union([t.boolean, t.string])),\n }),\n]);\n\n/** Type override */\nexport type ConsentPreferenceFetch = t.TypeOf<typeof ConsentPreferenceFetch>;\n","import { createTranscendConsentGotInstance } from '../graphql';\nimport colors from 'colors';\nimport * as t from 'io-ts';\nimport { DEFAULT_TRANSCEND_CONSENT_API } from '../../constants';\nimport { map } from 'bluebird';\nimport { createConsentToken } from './createConsentToken';\nimport { logger } from '../../logger';\nimport cliProgress from 'cli-progress';\nimport { decodeCodec } from '@transcend-io/type-utils';\nimport type { ConsentPreferenceUpload } from './types';\nimport { ConsentPreferencesBody } from '@transcend-io/airgap.js-types';\n\nexport const USP_STRING_REGEX = /^[0-9][Y|N]([Y|N])[Y|N]$/;\n\nexport const PurposeMap = t.record(\n t.string,\n t.union([t.boolean, t.literal('Auto')]),\n);\n\n/**\n * Upload a set of consent preferences\n *\n * @param options - Options\n */\nexport async function uploadConsents({\n base64EncryptionKey,\n base64SigningKey,\n preferences,\n partition,\n concurrency = 100,\n transcendUrl = DEFAULT_TRANSCEND_CONSENT_API,\n}: {\n /** base64 encryption key */\n base64EncryptionKey: string;\n /** base64 signing key */\n base64SigningKey: string;\n /** Partition key */\n partition: string;\n /** Sombra API key authentication */\n preferences: ConsentPreferenceUpload[];\n /** API URL for Transcend backend */\n transcendUrl?: string;\n /** Concurrency limit for approving */\n concurrency?: number;\n}): Promise<void> {\n // Create connection to API\n const transcendConsentApi = createTranscendConsentGotInstance(transcendUrl);\n\n // Ensure usp strings are valid\n const invalidUspStrings = preferences.filter(\n (pref) => pref.usp && !USP_STRING_REGEX.test(pref.usp),\n );\n if (invalidUspStrings.length > 0) {\n throw new Error(\n `Received invalid usp strings: ${JSON.stringify(\n invalidUspStrings,\n null,\n 2,\n )}`,\n );\n }\n\n // Ensure purpose maps are valid\n const invalidPurposeMaps = preferences\n .map((pref, ind) => [pref, ind] as [ConsentPreferenceUpload, number])\n .filter(([pref]) => {\n if (!pref.purposes) {\n return false;\n }\n try {\n decodeCodec(PurposeMap, pref.purposes);\n return false;\n } catch {\n return true;\n }\n });\n if (invalidPurposeMaps.length > 0) {\n throw new Error(\n `Received invalid purpose maps: ${JSON.stringify(\n invalidPurposeMaps,\n null,\n 2,\n )}`,\n );\n }\n\n // Ensure usp or preferences are provided\n const invalidInputs = preferences.filter(\n (pref) => !pref.usp && !pref.purposes,\n );\n if (invalidInputs.length > 0) {\n throw new Error(\n `Received invalid inputs, expected either purposes or usp to be defined: ${JSON.stringify(\n invalidInputs,\n null,\n 2,\n )}`,\n );\n }\n\n logger.info(\n colors.magenta(\n `Uploading ${preferences.length} user preferences to partition ${partition}`,\n ),\n );\n\n // Time duration\n const t0 = new Date().getTime();\n // create a new progress bar instance and use shades_classic theme\n const progressBar = new cliProgress.SingleBar(\n {},\n cliProgress.Presets.shades_classic,\n );\n\n // Build a GraphQL client\n let total = 0;\n progressBar.start(preferences.length, 0);\n await map(\n preferences,\n async ({\n userId,\n confirmed = 'true',\n updated,\n prompted,\n purposes,\n ...consent\n }) => {\n const token = createConsentToken(\n userId,\n base64EncryptionKey,\n base64SigningKey,\n );\n\n // parse usp string\n const [, saleStatus] = consent.usp\n ? USP_STRING_REGEX.exec(consent.usp) || []\n : [];\n\n const input = {\n token,\n partition,\n consent: {\n confirmed: confirmed === 'true',\n purposes: purposes\n ? decodeCodec(PurposeMap, purposes)\n : consent.usp\n ? { SaleOfInfo: saleStatus === 'Y' }\n : {},\n ...(updated ? { updated: updated === 'true' } : {}),\n ...(prompted ? { prompted: prompted === 'true' } : {}),\n ...consent,\n },\n } as ConsentPreferencesBody;\n\n // Make the request\n try {\n await transcendConsentApi\n .post('sync', {\n json: input,\n })\n .json();\n } catch (err) {\n try {\n const parsed = JSON.parse(err?.response?.body || '{}');\n if (parsed.error) {\n logger.error(colors.red(`Error: ${parsed.error}`));\n }\n } catch (e) {\n // continue\n }\n throw new Error(\n `Received an error from server: ${\n err?.response?.body || err?.message\n }`,\n );\n }\n\n total += 1;\n progressBar.update(total);\n },\n { concurrency },\n );\n\n progressBar.stop();\n const t1 = new Date().getTime();\n const totalTime = t1 - t0;\n\n logger.info(\n colors.green(\n `Successfully uploaded ${\n preferences.length\n } user preferences to partition ${partition} in \"${\n totalTime / 1000\n }\" seconds!`,\n ),\n );\n}\n"]}
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }function Jo(e,t,r){var o=-1,a=e.length;t<0&&(t=-t>a?0:a+t),r=r>a?a:r,r<0&&(r+=a),a=t>r?0:r-t>>>0,t>>>=0;for(var n=Array(a);++o<a;)n[o]=e[o+t];return n}var ye=Jo;function Yo(e,t){return e===t||e!==e&&t!==t}var k=Yo;var Xo=typeof global=="object"&&global&&global.Object===Object&&global,_e=Xo;var Qo=typeof self=="object"&&self&&self.Object===Object&&self,ea=_e||Qo||Function("return this")(),g=ea;var ta=g.Symbol,h=ta;var et=Object.prototype,ra=et.hasOwnProperty,oa=et.toString,de=h?h.toStringTag:void 0;function aa(e){var t=ra.call(e,de),r=e[de];try{e[de]=void 0;var o=!0}catch (e2){}var a=oa.call(e);return o&&(t?e[de]=r:delete e[de]),a}var tt=aa;var na=Object.prototype,fa=na.toString;function sa(e){return fa.call(e)}var rt=sa;var ia="[object Null]",pa="[object Undefined]",ot=h?h.toStringTag:void 0;function ua(e){return e==null?e===void 0?pa:ia:ot&&ot in Object(e)?tt(e):rt(e)}var v=ua;function ma(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var S=ma;var da="[object AsyncFunction]",la="[object Function]",ca="[object GeneratorFunction]",xa="[object Proxy]";function ga(e){if(!S(e))return!1;var t=v(e);return t==la||t==ca||t==da||t==xa}var Ae=ga;var ha=9007199254740991;function ba(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=ha}var z=ba;function ya(e){return e!=null&&z(e.length)&&!Ae(e)}var T=ya;var _a=9007199254740991,Aa=/^(?:0|[1-9]\d*)$/;function va(e,t){var r=typeof e;return t=_nullishCoalesce(t, () => (_a)),!!t&&(r=="number"||r!="symbol"&&Aa.test(e))&&e>-1&&e%1==0&&e<t}var K=va;function Sa(e,t,r){if(!S(r))return!1;var o=typeof t;return(o=="number"?T(r)&&K(t,r.length):o=="string"&&t in r)?k(r[t],e):!1}var le=Sa;var wa=/\s/;function Ta(e){for(var t=e.length;t--&&wa.test(e.charAt(t)););return t}var at=Ta;var Oa=/^\s+/;function Pa(e){return e&&e.slice(0,at(e)+1).replace(Oa,"")}var nt=Pa;function Ca(e){return e!=null&&typeof e=="object"}var y=Ca;var Ia="[object Symbol]";function Ma(e){return typeof e=="symbol"||y(e)&&v(e)==Ia}var w=Ma;var ft=NaN,ja=/^[-+]0x[0-9a-f]+$/i,Ea=/^0b[01]+$/i,Ra=/^0o[0-7]+$/i,Da=parseInt;function La(e){if(typeof e=="number")return e;if(w(e))return ft;if(S(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=S(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=nt(e);var r=Ea.test(e);return r||Ra.test(e)?Da(e.slice(2),r?2:8):ja.test(e)?ft:+e}var st=La;var it=1/0,Na=17976931348623157e292;function Fa(e){if(!e)return e===0?e:0;if(e=st(e),e===it||e===-it){var t=e<0?-1:1;return t*Na}return e===e?e:0}var pt=Fa;function Ua(e){var t=pt(e),r=t%1;return t===t?r?t-r:t:0}var ut=Ua;var Ba=Math.ceil,qa=Math.max;function Ga(e,t,r){(r?le(e,t,r):t===void 0)?t=1:t=qa(ut(t),0);var o=e==null?0:e.length;if(!o||t<1)return[];for(var a=0,n=0,f=Array(Ba(o/t));a<o;)f[n++]=ye(e,a,a+=t);return f}var Wa=Ga;var Va=g["__core-js_shared__"],ve=Va;var mt=function(){var e=/[^.]+$/.exec(ve&&ve.keys&&ve.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function Ha(e){return!!mt&&mt in e}var dt=Ha;var ka=Function.prototype,za=ka.toString;function Ka(e){if(e!=null){try{return za.call(e)}catch (e3){}try{return e+""}catch (e4){}}return""}var P=Ka;var Za=/[\\^$.*+?()[\]{}|]/g,$a=/^\[object .+?Constructor\]$/,Ja=Function.prototype,Ya=Object.prototype,Xa=Ja.toString,Qa=Ya.hasOwnProperty,en=RegExp("^"+Xa.call(Qa).replace(Za,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function tn(e){if(!S(e)||dt(e))return!1;var t=Ae(e)?en:$a;return t.test(P(e))}var lt=tn;function rn(e,t){return _optionalChain([e, 'optionalAccess', _2 => _2[t]])}var ct=rn;function on(e,t){var r=ct(e,t);return lt(r)?r:void 0}var b=on;var an=b(Object,"create"),C=an;function nn(){this.__data__=C?C(null):{},this.size=0}var xt=nn;function fn(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var gt=fn;var sn="__lodash_hash_undefined__",pn=Object.prototype,un=pn.hasOwnProperty;function mn(e){var t=this.__data__;if(C){var r=t[e];return r===sn?void 0:r}return un.call(t,e)?t[e]:void 0}var ht=mn;var dn=Object.prototype,ln=dn.hasOwnProperty;function cn(e){var t=this.__data__;return C?t[e]!==void 0:ln.call(t,e)}var bt=cn;var xn="__lodash_hash_undefined__";function gn(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=C&&t===void 0?xn:t,this}var yt=gn;function Z(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var o=e[t];this.set(o[0],o[1])}}Z.prototype.clear=xt;Z.prototype.delete=gt;Z.prototype.get=ht;Z.prototype.has=bt;Z.prototype.set=yt;var Ge=Z;function hn(){this.__data__=[],this.size=0}var _t=hn;function bn(e,t){for(var r=e.length;r--;)if(k(e[r][0],t))return r;return-1}var M=bn;var yn=Array.prototype,_n=yn.splice;function An(e){var t=this.__data__,r=M(t,e);if(r<0)return!1;var o=t.length-1;return r==o?t.pop():_n.call(t,r,1),--this.size,!0}var At=An;function vn(e){var t=this.__data__,r=M(t,e);return r<0?void 0:t[r][1]}var vt=vn;function Sn(e){return M(this.__data__,e)>-1}var St=Sn;function wn(e,t){var r=this.__data__,o=M(r,e);return o<0?(++this.size,r.push([e,t])):r[o][1]=t,this}var wt=wn;function $(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var o=e[t];this.set(o[0],o[1])}}$.prototype.clear=_t;$.prototype.delete=At;$.prototype.get=vt;$.prototype.has=St;$.prototype.set=wt;var j=$;var Tn=b(g,"Map"),E=Tn;function On(){this.size=0,this.__data__={hash:new Ge,map:new(E||j),string:new Ge}}var Tt=On;function Pn(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}var Ot=Pn;function Cn(e,t){var r=e.__data__;return Ot(t)?r[typeof t=="string"?"string":"hash"]:r.map}var R=Cn;function In(e){var t=R(this,e).delete(e);return this.size-=t?1:0,t}var Pt=In;function Mn(e){return R(this,e).get(e)}var Ct=Mn;function jn(e){return R(this,e).has(e)}var It=jn;function En(e,t){var r=R(this,e),o=r.size;return r.set(e,t),this.size+=r.size==o?0:1,this}var Mt=En;function J(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var o=e[t];this.set(o[0],o[1])}}J.prototype.clear=Tt;J.prototype.delete=Pt;J.prototype.get=Ct;J.prototype.has=It;J.prototype.set=Mt;var V=J;var Rn="__lodash_hash_undefined__";function Dn(e){return this.__data__.set(e,Rn),this}var jt=Dn;function Ln(e){return this.__data__.has(e)}var Et=Ln;function Se(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new V;++t<r;)this.add(e[t])}Se.prototype.add=Se.prototype.push=jt;Se.prototype.has=Et;var Y=Se;function Nn(e,t,r,o){for(var a=e.length,n=r+(o?1:-1);o?n--:++n<a;)if(t(e[n],n,e))return n;return-1}var Rt=Nn;function Fn(e){return e!==e}var Dt=Fn;function Un(e,t,r){for(var o=r-1,a=e.length;++o<a;)if(e[o]===t)return o;return-1}var Lt=Un;function Bn(e,t,r){return t===t?Lt(e,t,r):Rt(e,Dt,r)}var Nt=Bn;function qn(e,t){var r=e==null?0:e.length;return!!r&&Nt(e,t,0)>-1}var we=qn;function Gn(e,t,r){for(var o=-1,a=e==null?0:e.length;++o<a;)if(r(t,e[o]))return!0;return!1}var Te=Gn;function Wn(e,t){for(var r=-1,o=e==null?0:e.length,a=Array(o);++r<o;)a[r]=t(e[r],r,e);return a}var D=Wn;function Vn(e){return function(t){return e(t)}}var X=Vn;function Hn(e,t){return e.has(t)}var Q=Hn;var kn=200;function zn(e,t,r,o){var a=-1,n=we,f=!0,i=e.length,p=[],u=t.length;if(!i)return p;r&&(t=D(t,X(r))),o?(n=Te,f=!1):t.length>=kn&&(n=Q,f=!1,t=new Y(t));e:for(;++a<i;){var m=e[a],d=r==null?m:r(m);if(m=o||m!==0?m:0,f&&d===d){for(var l=u;l--;)if(t[l]===d)continue e;p.push(m)}else n(t,d,o)||p.push(m)}return p}var Ft=zn;function Kn(e,t){for(var r=-1,o=t.length,a=e.length;++r<o;)e[a+r]=t[r];return e}var Oe=Kn;var Zn="[object Arguments]";function $n(e){return y(e)&&v(e)==Zn}var We=$n;var Ut=Object.prototype,Jn=Ut.hasOwnProperty,Yn=Ut.propertyIsEnumerable,Xn=We(function(){return arguments}())?We:function(e){return y(e)&&Jn.call(e,"callee")&&!Yn.call(e,"callee")},ee=Xn;var Qn=Array.isArray,x=Qn;var Bt=h?h.isConcatSpreadable:void 0;function ef(e){return x(e)||ee(e)||!!(Bt&&e&&e[Bt])}var qt=ef;function Gt(e,t,r,o,a){var n=-1,f=e.length;for(r||(r=qt),a||(a=[]);++n<f;){var i=e[n];t>0&&r(i)?t>1?Gt(i,t-1,r,o,a):Oe(a,i):o||(a[a.length]=i)}return a}var L=Gt;function tf(e){return e}var N=tf;function rf(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}var Wt=rf;var Vt=Math.max;function of(e,t,r){return t=Vt(t===void 0?e.length-1:t,0),function(){for(var o=arguments,a=-1,n=Vt(o.length-t,0),f=Array(n);++a<n;)f[a]=o[t+a];a=-1;for(var i=Array(t+1);++a<t;)i[a]=o[a];return i[t]=r(f),Wt(e,this,i)}}var Ht=of;function af(e){return function(){return e}}var kt=af;var nf=function(){try{var e=b(Object,"defineProperty");return e({},"",{}),e}catch (e5){}}(),te=nf;var ff=te?function(e,t){return te(e,"toString",{configurable:!0,enumerable:!1,value:kt(t),writable:!0})}:N,zt=ff;var sf=800,pf=16,uf=Date.now;function mf(e){var t=0,r=0;return function(){var o=uf(),a=pf-(o-r);if(r=o,a>0){if(++t>=sf)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}var Kt=mf;var df=Kt(zt),Zt=df;function lf(e,t){return Zt(Ht(e,t,N),e+"")}var re=lf;function cf(e){return y(e)&&T(e)}var ce=cf;var xf=re(function(e,t){return ce(e)?Ft(e,L(t,1,ce,!0)):[]}),gf= exports.c =xf;function hf(e,t,r){t=="__proto__"&&te?te(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}var oe=hf;function bf(e,t,r,o){for(var a=-1,n=e==null?0:e.length;++a<n;){var f=e[a];t(o,f,r(f),e)}return o}var $t=bf;function yf(e){return function(t,r,o){for(var a=-1,n=Object(t),f=o(t),i=f.length;i--;){var p=f[e?i:++a];if(r(n[p],p,n)===!1)break}return t}}var Jt=yf;var _f=Jt(),Yt=_f;function Af(e,t){for(var r=-1,o=Array(e);++r<e;)o[r]=t(r);return o}var Xt=Af;function vf(){return!1}var Qt=vf;var rr=typeof exports=="object"&&exports&&!exports.nodeType&&exports,er=rr&&typeof module=="object"&&module&&!module.nodeType&&module,Sf=er&&er.exports===rr,tr=Sf?g.Buffer:void 0,wf=tr?tr.isBuffer:void 0,Tf=wf||Qt,xe=Tf;var Of="[object Arguments]",Pf="[object Array]",Cf="[object Boolean]",If="[object Date]",Mf="[object Error]",jf="[object Function]",Ef="[object Map]",Rf="[object Number]",Df="[object Object]",Lf="[object RegExp]",Nf="[object Set]",Ff="[object String]",Uf="[object WeakMap]",Bf="[object ArrayBuffer]",qf="[object DataView]",Gf="[object Float32Array]",Wf="[object Float64Array]",Vf="[object Int8Array]",Hf="[object Int16Array]",kf="[object Int32Array]",zf="[object Uint8Array]",Kf="[object Uint8ClampedArray]",Zf="[object Uint16Array]",$f="[object Uint32Array]",c={};c[Gf]=c[Wf]=c[Vf]=c[Hf]=c[kf]=c[zf]=c[Kf]=c[Zf]=c[$f]=!0;c[Of]=c[Pf]=c[Bf]=c[Cf]=c[qf]=c[If]=c[Mf]=c[jf]=c[Ef]=c[Rf]=c[Df]=c[Lf]=c[Nf]=c[Ff]=c[Uf]=!1;function Jf(e){return y(e)&&z(e.length)&&!!c[v(e)]}var or=Jf;var ar=typeof exports=="object"&&exports&&!exports.nodeType&&exports,ge=ar&&typeof module=="object"&&module&&!module.nodeType&&module,Yf=ge&&ge.exports===ar,Ve=Yf&&_e.process,Xf=function(){try{var e=ge&&ge.require&&ge.require("util").types;return e||Ve&&Ve.binding&&Ve.binding("util")}catch (e6){}}(),He=Xf;var nr=He&&He.isTypedArray,Qf=nr?X(nr):or,Pe=Qf;var es=Object.prototype,ts=es.hasOwnProperty;function rs(e,t){var r=x(e),o=!r&&ee(e),a=!r&&!o&&xe(e),n=!r&&!o&&!a&&Pe(e),f=r||o||a||n,i=f?Xt(e.length,String):[],p=i.length;for(var u in e)(t||ts.call(e,u))&&!(f&&(u=="length"||a&&(u=="offset"||u=="parent")||n&&(u=="buffer"||u=="byteLength"||u=="byteOffset")||K(u,p)))&&i.push(u);return i}var fr=rs;var os=Object.prototype;function as(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||os;return e===r}var sr=as;function ns(e,t){return function(r){return e(t(r))}}var ir=ns;var fs=ir(Object.keys,Object),pr=fs;var ss=Object.prototype,is=ss.hasOwnProperty;function ps(e){if(!sr(e))return pr(e);var t=[];for(var r in Object(e))is.call(e,r)&&r!="constructor"&&t.push(r);return t}var ur=ps;function us(e){return T(e)?fr(e):ur(e)}var ae=us;function ms(e,t){return e&&Yt(e,t,ae)}var Ce=ms;function ds(e,t){return function(r,o){if(r==null)return r;if(!T(r))return e(r,o);for(var a=r.length,n=t?a:-1,f=Object(r);(t?n--:++n<a)&&o(f[n],n,f)!==!1;);return r}}var mr=ds;var ls=mr(Ce),Ie=ls;function cs(e,t,r,o){return Ie(e,function(a,n,f){t(o,a,r(a),f)}),o}var dr=cs;function xs(){this.__data__=new j,this.size=0}var lr=xs;function gs(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}var cr=gs;function hs(e){return this.__data__.get(e)}var xr=hs;function bs(e){return this.__data__.has(e)}var gr=bs;var ys=200;function _s(e,t){var r=this.__data__;if(r instanceof j){var o=r.__data__;if(!E||o.length<ys-1)return o.push([e,t]),this.size=++r.size,this;r=this.__data__=new V(o)}return r.set(e,t),this.size=r.size,this}var hr=_s;function ne(e){var t=this.__data__=new j(e);this.size=t.size}ne.prototype.clear=lr;ne.prototype.delete=cr;ne.prototype.get=xr;ne.prototype.has=gr;ne.prototype.set=hr;var fe=ne;function As(e,t){for(var r=-1,o=e==null?0:e.length;++r<o;)if(t(e[r],r,e))return!0;return!1}var br=As;var vs=1,Ss=2;function ws(e,t,r,o,a,n){var f=r&vs,i=e.length,p=t.length;if(i!=p&&!(f&&p>i))return!1;var u=n.get(e),m=n.get(t);if(u&&m)return u==t&&m==e;var d=-1,l=!0,O=r&Ss?new Y:void 0;for(n.set(e,t),n.set(t,e);++d<i;){var _=e[d],A=t[d];if(o)var I=f?o(A,_,d,t,e,n):o(_,A,d,e,t,n);if(I!==void 0){if(I)continue;l=!1;break}if(O){if(!br(t,function(G,W){if(!Q(O,W)&&(_===G||a(_,G,r,o,n)))return O.push(W)})){l=!1;break}}else if(!(_===A||a(_,A,r,o,n))){l=!1;break}}return n.delete(e),n.delete(t),l}var Me=ws;var Ts=g.Uint8Array,ke=Ts;function Os(e){var t=-1,r=Array(e.size);return e.forEach(function(o,a){r[++t]=[a,o]}),r}var yr=Os;function Ps(e){var t=-1,r=Array(e.size);return e.forEach(function(o){r[++t]=o}),r}var se=Ps;var Cs=1,Is=2,Ms="[object Boolean]",js="[object Date]",Es="[object Error]",Rs="[object Map]",Ds="[object Number]",Ls="[object RegExp]",Ns="[object Set]",Fs="[object String]",Us="[object Symbol]",Bs="[object ArrayBuffer]",qs="[object DataView]",_r=h?h.prototype:void 0,ze=_r?_r.valueOf:void 0;function Gs(e,t,r,o,a,n,f){switch(r){case qs:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case Bs:return!(e.byteLength!=t.byteLength||!n(new ke(e),new ke(t)));case Ms:case js:case Ds:return k(+e,+t);case Es:return e.name==t.name&&e.message==t.message;case Ls:case Fs:return e==t+"";case Rs:var i=yr;case Ns:var p=o&Cs;if(i||(i=se),e.size!=t.size&&!p)return!1;var u=f.get(e);if(u)return u==t;o|=Is,f.set(e,t);var m=Me(i(e),i(t),o,a,n,f);return f.delete(e),m;case Us:if(ze)return ze.call(e)==ze.call(t)}return!1}var Ar=Gs;function Ws(e,t,r){var o=t(e);return x(e)?o:Oe(o,r(e))}var vr=Ws;function Vs(e,t){for(var r=-1,o=e==null?0:e.length,a=0,n=[];++r<o;){var f=e[r];t(f,r,e)&&(n[a++]=f)}return n}var Sr=Vs;function Hs(){return[]}var wr=Hs;var ks=Object.prototype,zs=ks.propertyIsEnumerable,Tr=Object.getOwnPropertySymbols,Ks=Tr?function(e){return e==null?[]:(e=Object(e),Sr(Tr(e),function(t){return zs.call(e,t)}))}:wr,Or=Ks;function Zs(e){return vr(e,ae,Or)}var Ke=Zs;var $s=1,Js=Object.prototype,Ys=Js.hasOwnProperty;function Xs(e,t,r,o,a,n){var f=r&$s,i=Ke(e),p=i.length,u=Ke(t),m=u.length;if(p!=m&&!f)return!1;for(var d=p;d--;){var l=i[d];if(!(f?l in t:Ys.call(t,l)))return!1}var O=n.get(e),_=n.get(t);if(O&&_)return O==t&&_==e;var A=!0;n.set(e,t),n.set(t,e);for(var I=f;++d<p;){l=i[d];var G=e[l],W=t[l];if(o)var Qe=f?o(W,G,l,t,e,n):o(G,W,l,e,t,n);if(!(Qe===void 0?G===W||a(G,W,r,o,n):Qe)){A=!1;break}I||(I=l=="constructor")}if(A&&!I){var he=e.constructor,be=t.constructor;he!=be&&"constructor"in e&&"constructor"in t&&!(typeof he=="function"&&he instanceof he&&typeof be=="function"&&be instanceof be)&&(A=!1)}return n.delete(e),n.delete(t),A}var Pr=Xs;var Qs=b(g,"DataView"),je=Qs;var ei=b(g,"Promise"),Ee=ei;var ti=b(g,"Set"),F=ti;var ri=b(g,"WeakMap"),Re=ri;var Cr="[object Map]",oi="[object Object]",Ir="[object Promise]",Mr="[object Set]",jr="[object WeakMap]",Er="[object DataView]",ai=P(je),ni=P(E),fi=P(Ee),si=P(F),ii=P(Re),H=v;(je&&H(new je(new ArrayBuffer(1)))!=Er||E&&H(new E)!=Cr||Ee&&H(Ee.resolve())!=Ir||F&&H(new F)!=Mr||Re&&H(new Re)!=jr)&&(H=function(e){var t=v(e),r=t==oi?e.constructor:void 0,o=r?P(r):"";if(o)switch(o){case ai:return Er;case ni:return Cr;case fi:return Ir;case si:return Mr;case ii:return jr}return t});var Ze=H;var pi=1,Rr="[object Arguments]",Dr="[object Array]",De="[object Object]",ui=Object.prototype,Lr=ui.hasOwnProperty;function mi(e,t,r,o,a,n){var f=x(e),i=x(t),p=f?Dr:Ze(e),u=i?Dr:Ze(t);p=p==Rr?De:p,u=u==Rr?De:u;var m=p==De,d=u==De,l=p==u;if(l&&xe(e)){if(!xe(t))return!1;f=!0,m=!1}if(l&&!m)return n||(n=new fe),f||Pe(e)?Me(e,t,r,o,a,n):Ar(e,t,p,r,o,a,n);if(!(r&pi)){var O=m&&Lr.call(e,"__wrapped__"),_=d&&Lr.call(t,"__wrapped__");if(O||_){var A=O?e.value():e,I=_?t.value():t;return n||(n=new fe),a(A,I,r,o,n)}}return l?(n||(n=new fe),Pr(e,t,r,o,a,n)):!1}var Nr=mi;function Fr(e,t,r,o,a){return e===t?!0:e==null||t==null||!y(e)&&!y(t)?e!==e&&t!==t:Nr(e,t,r,o,Fr,a)}var Le=Fr;var di=1,li=2;function ci(e,t,r,o){var a=r.length,n=a,f=!o;if(e==null)return!n;for(e=Object(e);a--;){var i=r[a];if(f&&i[2]?i[1]!==e[i[0]]:!(i[0]in e))return!1}for(;++a<n;){i=r[a];var p=i[0],u=e[p],m=i[1];if(f&&i[2]){if(u===void 0&&!(p in e))return!1}else{var d=new fe;if(o)var l=o(u,m,p,e,t,d);if(!(l===void 0?Le(m,u,di|li,o,d):l))return!1}}return!0}var Ur=ci;function xi(e){return e===e&&!S(e)}var Ne=xi;function gi(e){for(var t=ae(e),r=t.length;r--;){var o=t[r],a=e[o];t[r]=[o,a,Ne(a)]}return t}var Br=gi;function hi(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}var Fe=hi;function bi(e){var t=Br(e);return t.length==1&&t[0][2]?Fe(t[0][0],t[0][1]):function(r){return r===e||Ur(r,e,t)}}var qr=bi;var yi=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,_i=/^\w*$/;function Ai(e,t){if(x(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||w(e)?!0:_i.test(e)||!yi.test(e)||t!=null&&e in Object(t)}var ie=Ai;var vi="Expected a function";function $e(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(vi);var r=function(){var o=arguments,a=t?t.apply(this,o):o[0],n=r.cache;if(n.has(a))return n.get(a);var f=e.apply(this,o);return r.cache=n.set(a,f)||n,f};return r.cache=new($e.Cache||V),r}$e.Cache=V;var Gr=$e;var Si=500;function wi(e){var t=Gr(e,function(o){return r.size===Si&&r.clear(),o}),r=t.cache;return t}var Wr=wi;var Ti=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Oi=/\\(\\)?/g,Pi=Wr(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(Ti,function(r,o,a,n){t.push(a?n.replace(Oi,"$1"):o||r)}),t}),Vr=Pi;var Ci=1/0,Hr=h?h.prototype:void 0,kr=Hr?Hr.toString:void 0;function zr(e){if(typeof e=="string")return e;if(x(e))return D(e,zr)+"";if(w(e))return kr?kr.call(e):"";var t=e+"";return t=="0"&&1/e==-Ci?"-0":t}var Kr=zr;function Ii(e){return e==null?"":Kr(e)}var U=Ii;function Mi(e,t){return x(e)?e:ie(e,t)?[e]:Vr(U(e))}var Ue=Mi;var ji=1/0;function Ei(e){if(typeof e=="string"||w(e))return e;var t=e+"";return t=="0"&&1/e==-ji?"-0":t}var B=Ei;function Ri(e,t){t=Ue(t,e);for(var r=0,o=t.length;e!=null&&r<o;)e=e[B(t[r++])];return r&&r==o?e:void 0}var pe=Ri;function Di(e,t,r){var o=e==null?void 0:pe(e,t);return o===void 0?r:o}var Zr=Di;function Li(e,t){return e!=null&&t in Object(e)}var $r=Li;function Ni(e,t,r){t=Ue(t,e);for(var o=-1,a=t.length,n=!1;++o<a;){var f=B(t[o]);if(!(n=e!=null&&r(e,f)))break;e=e[f]}return n||++o!=a?n:(a=e==null?0:e.length,!!a&&z(a)&&K(f,a)&&(x(e)||ee(e)))}var Jr=Ni;function Fi(e,t){return e!=null&&Jr(e,t,$r)}var Yr=Fi;var Ui=1,Bi=2;function qi(e,t){return ie(e)&&Ne(t)?Fe(B(e),t):function(r){var o=Zr(r,e);return o===void 0&&o===t?Yr(r,e):Le(t,o,Ui|Bi)}}var Xr=qi;function Gi(e){return function(t){return _optionalChain([t, 'optionalAccess', _3 => _3[e]])}}var Qr=Gi;function Wi(e){return function(t){return pe(t,e)}}var eo=Wi;function Vi(e){return ie(e)?Qr(B(e)):eo(e)}var to=Vi;function Hi(e){return typeof e=="function"?e:e==null?N:typeof e=="object"?x(e)?Xr(e[0],e[1]):qr(e):to(e)}var q=Hi;function ki(e,t){return function(r,o){var a=x(r)?$t:dr,n=t?t():{};return a(r,e,q(o,2),n)}}var Be=ki;var zi=Object.prototype,Ki=zi.hasOwnProperty,Zi=Be(function(e,t,r){Ki.call(e,r)?e[r].push(t):oe(e,r,[t])}),$i= exports.d =Zi;function Ji(){}var ro=Ji;var Yi=1/0,Xi=F&&1/se(new F([,-0]))[1]==Yi?function(e){return new F(e)}:ro,oo=Xi;var Qi=200;function ep(e,t,r){var o=-1,a=we,n=e.length,f=!0,i=[],p=i;if(r)f=!1,a=Te;else if(n>=Qi){var u=t?null:oo(e);if(u)return se(u);f=!1,a=Q,p=new Y}else p=t?[]:i;e:for(;++o<n;){var m=e[o],d=t?t(m):m;if(m=r||m!==0?m:0,f&&d===d){for(var l=p.length;l--;)if(p[l]===d)continue e;t&&p.push(d),i.push(m)}else a(p,d,r)||(p!==i&&p.push(d),i.push(m))}return i}var ue=ep;function tp(e){return e&&e.length?ue(e):[]}var rp=tp;function op(e){var t=e==null?0:e.length;return t?L(e,1):[]}var ap=op;function np(e,t,r){var o=e.length;return r=r===void 0?o:r,!t&&r>=o?e:ye(e,t,r)}var ao=np;var fp="\\ud800-\\udfff",sp="\\u0300-\\u036f",ip="\\ufe20-\\ufe2f",pp="\\u20d0-\\u20ff",up=sp+ip+pp,mp="\\ufe0e\\ufe0f",dp="\\u200d",lp=RegExp("["+dp+fp+up+mp+"]");function cp(e){return lp.test(e)}var qe=cp;function xp(e){return e.split("")}var no=xp;var fo="\\ud800-\\udfff",gp="\\u0300-\\u036f",hp="\\ufe20-\\ufe2f",bp="\\u20d0-\\u20ff",yp=gp+hp+bp,_p="\\ufe0e\\ufe0f",Ap="["+fo+"]",Je="["+yp+"]",Ye="\\ud83c[\\udffb-\\udfff]",vp="(?:"+Je+"|"+Ye+")",so="[^"+fo+"]",io="(?:\\ud83c[\\udde6-\\uddff]){2}",po="[\\ud800-\\udbff][\\udc00-\\udfff]",Sp="\\u200d",uo=vp+"?",mo="["+_p+"]?",wp="(?:"+Sp+"(?:"+[so,io,po].join("|")+")"+mo+uo+")*",Tp=mo+uo+wp,Op="(?:"+[so+Je+"?",Je,io,po,Ap].join("|")+")",Pp=RegExp(Ye+"(?="+Ye+")|"+Op+Tp,"g");function Cp(e){return e.match(Pp)||[]}var lo=Cp;function Ip(e){return qe(e)?lo(e):no(e)}var co=Ip;function Mp(e){return function(t){t=U(t);var r=qe(t)?co(t):void 0,o=r?r[0]:t.charAt(0),a=r?ao(r,1).join(""):t.slice(1);return o[e]()+a}}var xo=Mp;var jp=xo("toUpperCase"),go=jp;function Ep(e,t,r,o){var a=-1,n=e==null?0:e.length;for(o&&n&&(r=e[++a]);++a<n;)r=t(r,e[a],a,e);return r}var ho=Ep;function Rp(e){return function(t){return _optionalChain([e, 'optionalAccess', _4 => _4[t]])}}var bo=Rp;var Dp={\u00C0:"A",\u00C1:"A",\u00C2:"A",\u00C3:"A",\u00C4:"A",\u00C5:"A",\u00E0:"a",\u00E1:"a",\u00E2:"a",\u00E3:"a",\u00E4:"a",\u00E5:"a",\u00C7:"C",\u00E7:"c",\u00D0:"D",\u00F0:"d",\u00C8:"E",\u00C9:"E",\u00CA:"E",\u00CB:"E",\u00E8:"e",\u00E9:"e",\u00EA:"e",\u00EB:"e",\u00CC:"I",\u00CD:"I",\u00CE:"I",\u00CF:"I",\u00EC:"i",\u00ED:"i",\u00EE:"i",\u00EF:"i",\u00D1:"N",\u00F1:"n",\u00D2:"O",\u00D3:"O",\u00D4:"O",\u00D5:"O",\u00D6:"O",\u00D8:"O",\u00F2:"o",\u00F3:"o",\u00F4:"o",\u00F5:"o",\u00F6:"o",\u00F8:"o",\u00D9:"U",\u00DA:"U",\u00DB:"U",\u00DC:"U",\u00F9:"u",\u00FA:"u",\u00FB:"u",\u00FC:"u",\u00DD:"Y",\u00FD:"y",\u00FF:"y",\u00C6:"Ae",\u00E6:"ae",\u00DE:"Th",\u00FE:"th",\u00DF:"ss",\u0100:"A",\u0102:"A",\u0104:"A",\u0101:"a",\u0103:"a",\u0105:"a",\u0106:"C",\u0108:"C",\u010A:"C",\u010C:"C",\u0107:"c",\u0109:"c",\u010B:"c",\u010D:"c",\u010E:"D",\u0110:"D",\u010F:"d",\u0111:"d",\u0112:"E",\u0114:"E",\u0116:"E",\u0118:"E",\u011A:"E",\u0113:"e",\u0115:"e",\u0117:"e",\u0119:"e",\u011B:"e",\u011C:"G",\u011E:"G",\u0120:"G",\u0122:"G",\u011D:"g",\u011F:"g",\u0121:"g",\u0123:"g",\u0124:"H",\u0126:"H",\u0125:"h",\u0127:"h",\u0128:"I",\u012A:"I",\u012C:"I",\u012E:"I",\u0130:"I",\u0129:"i",\u012B:"i",\u012D:"i",\u012F:"i",\u0131:"i",\u0134:"J",\u0135:"j",\u0136:"K",\u0137:"k",\u0138:"k",\u0139:"L",\u013B:"L",\u013D:"L",\u013F:"L",\u0141:"L",\u013A:"l",\u013C:"l",\u013E:"l",\u0140:"l",\u0142:"l",\u0143:"N",\u0145:"N",\u0147:"N",\u014A:"N",\u0144:"n",\u0146:"n",\u0148:"n",\u014B:"n",\u014C:"O",\u014E:"O",\u0150:"O",\u014D:"o",\u014F:"o",\u0151:"o",\u0154:"R",\u0156:"R",\u0158:"R",\u0155:"r",\u0157:"r",\u0159:"r",\u015A:"S",\u015C:"S",\u015E:"S",\u0160:"S",\u015B:"s",\u015D:"s",\u015F:"s",\u0161:"s",\u0162:"T",\u0164:"T",\u0166:"T",\u0163:"t",\u0165:"t",\u0167:"t",\u0168:"U",\u016A:"U",\u016C:"U",\u016E:"U",\u0170:"U",\u0172:"U",\u0169:"u",\u016B:"u",\u016D:"u",\u016F:"u",\u0171:"u",\u0173:"u",\u0174:"W",\u0175:"w",\u0176:"Y",\u0177:"y",\u0178:"Y",\u0179:"Z",\u017B:"Z",\u017D:"Z",\u017A:"z",\u017C:"z",\u017E:"z",\u0132:"IJ",\u0133:"ij",\u0152:"Oe",\u0153:"oe",\u0149:"'n",\u017F:"s"},Lp=bo(Dp),yo=Lp;var Np=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Fp="\\u0300-\\u036f",Up="\\ufe20-\\ufe2f",Bp="\\u20d0-\\u20ff",qp=Fp+Up+Bp,Gp="["+qp+"]",Wp=RegExp(Gp,"g");function Vp(e){return e=U(e),e&&e.replace(Np,yo).replace(Wp,"")}var _o=Vp;var Hp=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;function kp(e){return e.match(Hp)||[]}var Ao=kp;var zp=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;function Kp(e){return zp.test(e)}var vo=Kp;var Po="\\ud800-\\udfff",Zp="\\u0300-\\u036f",$p="\\ufe20-\\ufe2f",Jp="\\u20d0-\\u20ff",Yp=Zp+$p+Jp,Co="\\u2700-\\u27bf",Io="a-z\\xdf-\\xf6\\xf8-\\xff",Xp="\\xac\\xb1\\xd7\\xf7",Qp="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",eu="\\u2000-\\u206f",tu=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",Mo="A-Z\\xc0-\\xd6\\xd8-\\xde",ru="\\ufe0e\\ufe0f",jo=Xp+Qp+eu+tu,Eo="['\u2019]",So="["+jo+"]",ou="["+Yp+"]",Ro="\\d+",au="["+Co+"]",Do="["+Io+"]",Lo="[^"+Po+jo+Ro+Co+Io+Mo+"]",nu="\\ud83c[\\udffb-\\udfff]",fu="(?:"+ou+"|"+nu+")",su="[^"+Po+"]",No="(?:\\ud83c[\\udde6-\\uddff]){2}",Fo="[\\ud800-\\udbff][\\udc00-\\udfff]",me="["+Mo+"]",iu="\\u200d",wo="(?:"+Do+"|"+Lo+")",pu="(?:"+me+"|"+Lo+")",To="(?:"+Eo+"(?:d|ll|m|re|s|t|ve))?",Oo="(?:"+Eo+"(?:D|LL|M|RE|S|T|VE))?",Uo=fu+"?",Bo="["+ru+"]?",uu="(?:"+iu+"(?:"+[su,No,Fo].join("|")+")"+Bo+Uo+")*",mu="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",du="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",lu=Bo+Uo+uu,cu="(?:"+[au,No,Fo].join("|")+")"+lu,xu=RegExp([me+"?"+Do+"+"+To+"(?="+[So,me,"$"].join("|")+")",pu+"+"+Oo+"(?="+[So,me+wo,"$"].join("|")+")",me+"?"+wo+"+"+To,me+"+"+Oo,du,mu,Ro,cu].join("|"),"g");function gu(e){return e.match(xu)||[]}var qo=gu;function hu(e,t,r){return e=U(e),t=r?void 0:t,t===void 0?vo(e)?qo(e):Ao(e):e.match(t)||[]}var Go=hu;var bu="['\u2019]",yu=RegExp(bu,"g");function _u(e){return function(t){return ho(Go(_o(t).replace(yu,"")),e,"")}}var Wo=_u;function Au(e,t){var r=-1,o=T(e)?Array(e.length):[];return Ie(e,function(a,n,f){o[++r]=t(a,n,f)}),o}var Vo=Au;var vu=Be(function(e,t,r){oe(e,r,t)}),Xe= exports.e =vu;function Su(e,t){var r={};return t=q(t,3),Ce(e,function(o,a,n){oe(r,a,t(o,a,n))}),r}var wu=Su;function Tu(e,t){var r=e.length;for(e.sort(t);r--;)e[r]=e[r].value;return e}var Ho=Tu;function Ou(e,t){if(e!==t){var r=e!==void 0,o=e===null,a=e===e,n=w(e),f=t!==void 0,i=t===null,p=t===t,u=w(t);if(!i&&!u&&!n&&e>t||n&&f&&p&&!i&&!u||o&&f&&p||!r&&p||!a)return 1;if(!o&&!n&&!u&&e<t||u&&r&&a&&!o&&!n||i&&r&&a||!f&&a||!p)return-1}return 0}var ko=Ou;function Pu(e,t,r){for(var o=-1,a=e.criteria,n=t.criteria,f=a.length,i=r.length;++o<f;){var p=ko(a[o],n[o]);if(p){if(o>=i)return p;var u=r[o];return p*(u=="desc"?-1:1)}}return e.index-t.index}var zo=Pu;function Cu(e,t,r){t.length?t=D(t,function(n){return x(n)?function(f){return pe(f,n.length===1?n[0]:n)}:n}):t=[N];var o=-1;t=D(t,X(q));var a=Vo(e,function(n,f,i){var p=D(t,function(u){return u(n)});return{criteria:p,index:++o,value:n}});return Ho(a,function(n,f){return zo(n,f,r)})}var Ko=Cu;var Iu=re(function(e,t){if(e==null)return[];var r=t.length;return r>1&&le(e,t[0],t[1])?t=[]:r>2&&le(t[0],t[1],t[2])&&(t=[t[0]]),Ko(e,L(t,1),[])}),Mu= exports.g =Iu;var ju=Wo(function(e,t,r){return e+(r?" ":"")+go(t)}),Eu= exports.h =ju;var Ru=re(function(e){return ue(L(e,1,ce,!0))}),Du= exports.i =Ru;function Lu(e,t){return e&&e.length?ue(e,q(t,2)):[]}var Nu=Lu;var Fu="A command line interface for programmatic operations across Transcend.",Uu= exports.m ="8.0.6";var _privacytypes = require('@transcend-io/privacy-types');var fy="transcend",$o= exports.o ="https://app.transcend.io",sy= exports.p =`${$o}/infrastructure/integrations`,iy= exports.q =`${$o}/data-map/data-inventory/data-points`,py= exports.r =process.env.TRANSCEND_API_URL||"https://api.transcend.io",uy= exports.s =process.env.TRANSCEND_CONSENT_API_URL||"https://consent.transcend.io",my= exports.t ={apiKeys:[_privacytypes.ScopeName.ViewApiKeys],templates:[_privacytypes.ScopeName.ManageEmailTemplates],dataSilos:[_privacytypes.ScopeName.ManageDataMap,_privacytypes.ScopeName.ConnectDataSilos],enrichers:[_privacytypes.ScopeName.ManageRequestIdentities],businessEntities:[_privacytypes.ScopeName.ManageDataInventory],processingActivities:[_privacytypes.ScopeName.ManageDataMap],identifiers:[_privacytypes.ScopeName.ManageRequestIdentities],customFields:[_privacytypes.ScopeName.ManageGlobalAttributes],dataFlows:[_privacytypes.ScopeName.ManageDataFlow],cookies:[_privacytypes.ScopeName.ManageDataFlow],consentManager:[_privacytypes.ScopeName.ManageConsentManagerDeveloperSettings],partitions:[_privacytypes.ScopeName.ManageConsentManagerDeveloperSettings],actions:[_privacytypes.ScopeName.ManageDataSubjectRequestSettings],dataSubjects:[_privacytypes.ScopeName.ManageDataSubjectRequestSettings],prompts:[_privacytypes.ScopeName.ManagePrompts],promptPartials:[_privacytypes.ScopeName.ManagePrompts],promptGroups:[_privacytypes.ScopeName.ManagePrompts],agents:[_privacytypes.ScopeName.ManagePathfinder],agentFunctions:[_privacytypes.ScopeName.ManagePathfinder],agentFiles:[_privacytypes.ScopeName.ManagePathfinder],vendors:[_privacytypes.ScopeName.ManageDataInventory],dataCategories:[_privacytypes.ScopeName.ManageDataInventory],processingPurposes:[_privacytypes.ScopeName.ManageDataInventory],actionItems:[_privacytypes.ScopeName.ManageAllActionItems,_privacytypes.ScopeName.ViewGlobalAttributes],actionItemCollections:[_privacytypes.ScopeName.ManageActionItemCollections],teams:[_privacytypes.ScopeName.ManageAccessControl],messages:[_privacytypes.ScopeName.ManageIntlMessages],privacyCenters:[_privacytypes.ScopeName.ManagePrivacyCenter],policies:[_privacytypes.ScopeName.ManagePolicies],assessments:[_privacytypes.ScopeName.ManageAssessments],assessmentTemplates:[_privacytypes.ScopeName.ManageAssessments],purposes:[_privacytypes.ScopeName.ManageConsentManager,_privacytypes.ScopeName.ManagePreferenceStoreSettings]},dy= exports.u ={apiKeys:[_privacytypes.ScopeName.ViewApiKeys],templates:[_privacytypes.ScopeName.ViewEmailTemplates],dataSilos:[_privacytypes.ScopeName.ViewDataMap,_privacytypes.ScopeName.ViewDataSubjectRequestSettings],enrichers:[_privacytypes.ScopeName.ViewRequestIdentitySettings],businessEntities:[_privacytypes.ScopeName.ViewDataInventory],processingActivities:[_privacytypes.ScopeName.ViewDataInventory],identifiers:[_privacytypes.ScopeName.ViewRequestIdentitySettings],customFields:[_privacytypes.ScopeName.ViewGlobalAttributes],dataFlows:[_privacytypes.ScopeName.ViewDataFlow],cookies:[_privacytypes.ScopeName.ViewDataFlow],consentManager:[_privacytypes.ScopeName.ViewConsentManager],partitions:[_privacytypes.ScopeName.ViewConsentManager],actions:[_privacytypes.ScopeName.ViewDataSubjectRequestSettings],dataSubjects:[_privacytypes.ScopeName.ViewDataSubjectRequestSettings],prompts:[_privacytypes.ScopeName.ViewPrompts],promptPartials:[_privacytypes.ScopeName.ViewPrompts],promptGroups:[_privacytypes.ScopeName.ViewPrompts],agents:[_privacytypes.ScopeName.ViewPathfinder],agentFunctions:[_privacytypes.ScopeName.ViewPathfinder],agentFiles:[_privacytypes.ScopeName.ViewPathfinder],vendors:[_privacytypes.ScopeName.ViewDataInventory],dataCategories:[_privacytypes.ScopeName.ViewDataInventory],processingPurposes:[_privacytypes.ScopeName.ViewDataInventory],actionItemCollections:[_privacytypes.ScopeName.ViewAllActionItems],actionItems:[_privacytypes.ScopeName.ViewAllActionItems],teams:[_privacytypes.ScopeName.ViewScopes],messages:[_privacytypes.ScopeName.ViewIntlMessages],privacyCenters:[_privacytypes.ScopeName.ViewPrivacyCenter],policies:[_privacytypes.ScopeName.ViewPolicies],assessments:[_privacytypes.ScopeName.ViewAssessments],assessmentTemplates:[_privacytypes.ScopeName.ViewAssessments],purposes:[_privacytypes.ScopeName.ViewConsentManager,_privacytypes.ScopeName.ViewPreferenceStoreSettings]},ly= exports.v ={apiKeys:"api-keys",customFields:"attributes",dataFlows:"data-flows",cookies:"cookies",consentManager:"consent-manager",partitions:"partitions",actions:"actions",dataSubjects:"data-subjects",businessEntities:"business-entities",processingActivities:"processing-activities",identifiers:"identifiers",enrichers:"enrichers",dataSilos:"data-silos",templates:"templates",prompts:"prompts",promptPartials:"prompt-partials",promptGroups:"prompt-groups",agents:"agents",agentFunctions:"agent-functions",agentFiles:"agent-files",vendors:"vendors",dataCategories:"data-categories",processingPurposes:"processing-purposes",actionItems:"action-items",actionItemCollections:"action-item-collections",teams:"teams",messages:"messages",privacyCenters:"privacy-center",policies:"policies",assessments:"assessments",assessmentTemplates:"assessment-templates",purposes:"purposes"},qu= exports.w =Xe(Object.entries(_privacytypes.TRANSCEND_SCOPES).map(([e,t])=>({...t,name:e})),"title"),cy= exports.x =Object.keys(qu),xy= exports.y =new Set([429,502,500,504,329]);exports.a = ap; exports.b = Wa; exports.c = gf; exports.d = $i; exports.e = Xe; exports.f = wu; exports.g = Mu; exports.h = Eu; exports.i = Du; exports.j = rp; exports.k = Nu; exports.l = Fu; exports.m = Uu; exports.n = fy; exports.o = $o; exports.p = sy; exports.q = iy; exports.r = py; exports.s = uy; exports.t = my; exports.u = dy; exports.v = ly; exports.w = qu; exports.x = cy; exports.y = xy;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }function Jo(e,t,r){var o=-1,a=e.length;t<0&&(t=-t>a?0:a+t),r=r>a?a:r,r<0&&(r+=a),a=t>r?0:r-t>>>0,t>>>=0;for(var n=Array(a);++o<a;)n[o]=e[o+t];return n}var ye=Jo;function Yo(e,t){return e===t||e!==e&&t!==t}var k=Yo;var Xo=typeof global=="object"&&global&&global.Object===Object&&global,_e=Xo;var Qo=typeof self=="object"&&self&&self.Object===Object&&self,ea=_e||Qo||Function("return this")(),g=ea;var ta=g.Symbol,h=ta;var et=Object.prototype,ra=et.hasOwnProperty,oa=et.toString,de=h?h.toStringTag:void 0;function aa(e){var t=ra.call(e,de),r=e[de];try{e[de]=void 0;var o=!0}catch (e2){}var a=oa.call(e);return o&&(t?e[de]=r:delete e[de]),a}var tt=aa;var na=Object.prototype,fa=na.toString;function sa(e){return fa.call(e)}var rt=sa;var ia="[object Null]",pa="[object Undefined]",ot=h?h.toStringTag:void 0;function ua(e){return e==null?e===void 0?pa:ia:ot&&ot in Object(e)?tt(e):rt(e)}var v=ua;function ma(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var S=ma;var da="[object AsyncFunction]",la="[object Function]",ca="[object GeneratorFunction]",xa="[object Proxy]";function ga(e){if(!S(e))return!1;var t=v(e);return t==la||t==ca||t==da||t==xa}var Ae=ga;var ha=9007199254740991;function ba(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=ha}var z=ba;function ya(e){return e!=null&&z(e.length)&&!Ae(e)}var T=ya;var _a=9007199254740991,Aa=/^(?:0|[1-9]\d*)$/;function va(e,t){var r=typeof e;return t=_nullishCoalesce(t, () => (_a)),!!t&&(r=="number"||r!="symbol"&&Aa.test(e))&&e>-1&&e%1==0&&e<t}var K=va;function Sa(e,t,r){if(!S(r))return!1;var o=typeof t;return(o=="number"?T(r)&&K(t,r.length):o=="string"&&t in r)?k(r[t],e):!1}var le=Sa;var wa=/\s/;function Ta(e){for(var t=e.length;t--&&wa.test(e.charAt(t)););return t}var at=Ta;var Oa=/^\s+/;function Pa(e){return e&&e.slice(0,at(e)+1).replace(Oa,"")}var nt=Pa;function Ca(e){return e!=null&&typeof e=="object"}var y=Ca;var Ia="[object Symbol]";function Ma(e){return typeof e=="symbol"||y(e)&&v(e)==Ia}var w=Ma;var ft=NaN,Ea=/^[-+]0x[0-9a-f]+$/i,ja=/^0b[01]+$/i,Ra=/^0o[0-7]+$/i,Da=parseInt;function La(e){if(typeof e=="number")return e;if(w(e))return ft;if(S(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=S(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=nt(e);var r=ja.test(e);return r||Ra.test(e)?Da(e.slice(2),r?2:8):Ea.test(e)?ft:+e}var st=La;var it=1/0,Na=17976931348623157e292;function Fa(e){if(!e)return e===0?e:0;if(e=st(e),e===it||e===-it){var t=e<0?-1:1;return t*Na}return e===e?e:0}var pt=Fa;function Ua(e){var t=pt(e),r=t%1;return t===t?r?t-r:t:0}var ut=Ua;var Ba=Math.ceil,qa=Math.max;function Ga(e,t,r){(r?le(e,t,r):t===void 0)?t=1:t=qa(ut(t),0);var o=e==null?0:e.length;if(!o||t<1)return[];for(var a=0,n=0,f=Array(Ba(o/t));a<o;)f[n++]=ye(e,a,a+=t);return f}var Wa=Ga;var Va=g["__core-js_shared__"],ve=Va;var mt=function(){var e=/[^.]+$/.exec(ve&&ve.keys&&ve.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function Ha(e){return!!mt&&mt in e}var dt=Ha;var ka=Function.prototype,za=ka.toString;function Ka(e){if(e!=null){try{return za.call(e)}catch (e3){}try{return e+""}catch (e4){}}return""}var P=Ka;var Za=/[\\^$.*+?()[\]{}|]/g,$a=/^\[object .+?Constructor\]$/,Ja=Function.prototype,Ya=Object.prototype,Xa=Ja.toString,Qa=Ya.hasOwnProperty,en=RegExp("^"+Xa.call(Qa).replace(Za,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function tn(e){if(!S(e)||dt(e))return!1;var t=Ae(e)?en:$a;return t.test(P(e))}var lt=tn;function rn(e,t){return _optionalChain([e, 'optionalAccess', _2 => _2[t]])}var ct=rn;function on(e,t){var r=ct(e,t);return lt(r)?r:void 0}var b=on;var an=b(Object,"create"),C=an;function nn(){this.__data__=C?C(null):{},this.size=0}var xt=nn;function fn(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var gt=fn;var sn="__lodash_hash_undefined__",pn=Object.prototype,un=pn.hasOwnProperty;function mn(e){var t=this.__data__;if(C){var r=t[e];return r===sn?void 0:r}return un.call(t,e)?t[e]:void 0}var ht=mn;var dn=Object.prototype,ln=dn.hasOwnProperty;function cn(e){var t=this.__data__;return C?t[e]!==void 0:ln.call(t,e)}var bt=cn;var xn="__lodash_hash_undefined__";function gn(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=C&&t===void 0?xn:t,this}var yt=gn;function Z(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var o=e[t];this.set(o[0],o[1])}}Z.prototype.clear=xt;Z.prototype.delete=gt;Z.prototype.get=ht;Z.prototype.has=bt;Z.prototype.set=yt;var Ge=Z;function hn(){this.__data__=[],this.size=0}var _t=hn;function bn(e,t){for(var r=e.length;r--;)if(k(e[r][0],t))return r;return-1}var M=bn;var yn=Array.prototype,_n=yn.splice;function An(e){var t=this.__data__,r=M(t,e);if(r<0)return!1;var o=t.length-1;return r==o?t.pop():_n.call(t,r,1),--this.size,!0}var At=An;function vn(e){var t=this.__data__,r=M(t,e);return r<0?void 0:t[r][1]}var vt=vn;function Sn(e){return M(this.__data__,e)>-1}var St=Sn;function wn(e,t){var r=this.__data__,o=M(r,e);return o<0?(++this.size,r.push([e,t])):r[o][1]=t,this}var wt=wn;function $(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var o=e[t];this.set(o[0],o[1])}}$.prototype.clear=_t;$.prototype.delete=At;$.prototype.get=vt;$.prototype.has=St;$.prototype.set=wt;var E=$;var Tn=b(g,"Map"),j=Tn;function On(){this.size=0,this.__data__={hash:new Ge,map:new(j||E),string:new Ge}}var Tt=On;function Pn(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}var Ot=Pn;function Cn(e,t){var r=e.__data__;return Ot(t)?r[typeof t=="string"?"string":"hash"]:r.map}var R=Cn;function In(e){var t=R(this,e).delete(e);return this.size-=t?1:0,t}var Pt=In;function Mn(e){return R(this,e).get(e)}var Ct=Mn;function En(e){return R(this,e).has(e)}var It=En;function jn(e,t){var r=R(this,e),o=r.size;return r.set(e,t),this.size+=r.size==o?0:1,this}var Mt=jn;function J(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var o=e[t];this.set(o[0],o[1])}}J.prototype.clear=Tt;J.prototype.delete=Pt;J.prototype.get=Ct;J.prototype.has=It;J.prototype.set=Mt;var V=J;var Rn="__lodash_hash_undefined__";function Dn(e){return this.__data__.set(e,Rn),this}var Et=Dn;function Ln(e){return this.__data__.has(e)}var jt=Ln;function Se(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new V;++t<r;)this.add(e[t])}Se.prototype.add=Se.prototype.push=Et;Se.prototype.has=jt;var Y=Se;function Nn(e,t,r,o){for(var a=e.length,n=r+(o?1:-1);o?n--:++n<a;)if(t(e[n],n,e))return n;return-1}var Rt=Nn;function Fn(e){return e!==e}var Dt=Fn;function Un(e,t,r){for(var o=r-1,a=e.length;++o<a;)if(e[o]===t)return o;return-1}var Lt=Un;function Bn(e,t,r){return t===t?Lt(e,t,r):Rt(e,Dt,r)}var Nt=Bn;function qn(e,t){var r=e==null?0:e.length;return!!r&&Nt(e,t,0)>-1}var we=qn;function Gn(e,t,r){for(var o=-1,a=e==null?0:e.length;++o<a;)if(r(t,e[o]))return!0;return!1}var Te=Gn;function Wn(e,t){for(var r=-1,o=e==null?0:e.length,a=Array(o);++r<o;)a[r]=t(e[r],r,e);return a}var D=Wn;function Vn(e){return function(t){return e(t)}}var X=Vn;function Hn(e,t){return e.has(t)}var Q=Hn;var kn=200;function zn(e,t,r,o){var a=-1,n=we,f=!0,i=e.length,p=[],u=t.length;if(!i)return p;r&&(t=D(t,X(r))),o?(n=Te,f=!1):t.length>=kn&&(n=Q,f=!1,t=new Y(t));e:for(;++a<i;){var m=e[a],d=r==null?m:r(m);if(m=o||m!==0?m:0,f&&d===d){for(var l=u;l--;)if(t[l]===d)continue e;p.push(m)}else n(t,d,o)||p.push(m)}return p}var Ft=zn;function Kn(e,t){for(var r=-1,o=t.length,a=e.length;++r<o;)e[a+r]=t[r];return e}var Oe=Kn;var Zn="[object Arguments]";function $n(e){return y(e)&&v(e)==Zn}var We=$n;var Ut=Object.prototype,Jn=Ut.hasOwnProperty,Yn=Ut.propertyIsEnumerable,Xn=We(function(){return arguments}())?We:function(e){return y(e)&&Jn.call(e,"callee")&&!Yn.call(e,"callee")},ee=Xn;var Qn=Array.isArray,x=Qn;var Bt=h?h.isConcatSpreadable:void 0;function ef(e){return x(e)||ee(e)||!!(Bt&&e&&e[Bt])}var qt=ef;function Gt(e,t,r,o,a){var n=-1,f=e.length;for(r||(r=qt),a||(a=[]);++n<f;){var i=e[n];t>0&&r(i)?t>1?Gt(i,t-1,r,o,a):Oe(a,i):o||(a[a.length]=i)}return a}var L=Gt;function tf(e){return e}var N=tf;function rf(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}var Wt=rf;var Vt=Math.max;function of(e,t,r){return t=Vt(t===void 0?e.length-1:t,0),function(){for(var o=arguments,a=-1,n=Vt(o.length-t,0),f=Array(n);++a<n;)f[a]=o[t+a];a=-1;for(var i=Array(t+1);++a<t;)i[a]=o[a];return i[t]=r(f),Wt(e,this,i)}}var Ht=of;function af(e){return function(){return e}}var kt=af;var nf=function(){try{var e=b(Object,"defineProperty");return e({},"",{}),e}catch (e5){}}(),te=nf;var ff=te?function(e,t){return te(e,"toString",{configurable:!0,enumerable:!1,value:kt(t),writable:!0})}:N,zt=ff;var sf=800,pf=16,uf=Date.now;function mf(e){var t=0,r=0;return function(){var o=uf(),a=pf-(o-r);if(r=o,a>0){if(++t>=sf)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}var Kt=mf;var df=Kt(zt),Zt=df;function lf(e,t){return Zt(Ht(e,t,N),e+"")}var re=lf;function cf(e){return y(e)&&T(e)}var ce=cf;var xf=re(function(e,t){return ce(e)?Ft(e,L(t,1,ce,!0)):[]}),gf= exports.c =xf;function hf(e,t,r){t=="__proto__"&&te?te(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}var oe=hf;function bf(e,t,r,o){for(var a=-1,n=e==null?0:e.length;++a<n;){var f=e[a];t(o,f,r(f),e)}return o}var $t=bf;function yf(e){return function(t,r,o){for(var a=-1,n=Object(t),f=o(t),i=f.length;i--;){var p=f[e?i:++a];if(r(n[p],p,n)===!1)break}return t}}var Jt=yf;var _f=Jt(),Yt=_f;function Af(e,t){for(var r=-1,o=Array(e);++r<e;)o[r]=t(r);return o}var Xt=Af;function vf(){return!1}var Qt=vf;var rr=typeof exports=="object"&&exports&&!exports.nodeType&&exports,er=rr&&typeof module=="object"&&module&&!module.nodeType&&module,Sf=er&&er.exports===rr,tr=Sf?g.Buffer:void 0,wf=tr?tr.isBuffer:void 0,Tf=wf||Qt,xe=Tf;var Of="[object Arguments]",Pf="[object Array]",Cf="[object Boolean]",If="[object Date]",Mf="[object Error]",Ef="[object Function]",jf="[object Map]",Rf="[object Number]",Df="[object Object]",Lf="[object RegExp]",Nf="[object Set]",Ff="[object String]",Uf="[object WeakMap]",Bf="[object ArrayBuffer]",qf="[object DataView]",Gf="[object Float32Array]",Wf="[object Float64Array]",Vf="[object Int8Array]",Hf="[object Int16Array]",kf="[object Int32Array]",zf="[object Uint8Array]",Kf="[object Uint8ClampedArray]",Zf="[object Uint16Array]",$f="[object Uint32Array]",c={};c[Gf]=c[Wf]=c[Vf]=c[Hf]=c[kf]=c[zf]=c[Kf]=c[Zf]=c[$f]=!0;c[Of]=c[Pf]=c[Bf]=c[Cf]=c[qf]=c[If]=c[Mf]=c[Ef]=c[jf]=c[Rf]=c[Df]=c[Lf]=c[Nf]=c[Ff]=c[Uf]=!1;function Jf(e){return y(e)&&z(e.length)&&!!c[v(e)]}var or=Jf;var ar=typeof exports=="object"&&exports&&!exports.nodeType&&exports,ge=ar&&typeof module=="object"&&module&&!module.nodeType&&module,Yf=ge&&ge.exports===ar,Ve=Yf&&_e.process,Xf=function(){try{var e=ge&&ge.require&&ge.require("util").types;return e||Ve&&Ve.binding&&Ve.binding("util")}catch (e6){}}(),He=Xf;var nr=He&&He.isTypedArray,Qf=nr?X(nr):or,Pe=Qf;var es=Object.prototype,ts=es.hasOwnProperty;function rs(e,t){var r=x(e),o=!r&&ee(e),a=!r&&!o&&xe(e),n=!r&&!o&&!a&&Pe(e),f=r||o||a||n,i=f?Xt(e.length,String):[],p=i.length;for(var u in e)(t||ts.call(e,u))&&!(f&&(u=="length"||a&&(u=="offset"||u=="parent")||n&&(u=="buffer"||u=="byteLength"||u=="byteOffset")||K(u,p)))&&i.push(u);return i}var fr=rs;var os=Object.prototype;function as(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||os;return e===r}var sr=as;function ns(e,t){return function(r){return e(t(r))}}var ir=ns;var fs=ir(Object.keys,Object),pr=fs;var ss=Object.prototype,is=ss.hasOwnProperty;function ps(e){if(!sr(e))return pr(e);var t=[];for(var r in Object(e))is.call(e,r)&&r!="constructor"&&t.push(r);return t}var ur=ps;function us(e){return T(e)?fr(e):ur(e)}var ae=us;function ms(e,t){return e&&Yt(e,t,ae)}var Ce=ms;function ds(e,t){return function(r,o){if(r==null)return r;if(!T(r))return e(r,o);for(var a=r.length,n=t?a:-1,f=Object(r);(t?n--:++n<a)&&o(f[n],n,f)!==!1;);return r}}var mr=ds;var ls=mr(Ce),Ie=ls;function cs(e,t,r,o){return Ie(e,function(a,n,f){t(o,a,r(a),f)}),o}var dr=cs;function xs(){this.__data__=new E,this.size=0}var lr=xs;function gs(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}var cr=gs;function hs(e){return this.__data__.get(e)}var xr=hs;function bs(e){return this.__data__.has(e)}var gr=bs;var ys=200;function _s(e,t){var r=this.__data__;if(r instanceof E){var o=r.__data__;if(!j||o.length<ys-1)return o.push([e,t]),this.size=++r.size,this;r=this.__data__=new V(o)}return r.set(e,t),this.size=r.size,this}var hr=_s;function ne(e){var t=this.__data__=new E(e);this.size=t.size}ne.prototype.clear=lr;ne.prototype.delete=cr;ne.prototype.get=xr;ne.prototype.has=gr;ne.prototype.set=hr;var fe=ne;function As(e,t){for(var r=-1,o=e==null?0:e.length;++r<o;)if(t(e[r],r,e))return!0;return!1}var br=As;var vs=1,Ss=2;function ws(e,t,r,o,a,n){var f=r&vs,i=e.length,p=t.length;if(i!=p&&!(f&&p>i))return!1;var u=n.get(e),m=n.get(t);if(u&&m)return u==t&&m==e;var d=-1,l=!0,O=r&Ss?new Y:void 0;for(n.set(e,t),n.set(t,e);++d<i;){var _=e[d],A=t[d];if(o)var I=f?o(A,_,d,t,e,n):o(_,A,d,e,t,n);if(I!==void 0){if(I)continue;l=!1;break}if(O){if(!br(t,function(G,W){if(!Q(O,W)&&(_===G||a(_,G,r,o,n)))return O.push(W)})){l=!1;break}}else if(!(_===A||a(_,A,r,o,n))){l=!1;break}}return n.delete(e),n.delete(t),l}var Me=ws;var Ts=g.Uint8Array,ke=Ts;function Os(e){var t=-1,r=Array(e.size);return e.forEach(function(o,a){r[++t]=[a,o]}),r}var yr=Os;function Ps(e){var t=-1,r=Array(e.size);return e.forEach(function(o){r[++t]=o}),r}var se=Ps;var Cs=1,Is=2,Ms="[object Boolean]",Es="[object Date]",js="[object Error]",Rs="[object Map]",Ds="[object Number]",Ls="[object RegExp]",Ns="[object Set]",Fs="[object String]",Us="[object Symbol]",Bs="[object ArrayBuffer]",qs="[object DataView]",_r=h?h.prototype:void 0,ze=_r?_r.valueOf:void 0;function Gs(e,t,r,o,a,n,f){switch(r){case qs:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case Bs:return!(e.byteLength!=t.byteLength||!n(new ke(e),new ke(t)));case Ms:case Es:case Ds:return k(+e,+t);case js:return e.name==t.name&&e.message==t.message;case Ls:case Fs:return e==t+"";case Rs:var i=yr;case Ns:var p=o&Cs;if(i||(i=se),e.size!=t.size&&!p)return!1;var u=f.get(e);if(u)return u==t;o|=Is,f.set(e,t);var m=Me(i(e),i(t),o,a,n,f);return f.delete(e),m;case Us:if(ze)return ze.call(e)==ze.call(t)}return!1}var Ar=Gs;function Ws(e,t,r){var o=t(e);return x(e)?o:Oe(o,r(e))}var vr=Ws;function Vs(e,t){for(var r=-1,o=e==null?0:e.length,a=0,n=[];++r<o;){var f=e[r];t(f,r,e)&&(n[a++]=f)}return n}var Sr=Vs;function Hs(){return[]}var wr=Hs;var ks=Object.prototype,zs=ks.propertyIsEnumerable,Tr=Object.getOwnPropertySymbols,Ks=Tr?function(e){return e==null?[]:(e=Object(e),Sr(Tr(e),function(t){return zs.call(e,t)}))}:wr,Or=Ks;function Zs(e){return vr(e,ae,Or)}var Ke=Zs;var $s=1,Js=Object.prototype,Ys=Js.hasOwnProperty;function Xs(e,t,r,o,a,n){var f=r&$s,i=Ke(e),p=i.length,u=Ke(t),m=u.length;if(p!=m&&!f)return!1;for(var d=p;d--;){var l=i[d];if(!(f?l in t:Ys.call(t,l)))return!1}var O=n.get(e),_=n.get(t);if(O&&_)return O==t&&_==e;var A=!0;n.set(e,t),n.set(t,e);for(var I=f;++d<p;){l=i[d];var G=e[l],W=t[l];if(o)var Qe=f?o(W,G,l,t,e,n):o(G,W,l,e,t,n);if(!(Qe===void 0?G===W||a(G,W,r,o,n):Qe)){A=!1;break}I||(I=l=="constructor")}if(A&&!I){var he=e.constructor,be=t.constructor;he!=be&&"constructor"in e&&"constructor"in t&&!(typeof he=="function"&&he instanceof he&&typeof be=="function"&&be instanceof be)&&(A=!1)}return n.delete(e),n.delete(t),A}var Pr=Xs;var Qs=b(g,"DataView"),Ee=Qs;var ei=b(g,"Promise"),je=ei;var ti=b(g,"Set"),F=ti;var ri=b(g,"WeakMap"),Re=ri;var Cr="[object Map]",oi="[object Object]",Ir="[object Promise]",Mr="[object Set]",Er="[object WeakMap]",jr="[object DataView]",ai=P(Ee),ni=P(j),fi=P(je),si=P(F),ii=P(Re),H=v;(Ee&&H(new Ee(new ArrayBuffer(1)))!=jr||j&&H(new j)!=Cr||je&&H(je.resolve())!=Ir||F&&H(new F)!=Mr||Re&&H(new Re)!=Er)&&(H=function(e){var t=v(e),r=t==oi?e.constructor:void 0,o=r?P(r):"";if(o)switch(o){case ai:return jr;case ni:return Cr;case fi:return Ir;case si:return Mr;case ii:return Er}return t});var Ze=H;var pi=1,Rr="[object Arguments]",Dr="[object Array]",De="[object Object]",ui=Object.prototype,Lr=ui.hasOwnProperty;function mi(e,t,r,o,a,n){var f=x(e),i=x(t),p=f?Dr:Ze(e),u=i?Dr:Ze(t);p=p==Rr?De:p,u=u==Rr?De:u;var m=p==De,d=u==De,l=p==u;if(l&&xe(e)){if(!xe(t))return!1;f=!0,m=!1}if(l&&!m)return n||(n=new fe),f||Pe(e)?Me(e,t,r,o,a,n):Ar(e,t,p,r,o,a,n);if(!(r&pi)){var O=m&&Lr.call(e,"__wrapped__"),_=d&&Lr.call(t,"__wrapped__");if(O||_){var A=O?e.value():e,I=_?t.value():t;return n||(n=new fe),a(A,I,r,o,n)}}return l?(n||(n=new fe),Pr(e,t,r,o,a,n)):!1}var Nr=mi;function Fr(e,t,r,o,a){return e===t?!0:e==null||t==null||!y(e)&&!y(t)?e!==e&&t!==t:Nr(e,t,r,o,Fr,a)}var Le=Fr;var di=1,li=2;function ci(e,t,r,o){var a=r.length,n=a,f=!o;if(e==null)return!n;for(e=Object(e);a--;){var i=r[a];if(f&&i[2]?i[1]!==e[i[0]]:!(i[0]in e))return!1}for(;++a<n;){i=r[a];var p=i[0],u=e[p],m=i[1];if(f&&i[2]){if(u===void 0&&!(p in e))return!1}else{var d=new fe;if(o)var l=o(u,m,p,e,t,d);if(!(l===void 0?Le(m,u,di|li,o,d):l))return!1}}return!0}var Ur=ci;function xi(e){return e===e&&!S(e)}var Ne=xi;function gi(e){for(var t=ae(e),r=t.length;r--;){var o=t[r],a=e[o];t[r]=[o,a,Ne(a)]}return t}var Br=gi;function hi(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}var Fe=hi;function bi(e){var t=Br(e);return t.length==1&&t[0][2]?Fe(t[0][0],t[0][1]):function(r){return r===e||Ur(r,e,t)}}var qr=bi;var yi=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,_i=/^\w*$/;function Ai(e,t){if(x(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||w(e)?!0:_i.test(e)||!yi.test(e)||t!=null&&e in Object(t)}var ie=Ai;var vi="Expected a function";function $e(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(vi);var r=function(){var o=arguments,a=t?t.apply(this,o):o[0],n=r.cache;if(n.has(a))return n.get(a);var f=e.apply(this,o);return r.cache=n.set(a,f)||n,f};return r.cache=new($e.Cache||V),r}$e.Cache=V;var Gr=$e;var Si=500;function wi(e){var t=Gr(e,function(o){return r.size===Si&&r.clear(),o}),r=t.cache;return t}var Wr=wi;var Ti=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Oi=/\\(\\)?/g,Pi=Wr(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(Ti,function(r,o,a,n){t.push(a?n.replace(Oi,"$1"):o||r)}),t}),Vr=Pi;var Ci=1/0,Hr=h?h.prototype:void 0,kr=Hr?Hr.toString:void 0;function zr(e){if(typeof e=="string")return e;if(x(e))return D(e,zr)+"";if(w(e))return kr?kr.call(e):"";var t=e+"";return t=="0"&&1/e==-Ci?"-0":t}var Kr=zr;function Ii(e){return e==null?"":Kr(e)}var U=Ii;function Mi(e,t){return x(e)?e:ie(e,t)?[e]:Vr(U(e))}var Ue=Mi;var Ei=1/0;function ji(e){if(typeof e=="string"||w(e))return e;var t=e+"";return t=="0"&&1/e==-Ei?"-0":t}var B=ji;function Ri(e,t){t=Ue(t,e);for(var r=0,o=t.length;e!=null&&r<o;)e=e[B(t[r++])];return r&&r==o?e:void 0}var pe=Ri;function Di(e,t,r){var o=e==null?void 0:pe(e,t);return o===void 0?r:o}var Zr=Di;function Li(e,t){return e!=null&&t in Object(e)}var $r=Li;function Ni(e,t,r){t=Ue(t,e);for(var o=-1,a=t.length,n=!1;++o<a;){var f=B(t[o]);if(!(n=e!=null&&r(e,f)))break;e=e[f]}return n||++o!=a?n:(a=e==null?0:e.length,!!a&&z(a)&&K(f,a)&&(x(e)||ee(e)))}var Jr=Ni;function Fi(e,t){return e!=null&&Jr(e,t,$r)}var Yr=Fi;var Ui=1,Bi=2;function qi(e,t){return ie(e)&&Ne(t)?Fe(B(e),t):function(r){var o=Zr(r,e);return o===void 0&&o===t?Yr(r,e):Le(t,o,Ui|Bi)}}var Xr=qi;function Gi(e){return function(t){return _optionalChain([t, 'optionalAccess', _3 => _3[e]])}}var Qr=Gi;function Wi(e){return function(t){return pe(t,e)}}var eo=Wi;function Vi(e){return ie(e)?Qr(B(e)):eo(e)}var to=Vi;function Hi(e){return typeof e=="function"?e:e==null?N:typeof e=="object"?x(e)?Xr(e[0],e[1]):qr(e):to(e)}var q=Hi;function ki(e,t){return function(r,o){var a=x(r)?$t:dr,n=t?t():{};return a(r,e,q(o,2),n)}}var Be=ki;var zi=Object.prototype,Ki=zi.hasOwnProperty,Zi=Be(function(e,t,r){Ki.call(e,r)?e[r].push(t):oe(e,r,[t])}),$i= exports.d =Zi;function Ji(){}var ro=Ji;var Yi=1/0,Xi=F&&1/se(new F([,-0]))[1]==Yi?function(e){return new F(e)}:ro,oo=Xi;var Qi=200;function ep(e,t,r){var o=-1,a=we,n=e.length,f=!0,i=[],p=i;if(r)f=!1,a=Te;else if(n>=Qi){var u=t?null:oo(e);if(u)return se(u);f=!1,a=Q,p=new Y}else p=t?[]:i;e:for(;++o<n;){var m=e[o],d=t?t(m):m;if(m=r||m!==0?m:0,f&&d===d){for(var l=p.length;l--;)if(p[l]===d)continue e;t&&p.push(d),i.push(m)}else a(p,d,r)||(p!==i&&p.push(d),i.push(m))}return i}var ue=ep;function tp(e){return e&&e.length?ue(e):[]}var rp=tp;function op(e){var t=e==null?0:e.length;return t?L(e,1):[]}var ap=op;function np(e,t,r){var o=e.length;return r=r===void 0?o:r,!t&&r>=o?e:ye(e,t,r)}var ao=np;var fp="\\ud800-\\udfff",sp="\\u0300-\\u036f",ip="\\ufe20-\\ufe2f",pp="\\u20d0-\\u20ff",up=sp+ip+pp,mp="\\ufe0e\\ufe0f",dp="\\u200d",lp=RegExp("["+dp+fp+up+mp+"]");function cp(e){return lp.test(e)}var qe=cp;function xp(e){return e.split("")}var no=xp;var fo="\\ud800-\\udfff",gp="\\u0300-\\u036f",hp="\\ufe20-\\ufe2f",bp="\\u20d0-\\u20ff",yp=gp+hp+bp,_p="\\ufe0e\\ufe0f",Ap="["+fo+"]",Je="["+yp+"]",Ye="\\ud83c[\\udffb-\\udfff]",vp="(?:"+Je+"|"+Ye+")",so="[^"+fo+"]",io="(?:\\ud83c[\\udde6-\\uddff]){2}",po="[\\ud800-\\udbff][\\udc00-\\udfff]",Sp="\\u200d",uo=vp+"?",mo="["+_p+"]?",wp="(?:"+Sp+"(?:"+[so,io,po].join("|")+")"+mo+uo+")*",Tp=mo+uo+wp,Op="(?:"+[so+Je+"?",Je,io,po,Ap].join("|")+")",Pp=RegExp(Ye+"(?="+Ye+")|"+Op+Tp,"g");function Cp(e){return e.match(Pp)||[]}var lo=Cp;function Ip(e){return qe(e)?lo(e):no(e)}var co=Ip;function Mp(e){return function(t){t=U(t);var r=qe(t)?co(t):void 0,o=r?r[0]:t.charAt(0),a=r?ao(r,1).join(""):t.slice(1);return o[e]()+a}}var xo=Mp;var Ep=xo("toUpperCase"),go=Ep;function jp(e,t,r,o){var a=-1,n=e==null?0:e.length;for(o&&n&&(r=e[++a]);++a<n;)r=t(r,e[a],a,e);return r}var ho=jp;function Rp(e){return function(t){return _optionalChain([e, 'optionalAccess', _4 => _4[t]])}}var bo=Rp;var Dp={\u00C0:"A",\u00C1:"A",\u00C2:"A",\u00C3:"A",\u00C4:"A",\u00C5:"A",\u00E0:"a",\u00E1:"a",\u00E2:"a",\u00E3:"a",\u00E4:"a",\u00E5:"a",\u00C7:"C",\u00E7:"c",\u00D0:"D",\u00F0:"d",\u00C8:"E",\u00C9:"E",\u00CA:"E",\u00CB:"E",\u00E8:"e",\u00E9:"e",\u00EA:"e",\u00EB:"e",\u00CC:"I",\u00CD:"I",\u00CE:"I",\u00CF:"I",\u00EC:"i",\u00ED:"i",\u00EE:"i",\u00EF:"i",\u00D1:"N",\u00F1:"n",\u00D2:"O",\u00D3:"O",\u00D4:"O",\u00D5:"O",\u00D6:"O",\u00D8:"O",\u00F2:"o",\u00F3:"o",\u00F4:"o",\u00F5:"o",\u00F6:"o",\u00F8:"o",\u00D9:"U",\u00DA:"U",\u00DB:"U",\u00DC:"U",\u00F9:"u",\u00FA:"u",\u00FB:"u",\u00FC:"u",\u00DD:"Y",\u00FD:"y",\u00FF:"y",\u00C6:"Ae",\u00E6:"ae",\u00DE:"Th",\u00FE:"th",\u00DF:"ss",\u0100:"A",\u0102:"A",\u0104:"A",\u0101:"a",\u0103:"a",\u0105:"a",\u0106:"C",\u0108:"C",\u010A:"C",\u010C:"C",\u0107:"c",\u0109:"c",\u010B:"c",\u010D:"c",\u010E:"D",\u0110:"D",\u010F:"d",\u0111:"d",\u0112:"E",\u0114:"E",\u0116:"E",\u0118:"E",\u011A:"E",\u0113:"e",\u0115:"e",\u0117:"e",\u0119:"e",\u011B:"e",\u011C:"G",\u011E:"G",\u0120:"G",\u0122:"G",\u011D:"g",\u011F:"g",\u0121:"g",\u0123:"g",\u0124:"H",\u0126:"H",\u0125:"h",\u0127:"h",\u0128:"I",\u012A:"I",\u012C:"I",\u012E:"I",\u0130:"I",\u0129:"i",\u012B:"i",\u012D:"i",\u012F:"i",\u0131:"i",\u0134:"J",\u0135:"j",\u0136:"K",\u0137:"k",\u0138:"k",\u0139:"L",\u013B:"L",\u013D:"L",\u013F:"L",\u0141:"L",\u013A:"l",\u013C:"l",\u013E:"l",\u0140:"l",\u0142:"l",\u0143:"N",\u0145:"N",\u0147:"N",\u014A:"N",\u0144:"n",\u0146:"n",\u0148:"n",\u014B:"n",\u014C:"O",\u014E:"O",\u0150:"O",\u014D:"o",\u014F:"o",\u0151:"o",\u0154:"R",\u0156:"R",\u0158:"R",\u0155:"r",\u0157:"r",\u0159:"r",\u015A:"S",\u015C:"S",\u015E:"S",\u0160:"S",\u015B:"s",\u015D:"s",\u015F:"s",\u0161:"s",\u0162:"T",\u0164:"T",\u0166:"T",\u0163:"t",\u0165:"t",\u0167:"t",\u0168:"U",\u016A:"U",\u016C:"U",\u016E:"U",\u0170:"U",\u0172:"U",\u0169:"u",\u016B:"u",\u016D:"u",\u016F:"u",\u0171:"u",\u0173:"u",\u0174:"W",\u0175:"w",\u0176:"Y",\u0177:"y",\u0178:"Y",\u0179:"Z",\u017B:"Z",\u017D:"Z",\u017A:"z",\u017C:"z",\u017E:"z",\u0132:"IJ",\u0133:"ij",\u0152:"Oe",\u0153:"oe",\u0149:"'n",\u017F:"s"},Lp=bo(Dp),yo=Lp;var Np=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Fp="\\u0300-\\u036f",Up="\\ufe20-\\ufe2f",Bp="\\u20d0-\\u20ff",qp=Fp+Up+Bp,Gp="["+qp+"]",Wp=RegExp(Gp,"g");function Vp(e){return e=U(e),e&&e.replace(Np,yo).replace(Wp,"")}var _o=Vp;var Hp=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;function kp(e){return e.match(Hp)||[]}var Ao=kp;var zp=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;function Kp(e){return zp.test(e)}var vo=Kp;var Po="\\ud800-\\udfff",Zp="\\u0300-\\u036f",$p="\\ufe20-\\ufe2f",Jp="\\u20d0-\\u20ff",Yp=Zp+$p+Jp,Co="\\u2700-\\u27bf",Io="a-z\\xdf-\\xf6\\xf8-\\xff",Xp="\\xac\\xb1\\xd7\\xf7",Qp="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",eu="\\u2000-\\u206f",tu=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",Mo="A-Z\\xc0-\\xd6\\xd8-\\xde",ru="\\ufe0e\\ufe0f",Eo=Xp+Qp+eu+tu,jo="['\u2019]",So="["+Eo+"]",ou="["+Yp+"]",Ro="\\d+",au="["+Co+"]",Do="["+Io+"]",Lo="[^"+Po+Eo+Ro+Co+Io+Mo+"]",nu="\\ud83c[\\udffb-\\udfff]",fu="(?:"+ou+"|"+nu+")",su="[^"+Po+"]",No="(?:\\ud83c[\\udde6-\\uddff]){2}",Fo="[\\ud800-\\udbff][\\udc00-\\udfff]",me="["+Mo+"]",iu="\\u200d",wo="(?:"+Do+"|"+Lo+")",pu="(?:"+me+"|"+Lo+")",To="(?:"+jo+"(?:d|ll|m|re|s|t|ve))?",Oo="(?:"+jo+"(?:D|LL|M|RE|S|T|VE))?",Uo=fu+"?",Bo="["+ru+"]?",uu="(?:"+iu+"(?:"+[su,No,Fo].join("|")+")"+Bo+Uo+")*",mu="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",du="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",lu=Bo+Uo+uu,cu="(?:"+[au,No,Fo].join("|")+")"+lu,xu=RegExp([me+"?"+Do+"+"+To+"(?="+[So,me,"$"].join("|")+")",pu+"+"+Oo+"(?="+[So,me+wo,"$"].join("|")+")",me+"?"+wo+"+"+To,me+"+"+Oo,du,mu,Ro,cu].join("|"),"g");function gu(e){return e.match(xu)||[]}var qo=gu;function hu(e,t,r){return e=U(e),t=r?void 0:t,t===void 0?vo(e)?qo(e):Ao(e):e.match(t)||[]}var Go=hu;var bu="['\u2019]",yu=RegExp(bu,"g");function _u(e){return function(t){return ho(Go(_o(t).replace(yu,"")),e,"")}}var Wo=_u;function Au(e,t){var r=-1,o=T(e)?Array(e.length):[];return Ie(e,function(a,n,f){o[++r]=t(a,n,f)}),o}var Vo=Au;var vu=Be(function(e,t,r){oe(e,r,t)}),Xe= exports.e =vu;function Su(e,t){var r={};return t=q(t,3),Ce(e,function(o,a,n){oe(r,a,t(o,a,n))}),r}var wu=Su;function Tu(e,t){var r=e.length;for(e.sort(t);r--;)e[r]=e[r].value;return e}var Ho=Tu;function Ou(e,t){if(e!==t){var r=e!==void 0,o=e===null,a=e===e,n=w(e),f=t!==void 0,i=t===null,p=t===t,u=w(t);if(!i&&!u&&!n&&e>t||n&&f&&p&&!i&&!u||o&&f&&p||!r&&p||!a)return 1;if(!o&&!n&&!u&&e<t||u&&r&&a&&!o&&!n||i&&r&&a||!f&&a||!p)return-1}return 0}var ko=Ou;function Pu(e,t,r){for(var o=-1,a=e.criteria,n=t.criteria,f=a.length,i=r.length;++o<f;){var p=ko(a[o],n[o]);if(p){if(o>=i)return p;var u=r[o];return p*(u=="desc"?-1:1)}}return e.index-t.index}var zo=Pu;function Cu(e,t,r){t.length?t=D(t,function(n){return x(n)?function(f){return pe(f,n.length===1?n[0]:n)}:n}):t=[N];var o=-1;t=D(t,X(q));var a=Vo(e,function(n,f,i){var p=D(t,function(u){return u(n)});return{criteria:p,index:++o,value:n}});return Ho(a,function(n,f){return zo(n,f,r)})}var Ko=Cu;var Iu=re(function(e,t){if(e==null)return[];var r=t.length;return r>1&&le(e,t[0],t[1])?t=[]:r>2&&le(t[0],t[1],t[2])&&(t=[t[0]]),Ko(e,L(t,1),[])}),Mu= exports.g =Iu;var Eu=Wo(function(e,t,r){return e+(r?" ":"")+go(t)}),ju= exports.h =Eu;var Ru=re(function(e){return ue(L(e,1,ce,!0))}),Du= exports.i =Ru;function Lu(e,t){return e&&e.length?ue(e,q(t,2)):[]}var Nu=Lu;var Fu="A command line interface for programmatic operations across Transcend.",Uu= exports.m ="8.0.7";var _privacytypes = require('@transcend-io/privacy-types');var fy="transcend",$o= exports.o ="https://app.transcend.io",sy= exports.p =`${$o}/infrastructure/integrations`,iy= exports.q =`${$o}/data-map/data-inventory/data-points`,py= exports.r =process.env.TRANSCEND_API_URL||"https://api.transcend.io",uy= exports.s =process.env.TRANSCEND_CONSENT_API_URL||"https://consent.transcend.io",my= exports.t ={apiKeys:[_privacytypes.ScopeName.ViewApiKeys],templates:[_privacytypes.ScopeName.ManageEmailTemplates],dataSilos:[_privacytypes.ScopeName.ManageDataMap,_privacytypes.ScopeName.ConnectDataSilos],enrichers:[_privacytypes.ScopeName.ManageRequestIdentities],businessEntities:[_privacytypes.ScopeName.ManageDataInventory],processingActivities:[_privacytypes.ScopeName.ManageDataMap],identifiers:[_privacytypes.ScopeName.ManageRequestIdentities],customFields:[_privacytypes.ScopeName.ManageGlobalAttributes],dataFlows:[_privacytypes.ScopeName.ManageDataFlow],cookies:[_privacytypes.ScopeName.ManageDataFlow],consentManager:[_privacytypes.ScopeName.ManageConsentManagerDeveloperSettings],partitions:[_privacytypes.ScopeName.ManageConsentManagerDeveloperSettings],actions:[_privacytypes.ScopeName.ManageDataSubjectRequestSettings],dataSubjects:[_privacytypes.ScopeName.ManageDataSubjectRequestSettings],prompts:[_privacytypes.ScopeName.ManagePrompts],promptPartials:[_privacytypes.ScopeName.ManagePrompts],promptGroups:[_privacytypes.ScopeName.ManagePrompts],agents:[_privacytypes.ScopeName.ManagePathfinder],agentFunctions:[_privacytypes.ScopeName.ManagePathfinder],agentFiles:[_privacytypes.ScopeName.ManagePathfinder],vendors:[_privacytypes.ScopeName.ManageDataInventory],dataCategories:[_privacytypes.ScopeName.ManageDataInventory],processingPurposes:[_privacytypes.ScopeName.ManageDataInventory],actionItems:[_privacytypes.ScopeName.ManageAllActionItems,_privacytypes.ScopeName.ViewGlobalAttributes],actionItemCollections:[_privacytypes.ScopeName.ManageActionItemCollections],teams:[_privacytypes.ScopeName.ManageAccessControl],messages:[_privacytypes.ScopeName.ManageIntlMessages],privacyCenters:[_privacytypes.ScopeName.ManagePrivacyCenter],policies:[_privacytypes.ScopeName.ManagePolicies],assessments:[_privacytypes.ScopeName.ManageAssessments],assessmentTemplates:[_privacytypes.ScopeName.ManageAssessments],purposes:[_privacytypes.ScopeName.ManageConsentManager,_privacytypes.ScopeName.ManagePreferenceStoreSettings]},dy= exports.u ={apiKeys:[_privacytypes.ScopeName.ViewApiKeys],templates:[_privacytypes.ScopeName.ViewEmailTemplates],dataSilos:[_privacytypes.ScopeName.ViewDataMap,_privacytypes.ScopeName.ViewDataSubjectRequestSettings],enrichers:[_privacytypes.ScopeName.ViewRequestIdentitySettings],businessEntities:[_privacytypes.ScopeName.ViewDataInventory],processingActivities:[_privacytypes.ScopeName.ViewDataInventory],identifiers:[_privacytypes.ScopeName.ViewRequestIdentitySettings],customFields:[_privacytypes.ScopeName.ViewGlobalAttributes],dataFlows:[_privacytypes.ScopeName.ViewDataFlow],cookies:[_privacytypes.ScopeName.ViewDataFlow],consentManager:[_privacytypes.ScopeName.ViewConsentManager],partitions:[_privacytypes.ScopeName.ViewConsentManager],actions:[_privacytypes.ScopeName.ViewDataSubjectRequestSettings],dataSubjects:[_privacytypes.ScopeName.ViewDataSubjectRequestSettings],prompts:[_privacytypes.ScopeName.ViewPrompts],promptPartials:[_privacytypes.ScopeName.ViewPrompts],promptGroups:[_privacytypes.ScopeName.ViewPrompts],agents:[_privacytypes.ScopeName.ViewPathfinder],agentFunctions:[_privacytypes.ScopeName.ViewPathfinder],agentFiles:[_privacytypes.ScopeName.ViewPathfinder],vendors:[_privacytypes.ScopeName.ViewDataInventory],dataCategories:[_privacytypes.ScopeName.ViewDataInventory],processingPurposes:[_privacytypes.ScopeName.ViewDataInventory],actionItemCollections:[_privacytypes.ScopeName.ViewAllActionItems],actionItems:[_privacytypes.ScopeName.ViewAllActionItems],teams:[_privacytypes.ScopeName.ViewScopes],messages:[_privacytypes.ScopeName.ViewIntlMessages],privacyCenters:[_privacytypes.ScopeName.ViewPrivacyCenter],policies:[_privacytypes.ScopeName.ViewPolicies],assessments:[_privacytypes.ScopeName.ViewAssessments],assessmentTemplates:[_privacytypes.ScopeName.ViewAssessments],purposes:[_privacytypes.ScopeName.ViewConsentManager,_privacytypes.ScopeName.ViewPreferenceStoreSettings]},ly= exports.v ={apiKeys:"api-keys",customFields:"attributes",dataFlows:"data-flows",cookies:"cookies",consentManager:"consent-manager",partitions:"partitions",actions:"actions",dataSubjects:"data-subjects",businessEntities:"business-entities",processingActivities:"processing-activities",identifiers:"identifiers",enrichers:"enrichers",dataSilos:"data-silos",templates:"templates",prompts:"prompts",promptPartials:"prompt-partials",promptGroups:"prompt-groups",agents:"agents",agentFunctions:"agent-functions",agentFiles:"agent-files",vendors:"vendors",dataCategories:"data-categories",processingPurposes:"processing-purposes",actionItems:"action-items",actionItemCollections:"action-item-collections",teams:"teams",messages:"messages",privacyCenters:"privacy-center",policies:"policies",assessments:"assessments",assessmentTemplates:"assessment-templates",purposes:"purposes"},qu= exports.w =Xe(Object.entries(_privacytypes.TRANSCEND_SCOPES).map(([e,t])=>({...t,name:e})),"title"),cy= exports.x =Object.keys(qu),xy= exports.y =new Set([429,502,500,504,329]),gy= exports.z =process.env.DEBUG==="1";exports.a = ap; exports.b = Wa; exports.c = gf; exports.d = $i; exports.e = Xe; exports.f = wu; exports.g = Mu; exports.h = ju; exports.i = Du; exports.j = rp; exports.k = Nu; exports.l = Fu; exports.m = Uu; exports.n = fy; exports.o = $o; exports.p = sy; exports.q = iy; exports.r = py; exports.s = uy; exports.t = my; exports.u = dy; exports.v = ly; exports.w = qu; exports.x = cy; exports.y = xy; exports.z = gy;
2
2
  /*! Bundled license information:
3
3
 
4
4
  lodash-es/lodash.js:
@@ -12,4 +12,4 @@ lodash-es/lodash.js:
12
12
  * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
13
13
  *)
14
14
  */
15
- //# sourceMappingURL=chunk-MFIMY5RY.cjs.map
15
+ //# sourceMappingURL=chunk-E57K4DGX.cjs.map