@transcend-io/cli 13.0.7 → 13.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/README.md +13 -1
  2. package/dist/{app-CO1O5Hkp.mjs → app-BvxaQDR8.mjs} +16 -16
  3. package/dist/app-BvxaQDR8.mjs.map +1 -0
  4. package/dist/{approvePrivacyRequests-Dp391N0W.mjs → approvePrivacyRequests-C0uOJ_rl.mjs} +2 -2
  5. package/dist/{approvePrivacyRequests-Dp391N0W.mjs.map → approvePrivacyRequests-C0uOJ_rl.mjs.map} +1 -1
  6. package/dist/bin/bash-complete.mjs +1 -1
  7. package/dist/bin/cli.mjs +1 -1
  8. package/dist/bin/deprecated-command.mjs +1 -1
  9. package/dist/{buildExamples-CFmrB0Ib.mjs → buildExamples-Y80pUXjE.mjs} +2 -2
  10. package/dist/{buildExamples-CFmrB0Ib.mjs.map → buildExamples-Y80pUXjE.mjs.map} +1 -1
  11. package/dist/{buildXdiSyncEndpoint-ClifAojB.mjs → buildXdiSyncEndpoint-Ien2wW8B.mjs} +2 -2
  12. package/dist/{buildXdiSyncEndpoint-ClifAojB.mjs.map → buildXdiSyncEndpoint-Ien2wW8B.mjs.map} +1 -1
  13. package/dist/{bulkRestartRequests-CiBW6ccP.mjs → bulkRestartRequests-BxqQTPhx.mjs} +2 -2
  14. package/dist/{bulkRestartRequests-CiBW6ccP.mjs.map → bulkRestartRequests-BxqQTPhx.mjs.map} +1 -1
  15. package/dist/{bulkRetryEnrichers-CeJbLkVa.mjs → bulkRetryEnrichers-DHb2bum-.mjs} +2 -2
  16. package/dist/{bulkRetryEnrichers-CeJbLkVa.mjs.map → bulkRetryEnrichers-DHb2bum-.mjs.map} +1 -1
  17. package/dist/{cancelPrivacyRequests-DHUjIs6Q.mjs → cancelPrivacyRequests-CC8AUk2W.mjs} +2 -2
  18. package/dist/{cancelPrivacyRequests-DHUjIs6Q.mjs.map → cancelPrivacyRequests-CC8AUk2W.mjs.map} +1 -1
  19. package/dist/{command-CW2zzyZv.mjs → command-yR7bzCCO.mjs} +2 -2
  20. package/dist/{command-CW2zzyZv.mjs.map → command-yR7bzCCO.mjs.map} +1 -1
  21. package/dist/{constants-COP23kS1.mjs → constants-Cn4gCAXe.mjs} +2 -2
  22. package/dist/{constants-COP23kS1.mjs.map → constants-Cn4gCAXe.mjs.map} +1 -1
  23. package/dist/{createPoolingCommandUi-C1LcY1pb.mjs → createPoolingCommandUi-jeOSfSpz.mjs} +2 -2
  24. package/dist/{createPoolingCommandUi-C1LcY1pb.mjs.map → createPoolingCommandUi-jeOSfSpz.mjs.map} +1 -1
  25. package/dist/{downloadPrivacyRequestFiles-BWzpebA9.mjs → downloadPrivacyRequestFiles-BME9-TJ_.mjs} +2 -2
  26. package/dist/{downloadPrivacyRequestFiles-BWzpebA9.mjs.map → downloadPrivacyRequestFiles-BME9-TJ_.mjs.map} +1 -1
  27. package/dist/{generateCrossAccountApiKeys-CySsayKo.mjs → generateCrossAccountApiKeys-DKWkT3Ep.mjs} +2 -2
  28. package/dist/{generateCrossAccountApiKeys-CySsayKo.mjs.map → generateCrossAccountApiKeys-DKWkT3Ep.mjs.map} +1 -1
  29. package/dist/{impl-Ex1k8tmr2.mjs → impl-4gF9R-eS2.mjs} +2 -2
  30. package/dist/{impl-Ex1k8tmr2.mjs.map → impl-4gF9R-eS2.mjs.map} +1 -1
  31. package/dist/{impl-BLXycY43.mjs → impl-6AFWh1aQ.mjs} +2 -2
  32. package/dist/{impl-BLXycY43.mjs.map → impl-6AFWh1aQ.mjs.map} +1 -1
  33. package/dist/{impl-CYmUc_vX.mjs → impl-7NHypdT2.mjs} +2 -2
  34. package/dist/{impl-CYmUc_vX.mjs.map → impl-7NHypdT2.mjs.map} +1 -1
  35. package/dist/{impl-BOxmt2GG.mjs → impl-B2tB2Pwd.mjs} +2 -2
  36. package/dist/{impl-BOxmt2GG.mjs.map → impl-B2tB2Pwd.mjs.map} +1 -1
  37. package/dist/{impl-DpDvrRiO.mjs → impl-B5BqqN03.mjs} +2 -2
  38. package/dist/{impl-DpDvrRiO.mjs.map → impl-B5BqqN03.mjs.map} +1 -1
  39. package/dist/{impl-Ozpcz9ZU.mjs → impl-BATJRG4i.mjs} +2 -2
  40. package/dist/{impl-Ozpcz9ZU.mjs.map → impl-BATJRG4i.mjs.map} +1 -1
  41. package/dist/{impl-Bi6LJASv.mjs → impl-BC-NjSNE.mjs} +2 -2
  42. package/dist/{impl-Bi6LJASv.mjs.map → impl-BC-NjSNE.mjs.map} +1 -1
  43. package/dist/{impl-B-0sNsEl.mjs → impl-BF2Be-f-.mjs} +2 -2
  44. package/dist/{impl-B-0sNsEl.mjs.map → impl-BF2Be-f-.mjs.map} +1 -1
  45. package/dist/{impl-CYHtZNqc2.mjs → impl-Beowih0Z2.mjs} +2 -2
  46. package/dist/{impl-CYHtZNqc2.mjs.map → impl-Beowih0Z2.mjs.map} +1 -1
  47. package/dist/{impl-D9OTKDPp.mjs → impl-BfFbjkO7.mjs} +2 -2
  48. package/dist/{impl-D9OTKDPp.mjs.map → impl-BfFbjkO7.mjs.map} +1 -1
  49. package/dist/{impl-D8k-pJS22.mjs → impl-BnzljbCo2.mjs} +2 -2
  50. package/dist/{impl-D8k-pJS22.mjs.map → impl-BnzljbCo2.mjs.map} +1 -1
  51. package/dist/{impl-CnMcL9n5.mjs → impl-Bu9XIWOv.mjs} +2 -2
  52. package/dist/{impl-CnMcL9n5.mjs.map → impl-Bu9XIWOv.mjs.map} +1 -1
  53. package/dist/{impl-BodK3EBe.mjs → impl-ByfS3brX.mjs} +2 -2
  54. package/dist/{impl-BodK3EBe.mjs.map → impl-ByfS3brX.mjs.map} +1 -1
  55. package/dist/{impl-DemRJL6E.mjs → impl-C0YGs2X2.mjs} +2 -2
  56. package/dist/{impl-DemRJL6E.mjs.map → impl-C0YGs2X2.mjs.map} +1 -1
  57. package/dist/{impl-DEIttGUr.mjs → impl-C2Aq3Cl-.mjs} +2 -2
  58. package/dist/{impl-DEIttGUr.mjs.map → impl-C2Aq3Cl-.mjs.map} +1 -1
  59. package/dist/{impl-BV5F911e.mjs → impl-C7MvsNae.mjs} +2 -2
  60. package/dist/{impl-BV5F911e.mjs.map → impl-C7MvsNae.mjs.map} +1 -1
  61. package/dist/{impl-DOwpJ0Di.mjs → impl-C7Swy8Yd.mjs} +2 -2
  62. package/dist/{impl-DOwpJ0Di.mjs.map → impl-C7Swy8Yd.mjs.map} +1 -1
  63. package/dist/{impl-CwrOulKa.mjs → impl-CPuq0lY3.mjs} +2 -2
  64. package/dist/{impl-CwrOulKa.mjs.map → impl-CPuq0lY3.mjs.map} +1 -1
  65. package/dist/{impl-Ce8auZ7z.mjs → impl-CQJh8pOO.mjs} +2 -2
  66. package/dist/{impl-Ce8auZ7z.mjs.map → impl-CQJh8pOO.mjs.map} +1 -1
  67. package/dist/{impl-lICSh559.mjs → impl-CSgeaBe6.mjs} +2 -2
  68. package/dist/{impl-lICSh559.mjs.map → impl-CSgeaBe6.mjs.map} +1 -1
  69. package/dist/{impl-CFd4xBgL.mjs → impl-CUrrVjRd.mjs} +2 -2
  70. package/dist/{impl-CFd4xBgL.mjs.map → impl-CUrrVjRd.mjs.map} +1 -1
  71. package/dist/{impl-_iRsjm4-.mjs → impl-CYhyfOQm.mjs} +2 -2
  72. package/dist/{impl-_iRsjm4-.mjs.map → impl-CYhyfOQm.mjs.map} +1 -1
  73. package/dist/{impl-DPpvHMjb.mjs → impl-Cfcctfnz.mjs} +2 -2
  74. package/dist/{impl-DPpvHMjb.mjs.map → impl-Cfcctfnz.mjs.map} +1 -1
  75. package/dist/{impl-CDdfGdZS.mjs → impl-Ci2xapJb.mjs} +2 -2
  76. package/dist/{impl-CDdfGdZS.mjs.map → impl-Ci2xapJb.mjs.map} +1 -1
  77. package/dist/{impl-BZ-3THtu.mjs → impl-CiY2BELr.mjs} +2 -2
  78. package/dist/{impl-BZ-3THtu.mjs.map → impl-CiY2BELr.mjs.map} +1 -1
  79. package/dist/{impl-BcdEn3Fl.mjs → impl-CjUypGW5.mjs} +2 -2
  80. package/dist/{impl-BcdEn3Fl.mjs.map → impl-CjUypGW5.mjs.map} +1 -1
  81. package/dist/{impl-CUMgdqIK.mjs → impl-D-statI2.mjs} +2 -2
  82. package/dist/{impl-CUMgdqIK.mjs.map → impl-D-statI2.mjs.map} +1 -1
  83. package/dist/{impl-BH5iAw6H2.mjs → impl-D-xYpJv-2.mjs} +2 -2
  84. package/dist/{impl-BH5iAw6H2.mjs.map → impl-D-xYpJv-2.mjs.map} +1 -1
  85. package/dist/{impl-tnFsm0_E.mjs → impl-D1bilVWP.mjs} +2 -2
  86. package/dist/{impl-tnFsm0_E.mjs.map → impl-D1bilVWP.mjs.map} +1 -1
  87. package/dist/impl-D96Qsxbj.mjs +2 -0
  88. package/dist/impl-D96Qsxbj.mjs.map +1 -0
  89. package/dist/{impl-D68Cz0sq.mjs → impl-DDNcugBn.mjs} +2 -2
  90. package/dist/{impl-D68Cz0sq.mjs.map → impl-DDNcugBn.mjs.map} +1 -1
  91. package/dist/{impl-Nw0Zse5L2.mjs → impl-DRvWgVne2.mjs} +2 -2
  92. package/dist/{impl-Nw0Zse5L2.mjs.map → impl-DRvWgVne2.mjs.map} +1 -1
  93. package/dist/{impl-C70SbLuM.mjs → impl-DSjrZYrZ.mjs} +2 -2
  94. package/dist/{impl-C70SbLuM.mjs.map → impl-DSjrZYrZ.mjs.map} +1 -1
  95. package/dist/{impl-BR8Hd6mv.mjs → impl-DYeWQhGv.mjs} +2 -2
  96. package/dist/{impl-BR8Hd6mv.mjs.map → impl-DYeWQhGv.mjs.map} +1 -1
  97. package/dist/{impl-jDN8J2nu.mjs → impl-DYrvzBB_.mjs} +2 -2
  98. package/dist/{impl-jDN8J2nu.mjs.map → impl-DYrvzBB_.mjs.map} +1 -1
  99. package/dist/{impl-BEsnbaiX.mjs → impl-Dlt7fikm.mjs} +2 -2
  100. package/dist/{impl-BEsnbaiX.mjs.map → impl-Dlt7fikm.mjs.map} +1 -1
  101. package/dist/{impl-BlpM1lXA.mjs → impl-Dz58BXdB.mjs} +2 -2
  102. package/dist/{impl-BlpM1lXA.mjs.map → impl-Dz58BXdB.mjs.map} +1 -1
  103. package/dist/{impl-CVUB56mN.mjs → impl-Is_8XFNd.mjs} +2 -2
  104. package/dist/{impl-CVUB56mN.mjs.map → impl-Is_8XFNd.mjs.map} +1 -1
  105. package/dist/{impl-CW1o90oL.mjs → impl-vp8rajsL.mjs} +2 -2
  106. package/dist/{impl-CW1o90oL.mjs.map → impl-vp8rajsL.mjs.map} +1 -1
  107. package/dist/{impl-B__KKiTX.mjs → impl-y_hHEw4C.mjs} +2 -2
  108. package/dist/{impl-B__KKiTX.mjs.map → impl-y_hHEw4C.mjs.map} +1 -1
  109. package/dist/index.d.mts +2 -0
  110. package/dist/index.d.mts.map +1 -1
  111. package/dist/index.mjs +1 -1
  112. package/dist/{markRequestDataSiloIdsCompleted-8pyUnD96.mjs → markRequestDataSiloIdsCompleted-q5qzxdUA.mjs} +2 -2
  113. package/dist/{markRequestDataSiloIdsCompleted-8pyUnD96.mjs.map → markRequestDataSiloIdsCompleted-q5qzxdUA.mjs.map} +1 -1
  114. package/dist/{markSilentPrivacyRequests-B0WgT7XH.mjs → markSilentPrivacyRequests-C7saDNi1.mjs} +2 -2
  115. package/dist/{markSilentPrivacyRequests-B0WgT7XH.mjs.map → markSilentPrivacyRequests-C7saDNi1.mjs.map} +1 -1
  116. package/dist/{notifyPrivacyRequestsAdditionalTime-CF_Q_gQB.mjs → notifyPrivacyRequestsAdditionalTime-lhkzdabV.mjs} +2 -2
  117. package/dist/{notifyPrivacyRequestsAdditionalTime-CF_Q_gQB.mjs.map → notifyPrivacyRequestsAdditionalTime-lhkzdabV.mjs.map} +1 -1
  118. package/dist/{policy-bundle-manifest-C54mLUrx.mjs → policy-bundle-manifest-B_uWp-_d.mjs} +2 -2
  119. package/dist/{policy-bundle-manifest-C54mLUrx.mjs.map → policy-bundle-manifest-B_uWp-_d.mjs.map} +1 -1
  120. package/dist/{policy-project-discovery-DhZ6dKNc.mjs → policy-project-discovery-CtDD-Ofh.mjs} +2 -2
  121. package/dist/{policy-project-discovery-DhZ6dKNc.mjs.map → policy-project-discovery-CtDD-Ofh.mjs.map} +1 -1
  122. package/dist/{policy-scaffold-config-DGq600jy.mjs → policy-scaffold-config-Cuen70zB.mjs} +2 -2
  123. package/dist/{policy-scaffold-config-DGq600jy.mjs.map → policy-scaffold-config-Cuen70zB.mjs.map} +1 -1
  124. package/dist/{pullChunkedCustomSiloOutstandingIdentifiers-DDlLAT1E.mjs → pullChunkedCustomSiloOutstandingIdentifiers-p1OqL3-1.mjs} +2 -2
  125. package/dist/{pullChunkedCustomSiloOutstandingIdentifiers-DDlLAT1E.mjs.map → pullChunkedCustomSiloOutstandingIdentifiers-p1OqL3-1.mjs.map} +1 -1
  126. package/dist/{pullManualEnrichmentIdentifiersToCsv-CMdQpJhA.mjs → pullManualEnrichmentIdentifiersToCsv-DzkxPvjM.mjs} +2 -2
  127. package/dist/{pullManualEnrichmentIdentifiersToCsv-CMdQpJhA.mjs.map → pullManualEnrichmentIdentifiersToCsv-DzkxPvjM.mjs.map} +1 -1
  128. package/dist/{pushCronIdentifiersFromCsv-zG2hSmLe.mjs → pushCronIdentifiersFromCsv-D8n9CnqG.mjs} +2 -2
  129. package/dist/{pushCronIdentifiersFromCsv-zG2hSmLe.mjs.map → pushCronIdentifiersFromCsv-D8n9CnqG.mjs.map} +1 -1
  130. package/dist/{pushManualEnrichmentIdentifiersFromCsv-BTNRsy1n.mjs → pushManualEnrichmentIdentifiersFromCsv-S5iNjujC.mjs} +2 -2
  131. package/dist/{pushManualEnrichmentIdentifiersFromCsv-BTNRsy1n.mjs.map → pushManualEnrichmentIdentifiersFromCsv-S5iNjujC.mjs.map} +1 -1
  132. package/dist/{removeUnverifiedRequestIdentifiers-B-4jnuHJ.mjs → removeUnverifiedRequestIdentifiers-DOnQdXQJ.mjs} +2 -2
  133. package/dist/{removeUnverifiedRequestIdentifiers-B-4jnuHJ.mjs.map → removeUnverifiedRequestIdentifiers-DOnQdXQJ.mjs.map} +1 -1
  134. package/dist/{retryRequestDataSilos-4KK-YDFo.mjs → retryRequestDataSilos-DpLQBiQQ.mjs} +2 -2
  135. package/dist/{retryRequestDataSilos-4KK-YDFo.mjs.map → retryRequestDataSilos-DpLQBiQQ.mjs.map} +1 -1
  136. package/dist/{skipPreflightJobs-CTAUtsAu.mjs → skipPreflightJobs-xq-kLhzl.mjs} +2 -2
  137. package/dist/{skipPreflightJobs-CTAUtsAu.mjs.map → skipPreflightJobs-xq-kLhzl.mjs.map} +1 -1
  138. package/dist/{skipRequestDataSilos-DhWSTG5Y.mjs → skipRequestDataSilos-DMRuPaY9.mjs} +2 -2
  139. package/dist/{skipRequestDataSilos-DhWSTG5Y.mjs.map → skipRequestDataSilos-DMRuPaY9.mjs.map} +1 -1
  140. package/dist/{streamPrivacyRequestsToCsv-BNGRUSGN.mjs → streamPrivacyRequestsToCsv-BPpjekr9.mjs} +2 -2
  141. package/dist/{streamPrivacyRequestsToCsv-BNGRUSGN.mjs.map → streamPrivacyRequestsToCsv-BPpjekr9.mjs.map} +1 -1
  142. package/dist/{updateConsentManagerVersionToLatest-sLQaEvXZ.mjs → updateConsentManagerVersionToLatest-Dy7trs2A.mjs} +2 -2
  143. package/dist/{updateConsentManagerVersionToLatest-sLQaEvXZ.mjs.map → updateConsentManagerVersionToLatest-Dy7trs2A.mjs.map} +1 -1
  144. package/dist/{uploadConsents-DD5ZYsjA.mjs → uploadConsents-D7oZxVaR.mjs} +2 -2
  145. package/dist/{uploadConsents-DD5ZYsjA.mjs.map → uploadConsents-D7oZxVaR.mjs.map} +1 -1
  146. package/dist/{uploadPrivacyRequestsFromCsv-Dxep9tvI.mjs → uploadPrivacyRequestsFromCsv-CVsqFOyR.mjs} +2 -2
  147. package/dist/{uploadPrivacyRequestsFromCsv-Dxep9tvI.mjs.map → uploadPrivacyRequestsFromCsv-CVsqFOyR.mjs.map} +1 -1
  148. package/package.json +6 -6
  149. package/dist/app-CO1O5Hkp.mjs.map +0 -1
  150. package/dist/impl-ClqrQo1M.mjs +0 -2
  151. package/dist/impl-ClqrQo1M.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"impl-CVUB56mN.mjs","names":[],"sources":["../src/commands/consent/pull-consent-metrics/impl.ts"],"sourcesContent":["import path from 'node:path';\n\nimport { ConsentManagerMetricBin } from '@transcend-io/privacy-types';\nimport { buildTranscendGraphQLClient } from '@transcend-io/sdk';\nimport { map, mapSeries } from '@transcend-io/utils';\nimport colors from 'colors';\n\nimport { ADMIN_DASH_INTEGRATIONS } from '../../../constants.js';\nimport type { LocalContext } from '../../../context.js';\nimport { validateTranscendAuth } from '../../../lib/api-keys/index.js';\nimport { doneInputValidation } from '../../../lib/cli/done-input-validation.js';\nimport { pullConsentManagerMetrics } from '../../../lib/consent-manager/index.js';\nimport { writeCsv } from '../../../lib/helpers/index.js';\n\nexport interface PullConsentMetricsCommandFlags {\n auth: string;\n start: Date;\n end?: Date;\n folder: string;\n bin: string;\n transcendUrl: string;\n}\n\nexport async function pullConsentMetrics(\n this: LocalContext,\n { auth, start, end, folder, bin, transcendUrl }: PullConsentMetricsCommandFlags,\n): Promise<void> {\n // Validate bin\n const parsedBin = bin as ConsentManagerMetricBin;\n if (!Object.values(ConsentManagerMetricBin).includes(parsedBin)) {\n this.logger.error(\n colors.red(\n `Failed to parse argument \"bin\" with value \"${bin}\"\\n` +\n `Expected one of: \\n${Object.values(ConsentManagerMetricBin).join('\\n')}`,\n ),\n );\n this.process.exit(1);\n }\n\n // Parse the dates\n const startDate = new Date(start);\n const endDate = end ? new Date(end) : new Date();\n if (Number.isNaN(startDate.getTime())) {\n this.logger.error(\n colors.red(\n `Start date provided is invalid date. Got --start=\"${start}\" expected --start=\"01/01/2023\"`,\n ),\n );\n this.process.exit(1);\n }\n if (Number.isNaN(endDate.getTime())) {\n this.logger.error(\n colors.red(\n `End date provided is invalid date. Got --end=\"${end}\" expected --end=\"01/01/2023\"`,\n ),\n );\n this.process.exit(1);\n }\n if (startDate > endDate) {\n this.logger.error(\n colors.red(\n `Got a start date \"${startDate.toISOString()}\" that was larger than the end date \"${endDate.toISOString()}\". ` +\n 'Start date must be before end date.',\n ),\n );\n this.process.exit(1);\n }\n\n doneInputValidation(this.process);\n\n // Parse authentication as API key or path to list of API keys\n const apiKeyOrList = await validateTranscendAuth(auth, this);\n\n // Ensure folder either does not exist or is not a file\n if (this.fs.existsSync(folder) && !this.fs.lstatSync(folder).isDirectory()) {\n this.logger.error(\n colors.red(\n 'The provided argument \"folder\" was passed a file. expected: folder=\"./consent-metrics/\"',\n ),\n );\n this.process.exit(1);\n }\n\n // Create the folder if it does not exist\n if (!this.fs.existsSync(folder)) {\n this.fs.mkdirSync(folder);\n }\n\n this.logger.info(\n colors.magenta(\n `Pulling consent metrics from start=${startDate.toString()} to end=${endDate.toISOString()} with bin size \"${bin}\"`,\n ),\n );\n\n // Sync to Disk\n if (typeof apiKeyOrList === 'string') {\n try {\n // Create a GraphQL client\n const client = buildTranscendGraphQLClient(transcendUrl, apiKeyOrList);\n\n // Pull the metrics\n const configuration = await pullConsentManagerMetrics(client, {\n bin: parsedBin,\n start: startDate,\n end: endDate,\n });\n\n // Write to file\n await map(\n Object.entries(configuration),\n async ([metricName, metrics]) => {\n await map(\n metrics,\n async ({ points, name }) => {\n const file = path.join(folder, `${metricName}_${name}.csv`);\n this.logger.info(colors.magenta(`Writing configuration to file \"${file}\"...`));\n await writeCsv(\n file,\n points.map(({ key, value }: { key: string; value: string }) => ({\n timestamp: key,\n value,\n })),\n );\n },\n {\n concurrency: 5,\n },\n );\n },\n { concurrency: 5 },\n );\n } catch (err) {\n this.logger.error(colors.red(`An error occurred syncing the schema: ${err.message}`));\n this.process.exit(1);\n }\n\n // Indicate success\n this.logger.info(\n colors.green(\n `Successfully synced consent metrics to disk in folder \"${folder}\"! View at ${ADMIN_DASH_INTEGRATIONS}`,\n ),\n );\n } else {\n const encounteredErrors: string[] = [];\n await mapSeries(apiKeyOrList, async (apiKey, ind) => {\n const prefix = `[${ind + 1}/${apiKeyOrList.length}][${apiKey.organizationName}] `;\n this.logger.info(\n colors.magenta(`~~~\\n\\n${prefix}Attempting to pull consent metrics...\\n\\n~~~`),\n );\n\n // Create a GraphQL client\n const client = buildTranscendGraphQLClient(transcendUrl, apiKey.apiKey);\n\n try {\n const configuration = await pullConsentManagerMetrics(client, {\n bin: parsedBin,\n start: startDate,\n end: endDate,\n });\n\n // ensure folder exists for that organization\n const subFolder = path.join(folder, apiKey.organizationName);\n if (!this.fs.existsSync(subFolder)) {\n this.fs.mkdirSync(subFolder);\n }\n\n // Write to file\n Object.entries(configuration).forEach(([metricName, metrics]) => {\n metrics.forEach(({ points, name }) => {\n const file = path.join(subFolder, `${metricName}_${name}.csv`);\n this.logger.info(colors.magenta(`Writing configuration to file \"${file}\"...`));\n writeCsv(\n file,\n points.map(({ key, value }: { key: string; value: string }) => ({\n timestamp: key,\n value,\n })),\n );\n });\n });\n\n this.logger.info(colors.green(`${prefix}Successfully pulled configuration!`));\n } catch (err) {\n this.logger.error(colors.red(`${prefix}Failed to sync configuration.`), err);\n encounteredErrors.push(apiKey.organizationName);\n }\n });\n\n if (encounteredErrors.length > 0) {\n this.logger.info(\n colors.red(\n `Sync encountered errors for \"${encounteredErrors.join(\n ',',\n )}\". View output above for more information, or check out ${ADMIN_DASH_INTEGRATIONS}`,\n ),\n );\n\n this.process.exit(1);\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"impl-Is_8XFNd.mjs","names":[],"sources":["../src/commands/consent/pull-consent-metrics/impl.ts"],"sourcesContent":["import path from 'node:path';\n\nimport { ConsentManagerMetricBin } from '@transcend-io/privacy-types';\nimport { buildTranscendGraphQLClient } from '@transcend-io/sdk';\nimport { map, mapSeries } from '@transcend-io/utils';\nimport colors from 'colors';\n\nimport { ADMIN_DASH_INTEGRATIONS } from '../../../constants.js';\nimport type { LocalContext } from '../../../context.js';\nimport { validateTranscendAuth } from '../../../lib/api-keys/index.js';\nimport { doneInputValidation } from '../../../lib/cli/done-input-validation.js';\nimport { pullConsentManagerMetrics } from '../../../lib/consent-manager/index.js';\nimport { writeCsv } from '../../../lib/helpers/index.js';\n\nexport interface PullConsentMetricsCommandFlags {\n auth: string;\n start: Date;\n end?: Date;\n folder: string;\n bin: string;\n transcendUrl: string;\n}\n\nexport async function pullConsentMetrics(\n this: LocalContext,\n { auth, start, end, folder, bin, transcendUrl }: PullConsentMetricsCommandFlags,\n): Promise<void> {\n // Validate bin\n const parsedBin = bin as ConsentManagerMetricBin;\n if (!Object.values(ConsentManagerMetricBin).includes(parsedBin)) {\n this.logger.error(\n colors.red(\n `Failed to parse argument \"bin\" with value \"${bin}\"\\n` +\n `Expected one of: \\n${Object.values(ConsentManagerMetricBin).join('\\n')}`,\n ),\n );\n this.process.exit(1);\n }\n\n // Parse the dates\n const startDate = new Date(start);\n const endDate = end ? new Date(end) : new Date();\n if (Number.isNaN(startDate.getTime())) {\n this.logger.error(\n colors.red(\n `Start date provided is invalid date. Got --start=\"${start}\" expected --start=\"01/01/2023\"`,\n ),\n );\n this.process.exit(1);\n }\n if (Number.isNaN(endDate.getTime())) {\n this.logger.error(\n colors.red(\n `End date provided is invalid date. Got --end=\"${end}\" expected --end=\"01/01/2023\"`,\n ),\n );\n this.process.exit(1);\n }\n if (startDate > endDate) {\n this.logger.error(\n colors.red(\n `Got a start date \"${startDate.toISOString()}\" that was larger than the end date \"${endDate.toISOString()}\". ` +\n 'Start date must be before end date.',\n ),\n );\n this.process.exit(1);\n }\n\n doneInputValidation(this.process);\n\n // Parse authentication as API key or path to list of API keys\n const apiKeyOrList = await validateTranscendAuth(auth, this);\n\n // Ensure folder either does not exist or is not a file\n if (this.fs.existsSync(folder) && !this.fs.lstatSync(folder).isDirectory()) {\n this.logger.error(\n colors.red(\n 'The provided argument \"folder\" was passed a file. expected: folder=\"./consent-metrics/\"',\n ),\n );\n this.process.exit(1);\n }\n\n // Create the folder if it does not exist\n if (!this.fs.existsSync(folder)) {\n this.fs.mkdirSync(folder);\n }\n\n this.logger.info(\n colors.magenta(\n `Pulling consent metrics from start=${startDate.toString()} to end=${endDate.toISOString()} with bin size \"${bin}\"`,\n ),\n );\n\n // Sync to Disk\n if (typeof apiKeyOrList === 'string') {\n try {\n // Create a GraphQL client\n const client = buildTranscendGraphQLClient(transcendUrl, apiKeyOrList);\n\n // Pull the metrics\n const configuration = await pullConsentManagerMetrics(client, {\n bin: parsedBin,\n start: startDate,\n end: endDate,\n });\n\n // Write to file\n await map(\n Object.entries(configuration),\n async ([metricName, metrics]) => {\n await map(\n metrics,\n async ({ points, name }) => {\n const file = path.join(folder, `${metricName}_${name}.csv`);\n this.logger.info(colors.magenta(`Writing configuration to file \"${file}\"...`));\n await writeCsv(\n file,\n points.map(({ key, value }: { key: string; value: string }) => ({\n timestamp: key,\n value,\n })),\n );\n },\n {\n concurrency: 5,\n },\n );\n },\n { concurrency: 5 },\n );\n } catch (err) {\n this.logger.error(colors.red(`An error occurred syncing the schema: ${err.message}`));\n this.process.exit(1);\n }\n\n // Indicate success\n this.logger.info(\n colors.green(\n `Successfully synced consent metrics to disk in folder \"${folder}\"! View at ${ADMIN_DASH_INTEGRATIONS}`,\n ),\n );\n } else {\n const encounteredErrors: string[] = [];\n await mapSeries(apiKeyOrList, async (apiKey, ind) => {\n const prefix = `[${ind + 1}/${apiKeyOrList.length}][${apiKey.organizationName}] `;\n this.logger.info(\n colors.magenta(`~~~\\n\\n${prefix}Attempting to pull consent metrics...\\n\\n~~~`),\n );\n\n // Create a GraphQL client\n const client = buildTranscendGraphQLClient(transcendUrl, apiKey.apiKey);\n\n try {\n const configuration = await pullConsentManagerMetrics(client, {\n bin: parsedBin,\n start: startDate,\n end: endDate,\n });\n\n // ensure folder exists for that organization\n const subFolder = path.join(folder, apiKey.organizationName);\n if (!this.fs.existsSync(subFolder)) {\n this.fs.mkdirSync(subFolder);\n }\n\n // Write to file\n Object.entries(configuration).forEach(([metricName, metrics]) => {\n metrics.forEach(({ points, name }) => {\n const file = path.join(subFolder, `${metricName}_${name}.csv`);\n this.logger.info(colors.magenta(`Writing configuration to file \"${file}\"...`));\n writeCsv(\n file,\n points.map(({ key, value }: { key: string; value: string }) => ({\n timestamp: key,\n value,\n })),\n );\n });\n });\n\n this.logger.info(colors.green(`${prefix}Successfully pulled configuration!`));\n } catch (err) {\n this.logger.error(colors.red(`${prefix}Failed to sync configuration.`), err);\n encounteredErrors.push(apiKey.organizationName);\n }\n });\n\n if (encounteredErrors.length > 0) {\n this.logger.info(\n colors.red(\n `Sync encountered errors for \"${encounteredErrors.join(\n ',',\n )}\". View output above for more information, or check out ${ADMIN_DASH_INTEGRATIONS}`,\n ),\n );\n\n this.process.exit(1);\n }\n }\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{t as e}from"./pullChunkedCustomSiloOutstandingIdentifiers-DDlLAT1E.mjs";import{i as t,s as n}from"./writeCsv-CNZrq3zU.mjs";import{t as r}from"./done-input-validation-LiTaCEzF.mjs";import{uniq as i}from"lodash-es";import a from"colors";async function o({file:o,transcendUrl:s,auth:c,sombraAuth:l,dataSiloId:u,actions:d,pageLimit:f,skipRequestCount:p,chunkSize:m}){p&&this.logger.info(a.yellow(`Skipping request count as requested. This may help speed up the call.`)),(Number.isNaN(m)||m<=0||m%f!==0)&&(this.logger.error(a.red(`Invalid chunk size: "${m}". Must be a positive integer that is a multiple of ${f}.`)),this.process.exit(1)),r(this.process);let{baseName:h,extension:g}=t(o),_=0;await e({transcendUrl:s,apiPageSize:f,savePageSize:m,onSave:async e=>{let t=`${h}-${_}${g}`;return this.logger.info(a.blue(`Saving ${e.length} identifiers to file "${t}"`)),await n(t,e,i(e.map(e=>Object.keys(e)).flat())),this.logger.info(a.green(`Successfully wrote ${e.length} identifiers to file "${t}"`)),_+=1,Promise.resolve()},actions:d,auth:c,sombraAuth:l,dataSiloId:u,skipRequestCount:p})}export{o as pullIdentifiers};
2
- //# sourceMappingURL=impl-CW1o90oL.mjs.map
1
+ import{t as e}from"./pullChunkedCustomSiloOutstandingIdentifiers-p1OqL3-1.mjs";import{i as t,s as n}from"./writeCsv-CNZrq3zU.mjs";import{t as r}from"./done-input-validation-LiTaCEzF.mjs";import{uniq as i}from"lodash-es";import a from"colors";async function o({file:o,transcendUrl:s,auth:c,sombraAuth:l,dataSiloId:u,actions:d,pageLimit:f,skipRequestCount:p,chunkSize:m}){p&&this.logger.info(a.yellow(`Skipping request count as requested. This may help speed up the call.`)),(Number.isNaN(m)||m<=0||m%f!==0)&&(this.logger.error(a.red(`Invalid chunk size: "${m}". Must be a positive integer that is a multiple of ${f}.`)),this.process.exit(1)),r(this.process);let{baseName:h,extension:g}=t(o),_=0;await e({transcendUrl:s,apiPageSize:f,savePageSize:m,onSave:async e=>{let t=`${h}-${_}${g}`;return this.logger.info(a.blue(`Saving ${e.length} identifiers to file "${t}"`)),await n(t,e,i(e.map(e=>Object.keys(e)).flat())),this.logger.info(a.green(`Successfully wrote ${e.length} identifiers to file "${t}"`)),_+=1,Promise.resolve()},actions:d,auth:c,sombraAuth:l,dataSiloId:u,skipRequestCount:p})}export{o as pullIdentifiers};
2
+ //# sourceMappingURL=impl-vp8rajsL.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"impl-CW1o90oL.mjs","names":[],"sources":["../src/commands/request/cron/pull-identifiers/impl.ts"],"sourcesContent":["import { RequestAction } from '@transcend-io/privacy-types';\nimport colors from 'colors';\nimport { uniq } from 'lodash-es';\n\nimport type { LocalContext } from '../../../../context.js';\nimport { doneInputValidation } from '../../../../lib/cli/done-input-validation.js';\nimport {\n CsvFormattedIdentifier,\n pullChunkedCustomSiloOutstandingIdentifiers,\n} from '../../../../lib/cron/index.js';\nimport { parseFilePath, writeLargeCsv } from '../../../../lib/helpers/index.js';\n\nexport interface PullIdentifiersCommandFlags {\n file: string;\n transcendUrl: string;\n auth: string;\n sombraAuth?: string;\n dataSiloId: string;\n actions: RequestAction[];\n pageLimit: number;\n skipRequestCount: boolean;\n chunkSize: number;\n}\n\nexport async function pullIdentifiers(\n this: LocalContext,\n {\n file,\n transcendUrl,\n auth,\n sombraAuth,\n dataSiloId,\n actions,\n pageLimit,\n skipRequestCount,\n chunkSize,\n }: PullIdentifiersCommandFlags,\n): Promise<void> {\n if (skipRequestCount) {\n this.logger.info(\n colors.yellow('Skipping request count as requested. This may help speed up the call.'),\n );\n }\n\n if (Number.isNaN(chunkSize) || chunkSize <= 0 || chunkSize % pageLimit !== 0) {\n this.logger.error(\n colors.red(\n `Invalid chunk size: \"${chunkSize}\". Must be a positive integer that is a multiple of ${pageLimit}.`,\n ),\n );\n this.process.exit(1);\n }\n\n doneInputValidation(this.process);\n\n const { baseName, extension } = parseFilePath(file);\n let fileCount = 0;\n\n const onSave = async (chunk: CsvFormattedIdentifier[]): Promise<void> => {\n const numberedFileName = `${baseName}-${fileCount}${extension}`;\n this.logger.info(\n colors.blue(`Saving ${chunk.length} identifiers to file \"${numberedFileName}\"`),\n );\n\n const headers = uniq(chunk.map((d) => Object.keys(d)).flat());\n await writeLargeCsv(numberedFileName, chunk, headers);\n this.logger.info(\n colors.green(`Successfully wrote ${chunk.length} identifiers to file \"${numberedFileName}\"`),\n );\n fileCount += 1;\n return Promise.resolve();\n };\n\n // Pull down outstanding identifiers\n await pullChunkedCustomSiloOutstandingIdentifiers({\n transcendUrl,\n apiPageSize: pageLimit,\n savePageSize: chunkSize,\n onSave,\n actions,\n auth,\n sombraAuth,\n dataSiloId,\n skipRequestCount,\n });\n}\n"],"mappings":"kPAwBA,eAAsB,EAEpB,CACE,OACA,eACA,OACA,aACA,aACA,UACA,YACA,mBACA,aAEa,CACX,GACF,KAAK,OAAO,KACV,EAAO,OAAO,wEAAwE,CACvF,EAGC,OAAO,MAAM,EAAU,EAAI,GAAa,GAAK,EAAY,IAAc,KACzE,KAAK,OAAO,MACV,EAAO,IACL,wBAAwB,EAAU,sDAAsD,EAAU,GACnG,CACF,CACD,KAAK,QAAQ,KAAK,EAAE,EAGtB,EAAoB,KAAK,QAAQ,CAEjC,GAAM,CAAE,WAAU,aAAc,EAAc,EAAK,CAC/C,EAAY,EAkBhB,MAAM,EAA4C,CAChD,eACA,YAAa,EACb,aAAc,EACd,YApBoB,IAAmD,CACvE,IAAM,EAAmB,GAAG,EAAS,GAAG,IAAY,IAWpD,OAVA,KAAK,OAAO,KACV,EAAO,KAAK,UAAU,EAAM,OAAO,wBAAwB,EAAiB,GAAG,CAChF,CAGD,MAAM,EAAc,EAAkB,EADtB,EAAK,EAAM,IAAK,GAAM,OAAO,KAAK,EAAE,CAAC,CAAC,MAAM,CACR,CAAC,CACrD,KAAK,OAAO,KACV,EAAO,MAAM,sBAAsB,EAAM,OAAO,wBAAwB,EAAiB,GAAG,CAC7F,CACD,GAAa,EACN,QAAQ,SAAS,EASxB,UACA,OACA,aACA,aACA,mBACD,CAAC"}
1
+ {"version":3,"file":"impl-vp8rajsL.mjs","names":[],"sources":["../src/commands/request/cron/pull-identifiers/impl.ts"],"sourcesContent":["import { RequestAction } from '@transcend-io/privacy-types';\nimport colors from 'colors';\nimport { uniq } from 'lodash-es';\n\nimport type { LocalContext } from '../../../../context.js';\nimport { doneInputValidation } from '../../../../lib/cli/done-input-validation.js';\nimport {\n CsvFormattedIdentifier,\n pullChunkedCustomSiloOutstandingIdentifiers,\n} from '../../../../lib/cron/index.js';\nimport { parseFilePath, writeLargeCsv } from '../../../../lib/helpers/index.js';\n\nexport interface PullIdentifiersCommandFlags {\n file: string;\n transcendUrl: string;\n auth: string;\n sombraAuth?: string;\n dataSiloId: string;\n actions: RequestAction[];\n pageLimit: number;\n skipRequestCount: boolean;\n chunkSize: number;\n}\n\nexport async function pullIdentifiers(\n this: LocalContext,\n {\n file,\n transcendUrl,\n auth,\n sombraAuth,\n dataSiloId,\n actions,\n pageLimit,\n skipRequestCount,\n chunkSize,\n }: PullIdentifiersCommandFlags,\n): Promise<void> {\n if (skipRequestCount) {\n this.logger.info(\n colors.yellow('Skipping request count as requested. This may help speed up the call.'),\n );\n }\n\n if (Number.isNaN(chunkSize) || chunkSize <= 0 || chunkSize % pageLimit !== 0) {\n this.logger.error(\n colors.red(\n `Invalid chunk size: \"${chunkSize}\". Must be a positive integer that is a multiple of ${pageLimit}.`,\n ),\n );\n this.process.exit(1);\n }\n\n doneInputValidation(this.process);\n\n const { baseName, extension } = parseFilePath(file);\n let fileCount = 0;\n\n const onSave = async (chunk: CsvFormattedIdentifier[]): Promise<void> => {\n const numberedFileName = `${baseName}-${fileCount}${extension}`;\n this.logger.info(\n colors.blue(`Saving ${chunk.length} identifiers to file \"${numberedFileName}\"`),\n );\n\n const headers = uniq(chunk.map((d) => Object.keys(d)).flat());\n await writeLargeCsv(numberedFileName, chunk, headers);\n this.logger.info(\n colors.green(`Successfully wrote ${chunk.length} identifiers to file \"${numberedFileName}\"`),\n );\n fileCount += 1;\n return Promise.resolve();\n };\n\n // Pull down outstanding identifiers\n await pullChunkedCustomSiloOutstandingIdentifiers({\n transcendUrl,\n apiPageSize: pageLimit,\n savePageSize: chunkSize,\n onSave,\n actions,\n auth,\n sombraAuth,\n dataSiloId,\n skipRequestCount,\n });\n}\n"],"mappings":"kPAwBA,eAAsB,EAEpB,CACE,OACA,eACA,OACA,aACA,aACA,UACA,YACA,mBACA,aAEa,CACX,GACF,KAAK,OAAO,KACV,EAAO,OAAO,wEAAwE,CACvF,EAGC,OAAO,MAAM,EAAU,EAAI,GAAa,GAAK,EAAY,IAAc,KACzE,KAAK,OAAO,MACV,EAAO,IACL,wBAAwB,EAAU,sDAAsD,EAAU,GACnG,CACF,CACD,KAAK,QAAQ,KAAK,EAAE,EAGtB,EAAoB,KAAK,QAAQ,CAEjC,GAAM,CAAE,WAAU,aAAc,EAAc,EAAK,CAC/C,EAAY,EAkBhB,MAAM,EAA4C,CAChD,eACA,YAAa,EACb,aAAc,EACd,YApBoB,IAAmD,CACvE,IAAM,EAAmB,GAAG,EAAS,GAAG,IAAY,IAWpD,OAVA,KAAK,OAAO,KACV,EAAO,KAAK,UAAU,EAAM,OAAO,wBAAwB,EAAiB,GAAG,CAChF,CAGD,MAAM,EAAc,EAAkB,EADtB,EAAK,EAAM,IAAK,GAAM,OAAO,KAAK,EAAE,CAAC,CAAC,MAAM,CACR,CAAC,CACrD,KAAK,OAAO,KACV,EAAO,MAAM,sBAAsB,EAAM,OAAO,wBAAwB,EAAiB,GAAG,CAC7F,CACD,GAAa,EACN,QAAQ,SAAS,EASxB,UACA,OACA,aACA,aACA,mBACD,CAAC"}
@@ -1,2 +1,2 @@
1
- import{t as e}from"./skipRequestDataSilos-DhWSTG5Y.mjs";import{t}from"./done-input-validation-LiTaCEzF.mjs";async function n({auth:n,dataSiloId:r,status:i,statuses:a,transcendUrl:o,actionTypes:s}){t(this.process),await e({transcendUrl:o,auth:n,status:i,dataSiloId:r,requestStatuses:a,actionTypes:s})}export{n as skipRequestDataSilos};
2
- //# sourceMappingURL=impl-B__KKiTX.mjs.map
1
+ import{t as e}from"./skipRequestDataSilos-DMRuPaY9.mjs";import{t}from"./done-input-validation-LiTaCEzF.mjs";async function n({auth:n,dataSiloId:r,status:i,statuses:a,transcendUrl:o,actionTypes:s}){t(this.process),await e({transcendUrl:o,auth:n,status:i,dataSiloId:r,requestStatuses:a,actionTypes:s})}export{n as skipRequestDataSilos};
2
+ //# sourceMappingURL=impl-y_hHEw4C.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"impl-B__KKiTX.mjs","names":["skipRequestDataSilosHelper"],"sources":["../src/commands/request/system/skip-request-data-silos/impl.ts"],"sourcesContent":["import type {\n RequestAction,\n RequestDataSiloStatus,\n RequestStatus,\n} from '@transcend-io/privacy-types';\n\nimport type { LocalContext } from '../../../../context.js';\nimport { doneInputValidation } from '../../../../lib/cli/done-input-validation.js';\nimport { skipRequestDataSilos as skipRequestDataSilosHelper } from '../../../../lib/requests/index.js';\n\nexport interface SkipRequestDataSilosCommandFlags {\n auth: string;\n dataSiloId: string;\n transcendUrl: string;\n statuses: RequestStatus[];\n status: (typeof RequestDataSiloStatus)['Skipped'] | (typeof RequestDataSiloStatus)['Resolved'];\n actionTypes?: RequestAction[];\n}\n\nexport async function skipRequestDataSilos(\n this: LocalContext,\n {\n auth,\n dataSiloId,\n status,\n statuses,\n transcendUrl,\n actionTypes,\n }: SkipRequestDataSilosCommandFlags,\n): Promise<void> {\n doneInputValidation(this.process);\n\n await skipRequestDataSilosHelper({\n transcendUrl,\n auth,\n status,\n dataSiloId,\n requestStatuses: statuses,\n actionTypes,\n });\n}\n"],"mappings":"4GAmBA,eAAsB,EAEpB,CACE,OACA,aACA,SACA,WACA,eACA,eAEa,CACf,EAAoB,KAAK,QAAQ,CAEjC,MAAMA,EAA2B,CAC/B,eACA,OACA,SACA,aACA,gBAAiB,EACjB,cACD,CAAC"}
1
+ {"version":3,"file":"impl-y_hHEw4C.mjs","names":["skipRequestDataSilosHelper"],"sources":["../src/commands/request/system/skip-request-data-silos/impl.ts"],"sourcesContent":["import type {\n RequestAction,\n RequestDataSiloStatus,\n RequestStatus,\n} from '@transcend-io/privacy-types';\n\nimport type { LocalContext } from '../../../../context.js';\nimport { doneInputValidation } from '../../../../lib/cli/done-input-validation.js';\nimport { skipRequestDataSilos as skipRequestDataSilosHelper } from '../../../../lib/requests/index.js';\n\nexport interface SkipRequestDataSilosCommandFlags {\n auth: string;\n dataSiloId: string;\n transcendUrl: string;\n statuses: RequestStatus[];\n status: (typeof RequestDataSiloStatus)['Skipped'] | (typeof RequestDataSiloStatus)['Resolved'];\n actionTypes?: RequestAction[];\n}\n\nexport async function skipRequestDataSilos(\n this: LocalContext,\n {\n auth,\n dataSiloId,\n status,\n statuses,\n transcendUrl,\n actionTypes,\n }: SkipRequestDataSilosCommandFlags,\n): Promise<void> {\n doneInputValidation(this.process);\n\n await skipRequestDataSilosHelper({\n transcendUrl,\n auth,\n status,\n dataSiloId,\n requestStatuses: statuses,\n actionTypes,\n });\n}\n"],"mappings":"4GAmBA,eAAsB,EAEpB,CACE,OACA,aACA,SACA,WACA,eACA,eAEa,CACf,EAAoB,KAAK,QAAQ,CAEjC,MAAMA,EAA2B,CAC/B,eACA,OACA,SACA,aACA,gBAAiB,EACjB,cACD,CAAC"}
package/dist/index.d.mts CHANGED
@@ -69432,6 +69432,7 @@ declare const ActionItemInput: t.IntersectionC<[t.TypeC<{
69432
69432
  USER_NEEDS_CONFIGURATION: unknown;
69433
69433
  SOMBRA_VERSION_UPGRADE: unknown;
69434
69434
  SOMBRA_NEEDS_KEY_ROTATION: unknown;
69435
+ SERVER_WEBHOOK_AWAITING_CALLBACK: unknown;
69435
69436
  DATA_FLOW_NEEDS_REVIEW: unknown;
69436
69437
  DATA_FLOW_ASSIGNED_FOR_REVIEW: unknown;
69437
69438
  COOKIE_NEEDS_REVIEW: unknown;
@@ -86957,6 +86958,7 @@ declare const TranscendInput: t.PartialC<{
86957
86958
  USER_NEEDS_CONFIGURATION: unknown;
86958
86959
  SOMBRA_VERSION_UPGRADE: unknown;
86959
86960
  SOMBRA_NEEDS_KEY_ROTATION: unknown;
86961
+ SERVER_WEBHOOK_AWAITING_CALLBACK: unknown;
86960
86962
  DATA_FLOW_NEEDS_REVIEW: unknown;
86961
86963
  DATA_FLOW_ASSIGNED_FOR_REVIEW: unknown;
86962
86964
  COOKIE_NEEDS_REVIEW: unknown;