@transcend-io/cli 10.25.5 → 10.26.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 (222) hide show
  1. package/README.md +264 -1
  2. package/dist/{app-DYoi_kYl.mjs → app-CZX6ZV6X.mjs} +38 -21
  3. package/dist/app-CZX6ZV6X.mjs.map +1 -0
  4. package/dist/{approvePrivacyRequests-D4ZfEesR.mjs → approvePrivacyRequests-D1S2AYud.mjs} +2 -2
  5. package/dist/{approvePrivacyRequests-D4ZfEesR.mjs.map → approvePrivacyRequests-D1S2AYud.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-Cr6HGX4h.mjs → buildExamples-CnfZJ8MD.mjs} +2 -2
  10. package/dist/{buildExamples-Cr6HGX4h.mjs.map → buildExamples-CnfZJ8MD.mjs.map} +1 -1
  11. package/dist/{buildXdiSyncEndpoint-CXAYh3vF.mjs → buildXdiSyncEndpoint-B4l998cU.mjs} +2 -2
  12. package/dist/{buildXdiSyncEndpoint-CXAYh3vF.mjs.map → buildXdiSyncEndpoint-B4l998cU.mjs.map} +1 -1
  13. package/dist/{bulkRestartRequests-CSBPINdi.mjs → bulkRestartRequests-NAASQwvP.mjs} +2 -2
  14. package/dist/{bulkRestartRequests-CSBPINdi.mjs.map → bulkRestartRequests-NAASQwvP.mjs.map} +1 -1
  15. package/dist/{bulkRetryEnrichers-BPWSWNuC.mjs → bulkRetryEnrichers-BEEVKtCH.mjs} +2 -2
  16. package/dist/{bulkRetryEnrichers-BPWSWNuC.mjs.map → bulkRetryEnrichers-BEEVKtCH.mjs.map} +1 -1
  17. package/dist/{cancelPrivacyRequests-CyT7z4fs.mjs → cancelPrivacyRequests-DM3Zamqd.mjs} +2 -2
  18. package/dist/{cancelPrivacyRequests-CyT7z4fs.mjs.map → cancelPrivacyRequests-DM3Zamqd.mjs.map} +1 -1
  19. package/dist/codecs-DJFlZLGT.mjs +2 -0
  20. package/dist/codecs-DJFlZLGT.mjs.map +1 -0
  21. package/dist/{collectCsvFilesOrExit-C8-Pr9Hr.mjs → collectCsvFilesOrExit-BPo8Mjy7.mjs} +1 -1
  22. package/dist/{collectCsvFilesOrExit-C8-Pr9Hr.mjs.map → collectCsvFilesOrExit-BPo8Mjy7.mjs.map} +1 -1
  23. package/dist/{collectParquetFilesOrExit-DyZISY9X.mjs → collectParquetFilesOrExit-DVS9_OSv.mjs} +1 -1
  24. package/dist/{collectParquetFilesOrExit-DyZISY9X.mjs.map → collectParquetFilesOrExit-DVS9_OSv.mjs.map} +1 -1
  25. package/dist/{command-Cqlyn4cR.mjs → command-30CgpFvx.mjs} +2 -2
  26. package/dist/{command-Cqlyn4cR.mjs.map → command-30CgpFvx.mjs.map} +1 -1
  27. package/dist/commands/admin/parquet-to-csv/worker.mjs +1 -1
  28. package/dist/{consentManagersToBusinessEntities-DGzryQ3W.mjs → consentManagersToBusinessEntities-rf8_xu71.mjs} +1 -1
  29. package/dist/{consentManagersToBusinessEntities-DGzryQ3W.mjs.map → consentManagersToBusinessEntities-rf8_xu71.mjs.map} +1 -1
  30. package/dist/{constants-DNF09zFX.mjs → constants-BgCEW975.mjs} +2 -2
  31. package/dist/{constants-DNF09zFX.mjs.map → constants-BgCEW975.mjs.map} +1 -1
  32. package/dist/{constants-Ch1Lt8Wa.mjs → constants-CAOyAsNX.mjs} +2 -2
  33. package/dist/{constants-Ch1Lt8Wa.mjs.map → constants-CAOyAsNX.mjs.map} +1 -1
  34. package/dist/{createExtraKeyHandler-BbM9bElu.mjs → createExtraKeyHandler-DbWzaD4c.mjs} +2 -2
  35. package/dist/{createExtraKeyHandler-BbM9bElu.mjs.map → createExtraKeyHandler-DbWzaD4c.mjs.map} +1 -1
  36. package/dist/{dataFlowsToDataSilos-DRGrUosf.mjs → dataFlowsToDataSilos-DRuAfwIn.mjs} +1 -1
  37. package/dist/{dataFlowsToDataSilos-DRGrUosf.mjs.map → dataFlowsToDataSilos-DRuAfwIn.mjs.map} +1 -1
  38. package/dist/{done-input-validation-uqIgnJcw.mjs → done-input-validation-DL31vk7g.mjs} +1 -1
  39. package/dist/{done-input-validation-uqIgnJcw.mjs.map → done-input-validation-DL31vk7g.mjs.map} +1 -1
  40. package/dist/{downloadPrivacyRequestFiles-CaOdAuGW.mjs → downloadPrivacyRequestFiles-DSOTFVU6.mjs} +2 -2
  41. package/dist/{downloadPrivacyRequestFiles-CaOdAuGW.mjs.map → downloadPrivacyRequestFiles-DSOTFVU6.mjs.map} +1 -1
  42. package/dist/{generateCrossAccountApiKeys-JCZ444Xx.mjs → generateCrossAccountApiKeys-C3mCgp6X.mjs} +2 -2
  43. package/dist/{generateCrossAccountApiKeys-JCZ444Xx.mjs.map → generateCrossAccountApiKeys-C3mCgp6X.mjs.map} +1 -1
  44. package/dist/{impl-xNSHqJyt2.mjs → impl-1ueiw_XV2.mjs} +2 -2
  45. package/dist/{impl-xNSHqJyt2.mjs.map → impl-1ueiw_XV2.mjs.map} +1 -1
  46. package/dist/{impl-Ce4Ua3nx.mjs → impl-7pxeoDZg.mjs} +2 -2
  47. package/dist/{impl-Ce4Ua3nx.mjs.map → impl-7pxeoDZg.mjs.map} +1 -1
  48. package/dist/impl-8zmHCdih.mjs +2 -0
  49. package/dist/{impl-CxjrhJ-X.mjs.map → impl-8zmHCdih.mjs.map} +1 -1
  50. package/dist/{impl-m1WDTmQO.mjs → impl-B0fzc-Pd.mjs} +2 -2
  51. package/dist/{impl-m1WDTmQO.mjs.map → impl-B0fzc-Pd.mjs.map} +1 -1
  52. package/dist/{impl-DdjTOXMv.mjs → impl-B2eZGemA.mjs} +2 -2
  53. package/dist/{impl-DdjTOXMv.mjs.map → impl-B2eZGemA.mjs.map} +1 -1
  54. package/dist/{impl-BXjWAiAl2.mjs → impl-B2yCuG6f2.mjs} +2 -2
  55. package/dist/{impl-BXjWAiAl2.mjs.map → impl-B2yCuG6f2.mjs.map} +1 -1
  56. package/dist/{impl-CRH0V2nJ.mjs → impl-B6_4iGM2.mjs} +2 -2
  57. package/dist/{impl-CRH0V2nJ.mjs.map → impl-B6_4iGM2.mjs.map} +1 -1
  58. package/dist/{impl-BgkjL6_C.mjs → impl-B_1LPpGy.mjs} +2 -2
  59. package/dist/{impl-BgkjL6_C.mjs.map → impl-B_1LPpGy.mjs.map} +1 -1
  60. package/dist/{impl-DgyNLnJo2.mjs → impl-Bbtnhcy02.mjs} +2 -2
  61. package/dist/{impl-DgyNLnJo2.mjs.map → impl-Bbtnhcy02.mjs.map} +1 -1
  62. package/dist/{impl-Be2M3iuo.mjs → impl-BdG67mkj.mjs} +2 -2
  63. package/dist/{impl-Be2M3iuo.mjs.map → impl-BdG67mkj.mjs.map} +1 -1
  64. package/dist/{impl-5db-Jqms.mjs → impl-BdTWl0Xm.mjs} +2 -2
  65. package/dist/{impl-5db-Jqms.mjs.map → impl-BdTWl0Xm.mjs.map} +1 -1
  66. package/dist/{impl-C7Xp0Txd.mjs → impl-BmQR1Pae.mjs} +2 -2
  67. package/dist/{impl-C7Xp0Txd.mjs.map → impl-BmQR1Pae.mjs.map} +1 -1
  68. package/dist/{impl-BX76WSDL.mjs → impl-BnzPrDmM.mjs} +2 -2
  69. package/dist/{impl-BX76WSDL.mjs.map → impl-BnzPrDmM.mjs.map} +1 -1
  70. package/dist/{impl-Dp8o3Xpr.mjs → impl-BohgbWOH.mjs} +2 -2
  71. package/dist/{impl-Dp8o3Xpr.mjs.map → impl-BohgbWOH.mjs.map} +1 -1
  72. package/dist/{impl-CBIcjbfD.mjs → impl-BsPgb_kT.mjs} +2 -2
  73. package/dist/{impl-CBIcjbfD.mjs.map → impl-BsPgb_kT.mjs.map} +1 -1
  74. package/dist/{impl-BvLjryD7.mjs → impl-Bur_bNXN.mjs} +2 -2
  75. package/dist/{impl-BvLjryD7.mjs.map → impl-Bur_bNXN.mjs.map} +1 -1
  76. package/dist/{impl-NUMkBg7d.mjs → impl-BwuWn3TM.mjs} +2 -2
  77. package/dist/{impl-NUMkBg7d.mjs.map → impl-BwuWn3TM.mjs.map} +1 -1
  78. package/dist/{impl-B0AKcSoy.mjs → impl-BxQE7dL92.mjs} +2 -2
  79. package/dist/impl-BxQE7dL92.mjs.map +1 -0
  80. package/dist/impl-C2DDZ1EB2.mjs +2 -0
  81. package/dist/{impl-o0RdOoiZ2.mjs.map → impl-C2DDZ1EB2.mjs.map} +1 -1
  82. package/dist/{impl-BF9Ekyjn.mjs → impl-C3f_H_77.mjs} +2 -2
  83. package/dist/{impl-BF9Ekyjn.mjs.map → impl-C3f_H_77.mjs.map} +1 -1
  84. package/dist/{impl-DjOWgFlT.mjs → impl-C9KCLG7s2.mjs} +2 -2
  85. package/dist/impl-C9KCLG7s2.mjs.map +1 -0
  86. package/dist/{impl-C9Br_VrZ.mjs → impl-CWVX0Xnv.mjs} +2 -2
  87. package/dist/{impl-C9Br_VrZ.mjs.map → impl-CWVX0Xnv.mjs.map} +1 -1
  88. package/dist/impl-CWqtBcmr.mjs +2 -0
  89. package/dist/{impl-Bk6lPywf.mjs.map → impl-CWqtBcmr.mjs.map} +1 -1
  90. package/dist/{impl-BCEw1fsj.mjs → impl-CZG9gzzR.mjs} +2 -2
  91. package/dist/{impl-BCEw1fsj.mjs.map → impl-CZG9gzzR.mjs.map} +1 -1
  92. package/dist/{impl-CiaTPxwK.mjs → impl-Ca064LmU.mjs} +2 -2
  93. package/dist/{impl-CiaTPxwK.mjs.map → impl-Ca064LmU.mjs.map} +1 -1
  94. package/dist/{impl-CMqjJCoY2.mjs → impl-CdOwXtLY2.mjs} +2 -2
  95. package/dist/{impl-CMqjJCoY2.mjs.map → impl-CdOwXtLY2.mjs.map} +1 -1
  96. package/dist/{impl-B_4_7a-i.mjs → impl-Chska4J8.mjs} +2 -2
  97. package/dist/{impl-B_4_7a-i.mjs.map → impl-Chska4J8.mjs.map} +1 -1
  98. package/dist/{impl-Bgg6AZQS.mjs → impl-CkoQHhc8.mjs} +2 -2
  99. package/dist/{impl-Bgg6AZQS.mjs.map → impl-CkoQHhc8.mjs.map} +1 -1
  100. package/dist/impl-Cl3hf0Pd.mjs +2 -0
  101. package/dist/impl-Cl3hf0Pd.mjs.map +1 -0
  102. package/dist/{impl-D6rMK5Us.mjs → impl-CnrK11Gr2.mjs} +2 -2
  103. package/dist/impl-CnrK11Gr2.mjs.map +1 -0
  104. package/dist/{impl-Zjvt9J28.mjs → impl-D0-ioxpZ.mjs} +2 -2
  105. package/dist/{impl-Zjvt9J28.mjs.map → impl-D0-ioxpZ.mjs.map} +1 -1
  106. package/dist/impl-D5fmpaDf2.mjs +2 -0
  107. package/dist/{impl-tNN3yVw72.mjs.map → impl-D5fmpaDf2.mjs.map} +1 -1
  108. package/dist/impl-DBK5c6d0.mjs +2 -0
  109. package/dist/impl-DBK5c6d0.mjs.map +1 -0
  110. package/dist/{impl-rTqHhQ7X2.mjs → impl-DJHPOIQn2.mjs} +2 -2
  111. package/dist/{impl-rTqHhQ7X2.mjs.map → impl-DJHPOIQn2.mjs.map} +1 -1
  112. package/dist/{impl-DGQW5mVR.mjs → impl-DLWhxaMi.mjs} +2 -2
  113. package/dist/{impl-DGQW5mVR.mjs.map → impl-DLWhxaMi.mjs.map} +1 -1
  114. package/dist/{impl-iGEtfSgW2.mjs → impl-DLypyDZV2.mjs} +2 -2
  115. package/dist/{impl-iGEtfSgW2.mjs.map → impl-DLypyDZV2.mjs.map} +1 -1
  116. package/dist/{impl-CCMVpNez.mjs → impl-DNtaoKI9.mjs} +2 -2
  117. package/dist/{impl-CCMVpNez.mjs.map → impl-DNtaoKI9.mjs.map} +1 -1
  118. package/dist/{impl-X50_5E1x.mjs → impl-DOQk-mfA.mjs} +2 -2
  119. package/dist/{impl-X50_5E1x.mjs.map → impl-DOQk-mfA.mjs.map} +1 -1
  120. package/dist/{impl-DUxqEjMF.mjs → impl-DPC_ktM2.mjs} +2 -2
  121. package/dist/{impl-DUxqEjMF.mjs.map → impl-DPC_ktM2.mjs.map} +1 -1
  122. package/dist/{impl-BLCkTzS02.mjs → impl-DPmitBXR2.mjs} +2 -2
  123. package/dist/{impl-BLCkTzS02.mjs.map → impl-DPmitBXR2.mjs.map} +1 -1
  124. package/dist/{impl-DUS_D3PU2.mjs → impl-DRjvMMeU2.mjs} +2 -2
  125. package/dist/{impl-DUS_D3PU2.mjs.map → impl-DRjvMMeU2.mjs.map} +1 -1
  126. package/dist/{impl-Bbd2DHE82.mjs → impl-DSCuy4GU2.mjs} +2 -2
  127. package/dist/{impl-Bbd2DHE82.mjs.map → impl-DSCuy4GU2.mjs.map} +1 -1
  128. package/dist/{impl-Dv2AsuuH2.mjs → impl-D__B55Iu2.mjs} +2 -2
  129. package/dist/{impl-Dv2AsuuH2.mjs.map → impl-D__B55Iu2.mjs.map} +1 -1
  130. package/dist/{impl-2M02W7-p2.mjs → impl-Da1sv_hX2.mjs} +2 -2
  131. package/dist/{impl-2M02W7-p2.mjs.map → impl-Da1sv_hX2.mjs.map} +1 -1
  132. package/dist/{impl-fiK_rZ7c.mjs → impl-DmODS2cY.mjs} +2 -2
  133. package/dist/{impl-fiK_rZ7c.mjs.map → impl-DmODS2cY.mjs.map} +1 -1
  134. package/dist/{impl-D-0Z4tn72.mjs → impl-DmbT1vXM2.mjs} +2 -2
  135. package/dist/{impl-D-0Z4tn72.mjs.map → impl-DmbT1vXM2.mjs.map} +1 -1
  136. package/dist/{impl-D-JYZ74k.mjs → impl-DvSnW_IA.mjs} +2 -2
  137. package/dist/{impl-D-JYZ74k.mjs.map → impl-DvSnW_IA.mjs.map} +1 -1
  138. package/dist/{impl-D2WYmqZ0.mjs → impl-GeXGMn5G.mjs} +2 -2
  139. package/dist/{impl-D2WYmqZ0.mjs.map → impl-GeXGMn5G.mjs.map} +1 -1
  140. package/dist/{impl-C5QTz-js2.mjs → impl-YeYfan582.mjs} +2 -2
  141. package/dist/{impl-C5QTz-js2.mjs.map → impl-YeYfan582.mjs.map} +1 -1
  142. package/dist/{impl-iBottQJe.mjs → impl-_BPSoSwJ.mjs} +2 -2
  143. package/dist/{impl-iBottQJe.mjs.map → impl-_BPSoSwJ.mjs.map} +1 -1
  144. package/dist/{impl-CZWMK-kA2.mjs → impl-_nJfGV8K2.mjs} +2 -2
  145. package/dist/{impl-CZWMK-kA2.mjs.map → impl-_nJfGV8K2.mjs.map} +1 -1
  146. package/dist/{impl-D3qD4wsS.mjs → impl-xIb20rTt.mjs} +2 -2
  147. package/dist/{impl-D3qD4wsS.mjs.map → impl-xIb20rTt.mjs.map} +1 -1
  148. package/dist/{impl-BZbjA9x3.mjs → impl-y01BtY2r.mjs} +2 -2
  149. package/dist/{impl-BZbjA9x3.mjs.map → impl-y01BtY2r.mjs.map} +1 -1
  150. package/dist/{impl-BMaeLKTr.mjs → impl-yVmEK84l.mjs} +2 -2
  151. package/dist/{impl-BMaeLKTr.mjs.map → impl-yVmEK84l.mjs.map} +1 -1
  152. package/dist/{impl-CPN-_vdL2.mjs → impl-z5TV6Spz2.mjs} +2 -2
  153. package/dist/{impl-CPN-_vdL2.mjs.map → impl-z5TV6Spz2.mjs.map} +1 -1
  154. package/dist/index.d.mts +129 -3
  155. package/dist/index.d.mts.map +1 -1
  156. package/dist/index.mjs +3 -3
  157. package/dist/index.mjs.map +1 -1
  158. package/dist/{listFiles-BPx3iDV6.mjs → listFiles-C5kubvdN.mjs} +1 -1
  159. package/dist/{listFiles-BPx3iDV6.mjs.map → listFiles-C5kubvdN.mjs.map} +1 -1
  160. package/dist/{markRequestDataSiloIdsCompleted-C7HAJehS.mjs → markRequestDataSiloIdsCompleted-CDV0Ppv2.mjs} +2 -2
  161. package/dist/{markRequestDataSiloIdsCompleted-C7HAJehS.mjs.map → markRequestDataSiloIdsCompleted-CDV0Ppv2.mjs.map} +1 -1
  162. package/dist/{markSilentPrivacyRequests-Ctu7drQy.mjs → markSilentPrivacyRequests-DXLiS2jH.mjs} +2 -2
  163. package/dist/{markSilentPrivacyRequests-Ctu7drQy.mjs.map → markSilentPrivacyRequests-DXLiS2jH.mjs.map} +1 -1
  164. package/dist/mergeTranscendInputs-DjPe49yR.mjs +3 -0
  165. package/dist/mergeTranscendInputs-DjPe49yR.mjs.map +1 -0
  166. package/dist/{notifyPrivacyRequestsAdditionalTime-Du7706Lb.mjs → notifyPrivacyRequestsAdditionalTime-DPp0MyfT.mjs} +2 -2
  167. package/dist/{notifyPrivacyRequestsAdditionalTime-Du7706Lb.mjs.map → notifyPrivacyRequestsAdditionalTime-DPp0MyfT.mjs.map} +1 -1
  168. package/dist/{parquetToCsvOneFile-13GirFzy.mjs → parquetToCsvOneFile-0O4iLz0t.mjs} +1 -1
  169. package/dist/{parquetToCsvOneFile-13GirFzy.mjs.map → parquetToCsvOneFile-0O4iLz0t.mjs.map} +1 -1
  170. package/dist/parseVariablesFromString-B4TUkJRF.mjs +2 -0
  171. package/dist/parseVariablesFromString-B4TUkJRF.mjs.map +1 -0
  172. package/dist/{pullAllDatapoints-Bvv9KRR5.mjs → pullAllDatapoints-DJno8LkB.mjs} +1 -1
  173. package/dist/{pullAllDatapoints-Bvv9KRR5.mjs.map → pullAllDatapoints-DJno8LkB.mjs.map} +1 -1
  174. package/dist/{pullChunkedCustomSiloOutstandingIdentifiers-D_TkvoKK.mjs → pullChunkedCustomSiloOutstandingIdentifiers-rKefgKKC.mjs} +2 -2
  175. package/dist/{pullChunkedCustomSiloOutstandingIdentifiers-D_TkvoKK.mjs.map → pullChunkedCustomSiloOutstandingIdentifiers-rKefgKKC.mjs.map} +1 -1
  176. package/dist/{pullConsentManagerMetrics-CR4WwUt6.mjs → pullConsentManagerMetrics-C41UhU8u.mjs} +1 -1
  177. package/dist/{pullConsentManagerMetrics-CR4WwUt6.mjs.map → pullConsentManagerMetrics-C41UhU8u.mjs.map} +1 -1
  178. package/dist/{pullManualEnrichmentIdentifiersToCsv-C_XrnqTo.mjs → pullManualEnrichmentIdentifiersToCsv-Cbk-7ztw.mjs} +2 -2
  179. package/dist/{pullManualEnrichmentIdentifiersToCsv-C_XrnqTo.mjs.map → pullManualEnrichmentIdentifiersToCsv-Cbk-7ztw.mjs.map} +1 -1
  180. package/dist/{pushCronIdentifiersFromCsv-hcTHlWyf.mjs → pushCronIdentifiersFromCsv-Dj-KEFpQ.mjs} +2 -2
  181. package/dist/{pushCronIdentifiersFromCsv-hcTHlWyf.mjs.map → pushCronIdentifiersFromCsv-Dj-KEFpQ.mjs.map} +1 -1
  182. package/dist/{pushManualEnrichmentIdentifiersFromCsv-5Dulzugh.mjs → pushManualEnrichmentIdentifiersFromCsv-CY4d1jQy.mjs} +2 -2
  183. package/dist/{pushManualEnrichmentIdentifiersFromCsv-5Dulzugh.mjs.map → pushManualEnrichmentIdentifiersFromCsv-CY4d1jQy.mjs.map} +1 -1
  184. package/dist/{readTranscendYaml-ceJQNB1O.mjs → readTranscendYaml-bL1qFPqv.mjs} +2 -2
  185. package/dist/{readTranscendYaml-ceJQNB1O.mjs.map → readTranscendYaml-bL1qFPqv.mjs.map} +1 -1
  186. package/dist/{removeUnverifiedRequestIdentifiers-D2tdogVl.mjs → removeUnverifiedRequestIdentifiers-BUJZoJD9.mjs} +2 -2
  187. package/dist/{removeUnverifiedRequestIdentifiers-D2tdogVl.mjs.map → removeUnverifiedRequestIdentifiers-BUJZoJD9.mjs.map} +1 -1
  188. package/dist/{retryRequestDataSilos-pQ4DekAX.mjs → retryRequestDataSilos-DATDTDin.mjs} +2 -2
  189. package/dist/{retryRequestDataSilos-pQ4DekAX.mjs.map → retryRequestDataSilos-DATDTDin.mjs.map} +1 -1
  190. package/dist/{skipPreflightJobs-BrBvyKxG.mjs → skipPreflightJobs-C1go-m8K.mjs} +2 -2
  191. package/dist/{skipPreflightJobs-BrBvyKxG.mjs.map → skipPreflightJobs-C1go-m8K.mjs.map} +1 -1
  192. package/dist/{skipRequestDataSilos-DrTtHtF5.mjs → skipRequestDataSilos-1ksexte3.mjs} +2 -2
  193. package/dist/{skipRequestDataSilos-DrTtHtF5.mjs.map → skipRequestDataSilos-1ksexte3.mjs.map} +1 -1
  194. package/dist/{streamPrivacyRequestsToCsv-zGxmk-9Z.mjs → streamPrivacyRequestsToCsv-7S52MmdS.mjs} +2 -2
  195. package/dist/{streamPrivacyRequestsToCsv-zGxmk-9Z.mjs.map → streamPrivacyRequestsToCsv-7S52MmdS.mjs.map} +1 -1
  196. package/dist/{updateConsentManagerVersionToLatest-Dg-j1SQt.mjs → updateConsentManagerVersionToLatest-CYGRh2Mf.mjs} +2 -2
  197. package/dist/{updateConsentManagerVersionToLatest-Dg-j1SQt.mjs.map → updateConsentManagerVersionToLatest-CYGRh2Mf.mjs.map} +1 -1
  198. package/dist/{uploadConsents-B3lvS6hQ.mjs → uploadConsents-DxzUYFP_.mjs} +2 -2
  199. package/dist/{uploadConsents-B3lvS6hQ.mjs.map → uploadConsents-DxzUYFP_.mjs.map} +1 -1
  200. package/dist/{uploadCookiesFromCsv-DmU8R-_E.mjs → uploadCookiesFromCsv-D33lINd-.mjs} +2 -2
  201. package/dist/{uploadCookiesFromCsv-DmU8R-_E.mjs.map → uploadCookiesFromCsv-D33lINd-.mjs.map} +1 -1
  202. package/dist/{uploadDataFlowsFromCsv-Ct0rye94.mjs → uploadDataFlowsFromCsv-0oDEouPJ.mjs} +2 -2
  203. package/dist/{uploadDataFlowsFromCsv-Ct0rye94.mjs.map → uploadDataFlowsFromCsv-0oDEouPJ.mjs.map} +1 -1
  204. package/dist/{uploadPrivacyRequestsFromCsv-BVi19fS8.mjs → uploadPrivacyRequestsFromCsv-CX7JRYjH.mjs} +2 -2
  205. package/dist/{uploadPrivacyRequestsFromCsv-BVi19fS8.mjs.map → uploadPrivacyRequestsFromCsv-CX7JRYjH.mjs.map} +1 -1
  206. package/dist/{validateTranscendAuth-Dl8UUCAQ.mjs → validateTranscendAuth-CAO5ktnu.mjs} +2 -2
  207. package/dist/{validateTranscendAuth-Dl8UUCAQ.mjs.map → validateTranscendAuth-CAO5ktnu.mjs.map} +1 -1
  208. package/dist/{writeCsv-BMVkiMHM.mjs → writeCsv-DMw5OmWp.mjs} +1 -1
  209. package/dist/{writeCsv-BMVkiMHM.mjs.map → writeCsv-DMw5OmWp.mjs.map} +1 -1
  210. package/package.json +5 -4
  211. package/dist/app-DYoi_kYl.mjs.map +0 -1
  212. package/dist/codecs-DRBjmo_R.mjs +0 -2
  213. package/dist/codecs-DRBjmo_R.mjs.map +0 -1
  214. package/dist/impl-B0AKcSoy.mjs.map +0 -1
  215. package/dist/impl-Bk6lPywf.mjs +0 -2
  216. package/dist/impl-CxjrhJ-X.mjs +0 -2
  217. package/dist/impl-D6rMK5Us.mjs.map +0 -1
  218. package/dist/impl-DjOWgFlT.mjs.map +0 -1
  219. package/dist/impl-o0RdOoiZ2.mjs +0 -2
  220. package/dist/impl-tNN3yVw72.mjs +0 -2
  221. package/dist/parseVariablesFromString-B2TB86Fo.mjs +0 -3
  222. package/dist/parseVariablesFromString-B2TB86Fo.mjs.map +0 -1
package/README.md CHANGED
@@ -10,6 +10,7 @@ A command line interface that allows you to programatically interact with the Tr
10
10
  - [Changelog](#changelog)
11
11
  - [Installation](#installation)
12
12
  - [transcend.yml](#transcendyml)
13
+ - [Deletion dependencies](#deletion-dependencies)
13
14
  - [Usage](#usage)
14
15
  - [`transcend request approve`](#transcend-request-approve)
15
16
  - [`transcend request upload`](#transcend-request-upload)
@@ -39,6 +40,8 @@ A command line interface that allows you to programatically interact with the Tr
39
40
  - [`transcend consent upload-data-flows-from-csv`](#transcend-consent-upload-data-flows-from-csv)
40
41
  - [`transcend consent upload-preferences`](#transcend-consent-upload-preferences)
41
42
  - [`transcend consent delete-preference-records`](#transcend-consent-delete-preference-records)
43
+ - [`transcend custom-functions push`](#transcend-custom-functions-push)
44
+ - [`transcend custom-functions list`](#transcend-custom-functions-list)
42
45
  - [`transcend inventory pull`](#transcend-inventory-pull)
43
46
  - [`transcend inventory push`](#transcend-inventory-push)
44
47
  - [`transcend inventory scan-packages`](#transcend-inventory-scan-packages)
@@ -168,7 +171,12 @@ data-silos:
168
171
  - email
169
172
  - userId
170
173
  deletion-dependencies:
171
- - Identity Service
174
+ - titles:
175
+ - Identity Service
176
+ - workflow: GDPR Erasure
177
+ titles:
178
+ - Identity Service
179
+ - CRM Warehouse
172
180
  owners:
173
181
  - alice@transcend.io
174
182
  datapoints:
@@ -192,6 +200,50 @@ data-silos:
192
200
  description: The email address of the user
193
201
  ```
194
202
 
203
+ ### Deletion dependencies
204
+
205
+ When an erasure request runs, `deletion-dependencies` holds off deleting from a data silo until the data silos it lists have finished deleting.
206
+
207
+ Use a list of objects: `{ titles }` for the global configuration, and `{ workflow, titles }` or `{ workflow, reset-to-global: true }` for each per-workflow override. Mixing titles and objects in the same list is not allowed:
208
+
209
+ ```yaml
210
+ data-silos:
211
+ - title: Salesforce
212
+ integrationName: server
213
+ deletion-dependencies:
214
+ # Global configuration
215
+ - titles:
216
+ - Identity Service
217
+ # Overrides the global configuration for the "GDPR Erasure" workflow only
218
+ - workflow: GDPR Erasure
219
+ titles:
220
+ - Identity Service
221
+ - CRM Warehouse
222
+ # Runs with no dependencies at all in the "CCPA Delete" workflow
223
+ - workflow: CCPA Delete
224
+ titles: []
225
+ # Removes a previously configured override so the workflow uses the global configuration again
226
+ - workflow: Legacy Erasure
227
+ reset-to-global: true
228
+ ```
229
+
230
+ **Legacy:** a bare list of titles is still accepted for global-only configuration:
231
+
232
+ ```yaml
233
+ data-silos:
234
+ - title: Salesforce
235
+ integrationName: server
236
+ deletion-dependencies:
237
+ - Identity Service
238
+ - CRM Warehouse
239
+ ```
240
+
241
+ `workflow` is the internal name of an erasure workflow, which you can find under [DSR Automation -> Workflows](https://app.transcend.io/privacy-requests/workflows). Overrides are only supported on erasure workflows, and the data silo and everything it depends on must already be part of that workflow.
242
+
243
+ A workflow that is not listed keeps whatever configuration it already has, so pushing a config that only lists global dependencies never removes existing overrides. Use `reset-to-global: true` to remove one.
244
+
245
+ Omitting `deletion-dependencies` entirely clears the global configuration, matching how the rest of `transcend.yml` treats omitted fields.
246
+
195
247
  ## Usage
196
248
 
197
249
  <!-- COMMANDS_START -->
@@ -2427,6 +2479,217 @@ transcend consent delete-preference-records \
2427
2479
  --timestamp=2025-08-26T00:00:00.000Z
2428
2480
  ```
2429
2481
 
2482
+ ### `transcend custom-functions push`
2483
+
2484
+ ```txt
2485
+ USAGE
2486
+ transcend custom-functions push (--auth value) [--sombraAuth value] [--transcendUrl value] [--file value] [--variables value] [--dryRun] [--promote] [--force] [--skipTests] [--updateManifest] [--sombraId value]
2487
+ transcend custom-functions push --help
2488
+
2489
+ Sync custom function source code from your repository to Transcend.
2490
+
2491
+ Given a manifest file mapping custom function names to TypeScript source files (plus execution context like allowed hosts, timeout, and environment variables), this command:
2492
+
2493
+ 1. Signs each function's code and context against your Sombra gateway's customer ingress (pass --sombraAuth when self-hosting Sombra)
2494
+ 2. Creates the DSR integration (data silo) for any new DSR function that does not specify a data-silo-id
2495
+ 3. Test-runs the freshly signed code with each of the entry's test payloads, when defined (unless --skipTests) — DSR functions can cover both their default (DATA_POINT) and enricher (REQUEST_ENRICHER) exports. Any failing payload rolls back any integration created in step 2
2496
+ 4. Creates any custom functions that do not exist yet (linking new DSR functions to their integration)
2497
+ 5. Pushes a new code revision for any function whose code or context changed
2498
+ 6. Promotes new revisions to active (unless --promote=false)
2499
+
2500
+ Metadata-only changes (description, or name for entries pinned by id) are updated in place without signing, testing, or pushing a new code revision. Environment variable values are encrypted at sign time and cannot be diffed — pass --force to re-push when only env values changed.
2501
+
2502
+ Functions with any failing test run are rejected — every failing payload's reason and execution logs are printed, nothing is pushed for that function, and the command exits 1. Functions without test payloads push as before, with a warning. Test runs require backend support for pre-signed code JWTs on the runCustomFunction mutation.
2503
+
2504
+ Functions whose code and context are unchanged are skipped, so this command is safe to run on every CI push.
2505
+
2506
+ Function code is invoked with a single argument of shape { payload, environment } — payload is the invocation JSON (free-form for GENERAL functions, the webhook notification shape for DSR functions) and environment is the manifest entry's env block. DSR functions may also export an enricher entry point.
2507
+
2508
+ FLAGS
2509
+ --auth The Transcend API key. Defaults to the TRANSCEND_API_KEY environment variable when set, so --auth may be omitted if it is exported. Requires scopes: "Manage Data Map"
2510
+ [--sombraAuth] The Sombra internal key, use for additional authentication when self-hosting Sombra
2511
+ [--transcendUrl] URL of the Transcend backend. Use https://api.us.transcend.io for US hosting. Defaults to the TRANSCEND_API_URL environment variable when set, so --transcendUrl may be omitted if it is exported. [default = https://api.transcend.io]
2512
+ [--file] Path to the custom functions manifest YAML file [default = ./transcend-functions.yml]
2513
+ [--variables] The variables to template into the manifest file (e.g. secret env values). Comma-separated list of key:value pairs. [default = ""]
2514
+ [--dryRun] When true, report what would change without pushing anything [default = false]
2515
+ [--promote/--noPromote] When true, promote new revisions to active. Set to false to leave new revisions as drafts for review in the dashboard. [default = true]
2516
+ [--force] Push a new revision even when no changes are detected. Useful when only environment variable values changed, which cannot be diffed. [default = false]
2517
+ [--skipTests] Skip test runs entirely, pushing functions without executing their test-payload files. Tests also do not run on --dryRun (nothing is signed on dry runs). [default = false]
2518
+ [--updateManifest] After pushing, write the assigned custom function IDs back into the manifest file so future pushes match by ID instead of by name. Comments and <<parameters.x>> placeholders are preserved. [default = false]
2519
+ [--sombraId] Default Sombra gateway for functions whose manifest entry (or existing function) does not pin one. Each function is signed against the gateway it belongs to. Defaults to the primary Sombra of the organization.
2520
+ -h --help Print help information and exit
2521
+ ```
2522
+
2523
+ #### Manifest file
2524
+
2525
+ The manifest maps custom function names to source files in your repository:
2526
+
2527
+ ```yaml
2528
+ # transcend-functions.yml
2529
+ functions:
2530
+ - name: Score Lead
2531
+ code: ./functions/score-lead.ts
2532
+ description: Scores an inbound lead against the CRM
2533
+ test-payload: ./test-payloads/score-lead.json
2534
+ allowed-hosts:
2535
+ - api.example.com
2536
+ timeout-ms: 30000
2537
+ env:
2538
+ CRM_API_KEY: <<parameters.crmApiKey>>
2539
+ - name: DSR Lookup
2540
+ code: ./functions/dsr-lookup.ts
2541
+ type: DSR
2542
+ data-silo-id: 5a4b0f9c-xxxx-xxxx-xxxx-xxxxxxxxxxxx
2543
+ # DSR functions have two entry points — test both on every push
2544
+ test-payloads:
2545
+ - payload: ./test-payloads/dsr-lookup-access.json
2546
+ payload-type: DATA_POINT
2547
+ - payload: ./test-payloads/dsr-lookup-enricher.json
2548
+ payload-type: REQUEST_ENRICHER
2549
+ ```
2550
+
2551
+ | Field | Required | Description |
2552
+ | --------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
2553
+ | `name` | Yes | Display name of the function. Used as the sync key when no `id` is set — renaming an id-less entry creates a new function. |
2554
+ | `code` | Yes | Path to the TypeScript source file, relative to the manifest. |
2555
+ | `id` | No | Custom function ID. When set, it becomes the sync key (allowing renames and disambiguating non-unique names). Find IDs via `transcend custom-functions list`, or let `--updateManifest` fill them in after a push. |
2556
+ | `description` | No | Description shown in the Transcend dashboard. |
2557
+ | `type` | No | `GENERAL` (default) or `DSR`. |
2558
+ | `data-silo-id` | DSR only | The data silo (DSR integration) the DSR function is attached to. When omitted for a **new** DSR function, the integration is created automatically (see below) and `--updateManifest` writes the assigned ID back. |
2559
+ | `sombra-id` | No | The Sombra gateway the function belongs to. Each function's code is signed against its own gateway; when omitted, the existing function's gateway (or `--sombraId`, or the primary Sombra) is used. An entry cannot move an existing function to a different gateway. |
2560
+ | `sombra-auth-env` | No | Name of the environment variable holding the internal key of the function's Sombra gateway (e.g. `SOMBRA_EU_INTERNAL_KEY`). The key itself never lives in the manifest — it is read from the environment at push time. Overrides `--sombraAuth` for this entry. |
2561
+ | `test-payloads` | No | List of test payloads to run the function with before pushing. Each item has a `payload` (path to a JSON file, relative to the manifest) and an optional `payload-type`. Every payload runs and all must pass, or the push is rejected. DSR functions should list one payload per export they implement: `DATA_POINT` (default) invokes the default export, `REQUEST_ENRICHER` invokes the `enricher` export. |
2562
+ | `test-payload` | No | Shorthand for a single-item `test-payloads` list: path to one JSON payload file. Pair with `test-payload-type` for DSR functions. Mutually exclusive with `test-payloads`. |
2563
+ | `allowed-hosts` | No | Hosts the function may make network requests to. |
2564
+ | `timeout-ms` | No | Execution timeout in milliseconds. |
2565
+ | `allow-third-party-imports` | No | Whether the function may import third party modules. |
2566
+ | `env` | No | Environment variables exposed to the function. Use `<<parameters.name>>` placeholders with the `--variables` flag to avoid committing secrets. |
2567
+
2568
+ Note: environment variable values are encrypted by Sombra and cannot be diffed. When only an env value changes, use `--force` to push a new revision.
2569
+
2570
+ Functions may belong to different Sombra gateways within one manifest; the command connects to each distinct gateway as needed. `--sombraAuth` provides the default internal key; when self-hosted gateways use _different_ internal keys, set `sombra-auth-env` per entry to the name of the environment variable holding that gateway's key:
2571
+
2572
+ ```yaml
2573
+ functions:
2574
+ - name: US Function
2575
+ code: ./functions/us.ts
2576
+ # primary gateway, authenticated by --sombraAuth (if self-hosted)
2577
+ - name: EU Function
2578
+ code: ./functions/eu.ts
2579
+ sombra-id: 8c0b1f2a-xxxx-xxxx-xxxx-xxxxxxxxxxxx
2580
+ sombra-auth-env: SOMBRA_EU_INTERNAL_KEY
2581
+ ```
2582
+
2583
+ #### How manifest entries are matched to existing functions
2584
+
2585
+ Each entry is resolved against the custom functions in your organization in this order:
2586
+
2587
+ 1. **By `id`, when set.** The ID is the sync key: the matched function is updated, and `name` may be changed freely (it just renames the function). If no function with that ID exists, the push **fails** for that entry — a stale or mistyped ID never silently creates a duplicate. Remove the `id` to create a new function instead.
2588
+ 2. **By exact `name`, when no `id` is set.**
2589
+ - Exactly one function with that name → it is updated.
2590
+ - No function with that name → a new one is created.
2591
+ - **More than one** function with that name → the push fails with an error listing the candidate IDs. Add the right `id` to the entry to disambiguate, or grab IDs from `transcend custom-functions list`.
2592
+
2593
+ Within the manifest itself, duplicate `id`s are always rejected, and duplicate `name`s are only allowed when every entry sharing the name has an `id`.
2594
+
2595
+ Because ID matching is strictly safer, prefer pinning IDs once functions exist: run `transcend custom-functions push --updateManifest` after the first push and the assigned IDs are written back into the manifest automatically (comments and `<<parameters.x>>` placeholders are preserved). For DSR functions, the assigned `data-silo-id` is written back the same way.
2596
+
2597
+ #### New DSR functions: the integration is created automatically
2598
+
2599
+ A **new** DSR entry (no `id`, no matching function by name) that omits `data-silo-id` gets its DSR integration created as part of the push:
2600
+
2601
+ 1. A `customFunction`-catalog data silo is created, titled after the function, on the entry's Sombra gateway (`sombra-id`, else `--sombraId`, else the organization's primary Sombra). It starts `NOT_CONFIGURED` with nothing attached.
2602
+ 2. The signed code is test-run against that silo (when test payloads are set) — DSR test payloads always get `extras.dataSilo` injected from the resolved silo, so payload files never need to hardcode silo IDs.
2603
+ 3. On a passing test the custom function is created and linked to the silo (which becomes `Connected`). On a failing test the silo is **rolled back** (deleted) and the function is rejected.
2604
+ 4. With `--updateManifest`, both the custom function `id` and the `data-silo-id` are written back into the manifest.
2605
+
2606
+ DSR entries that already pin a `data-silo-id` behave as before — the integration must exist and the function is attached to it.
2607
+
2608
+ #### Test-before-promote
2609
+
2610
+ Entries with test payloads (`test-payloads`, or the single-payload `test-payload` shorthand) are tested before anything is pushed:
2611
+
2612
+ 1. The code and context are signed against the function's Sombra gateway.
2613
+ 2. The signed code is executed as a test run with each payload JSON (via the `runCustomFunction` mutation — nothing is persisted). GENERAL functions run on the function's gateway; DSR functions run on the gateway of the function's data silo — `extras.dataSilo` is injected into every payload automatically from the entry's resolved silo, so payload files never need to hardcode silo IDs.
2614
+ 3. **All payloads pass** (no error, exit code ≤ 0): the revision is pushed and promoted as usual.
2615
+ 4. **Any payload fails**: the function is rejected — every failing payload's reason and logs are printed (all payloads run, so one push reports every failing case), nothing is pushed for that function, and the command exits 1.
2616
+
2617
+ DSR functions have two entry points — the default export (`DATA_POINT`) and the `enricher` export (`REQUEST_ENRICHER`) — so list one payload per export the function implements; a warning is printed when a DSR entry only covers one. Entries without test payloads push as before, with a warning. `--skipTests` bypasses testing entirely, and `--dryRun` never tests (nothing is signed on dry runs). Test runs require backend support for pre-signed code JWTs on the `runCustomFunction` mutation; on older backends the push fails with an upgrade hint — use `--skipTests` to bypass.
2618
+
2619
+ #### Examples
2620
+
2621
+ **Push all custom functions defined in ./transcend-functions.yml**
2622
+
2623
+ ```sh
2624
+ transcend custom-functions push --auth="$TRANSCEND_API_KEY"
2625
+ ```
2626
+
2627
+ **Preview changes without pushing anything**
2628
+
2629
+ ```sh
2630
+ transcend custom-functions push --auth="$TRANSCEND_API_KEY" --dryRun
2631
+ ```
2632
+
2633
+ **Use a manifest at a custom path with templated secrets**
2634
+
2635
+ ```sh
2636
+ transcend custom-functions push \
2637
+ --auth="$TRANSCEND_API_KEY" \
2638
+ --file=./transcend/functions.yml \
2639
+ --variables=crmApiKey:example-secret-value
2640
+ ```
2641
+
2642
+ **Push new revisions as drafts for review instead of promoting them**
2643
+
2644
+ ```sh
2645
+ transcend custom-functions push --auth="$TRANSCEND_API_KEY" --promote=false
2646
+ ```
2647
+
2648
+ **Record the assigned custom function IDs in the manifest so future pushes match by ID**
2649
+
2650
+ ```sh
2651
+ transcend custom-functions push --auth="$TRANSCEND_API_KEY" --updateManifest
2652
+ ```
2653
+
2654
+ **Force a new revision even when no code changes are detected (e.g. env value rotation)**
2655
+
2656
+ ```sh
2657
+ transcend custom-functions push --auth="$TRANSCEND_API_KEY" --force
2658
+ ```
2659
+
2660
+ **Push without running test payloads**
2661
+
2662
+ ```sh
2663
+ transcend custom-functions push --auth="$TRANSCEND_API_KEY" --skipTests
2664
+ ```
2665
+
2666
+ **With Sombra authentication, needed when self-hosting Sombra**
2667
+
2668
+ ```sh
2669
+ transcend custom-functions push --auth="$TRANSCEND_API_KEY" --sombraAuth="$SOMBRA_INTERNAL_KEY"
2670
+ ```
2671
+
2672
+ **Specifying the backend URL, needed for US hosted backend infrastructure**
2673
+
2674
+ ```sh
2675
+ transcend custom-functions push --auth="$TRANSCEND_API_KEY" --transcendUrl=https://api.us.transcend.io
2676
+ ```
2677
+
2678
+ ### `transcend custom-functions list`
2679
+
2680
+ ```txt
2681
+ USAGE
2682
+ transcend custom-functions list (--auth value) [--transcendUrl value]
2683
+ transcend custom-functions list --help
2684
+
2685
+ List all custom functions in the organization along with their lifecycle state, active version, and any pending draft version.
2686
+
2687
+ FLAGS
2688
+ --auth The Transcend API key. Defaults to the TRANSCEND_API_KEY environment variable when set, so --auth may be omitted if it is exported. Requires scopes: "View Data Map"
2689
+ [--transcendUrl] URL of the Transcend backend. Use https://api.us.transcend.io for US hosting. Defaults to the TRANSCEND_API_URL environment variable when set, so --transcendUrl may be omitted if it is exported. [default = https://api.transcend.io]
2690
+ -h --help Print help information and exit
2691
+ ```
2692
+
2430
2693
  ### `transcend inventory pull`
2431
2694
 
2432
2695
  ```txt