@transcend-io/cli 9.0.0 → 10.0.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 (393) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +26 -34
  3. package/dist/RateCounter-DFL_mnk2.mjs +2 -0
  4. package/dist/RateCounter-DFL_mnk2.mjs.map +1 -0
  5. package/dist/RequestDataSilo-_Iv44M9u.mjs +51 -0
  6. package/dist/RequestDataSilo-_Iv44M9u.mjs.map +1 -0
  7. package/dist/app-By_zDIkK.mjs +131 -0
  8. package/dist/app-By_zDIkK.mjs.map +1 -0
  9. package/dist/approvePrivacyRequests-1cguqGqq.mjs +2 -0
  10. package/dist/approvePrivacyRequests-1cguqGqq.mjs.map +1 -0
  11. package/dist/assessment-BDywVaGR.mjs +284 -0
  12. package/dist/assessment-BDywVaGR.mjs.map +1 -0
  13. package/dist/bin/bash-complete.mjs +1 -1
  14. package/dist/bin/bash-complete.mjs.map +1 -1
  15. package/dist/bin/cli.mjs +1 -1
  16. package/dist/bin/cli.mjs.map +1 -1
  17. package/dist/bin/deprecated-command.mjs +1 -1
  18. package/dist/bin/deprecated-command.mjs.map +1 -1
  19. package/dist/bluebird-CUitXgsY.mjs +2 -0
  20. package/dist/bluebird-CUitXgsY.mjs.map +1 -0
  21. package/dist/buildXdiSyncEndpoint-BMaMHO7Z.mjs +9 -0
  22. package/dist/buildXdiSyncEndpoint-BMaMHO7Z.mjs.map +1 -0
  23. package/dist/bulkRestartRequests-DEPSHov-.mjs +2 -0
  24. package/dist/bulkRestartRequests-DEPSHov-.mjs.map +1 -0
  25. package/dist/bulkRetryEnrichers-BLkcFKXC.mjs +2 -0
  26. package/dist/bulkRetryEnrichers-BLkcFKXC.mjs.map +1 -0
  27. package/dist/cancelPrivacyRequests-C8MZQvsq.mjs +2 -0
  28. package/dist/cancelPrivacyRequests-C8MZQvsq.mjs.map +1 -0
  29. package/dist/codecs-BE3Wmoh8.mjs +2 -0
  30. package/dist/codecs-BE3Wmoh8.mjs.map +1 -0
  31. package/dist/codecs-Dx_vGxsl.mjs +2 -0
  32. package/dist/codecs-Dx_vGxsl.mjs.map +1 -0
  33. package/dist/{command-BlHM1nCd.mjs → command-BUnCUxva.mjs} +2 -2
  34. package/dist/command-BUnCUxva.mjs.map +1 -0
  35. package/dist/consentManagersToBusinessEntities-BDgOFga7.mjs +5 -0
  36. package/dist/consentManagersToBusinessEntities-BDgOFga7.mjs.map +1 -0
  37. package/dist/constants-AFtS5Nad.mjs +4 -0
  38. package/dist/constants-AFtS5Nad.mjs.map +1 -0
  39. package/dist/constants-CeMiHaHx.mjs +2 -0
  40. package/dist/constants-CeMiHaHx.mjs.map +1 -0
  41. package/dist/constants-lIvXgkdp.mjs +2 -0
  42. package/dist/constants-lIvXgkdp.mjs.map +1 -0
  43. package/dist/{context-bkKpii_t.mjs → context-CdSyuBlf.mjs} +1 -1
  44. package/dist/context-CdSyuBlf.mjs.map +1 -0
  45. package/dist/{pooling-BkZAO1Zs.mjs → createExtraKeyHandler-C_0EVj10.mjs} +5 -5
  46. package/dist/createExtraKeyHandler-C_0EVj10.mjs.map +1 -0
  47. package/dist/createPreferenceAccessTokens-6WLr6z-l.mjs +10 -0
  48. package/dist/createPreferenceAccessTokens-6WLr6z-l.mjs.map +1 -0
  49. package/dist/createSombraGotInstance-CahOgD6V.mjs +10 -0
  50. package/dist/createSombraGotInstance-CahOgD6V.mjs.map +1 -0
  51. package/dist/{dataFlowsToDataSilos-RAhfPV0l.mjs → dataFlowsToDataSilos-NhvBw1iy.mjs} +1 -1
  52. package/dist/dataFlowsToDataSilos-NhvBw1iy.mjs.map +1 -0
  53. package/dist/dataSilo-DrFetFXw.mjs +302 -0
  54. package/dist/dataSilo-DrFetFXw.mjs.map +1 -0
  55. package/dist/dataSubject-y_aXI0pa.mjs +92 -0
  56. package/dist/dataSubject-y_aXI0pa.mjs.map +1 -0
  57. package/dist/{done-input-validation-CcZtaz03.mjs → done-input-validation-DLR0-MJ7.mjs} +1 -1
  58. package/dist/{done-input-validation-CcZtaz03.mjs.map → done-input-validation-DLR0-MJ7.mjs.map} +1 -1
  59. package/dist/downloadPrivacyRequestFiles-B2yduagB.mjs +2 -0
  60. package/dist/downloadPrivacyRequestFiles-B2yduagB.mjs.map +1 -0
  61. package/dist/enums-CyFTrzXY.mjs.map +1 -1
  62. package/dist/extractClientError-DPjv09EH.mjs +2 -0
  63. package/dist/extractClientError-DPjv09EH.mjs.map +1 -0
  64. package/dist/extractErrorMessage-CPnTsT1S.mjs +2 -0
  65. package/dist/extractErrorMessage-CPnTsT1S.mjs.map +1 -0
  66. package/dist/fetchAllActions-C0l3wjQV.mjs +832 -0
  67. package/dist/fetchAllActions-C0l3wjQV.mjs.map +1 -0
  68. package/dist/fetchAllDataFlows-AQ9j_NRa.mjs +2 -0
  69. package/dist/fetchAllDataFlows-AQ9j_NRa.mjs.map +1 -0
  70. package/dist/fetchAllPreferenceTopics-Bn9PG-rO.mjs +36 -0
  71. package/dist/fetchAllPreferenceTopics-Bn9PG-rO.mjs.map +1 -0
  72. package/dist/fetchAllPurposes-CykSkZRY.mjs +29 -0
  73. package/dist/fetchAllPurposes-CykSkZRY.mjs.map +1 -0
  74. package/dist/fetchAllPurposesAndPreferences-Dog6N9L2.mjs +2 -0
  75. package/dist/fetchAllPurposesAndPreferences-Dog6N9L2.mjs.map +1 -0
  76. package/dist/fetchAllRequestEnrichers-q34mRuE5.mjs +42 -0
  77. package/dist/fetchAllRequestEnrichers-q34mRuE5.mjs.map +1 -0
  78. package/dist/fetchAllRequestIdentifiers-YP-geTV4.mjs +10 -0
  79. package/dist/fetchAllRequestIdentifiers-YP-geTV4.mjs.map +1 -0
  80. package/dist/fetchAllRequests-DEPTEUbi.mjs +2 -0
  81. package/dist/fetchAllRequests-DEPTEUbi.mjs.map +1 -0
  82. package/dist/fetchApiKeys-DkBco7W0.mjs +33 -0
  83. package/dist/fetchApiKeys-DkBco7W0.mjs.map +1 -0
  84. package/dist/fetchCatalogs-CBk871k6.mjs +12 -0
  85. package/dist/fetchCatalogs-CBk871k6.mjs.map +1 -0
  86. package/dist/fetchConsentManagerId-DHDA5Py9.mjs +321 -0
  87. package/dist/fetchConsentManagerId-DHDA5Py9.mjs.map +1 -0
  88. package/dist/fetchIdentifiers-DjqjUnaw.mjs +54 -0
  89. package/dist/fetchIdentifiers-DjqjUnaw.mjs.map +1 -0
  90. package/dist/fetchRequestDataSilo-CF6XOTQ-.mjs +2 -0
  91. package/dist/fetchRequestDataSilo-CF6XOTQ-.mjs.map +1 -0
  92. package/dist/fetchRequestFilesForRequest-DrHGOdih.mjs +33 -0
  93. package/dist/fetchRequestFilesForRequest-DrHGOdih.mjs.map +1 -0
  94. package/dist/generateCrossAccountApiKeys-F11uqpc5.mjs +33 -0
  95. package/dist/generateCrossAccountApiKeys-F11uqpc5.mjs.map +1 -0
  96. package/dist/impl--Lmj1RHh2.mjs +2 -0
  97. package/dist/impl--Lmj1RHh2.mjs.map +1 -0
  98. package/dist/impl-0ooudQ_J2.mjs +4 -0
  99. package/dist/impl-0ooudQ_J2.mjs.map +1 -0
  100. package/dist/{impl-BYBNi68b.mjs → impl-1U4QBT_L.mjs} +2 -2
  101. package/dist/impl-1U4QBT_L.mjs.map +1 -0
  102. package/dist/impl-2FbPcOv_2.mjs +2 -0
  103. package/dist/impl-2FbPcOv_2.mjs.map +1 -0
  104. package/dist/impl-ArGeiHuz.mjs +2 -0
  105. package/dist/impl-ArGeiHuz.mjs.map +1 -0
  106. package/dist/impl-B8iVBYdg.mjs +2 -0
  107. package/dist/impl-B8iVBYdg.mjs.map +1 -0
  108. package/dist/impl-BWjBYTQZ.mjs +2 -0
  109. package/dist/impl-BWjBYTQZ.mjs.map +1 -0
  110. package/dist/impl-Bc8Es_bT.mjs +7 -0
  111. package/dist/impl-Bc8Es_bT.mjs.map +1 -0
  112. package/dist/impl-BkyC7nnu.mjs +2 -0
  113. package/dist/impl-BkyC7nnu.mjs.map +1 -0
  114. package/dist/impl-BpUksm1b2.mjs +2 -0
  115. package/dist/impl-BpUksm1b2.mjs.map +1 -0
  116. package/dist/impl-BzupMfJi.mjs +12 -0
  117. package/dist/impl-BzupMfJi.mjs.map +1 -0
  118. package/dist/impl-C05tQHSq.mjs +2 -0
  119. package/dist/impl-C05tQHSq.mjs.map +1 -0
  120. package/dist/impl-CMX0qQr_2.mjs +2 -0
  121. package/dist/impl-CMX0qQr_2.mjs.map +1 -0
  122. package/dist/impl-CWHnw3oX.mjs +2 -0
  123. package/dist/impl-CWHnw3oX.mjs.map +1 -0
  124. package/dist/impl-CXK-D84c.mjs +4 -0
  125. package/dist/impl-CXK-D84c.mjs.map +1 -0
  126. package/dist/impl-CdoTu8TH.mjs +2 -0
  127. package/dist/impl-CdoTu8TH.mjs.map +1 -0
  128. package/dist/impl-CeLfAnyA2.mjs +2 -0
  129. package/dist/impl-CeLfAnyA2.mjs.map +1 -0
  130. package/dist/impl-Cgg_bv7j.mjs +2 -0
  131. package/dist/impl-Cgg_bv7j.mjs.map +1 -0
  132. package/dist/impl-CoLIqiH-2.mjs +2 -0
  133. package/dist/impl-CoLIqiH-2.mjs.map +1 -0
  134. package/dist/impl-Cq_RqK0_2.mjs +2 -0
  135. package/dist/impl-Cq_RqK0_2.mjs.map +1 -0
  136. package/dist/{impl-CIJ6P1GD.mjs → impl-Cwj9LeEI.mjs} +3 -3
  137. package/dist/impl-Cwj9LeEI.mjs.map +1 -0
  138. package/dist/impl-CyJBbyuF.mjs +2 -0
  139. package/dist/impl-CyJBbyuF.mjs.map +1 -0
  140. package/dist/impl-D-cp0CYr.mjs +2 -0
  141. package/dist/impl-D-cp0CYr.mjs.map +1 -0
  142. package/dist/impl-D-ldjJzl2.mjs +2 -0
  143. package/dist/impl-D-ldjJzl2.mjs.map +1 -0
  144. package/dist/impl-D6nwGrO8.mjs +2 -0
  145. package/dist/impl-D6nwGrO8.mjs.map +1 -0
  146. package/dist/impl-DGRuk3AB.mjs +2 -0
  147. package/dist/impl-DGRuk3AB.mjs.map +1 -0
  148. package/dist/impl-DXWN22xV.mjs +2 -0
  149. package/dist/impl-DXWN22xV.mjs.map +1 -0
  150. package/dist/impl-DZnSlfwn2.mjs +2 -0
  151. package/dist/impl-DZnSlfwn2.mjs.map +1 -0
  152. package/dist/impl-DcC8_dCy.mjs +2 -0
  153. package/dist/impl-DcC8_dCy.mjs.map +1 -0
  154. package/dist/impl-Dfc_yQML2.mjs +2 -0
  155. package/dist/impl-Dfc_yQML2.mjs.map +1 -0
  156. package/dist/impl-DgyjJ8RY2.mjs +2 -0
  157. package/dist/impl-DgyjJ8RY2.mjs.map +1 -0
  158. package/dist/impl-DhIyASha.mjs +2 -0
  159. package/dist/impl-DhIyASha.mjs.map +1 -0
  160. package/dist/impl-Dny1LX9A.mjs +2 -0
  161. package/dist/impl-Dny1LX9A.mjs.map +1 -0
  162. package/dist/impl-G1brwI4o.mjs +2 -0
  163. package/dist/impl-G1brwI4o.mjs.map +1 -0
  164. package/dist/impl-KV3yZaHz2.mjs +2 -0
  165. package/dist/impl-KV3yZaHz2.mjs.map +1 -0
  166. package/dist/impl-Rt3C_fDF.mjs +2 -0
  167. package/dist/impl-Rt3C_fDF.mjs.map +1 -0
  168. package/dist/impl-VHp2K2bg.mjs +2 -0
  169. package/dist/impl-VHp2K2bg.mjs.map +1 -0
  170. package/dist/impl-Zr8uLP_n.mjs +2 -0
  171. package/dist/impl-Zr8uLP_n.mjs.map +1 -0
  172. package/dist/impl-dEQtD5uE.mjs +2 -0
  173. package/dist/impl-dEQtD5uE.mjs.map +1 -0
  174. package/dist/impl-dlRlTYAQ.mjs +2 -0
  175. package/dist/impl-dlRlTYAQ.mjs.map +1 -0
  176. package/dist/impl-f4UPMoS_2.mjs +2 -0
  177. package/dist/impl-f4UPMoS_2.mjs.map +1 -0
  178. package/dist/impl-ph0q6K3i.mjs +2 -0
  179. package/dist/impl-ph0q6K3i.mjs.map +1 -0
  180. package/dist/impl-r8tHyAHB.mjs +2 -0
  181. package/dist/impl-r8tHyAHB.mjs.map +1 -0
  182. package/dist/impl-y1I9Muyc2.mjs +2 -0
  183. package/dist/impl-y1I9Muyc2.mjs.map +1 -0
  184. package/dist/index.d.mts +44 -32
  185. package/dist/index.d.mts.map +1 -0
  186. package/dist/index.mjs +78 -4
  187. package/dist/index.mjs.map +1 -1
  188. package/dist/inquirer-BgNcicZ4.mjs +2 -0
  189. package/dist/inquirer-BgNcicZ4.mjs.map +1 -0
  190. package/dist/listFiles-qzyQMaYH.mjs +2 -0
  191. package/dist/listFiles-qzyQMaYH.mjs.map +1 -0
  192. package/dist/{logger-Bj782ZYD.mjs → logger-B-LXIf3U.mjs} +1 -1
  193. package/dist/{logger-Bj782ZYD.mjs.map → logger-B-LXIf3U.mjs.map} +1 -1
  194. package/dist/makeGraphQLRequest-G078PsEL.mjs +2 -0
  195. package/dist/makeGraphQLRequest-G078PsEL.mjs.map +1 -0
  196. package/dist/markRequestDataSiloIdsCompleted-DmAz-R0M.mjs +2 -0
  197. package/dist/markRequestDataSiloIdsCompleted-DmAz-R0M.mjs.map +1 -0
  198. package/dist/markSilentPrivacyRequests-s7_aBROE.mjs +2 -0
  199. package/dist/markSilentPrivacyRequests-s7_aBROE.mjs.map +1 -0
  200. package/dist/mergeTranscendInputs-C64BJsse.mjs +2 -0
  201. package/dist/mergeTranscendInputs-C64BJsse.mjs.map +1 -0
  202. package/dist/notifyPrivacyRequestsAdditionalTime-BvXIXZYu.mjs +2 -0
  203. package/dist/notifyPrivacyRequestsAdditionalTime-BvXIXZYu.mjs.map +1 -0
  204. package/dist/package-BjNQxHlz.mjs +2 -0
  205. package/dist/package-BjNQxHlz.mjs.map +1 -0
  206. package/dist/parquetToCsvOneFile-DZVKXrjn.mjs +6 -0
  207. package/dist/parquetToCsvOneFile-DZVKXrjn.mjs.map +1 -0
  208. package/dist/parseAttributesFromString-CZStzJc0.mjs +2 -0
  209. package/dist/parseAttributesFromString-CZStzJc0.mjs.map +1 -0
  210. package/dist/pullAllDatapoints-DiMWp8a7.mjs +45 -0
  211. package/dist/pullAllDatapoints-DiMWp8a7.mjs.map +1 -0
  212. package/dist/pullChunkedCustomSiloOutstandingIdentifiers-DgWgggQt.mjs +2 -0
  213. package/dist/pullChunkedCustomSiloOutstandingIdentifiers-DgWgggQt.mjs.map +1 -0
  214. package/dist/pullConsentManagerMetrics-pFRPXTHJ.mjs +2 -0
  215. package/dist/pullConsentManagerMetrics-pFRPXTHJ.mjs.map +1 -0
  216. package/dist/pullManualEnrichmentIdentifiersToCsv-DA_4rIzW.mjs +2 -0
  217. package/dist/pullManualEnrichmentIdentifiersToCsv-DA_4rIzW.mjs.map +1 -0
  218. package/dist/pullTranscendConfiguration-D2cYlu6V.mjs +80 -0
  219. package/dist/pullTranscendConfiguration-D2cYlu6V.mjs.map +1 -0
  220. package/dist/pullUnstructuredSubDataPointRecommendations-C4aVhH-W.mjs +38 -0
  221. package/dist/pullUnstructuredSubDataPointRecommendations-C4aVhH-W.mjs.map +1 -0
  222. package/dist/pushCronIdentifiersFromCsv-C34TB9tG.mjs +2 -0
  223. package/dist/pushCronIdentifiersFromCsv-C34TB9tG.mjs.map +1 -0
  224. package/dist/pushManualEnrichmentIdentifiersFromCsv-CGS9E3Ft.mjs +2 -0
  225. package/dist/pushManualEnrichmentIdentifiersFromCsv-CGS9E3Ft.mjs.map +1 -0
  226. package/dist/readCsv-CyOL7eCc.mjs +2 -0
  227. package/dist/readCsv-CyOL7eCc.mjs.map +1 -0
  228. package/dist/{readTranscendYaml-DhKG1ViI.mjs → readTranscendYaml-D-J1ilS0.mjs} +2 -2
  229. package/dist/readTranscendYaml-D-J1ilS0.mjs.map +1 -0
  230. package/dist/removeUnverifiedRequestIdentifiers-pGGOFbfE.mjs +35 -0
  231. package/dist/removeUnverifiedRequestIdentifiers-pGGOFbfE.mjs.map +1 -0
  232. package/dist/request-CAsR6CMY.mjs +117 -0
  233. package/dist/request-CAsR6CMY.mjs.map +1 -0
  234. package/dist/retryRequestDataSilos-DXwN5uPw.mjs +2 -0
  235. package/dist/retryRequestDataSilos-DXwN5uPw.mjs.map +1 -0
  236. package/dist/skipPreflightJobs-BNQhuPZ8.mjs +2 -0
  237. package/dist/skipPreflightJobs-BNQhuPZ8.mjs.map +1 -0
  238. package/dist/skipRequestDataSilos-C39ji4lO.mjs +2 -0
  239. package/dist/skipRequestDataSilos-C39ji4lO.mjs.map +1 -0
  240. package/dist/splitCsvToList-BRq_CIfd.mjs +2 -0
  241. package/dist/splitCsvToList-BRq_CIfd.mjs.map +1 -0
  242. package/dist/streamPrivacyRequestsToCsv-C8lquiyd.mjs +2 -0
  243. package/dist/streamPrivacyRequestsToCsv-C8lquiyd.mjs.map +1 -0
  244. package/dist/syncCodePackages-BHgjfXCI.mjs +232 -0
  245. package/dist/syncCodePackages-BHgjfXCI.mjs.map +1 -0
  246. package/dist/syncCookies-CiLtxDFf.mjs +2 -0
  247. package/dist/syncCookies-CiLtxDFf.mjs.map +1 -0
  248. package/dist/syncDataFlows-DmBUs3G_.mjs +2 -0
  249. package/dist/syncDataFlows-DmBUs3G_.mjs.map +1 -0
  250. package/dist/syncTemplates-BNu1_dmW.mjs +23 -0
  251. package/dist/syncTemplates-BNu1_dmW.mjs.map +1 -0
  252. package/dist/time-Bl_c3W8U.mjs +2 -0
  253. package/dist/time-Bl_c3W8U.mjs.map +1 -0
  254. package/dist/types-B4CVJCpj.mjs +2 -0
  255. package/dist/types-B4CVJCpj.mjs.map +1 -0
  256. package/dist/updateConsentManagerVersionToLatest-BBMN94Hs.mjs +2 -0
  257. package/dist/updateConsentManagerVersionToLatest-BBMN94Hs.mjs.map +1 -0
  258. package/dist/uploadConsents-BbR7_sSt.mjs +2 -0
  259. package/dist/uploadConsents-BbR7_sSt.mjs.map +1 -0
  260. package/dist/uploadCookiesFromCsv-BKZx_E_2.mjs +2 -0
  261. package/dist/uploadCookiesFromCsv-BKZx_E_2.mjs.map +1 -0
  262. package/dist/uploadDataFlowsFromCsv-CJFVLvCJ.mjs +2 -0
  263. package/dist/uploadDataFlowsFromCsv-CJFVLvCJ.mjs.map +1 -0
  264. package/dist/uploadPrivacyRequestsFromCsv-BmP1JluQ.mjs +17 -0
  265. package/dist/uploadPrivacyRequestsFromCsv-BmP1JluQ.mjs.map +1 -0
  266. package/dist/uploadSiloDiscoveryResults-XpDp2u35.mjs +20 -0
  267. package/dist/uploadSiloDiscoveryResults-XpDp2u35.mjs.map +1 -0
  268. package/dist/validateTranscendAuth-1W1IylqE.mjs +2 -0
  269. package/dist/validateTranscendAuth-1W1IylqE.mjs.map +1 -0
  270. package/dist/withPreferenceRetry-Cb5S310L.mjs +2 -0
  271. package/dist/withPreferenceRetry-Cb5S310L.mjs.map +1 -0
  272. package/dist/writeCsv-B51ulrVl.mjs +6 -0
  273. package/dist/writeCsv-B51ulrVl.mjs.map +1 -0
  274. package/package.json +34 -53
  275. package/dist/api-keys-C7JLTDUZ.mjs +0 -2
  276. package/dist/api-keys-C7JLTDUZ.mjs.map +0 -1
  277. package/dist/app-Dti3qTxV.mjs +0 -131
  278. package/dist/app-Dti3qTxV.mjs.map +0 -1
  279. package/dist/buildAIIntegrationType-Bk0EbFKV.mjs +0 -2
  280. package/dist/buildAIIntegrationType-Bk0EbFKV.mjs.map +0 -1
  281. package/dist/code-scanning-3tLsE1W5.mjs +0 -4
  282. package/dist/code-scanning-3tLsE1W5.mjs.map +0 -1
  283. package/dist/codecs-TR6p48v3.mjs +0 -2
  284. package/dist/codecs-TR6p48v3.mjs.map +0 -1
  285. package/dist/command-BlHM1nCd.mjs.map +0 -1
  286. package/dist/consent-manager-BoaaMjRQ.mjs +0 -12
  287. package/dist/consent-manager-BoaaMjRQ.mjs.map +0 -1
  288. package/dist/constants-DdeeX81W.mjs +0 -2
  289. package/dist/constants-DdeeX81W.mjs.map +0 -1
  290. package/dist/context-bkKpii_t.mjs.map +0 -1
  291. package/dist/cron-DOicA1l8.mjs +0 -2
  292. package/dist/cron-DOicA1l8.mjs.map +0 -1
  293. package/dist/data-inventory-OeEcogPl.mjs +0 -75
  294. package/dist/data-inventory-OeEcogPl.mjs.map +0 -1
  295. package/dist/dataFlowsToDataSilos-RAhfPV0l.mjs.map +0 -1
  296. package/dist/impl--Ov8Om49.mjs +0 -2
  297. package/dist/impl--Ov8Om49.mjs.map +0 -1
  298. package/dist/impl-4BP7gY61.mjs +0 -2
  299. package/dist/impl-4BP7gY61.mjs.map +0 -1
  300. package/dist/impl-B0d5M861.mjs +0 -2
  301. package/dist/impl-B0d5M861.mjs.map +0 -1
  302. package/dist/impl-B40z0Aoz2.mjs +0 -2
  303. package/dist/impl-B40z0Aoz2.mjs.map +0 -1
  304. package/dist/impl-B8CoAX4t.mjs +0 -2
  305. package/dist/impl-B8CoAX4t.mjs.map +0 -1
  306. package/dist/impl-BDKBhSiG2.mjs +0 -2
  307. package/dist/impl-BDKBhSiG2.mjs.map +0 -1
  308. package/dist/impl-BEzyqD_12.mjs +0 -2
  309. package/dist/impl-BEzyqD_12.mjs.map +0 -1
  310. package/dist/impl-BI4zCNs0.mjs +0 -2
  311. package/dist/impl-BI4zCNs0.mjs.map +0 -1
  312. package/dist/impl-BJ9Ge6Wf2.mjs +0 -2
  313. package/dist/impl-BJ9Ge6Wf2.mjs.map +0 -1
  314. package/dist/impl-BPz3SpXo2.mjs +0 -2
  315. package/dist/impl-BPz3SpXo2.mjs.map +0 -1
  316. package/dist/impl-BYBNi68b.mjs.map +0 -1
  317. package/dist/impl-Bh04BLeU2.mjs +0 -2
  318. package/dist/impl-Bh04BLeU2.mjs.map +0 -1
  319. package/dist/impl-BhMd6_J22.mjs +0 -2
  320. package/dist/impl-BhMd6_J22.mjs.map +0 -1
  321. package/dist/impl-BiWrlucD.mjs +0 -2
  322. package/dist/impl-BiWrlucD.mjs.map +0 -1
  323. package/dist/impl-BpMKYqSR.mjs +0 -2
  324. package/dist/impl-BpMKYqSR.mjs.map +0 -1
  325. package/dist/impl-BraVBCrF2.mjs +0 -4
  326. package/dist/impl-BraVBCrF2.mjs.map +0 -1
  327. package/dist/impl-BvTvjK72.mjs +0 -2
  328. package/dist/impl-BvTvjK72.mjs.map +0 -1
  329. package/dist/impl-BvZai1Pf2.mjs +0 -2
  330. package/dist/impl-BvZai1Pf2.mjs.map +0 -1
  331. package/dist/impl-C73Uh2Ze.mjs +0 -2
  332. package/dist/impl-C73Uh2Ze.mjs.map +0 -1
  333. package/dist/impl-CIJ6P1GD.mjs.map +0 -1
  334. package/dist/impl-CNiEzL3_2.mjs +0 -2
  335. package/dist/impl-CNiEzL3_2.mjs.map +0 -1
  336. package/dist/impl-CTPHR7O62.mjs +0 -2
  337. package/dist/impl-CTPHR7O62.mjs.map +0 -1
  338. package/dist/impl-CU29SrJb2.mjs +0 -2
  339. package/dist/impl-CU29SrJb2.mjs.map +0 -1
  340. package/dist/impl-CaTnsoDi.mjs +0 -2
  341. package/dist/impl-CaTnsoDi.mjs.map +0 -1
  342. package/dist/impl-CiQeM677.mjs +0 -2
  343. package/dist/impl-CiQeM677.mjs.map +0 -1
  344. package/dist/impl-CkY0wfCz.mjs +0 -2
  345. package/dist/impl-CkY0wfCz.mjs.map +0 -1
  346. package/dist/impl-CoZhgLjC.mjs +0 -12
  347. package/dist/impl-CoZhgLjC.mjs.map +0 -1
  348. package/dist/impl-CvxsioT4.mjs +0 -2
  349. package/dist/impl-CvxsioT4.mjs.map +0 -1
  350. package/dist/impl-D2HalFgB2.mjs +0 -2
  351. package/dist/impl-D2HalFgB2.mjs.map +0 -1
  352. package/dist/impl-DFNq8PBe.mjs +0 -2
  353. package/dist/impl-DFNq8PBe.mjs.map +0 -1
  354. package/dist/impl-DOgLpdLw.mjs +0 -2
  355. package/dist/impl-DOgLpdLw.mjs.map +0 -1
  356. package/dist/impl-DP757pBT.mjs +0 -2
  357. package/dist/impl-DP757pBT.mjs.map +0 -1
  358. package/dist/impl-DVDN007x.mjs +0 -2
  359. package/dist/impl-DVDN007x.mjs.map +0 -1
  360. package/dist/impl-DfKI4fmI.mjs +0 -2
  361. package/dist/impl-DfKI4fmI.mjs.map +0 -1
  362. package/dist/impl-DgsWGnhH.mjs +0 -2
  363. package/dist/impl-DgsWGnhH.mjs.map +0 -1
  364. package/dist/impl-DzSmriDw.mjs +0 -2
  365. package/dist/impl-DzSmriDw.mjs.map +0 -1
  366. package/dist/impl-EhTHDCC1.mjs +0 -2
  367. package/dist/impl-EhTHDCC1.mjs.map +0 -1
  368. package/dist/impl-J-dQqTZJ2.mjs +0 -2
  369. package/dist/impl-J-dQqTZJ2.mjs.map +0 -1
  370. package/dist/impl-SxwaNC4m2.mjs +0 -2
  371. package/dist/impl-SxwaNC4m2.mjs.map +0 -1
  372. package/dist/impl-fESuqAH1.mjs +0 -2
  373. package/dist/impl-fESuqAH1.mjs.map +0 -1
  374. package/dist/impl-gYrR3kIh.mjs +0 -4
  375. package/dist/impl-gYrR3kIh.mjs.map +0 -1
  376. package/dist/impl-iwjvzA7a.mjs +0 -2
  377. package/dist/impl-iwjvzA7a.mjs.map +0 -1
  378. package/dist/impl-nKY3m-Vx.mjs +0 -2
  379. package/dist/impl-nKY3m-Vx.mjs.map +0 -1
  380. package/dist/impl-qiK6VF4F2.mjs +0 -2
  381. package/dist/impl-qiK6VF4F2.mjs.map +0 -1
  382. package/dist/manual-enrichment-CYoZNBjO.mjs +0 -2
  383. package/dist/manual-enrichment-CYoZNBjO.mjs.map +0 -1
  384. package/dist/mergeTranscendInputs-Coj_e2N3.mjs +0 -2
  385. package/dist/mergeTranscendInputs-Coj_e2N3.mjs.map +0 -1
  386. package/dist/pooling-BkZAO1Zs.mjs.map +0 -1
  387. package/dist/preference-management-BHj26bmE.mjs +0 -7
  388. package/dist/preference-management-BHj26bmE.mjs.map +0 -1
  389. package/dist/readTranscendYaml-DhKG1ViI.mjs.map +0 -1
  390. package/dist/syncConfigurationToTranscend-wWSbGVrI.mjs +0 -3010
  391. package/dist/syncConfigurationToTranscend-wWSbGVrI.mjs.map +0 -1
  392. package/dist/uploadConsents-nsjKy1I4.mjs +0 -2
  393. package/dist/uploadConsents-nsjKy1I4.mjs.map +0 -1
@@ -0,0 +1,302 @@
1
+ import{gql as e}from"graphql-request";const t=e`
2
+ query TranscendCliDataPoints($filterBy: DataPointFiltersInput, $first: Int!, $offset: Int!) {
3
+ dataPoints(
4
+ filterBy: $filterBy
5
+ first: $first
6
+ offset: $offset
7
+ useMaster: false
8
+ orderBy: [{ field: createdAt, direction: ASC }, { field: name, direction: ASC }]
9
+ ) {
10
+ nodes {
11
+ id
12
+ title {
13
+ defaultMessage
14
+ }
15
+ description {
16
+ defaultMessage
17
+ }
18
+ owners {
19
+ email
20
+ }
21
+ teams {
22
+ name
23
+ }
24
+ name
25
+ path
26
+ actionSettings {
27
+ type
28
+ active
29
+ }
30
+ dataCollection {
31
+ title {
32
+ defaultMessage
33
+ }
34
+ }
35
+ dbIntegrationQueries {
36
+ query
37
+ suggestedQuery
38
+ requestType
39
+ }
40
+ }
41
+ }
42
+ }
43
+ `,n=e`
44
+ query TranscendCliDataPointCount($filterBy: DataPointFiltersInput) {
45
+ dataPoints(filterBy: $filterBy, useMaster: false) {
46
+ totalCount
47
+ }
48
+ }
49
+ `,r=e`
50
+ query TranscendCliSubDataPoints(
51
+ $filterBy: SubDataPointFiltersInput
52
+ $first: Int!
53
+ $offset: Int!
54
+ ) {
55
+ subDataPoints(filterBy: $filterBy, first: $first, offset: $offset, useMaster: false) {
56
+ nodes {
57
+ id
58
+ name
59
+ description
60
+ purposes {
61
+ name
62
+ purpose
63
+ }
64
+ categories {
65
+ name
66
+ category
67
+ }
68
+ accessRequestVisibilityEnabled
69
+ erasureRequestRedactionEnabled
70
+ attributeValues {
71
+ attributeKey {
72
+ name
73
+ }
74
+ name
75
+ }
76
+ }
77
+ }
78
+ }
79
+ `,i=e`
80
+ query TranscendCliSubDataPointsCount($filterBy: SubDataPointFiltersInput) {
81
+ subDataPoints(filterBy: $filterBy, useMaster: false) {
82
+ totalCount
83
+ }
84
+ }
85
+ `,a=e`
86
+ query TranscendCliSubDataPointGuesses(
87
+ $filterBy: SubDataPointFiltersInput
88
+ $first: Int!
89
+ $offset: Int!
90
+ ) {
91
+ subDataPoints(filterBy: $filterBy, first: $first, offset: $offset, useMaster: false) {
92
+ nodes {
93
+ id
94
+ name
95
+ description
96
+ purposes {
97
+ name
98
+ purpose
99
+ }
100
+ categories {
101
+ name
102
+ category
103
+ }
104
+ pendingCategoryGuesses {
105
+ category {
106
+ name
107
+ category
108
+ }
109
+ status
110
+ confidence
111
+ classifierVersion
112
+ }
113
+ accessRequestVisibilityEnabled
114
+ erasureRequestRedactionEnabled
115
+ attributeValues {
116
+ attributeKey {
117
+ name
118
+ }
119
+ name
120
+ }
121
+ }
122
+ }
123
+ }
124
+ `,o=e`
125
+ mutation TranscendCliUpdateOrCreateDataPoint(
126
+ $dataSiloId: ID!
127
+ $name: String!
128
+ $path: [String!]
129
+ $title: String
130
+ $description: String
131
+ $ownerIds: [ID!]
132
+ $ownerEmails: [String!]
133
+ $teamNames: [String!]
134
+ $teamIds: [ID!]
135
+ $dataCollectionTag: String
136
+ $querySuggestions: [DbIntegrationQuerySuggestionInput!]
137
+ $enabledActions: [RequestActionObjectResolver!]
138
+ $subDataPoints: [DataPointSubDataPointInput!]
139
+ ) {
140
+ updateOrCreateDataPoint(
141
+ input: {
142
+ dataSiloId: $dataSiloId
143
+ name: $name
144
+ path: $path
145
+ title: $title
146
+ teamNames: $teamNames
147
+ ownerEmails: $ownerEmails
148
+ dataCollectionTag: $dataCollectionTag
149
+ description: $description
150
+ ownerIds: $ownerIds
151
+ teamIds: $teamIds
152
+ querySuggestions: $querySuggestions
153
+ enabledActions: $enabledActions
154
+ subDataPoints: $subDataPoints
155
+ }
156
+ ) {
157
+ dataPoint {
158
+ id
159
+ name
160
+ }
161
+ }
162
+ }
163
+ `,s=e`
164
+ query TranscendCliDataPointCsvExport($filterBy: DataPointFiltersInput, $first: Int!) {
165
+ dataPoints(filterBy: $filterBy, first: $first, useMaster: false) {
166
+ nodes {
167
+ id
168
+ title {
169
+ defaultMessage
170
+ }
171
+ description {
172
+ defaultMessage
173
+ }
174
+ owners {
175
+ email
176
+ }
177
+ teams {
178
+ name
179
+ }
180
+ name
181
+ path
182
+ }
183
+ }
184
+ }
185
+ `,c=e`
186
+ query TranscendCliDataSilos($filterBy: DataSiloFiltersInput!, $first: Int!, $offset: Int!) {
187
+ dataSilos(
188
+ filterBy: $filterBy
189
+ first: $first
190
+ offset: $offset
191
+ orderBy: [{ field: createdAt, direction: ASC }, { field: title, direction: ASC }]
192
+ useMaster: false
193
+ ) {
194
+ nodes {
195
+ id
196
+ title
197
+ link
198
+ type
199
+ catalog {
200
+ hasAvcFunctionality
201
+ }
202
+ }
203
+ }
204
+ }
205
+ `,l=e`
206
+ query TranscendCliDataSiloExport($filterBy: DataSiloFiltersInput!, $first: Int!) {
207
+ dataSilos(filterBy: $filterBy, first: $first, useMaster: false) {
208
+ nodes {
209
+ id
210
+ title
211
+ }
212
+ }
213
+ }
214
+ `,u=e`
215
+ query TranscendCliDataSilosEnriched(
216
+ $filterBy: DataSiloFiltersInput!
217
+ $first: Int!
218
+ $offset: Int!
219
+ ) {
220
+ dataSilos(
221
+ filterBy: $filterBy
222
+ first: $first
223
+ offset: $offset
224
+ orderBy: [{ field: createdAt, direction: ASC }, { field: title, direction: ASC }]
225
+ useMaster: false
226
+ ) {
227
+ nodes {
228
+ id
229
+ title
230
+ description
231
+ type
232
+ outerType
233
+ link
234
+ country
235
+ countrySubDivision
236
+ url
237
+ notifyEmailAddress
238
+ attributeValues {
239
+ attributeKey {
240
+ name
241
+ }
242
+ name
243
+ }
244
+ apiKeys {
245
+ title
246
+ }
247
+ subjectBlocklist {
248
+ type
249
+ }
250
+ identifiers {
251
+ name
252
+ isConnected
253
+ }
254
+ dependentDataSilos {
255
+ title
256
+ }
257
+ owners {
258
+ email
259
+ }
260
+ teams {
261
+ id
262
+ name
263
+ }
264
+ catalog {
265
+ hasAvcFunctionality
266
+ }
267
+ isLive
268
+ promptAVendorEmailSendFrequency
269
+ promptAVendorEmailSendType
270
+ promptAVendorEmailIncludeIdentifiersAttachment
271
+ promptAVendorEmailCompletionLinkType
272
+ manualWorkRetryFrequency
273
+ discoveredBy {
274
+ title
275
+ }
276
+ businessEntities {
277
+ title
278
+ }
279
+ }
280
+ }
281
+ }
282
+ `,d=e`
283
+ mutation TranscendCliUpdateDataSilo($input: UpdateDataSilosInput!) {
284
+ updateDataSilos(input: $input) {
285
+ clientMutationId
286
+ dataSilos {
287
+ id
288
+ title
289
+ }
290
+ }
291
+ }
292
+ `,f=e`
293
+ mutation TranscendCliCreateDataSilo($input: [CreateDataSilosInput!]!) {
294
+ createDataSilos(input: $input) {
295
+ dataSilos {
296
+ id
297
+ title
298
+ }
299
+ }
300
+ }
301
+ `;export{d as a,n as c,a as d,o as f,l as i,r as l,c as n,s as o,u as r,t as s,f as t,i as u};
302
+ //# sourceMappingURL=dataSilo-DrFetFXw.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataSilo-DrFetFXw.mjs","names":[],"sources":["../src/lib/graphql/gqls/dataPoint.ts","../src/lib/graphql/gqls/dataSilo.ts"],"sourcesContent":["import { gql } from 'graphql-request';\n\n// TODO: https://transcend.height.app/T-27909 - enable optimizations\n// isExportCsv: true\nexport const DATA_POINTS = gql`\n query TranscendCliDataPoints($filterBy: DataPointFiltersInput, $first: Int!, $offset: Int!) {\n dataPoints(\n filterBy: $filterBy\n first: $first\n offset: $offset\n useMaster: false\n orderBy: [{ field: createdAt, direction: ASC }, { field: name, direction: ASC }]\n ) {\n nodes {\n id\n title {\n defaultMessage\n }\n description {\n defaultMessage\n }\n owners {\n email\n }\n teams {\n name\n }\n name\n path\n actionSettings {\n type\n active\n }\n dataCollection {\n title {\n defaultMessage\n }\n }\n dbIntegrationQueries {\n query\n suggestedQuery\n requestType\n }\n }\n }\n }\n`;\n\n// TODO: https://transcend.height.app/T-27909 - enable optimizations\n// isExportCsv: true\nexport const DATA_POINT_COUNT = gql`\n query TranscendCliDataPointCount($filterBy: DataPointFiltersInput) {\n dataPoints(filterBy: $filterBy, useMaster: false) {\n totalCount\n }\n }\n`;\n\n// TODO: https://transcend.height.app/T-27909 - add orderBy\n// isExportCsv: true\nexport const SUB_DATA_POINTS = gql`\n query TranscendCliSubDataPoints(\n $filterBy: SubDataPointFiltersInput\n $first: Int!\n $offset: Int!\n ) {\n subDataPoints(filterBy: $filterBy, first: $first, offset: $offset, useMaster: false) {\n nodes {\n id\n name\n description\n purposes {\n name\n purpose\n }\n categories {\n name\n category\n }\n accessRequestVisibilityEnabled\n erasureRequestRedactionEnabled\n attributeValues {\n attributeKey {\n name\n }\n name\n }\n }\n }\n }\n`;\n\nexport const SUB_DATA_POINTS_COUNT = gql`\n query TranscendCliSubDataPointsCount($filterBy: SubDataPointFiltersInput) {\n subDataPoints(filterBy: $filterBy, useMaster: false) {\n totalCount\n }\n }\n`;\n\nexport const SUB_DATA_POINTS_WITH_GUESSES = gql`\n query TranscendCliSubDataPointGuesses(\n $filterBy: SubDataPointFiltersInput\n $first: Int!\n $offset: Int!\n ) {\n subDataPoints(filterBy: $filterBy, first: $first, offset: $offset, useMaster: false) {\n nodes {\n id\n name\n description\n purposes {\n name\n purpose\n }\n categories {\n name\n category\n }\n pendingCategoryGuesses {\n category {\n name\n category\n }\n status\n confidence\n classifierVersion\n }\n accessRequestVisibilityEnabled\n erasureRequestRedactionEnabled\n attributeValues {\n attributeKey {\n name\n }\n name\n }\n }\n }\n }\n`;\n\nexport const UPDATE_OR_CREATE_DATA_POINT = gql`\n mutation TranscendCliUpdateOrCreateDataPoint(\n $dataSiloId: ID!\n $name: String!\n $path: [String!]\n $title: String\n $description: String\n $ownerIds: [ID!]\n $ownerEmails: [String!]\n $teamNames: [String!]\n $teamIds: [ID!]\n $dataCollectionTag: String\n $querySuggestions: [DbIntegrationQuerySuggestionInput!]\n $enabledActions: [RequestActionObjectResolver!]\n $subDataPoints: [DataPointSubDataPointInput!]\n ) {\n updateOrCreateDataPoint(\n input: {\n dataSiloId: $dataSiloId\n name: $name\n path: $path\n title: $title\n teamNames: $teamNames\n ownerEmails: $ownerEmails\n dataCollectionTag: $dataCollectionTag\n description: $description\n ownerIds: $ownerIds\n teamIds: $teamIds\n querySuggestions: $querySuggestions\n enabledActions: $enabledActions\n subDataPoints: $subDataPoints\n }\n ) {\n dataPoint {\n id\n name\n }\n }\n }\n`;\n\nexport const DATAPOINT_EXPORT = gql`\n query TranscendCliDataPointCsvExport($filterBy: DataPointFiltersInput, $first: Int!) {\n dataPoints(filterBy: $filterBy, first: $first, useMaster: false) {\n nodes {\n id\n title {\n defaultMessage\n }\n description {\n defaultMessage\n }\n owners {\n email\n }\n teams {\n name\n }\n name\n path\n }\n }\n }\n`;\n","import { gql } from 'graphql-request';\n\n// TODO: https://transcend.height.app/T-27909 - enable optimizations\n// isExportCsv: true\nexport const DATA_SILOS = gql`\n query TranscendCliDataSilos($filterBy: DataSiloFiltersInput!, $first: Int!, $offset: Int!) {\n dataSilos(\n filterBy: $filterBy\n first: $first\n offset: $offset\n orderBy: [{ field: createdAt, direction: ASC }, { field: title, direction: ASC }]\n useMaster: false\n ) {\n nodes {\n id\n title\n link\n type\n catalog {\n hasAvcFunctionality\n }\n }\n }\n }\n`;\n\n// TODO: https://transcend.height.app/T-27909 - enable optimizations\n// isExportCsv: true\nexport const DATA_SILO_EXPORT = gql`\n query TranscendCliDataSiloExport($filterBy: DataSiloFiltersInput!, $first: Int!) {\n dataSilos(filterBy: $filterBy, first: $first, useMaster: false) {\n nodes {\n id\n title\n }\n }\n }\n`;\n\n// TODO: https://transcend.height.app/T-27909 - enable optimizations\n// isExportCsv: true\nexport const DATA_SILOS_ENRICHED = gql`\n query TranscendCliDataSilosEnriched(\n $filterBy: DataSiloFiltersInput!\n $first: Int!\n $offset: Int!\n ) {\n dataSilos(\n filterBy: $filterBy\n first: $first\n offset: $offset\n orderBy: [{ field: createdAt, direction: ASC }, { field: title, direction: ASC }]\n useMaster: false\n ) {\n nodes {\n id\n title\n description\n type\n outerType\n link\n country\n countrySubDivision\n url\n notifyEmailAddress\n attributeValues {\n attributeKey {\n name\n }\n name\n }\n apiKeys {\n title\n }\n subjectBlocklist {\n type\n }\n identifiers {\n name\n isConnected\n }\n dependentDataSilos {\n title\n }\n owners {\n email\n }\n teams {\n id\n name\n }\n catalog {\n hasAvcFunctionality\n }\n isLive\n promptAVendorEmailSendFrequency\n promptAVendorEmailSendType\n promptAVendorEmailIncludeIdentifiersAttachment\n promptAVendorEmailCompletionLinkType\n manualWorkRetryFrequency\n discoveredBy {\n title\n }\n businessEntities {\n title\n }\n }\n }\n }\n`;\n\nexport const UPDATE_DATA_SILOS = gql`\n mutation TranscendCliUpdateDataSilo($input: UpdateDataSilosInput!) {\n updateDataSilos(input: $input) {\n clientMutationId\n dataSilos {\n id\n title\n }\n }\n }\n`;\n\nexport const CREATE_DATA_SILOS = gql`\n mutation TranscendCliCreateDataSilo($input: [CreateDataSilosInput!]!) {\n createDataSilos(input: $input) {\n dataSilos {\n id\n title\n }\n }\n }\n`;\n"],"mappings":"sCAIA,MAAa,EAAc,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8CjB,EAAmB,CAAG;;;;;;EAUtB,EAAkB,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgCrB,EAAwB,CAAG;;;;;;EAQ3B,EAA+B,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyClC,EAA8B,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyCjC,EAAmB,CAAG;;;;;;;;;;;;;;;;;;;;;;EClLtB,EAAa,CAAG;;;;;;;;;;;;;;;;;;;;EAwBhB,EAAmB,CAAG;;;;;;;;;EAatB,EAAsB,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsEzB,EAAoB,CAAG;;;;;;;;;;EAYvB,EAAoB,CAAG"}
@@ -0,0 +1,92 @@
1
+ import{gql as e}from"graphql-request";const t=e`
2
+ query TranscendCliEnrichers($title: String, $first: Int!, $offset: Int!) {
3
+ enrichers(
4
+ filterBy: { text: $title }
5
+ first: $first
6
+ offset: $offset
7
+ useMaster: false
8
+ orderBy: [{ field: createdAt, direction: ASC }, { field: title, direction: ASC }]
9
+ ) {
10
+ nodes {
11
+ id
12
+ title
13
+ url
14
+ type
15
+ expirationDuration
16
+ lookerQueryTitle
17
+ testRegex
18
+ transitionRequestStatus
19
+ phoneNumbers
20
+ regionList
21
+ inputIdentifier {
22
+ name
23
+ }
24
+ identifiers {
25
+ name
26
+ }
27
+ dataSubjects {
28
+ type
29
+ }
30
+ actions
31
+ }
32
+ }
33
+ }
34
+ `,n=e`
35
+ query TranscendCliInitializer {
36
+ initializer {
37
+ id
38
+ identifiers {
39
+ name
40
+ }
41
+ }
42
+ }
43
+ `,r=e`
44
+ mutation TranscendCliCreateEnricher($input: EnricherInput!) {
45
+ createEnricher(input: $input) {
46
+ clientMutationId
47
+ }
48
+ }
49
+ `,i=e`
50
+ mutation TranscendCliUpdateEnricher($input: UpdateEnricherInput!) {
51
+ updateEnricher(input: $input) {
52
+ clientMutationId
53
+ }
54
+ }
55
+ `,a=e`
56
+ query TranscendCliDataSubjects {
57
+ internalSubjects {
58
+ id
59
+ title {
60
+ defaultMessage
61
+ }
62
+ active
63
+ type
64
+ adminDashboardDefaultSilentMode
65
+ actions {
66
+ type
67
+ }
68
+ }
69
+ }
70
+ `,o=e`
71
+ mutation TranscendCliCreateDataSubject($type: String!) {
72
+ createSubject(input: { type: $type, title: $type, subjectClass: OTHER }) {
73
+ subject {
74
+ id
75
+ type
76
+ }
77
+ }
78
+ }
79
+ `,s=e`
80
+ mutation TranscendCliUpdateDataSubject($input: UpdateSubjectInput!) {
81
+ updateSubject(input: $input) {
82
+ clientMutationId
83
+ }
84
+ }
85
+ `,c=e`
86
+ mutation TranscendCliToggleDataSubject($input: ToggleSubjectInput!) {
87
+ toggleSubject(input: $input) {
88
+ clientMutationId
89
+ }
90
+ }
91
+ `;export{r as a,i as c,s as i,a as n,t as o,c as r,n as s,o as t};
92
+ //# sourceMappingURL=dataSubject-y_aXI0pa.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataSubject-y_aXI0pa.mjs","names":[],"sources":["../src/lib/graphql/gqls/enricher.ts","../src/lib/graphql/gqls/dataSubject.ts"],"sourcesContent":["import { gql } from 'graphql-request';\n\n// TODO: https://transcend.height.app/T-27909 - enable optimizations\n// isExportCsv: true\nexport const ENRICHERS = gql`\n query TranscendCliEnrichers($title: String, $first: Int!, $offset: Int!) {\n enrichers(\n filterBy: { text: $title }\n first: $first\n offset: $offset\n useMaster: false\n orderBy: [{ field: createdAt, direction: ASC }, { field: title, direction: ASC }]\n ) {\n nodes {\n id\n title\n url\n type\n expirationDuration\n lookerQueryTitle\n testRegex\n transitionRequestStatus\n phoneNumbers\n regionList\n inputIdentifier {\n name\n }\n identifiers {\n name\n }\n dataSubjects {\n type\n }\n actions\n }\n }\n }\n`;\n\nexport interface Initializer {\n /** ID of enricher */\n id: string;\n /** Identifiers */\n identifiers: {\n /** Name of identifier */\n name: string;\n }[];\n}\n\nexport const INITIALIZER = gql`\n query TranscendCliInitializer {\n initializer {\n id\n identifiers {\n name\n }\n }\n }\n`;\n\nexport const CREATE_ENRICHER = gql`\n mutation TranscendCliCreateEnricher($input: EnricherInput!) {\n createEnricher(input: $input) {\n clientMutationId\n }\n }\n`;\n\nexport const UPDATE_ENRICHER = gql`\n mutation TranscendCliUpdateEnricher($input: UpdateEnricherInput!) {\n updateEnricher(input: $input) {\n clientMutationId\n }\n }\n`;\n","import { gql } from 'graphql-request';\n\nexport const DATA_SUBJECTS = gql`\n query TranscendCliDataSubjects {\n internalSubjects {\n id\n title {\n defaultMessage\n }\n active\n type\n adminDashboardDefaultSilentMode\n actions {\n type\n }\n }\n }\n`;\n\nexport const CREATE_DATA_SUBJECT = gql`\n mutation TranscendCliCreateDataSubject($type: String!) {\n createSubject(input: { type: $type, title: $type, subjectClass: OTHER }) {\n subject {\n id\n type\n }\n }\n }\n`;\n\nexport const UPDATE_DATA_SUBJECT = gql`\n mutation TranscendCliUpdateDataSubject($input: UpdateSubjectInput!) {\n updateSubject(input: $input) {\n clientMutationId\n }\n }\n`;\n\nexport const TOGGLE_DATA_SUBJECT = gql`\n mutation TranscendCliToggleDataSubject($input: ToggleSubjectInput!) {\n toggleSubject(input: $input) {\n clientMutationId\n }\n }\n`;\n"],"mappings":"sCAIA,MAAa,EAAY,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6Cf,EAAc,CAAG;;;;;;;;;EAWjB,EAAkB,CAAG;;;;;;EAQrB,EAAkB,CAAG;;;;;;EClErB,EAAgB,CAAG;;;;;;;;;;;;;;;EAiBnB,EAAsB,CAAG;;;;;;;;;EAWzB,EAAsB,CAAG;;;;;;EAQzB,EAAsB,CAAG"}
@@ -1,2 +1,2 @@
1
1
  function e(e){process.env.DEVELOPMENT_MODE_VALIDATE_ONLY===`true`&&e(0)}export{e as t};
2
- //# sourceMappingURL=done-input-validation-CcZtaz03.mjs.map
2
+ //# sourceMappingURL=done-input-validation-DLR0-MJ7.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"done-input-validation-CcZtaz03.mjs","names":[],"sources":["../src/lib/cli/done-input-validation.ts"],"sourcesContent":["/**\n * If the environment variable `DEVELOPMENT_MODE_VALIDATE_ONLY` is set,\n * this function will exit the process with a status code of 0.\n *\n * This is useful for development mode, where we want to validate the\n * command flags without actually running the command.\n *\n * This should be called after input validation, and must be agnostic to the environment (e.g., the existence of a file on the file system)\n *\n * @param exit - The function to exit the process.\n */\nexport function doneInputValidation(exit: (code?: number) => void): void {\n if (process.env.DEVELOPMENT_MODE_VALIDATE_ONLY === 'true') {\n exit(0);\n }\n}\n"],"mappings":"AAWA,SAAgB,EAAoB,EAAqC,CACnE,QAAQ,IAAI,iCAAmC,QACjD,EAAK,EAAE"}
1
+ {"version":3,"file":"done-input-validation-DLR0-MJ7.mjs","names":[],"sources":["../src/lib/cli/done-input-validation.ts"],"sourcesContent":["/**\n * If the environment variable `DEVELOPMENT_MODE_VALIDATE_ONLY` is set,\n * this function will exit the process with a status code of 0.\n *\n * This is useful for development mode, where we want to validate the\n * command flags without actually running the command.\n *\n * This should be called after input validation, and must be agnostic to the environment (e.g., the existence of a file on the file system)\n *\n * @param exit - The function to exit the process.\n */\nexport function doneInputValidation(exit: (code?: number) => void): void {\n if (process.env.DEVELOPMENT_MODE_VALIDATE_ONLY === 'true') {\n exit(0);\n }\n}\n"],"mappings":"AAWA,SAAgB,EAAoB,EAAqC,CACnE,QAAQ,IAAI,iCAAmC,QACjD,EAAK,EAAE"}
@@ -0,0 +1,2 @@
1
+ import{a as e}from"./constants-CeMiHaHx.mjs";import{t}from"./logger-B-LXIf3U.mjs";import{t as n}from"./bluebird-CUitXgsY.mjs";import{t as r}from"./createSombraGotInstance-CahOgD6V.mjs";import{t as i}from"./request-CAsR6CMY.mjs";import{r as a,t as o}from"./makeGraphQLRequest-G078PsEL.mjs";import{r as s}from"./fetchAllRequests-DEPTEUbi.mjs";import{RequestAction as c,RequestStatus as l,TableEncryptionType as u}from"@transcend-io/privacy-types";import{decodeCodec as d,valuesOf as f}from"@transcend-io/type-utils";import{existsSync as p,mkdirSync as m,writeFileSync as h}from"node:fs";import{dirname as g,join as _}from"node:path";import v from"colors";import*as y from"io-ts";import b from"cli-progress";const x=y.type({defaultMessage:y.string,id:y.string}),S=y.type({downloadKey:y.string,error:y.union([y.null,y.string]),mimetype:y.string,size:y.string,fileName:y.string,dataPoint:y.type({id:y.string,title:y.union([x,y.null]),description:y.union([x,y.null]),name:y.string,slug:y.string,encryption:y.union([f(u),y.null]),dataSilo:y.type({id:y.string,title:y.string,description:y.string,type:y.string,outerType:y.union([y.string,y.null])}),path:y.array(y.string)})}),C=y.type({nodes:y.array(S),totalCount:y.number,_links:y.partial({next:y.union([y.string,y.null]),previous:y.union([y.string,y.null])})});async function w(e,{sombra:r,concurrency:i=5,limit:a=100}){t.info(v.magenta(`Pulling file metadata for ${e.length} requests`));let o=new Date().getTime(),s=new b.SingleBar({},b.Presets.shades_classic),c=0;s.start(e.length,0);let l=await n(e,async e=>{let t=[],n=!0,i=0;for(;n;){let o;try{o=d(C,await r.get(`v1/data-subject-request/${e.id}/download-keys`,{searchParams:{limit:a,offset:i}}).json()),t.push(...o.nodes),i+=a,n=!!o._links.next&&o.nodes.length===a}catch(e){throw Error(`Received an error from server: ${e?.response?.body||e?.message}`)}}return c+=1,s.update(c),[e,t]},{concurrency:i});s.stop();let u=new Date().getTime()-o;return t.info(v.green(`Successfully downloaded file metadata ${e.length} requests in "${u/1e3}" seconds!`)),l}async function T(e,{requestId:r,sombra:i,onFileDownloaded:a,concurrency:o=20}){await n(e,async e=>{try{await i.get(`v1/files`,{searchParams:{downloadKey:e.downloadKey}}).buffer().then(t=>a(e,t))}catch(n){if(n?.response?.body?.includes(`fileMetadata#verify`)){t.error(v.red(`Failed to pull file for: ${e.fileName} (request:${r}) - JWT expired. This likely means that the file is no longer available. Try restarting the request from scratch in Transcend Admin Dashboard. Skipping the download of this file.`));return}throw Error(`Received an error from server: ${n?.response?.body||n?.message}`)}},{concurrency:o})}async function E({auth:u,folderPath:d,requestIds:f,createdAtBefore:y,sombraAuth:x,createdAtAfter:S,updatedAtBefore:C,updatedAtAfter:E,statuses:D=[l.Approving,l.Downloadable],concurrency:O=5,transcendUrl:k=e,approveAfterDownload:A=!1}){let j=a(k,u),M=await r(k,u,x);p(d)||m(d);let N=await s(j,{actions:[c.Access],createdAtBefore:y,createdAtAfter:S,updatedAtBefore:C,updatedAtAfter:E,statuses:D,requestIds:f}),P=await w(N,{sombra:M,concurrency:O}),F=new Date().getTime(),I=new b.SingleBar({},b.Presets.shades_classic),L=0,R=0;I.start(N.length,0),await n(P,async([e,t])=>{let n=_(d,e.id);p(n)||m(n),await T(t,{sombra:M,requestId:e.id,onFileDownloaded:(e,t)=>{let r=_(n,e.fileName),i=g(r);p(i)||m(i,{recursive:!0}),h(r,t)}}),A&&e.status===l.Approving&&(await o(j,i,{input:{requestId:e.id}}),R+=1),L+=1,I.update(L)},{concurrency:O}),I.stop();let z=new Date().getTime()-F;return t.info(v.green(`Successfully downloaded ${L} requests in "${z/1e3}" seconds!`)),R>0&&t.info(v.green(`Approved ${R} requests in Transcend.`)),N.length}export{C as a,S as i,T as n,w as o,x as r,E as t};
2
+ //# sourceMappingURL=downloadPrivacyRequestFiles-B2yduagB.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"downloadPrivacyRequestFiles-B2yduagB.mjs","names":[],"sources":["../src/lib/requests/getFileMetadataForPrivacyRequests.ts","../src/lib/requests/streamPrivacyRequestFiles.ts","../src/lib/requests/downloadPrivacyRequestFiles.ts"],"sourcesContent":["import { TableEncryptionType } from '@transcend-io/privacy-types';\nimport { decodeCodec, valuesOf } from '@transcend-io/type-utils';\nimport cliProgress from 'cli-progress';\nimport colors from 'colors';\nimport type { Got } from 'got';\nimport * as t from 'io-ts';\n\nimport { logger } from '../../logger.js';\nimport { map } from '../bluebird.js';\nimport { PrivacyRequest } from '../graphql/index.js';\n\nexport const IntlMessage = t.type({\n /** The message key */\n defaultMessage: t.string,\n /** ID */\n id: t.string,\n});\n\n/** Type */\nexport type IntlMessage = t.TypeOf<typeof IntlMessage>;\n\nexport const RequestFileMetadata = t.type({\n /** The key to pass to download the file contents */\n downloadKey: t.string,\n /** Error message related to file */\n error: t.union([t.null, t.string]),\n /** Mimetype of file */\n mimetype: t.string,\n /** Size of file, stored as string as this can be a BigInt */\n size: t.string,\n /** Name of file based on datapoint names in Transcend */\n fileName: t.string,\n /** The metadata on the datapoint */\n dataPoint: t.type({\n /** ID of datapoint */\n id: t.string,\n /** The title of datapoint */\n title: t.union([IntlMessage, t.null]),\n /** Description of datapoint */\n description: t.union([IntlMessage, t.null]),\n /** Name of datapoint */\n name: t.string,\n /** Slug of datapoint */\n slug: t.string,\n /** Table level encryption information */\n encryption: t.union([valuesOf(TableEncryptionType), t.null]),\n /** The name of the data silo */\n dataSilo: t.type({\n /** ID of the data silo */\n id: t.string,\n /** The title of the data silo */\n title: t.string,\n /** The description of the data silo */\n description: t.string,\n /** The type of the data silo */\n type: t.string,\n /** The outer type of the data silo */\n outerType: t.union([t.string, t.null]),\n }),\n /** The path to the datapoint if a database (e.g. name of schema) */\n path: t.array(t.string),\n }),\n});\n\n/** Type override */\nexport type RequestFileMetadata = t.TypeOf<typeof RequestFileMetadata>;\n\nexport const RequestFileMetadataResponse = t.type({\n /** The list of file metadata */\n nodes: t.array(RequestFileMetadata),\n /** The total number of file metadata */\n totalCount: t.number,\n /** Links to next pages */\n _links: t.partial({\n /** The link to the next page of file metadata */\n next: t.union([t.string, t.null]),\n /** The link to the previous page of file metadata */\n previous: t.union([t.string, t.null]),\n }),\n});\n\n/** Type override */\nexport type RequestFileMetadataResponse = t.TypeOf<typeof RequestFileMetadataResponse>;\n\n/**\n * Given a list of privacy requests, download the file metadata\n * for these requests - this is useful to prepare the files in a\n * data access request for download.\n *\n * @param requests - The list of privacy requests to download files for\n * @param options - Options\n * @returns The number of requests canceled\n */\nexport async function getFileMetadataForPrivacyRequests(\n requests: Pick<PrivacyRequest, 'id' | 'status'>[],\n {\n sombra,\n concurrency = 5,\n limit = 100,\n }: {\n /** Sombra instance */\n sombra: Got;\n /** Number of files to pull at once */\n limit?: number;\n /** Concurrency limit for approving */\n concurrency?: number;\n },\n): Promise<[Pick<PrivacyRequest, 'id' | 'status'>, RequestFileMetadata[]][]> {\n logger.info(colors.magenta(`Pulling file metadata for ${requests.length} requests`));\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({}, cliProgress.Presets.shades_classic);\n\n // Start timer\n let total = 0;\n progressBar.start(requests.length, 0);\n\n // Loop over the requests\n const results = await map(\n requests,\n async (\n requestToDownload,\n ): Promise<[Pick<PrivacyRequest, 'id' | 'status'>, RequestFileMetadata[]]> => {\n const localResults: RequestFileMetadata[] = [];\n\n // Paginate over the file metadata for this request\n let shouldContinue = true;\n let offset = 0;\n while (shouldContinue) {\n let response: RequestFileMetadataResponse;\n try {\n // Grab the file metadata for this request\n\n const rawResponse = await sombra\n .get(`v1/data-subject-request/${requestToDownload.id}/download-keys`, {\n searchParams: {\n limit,\n offset,\n },\n })\n .json();\n response = decodeCodec(RequestFileMetadataResponse, rawResponse);\n localResults.push(...response.nodes);\n\n // Increase offset and break if no more pages\n offset += limit;\n shouldContinue =\n // eslint-disable-next-line no-underscore-dangle\n !!response._links.next && response.nodes.length === limit;\n } catch (err) {\n throw new Error(`Received an error from server: ${err?.response?.body || err?.message}`);\n }\n }\n\n total += 1;\n progressBar.update(total);\n return [requestToDownload, localResults];\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 downloaded file metadata ${requests.length} requests in \"${\n totalTime / 1000\n }\" seconds!`,\n ),\n );\n\n return results;\n}\n","import colors from 'colors';\nimport type { Got } from 'got';\n\nimport { logger } from '../../logger.js';\nimport { map } from '../bluebird.js';\nimport { RequestFileMetadata } from './getFileMetadataForPrivacyRequests.js';\n\n/**\n * This function will take in a set of file metadata for privacy requests\n * call the Transcend API to stream the file metadata for these requests\n * and pass that through a callback function\n *\n * @param fileMetadata - Metadata to download\n * @param options - Options for the request\n */\nexport async function streamPrivacyRequestFiles(\n fileMetadata: RequestFileMetadata[],\n {\n requestId,\n sombra,\n onFileDownloaded,\n concurrency = 20,\n }: {\n /** Request ID for logging */\n requestId: string;\n /** Sombra got instance */\n sombra: Got;\n /** Handler on each file */\n onFileDownloaded: (metadata: RequestFileMetadata, stream: Buffer) => void;\n /** Concurrent downloads at once */\n concurrency?: number;\n },\n): Promise<void> {\n // Loop over each file\n await map(\n fileMetadata,\n async (metadata) => {\n try {\n // Construct the stream\n await sombra\n .get('v1/files', {\n searchParams: {\n downloadKey: metadata.downloadKey,\n },\n })\n .buffer()\n .then((fileResponse) => onFileDownloaded(metadata, fileResponse));\n } catch (err) {\n if (err?.response?.body?.includes('fileMetadata#verify')) {\n logger.error(\n colors.red(\n `Failed to pull file for: ${metadata.fileName} (request:${requestId}) - JWT expired. ` +\n 'This likely means that the file is no longer available. ' +\n 'Try restarting the request from scratch in Transcend Admin Dashboard. ' +\n 'Skipping the download of this file.',\n ),\n );\n return;\n }\n throw new Error(`Received an error from server: ${err?.response?.body || err?.message}`);\n }\n },\n {\n concurrency,\n },\n );\n}\n","import { existsSync, mkdirSync, writeFileSync } from 'node:fs';\nimport { dirname, join } from 'node:path';\n\nimport { RequestAction, RequestStatus } from '@transcend-io/privacy-types';\nimport cliProgress from 'cli-progress';\nimport colors from 'colors';\n\nimport { DEFAULT_TRANSCEND_API } from '../../constants.js';\nimport { logger } from '../../logger.js';\nimport { map } from '../bluebird.js';\nimport {\n fetchAllRequests,\n buildTranscendGraphQLClient,\n createSombraGotInstance,\n makeGraphQLRequest,\n APPROVE_PRIVACY_REQUEST,\n} from '../graphql/index.js';\nimport { getFileMetadataForPrivacyRequests } from './getFileMetadataForPrivacyRequests.js';\nimport { streamPrivacyRequestFiles } from './streamPrivacyRequestFiles.js';\n\n/**\n * Download a set of privacy requests to disk\n *\n * @param options - Options\n * @returns The number of requests canceled\n */\nexport async function downloadPrivacyRequestFiles({\n auth,\n folderPath,\n requestIds,\n createdAtBefore,\n sombraAuth,\n createdAtAfter,\n updatedAtBefore,\n updatedAtAfter,\n statuses = [RequestStatus.Approving, RequestStatus.Downloadable],\n concurrency = 5,\n transcendUrl = DEFAULT_TRANSCEND_API,\n approveAfterDownload = false,\n}: {\n /** The folder path to download the files to */\n folderPath: string;\n /** Transcend API key authentication */\n auth: string;\n /** Sombra API key authentication */\n sombraAuth?: string;\n /** Concurrency limit for approving */\n concurrency?: number;\n /** The request statuses to cancel */\n statuses?: RequestStatus[];\n /** The set of privacy requests to cancel */\n requestIds?: string[];\n /** Filter for requests created before this date */\n createdAtBefore?: Date;\n /** Filter for requests created after this date */\n createdAtAfter?: Date;\n /** Filter for requests updated before this date */\n updatedAtBefore?: Date;\n /** Filter for requests updated after this date */\n updatedAtAfter?: Date;\n /** API URL for Transcend backend */\n transcendUrl?: string;\n /** When true, approve any requests in Transcend that are in status=APPROVING */\n approveAfterDownload?: boolean;\n}): Promise<number> {\n // Find all requests made before createdAt that are in a removing data state\n const client = buildTranscendGraphQLClient(transcendUrl, auth);\n\n // Create sombra instance to communicate with\n const sombra = await createSombraGotInstance(transcendUrl, auth, sombraAuth);\n\n // Create the folder if it does not exist\n if (!existsSync(folderPath)) {\n mkdirSync(folderPath);\n }\n\n // Pull in the requests\n const allRequests = await fetchAllRequests(client, {\n actions: [RequestAction.Access],\n createdAtBefore,\n createdAtAfter,\n updatedAtBefore,\n updatedAtAfter,\n statuses,\n requestIds,\n });\n\n // Download the file metadata for each request\n const requestFileMetadata = await getFileMetadataForPrivacyRequests(allRequests, {\n sombra,\n concurrency,\n });\n\n // Start timer for download process\n const t0 = new Date().getTime();\n const progressBar = new cliProgress.SingleBar({}, cliProgress.Presets.shades_classic);\n let total = 0;\n let totalApproved = 0;\n progressBar.start(allRequests.length, 0);\n\n // Download the files for each request\n await map(\n requestFileMetadata,\n async ([request, metadata]) => {\n // Create a new folder to store request files\n const requestFolder = join(folderPath, request.id);\n if (!existsSync(requestFolder)) {\n mkdirSync(requestFolder);\n }\n\n // Stream each file to disk\n await streamPrivacyRequestFiles(metadata, {\n sombra,\n requestId: request.id,\n onFileDownloaded: (fil, stream) => {\n // Ensure a folder exists for the file\n // filename looks like Health/heartbeat.csv\n const filePath = join(requestFolder, fil.fileName);\n const folder = dirname(filePath);\n if (!existsSync(folder)) {\n mkdirSync(folder, { recursive: true });\n }\n\n // Write to disk\n writeFileSync(filePath, stream);\n },\n });\n\n // Approve the request if requested\n if (approveAfterDownload && request.status === RequestStatus.Approving) {\n await makeGraphQLRequest(client, APPROVE_PRIVACY_REQUEST, {\n input: { requestId: request.id },\n });\n totalApproved += 1;\n }\n\n // Increment the progress bar\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(`Successfully downloaded ${total} requests in \"${totalTime / 1000}\" seconds!`),\n );\n if (totalApproved > 0) {\n logger.info(colors.green(`Approved ${totalApproved} requests in Transcend.`));\n }\n return allRequests.length;\n}\n"],"mappings":"isBAWA,MAAa,EAAc,EAAE,KAAK,CAEhC,eAAgB,EAAE,OAElB,GAAI,EAAE,OACP,CAAC,CAKW,EAAsB,EAAE,KAAK,CAExC,YAAa,EAAE,OAEf,MAAO,EAAE,MAAM,CAAC,EAAE,KAAM,EAAE,OAAO,CAAC,CAElC,SAAU,EAAE,OAEZ,KAAM,EAAE,OAER,SAAU,EAAE,OAEZ,UAAW,EAAE,KAAK,CAEhB,GAAI,EAAE,OAEN,MAAO,EAAE,MAAM,CAAC,EAAa,EAAE,KAAK,CAAC,CAErC,YAAa,EAAE,MAAM,CAAC,EAAa,EAAE,KAAK,CAAC,CAE3C,KAAM,EAAE,OAER,KAAM,EAAE,OAER,WAAY,EAAE,MAAM,CAAC,EAAS,EAAoB,CAAE,EAAE,KAAK,CAAC,CAE5D,SAAU,EAAE,KAAK,CAEf,GAAI,EAAE,OAEN,MAAO,EAAE,OAET,YAAa,EAAE,OAEf,KAAM,EAAE,OAER,UAAW,EAAE,MAAM,CAAC,EAAE,OAAQ,EAAE,KAAK,CAAC,CACvC,CAAC,CAEF,KAAM,EAAE,MAAM,EAAE,OAAO,CACxB,CAAC,CACH,CAAC,CAKW,EAA8B,EAAE,KAAK,CAEhD,MAAO,EAAE,MAAM,EAAoB,CAEnC,WAAY,EAAE,OAEd,OAAQ,EAAE,QAAQ,CAEhB,KAAM,EAAE,MAAM,CAAC,EAAE,OAAQ,EAAE,KAAK,CAAC,CAEjC,SAAU,EAAE,MAAM,CAAC,EAAE,OAAQ,EAAE,KAAK,CAAC,CACtC,CAAC,CACH,CAAC,CAcF,eAAsB,EACpB,EACA,CACE,SACA,cAAc,EACd,QAAQ,KASiE,CAC3E,EAAO,KAAK,EAAO,QAAQ,6BAA6B,EAAS,OAAO,WAAW,CAAC,CAGpF,IAAM,EAAK,IAAI,MAAM,CAAC,SAAS,CAEzB,EAAc,IAAI,EAAY,UAAU,EAAE,CAAE,EAAY,QAAQ,eAAe,CAGjF,EAAQ,EACZ,EAAY,MAAM,EAAS,OAAQ,EAAE,CAGrC,IAAM,EAAU,MAAM,EACpB,EACA,KACE,IAC4E,CAC5E,IAAM,EAAsC,EAAE,CAG1C,EAAiB,GACjB,EAAS,EACb,KAAO,GAAgB,CACrB,IAAI,EACJ,GAAI,CAWF,EAAW,EAAY,EARH,MAAM,EACvB,IAAI,2BAA2B,EAAkB,GAAG,gBAAiB,CACpE,aAAc,CACZ,QACA,SACD,CACF,CAAC,CACD,MAAM,CACuD,CAChE,EAAa,KAAK,GAAG,EAAS,MAAM,CAGpC,GAAU,EACV,EAEE,CAAC,CAAC,EAAS,OAAO,MAAQ,EAAS,MAAM,SAAW,QAC/C,EAAK,CACZ,MAAU,MAAM,kCAAkC,GAAK,UAAU,MAAQ,GAAK,UAAU,EAM5F,MAFA,IAAS,EACT,EAAY,OAAO,EAAM,CAClB,CAAC,EAAmB,EAAa,EAE1C,CAAE,cAAa,CAChB,CAED,EAAY,MAAM,CAElB,IAAM,EADK,IAAI,MAAM,CAAC,SAAS,CACR,EAUvB,OARA,EAAO,KACL,EAAO,MACL,yCAAyC,EAAS,OAAO,gBACvD,EAAY,IACb,YACF,CACF,CAEM,EChKT,eAAsB,EACpB,EACA,CACE,YACA,SACA,mBACA,cAAc,IAWD,CAEf,MAAM,EACJ,EACA,KAAO,IAAa,CAClB,GAAI,CAEF,MAAM,EACH,IAAI,WAAY,CACf,aAAc,CACZ,YAAa,EAAS,YACvB,CACF,CAAC,CACD,QAAQ,CACR,KAAM,GAAiB,EAAiB,EAAU,EAAa,CAAC,OAC5D,EAAK,CACZ,GAAI,GAAK,UAAU,MAAM,SAAS,sBAAsB,CAAE,CACxD,EAAO,MACL,EAAO,IACL,4BAA4B,EAAS,SAAS,YAAY,EAAU,oLAIrE,CACF,CACD,OAEF,MAAU,MAAM,kCAAkC,GAAK,UAAU,MAAQ,GAAK,UAAU,GAG5F,CACE,cACD,CACF,CCvCH,eAAsB,EAA4B,CAChD,OACA,aACA,aACA,kBACA,aACA,iBACA,kBACA,iBACA,WAAW,CAAC,EAAc,UAAW,EAAc,aAAa,CAChE,cAAc,EACd,eAAe,EACf,uBAAuB,IA0BL,CAElB,IAAM,EAAS,EAA4B,EAAc,EAAK,CAGxD,EAAS,MAAM,EAAwB,EAAc,EAAM,EAAW,CAGvE,EAAW,EAAW,EACzB,EAAU,EAAW,CAIvB,IAAM,EAAc,MAAM,EAAiB,EAAQ,CACjD,QAAS,CAAC,EAAc,OAAO,CAC/B,kBACA,iBACA,kBACA,iBACA,WACA,aACD,CAAC,CAGI,EAAsB,MAAM,EAAkC,EAAa,CAC/E,SACA,cACD,CAAC,CAGI,EAAK,IAAI,MAAM,CAAC,SAAS,CACzB,EAAc,IAAI,EAAY,UAAU,EAAE,CAAE,EAAY,QAAQ,eAAe,CACjF,EAAQ,EACR,EAAgB,EACpB,EAAY,MAAM,EAAY,OAAQ,EAAE,CAGxC,MAAM,EACJ,EACA,MAAO,CAAC,EAAS,KAAc,CAE7B,IAAM,EAAgB,EAAK,EAAY,EAAQ,GAAG,CAC7C,EAAW,EAAc,EAC5B,EAAU,EAAc,CAI1B,MAAM,EAA0B,EAAU,CACxC,SACA,UAAW,EAAQ,GACnB,kBAAmB,EAAK,IAAW,CAGjC,IAAM,EAAW,EAAK,EAAe,EAAI,SAAS,CAC5C,EAAS,EAAQ,EAAS,CAC3B,EAAW,EAAO,EACrB,EAAU,EAAQ,CAAE,UAAW,GAAM,CAAC,CAIxC,EAAc,EAAU,EAAO,EAElC,CAAC,CAGE,GAAwB,EAAQ,SAAW,EAAc,YAC3D,MAAM,EAAmB,EAAQ,EAAyB,CACxD,MAAO,CAAE,UAAW,EAAQ,GAAI,CACjC,CAAC,CACF,GAAiB,GAInB,GAAS,EACT,EAAY,OAAO,EAAM,EAE3B,CAAE,cAAa,CAChB,CAED,EAAY,MAAM,CAElB,IAAM,EADK,IAAI,MAAM,CAAC,SAAS,CACR,EAQvB,OANA,EAAO,KACL,EAAO,MAAM,2BAA2B,EAAM,gBAAgB,EAAY,IAAK,YAAY,CAC5F,CACG,EAAgB,GAClB,EAAO,KAAK,EAAO,MAAM,YAAY,EAAc,yBAAyB,CAAC,CAExE,EAAY"}
@@ -1 +1 @@
1
- {"version":3,"file":"enums-CyFTrzXY.mjs","names":[],"sources":["../src/enums.ts"],"sourcesContent":["import { makeEnum } from '@transcend-io/type-utils';\n\n/** Accepted file formats for exporting resources from OneTrust */\nexport enum OneTrustFileFormat {\n Json = 'json',\n}\n\n/**\n * Resources that can be pulled in from OneTrust\n */\nexport enum OneTrustPullResource {\n Assessments = 'assessments',\n}\n\n/**\n * Where to read OneTrust resources from\n */\nexport enum OneTrustPullSource {\n OneTrust = 'oneTrust',\n File = 'file',\n}\n\n/**\n * Resources that can be pulled in\n */\nexport enum TranscendPullResource {\n ApiKeys = 'apiKeys',\n Attributes = 'customFields',\n Templates = 'templates',\n DataSilos = 'dataSilos',\n Enrichers = 'enrichers',\n DataFlows = 'dataFlows',\n BusinessEntities = 'businessEntities',\n ProcessingActivities = 'processingActivities',\n Actions = 'actions',\n DataSubjects = 'dataSubjects',\n Identifiers = 'identifiers',\n Cookies = 'cookies',\n ConsentManager = 'consentManager',\n Partitions = 'partitions',\n Prompts = 'prompts',\n PromptPartials = 'promptPartials',\n PromptGroups = 'promptGroups',\n Agents = 'agents',\n AgentFunctions = 'agentFunctions',\n AgentFiles = 'agentFiles',\n Vendors = 'vendors',\n DataCategories = 'dataCategories',\n ProcessingPurposes = 'processingPurposes',\n ActionItems = 'actionItems',\n ActionItemCollections = 'actionItemCollections',\n Teams = 'teams',\n PrivacyCenters = 'privacyCenters',\n Policies = 'policies',\n Messages = 'messages',\n Assessments = 'assessments',\n AssessmentTemplates = 'assessmentTemplates',\n Purposes = 'purposes',\n SystemDiscovery = 'systemDiscovery',\n}\n\n/**\n * Names of built in policies for pathfinder\n */\nexport const PathfinderPolicyName = makeEnum({\n RedactEmail: 'redactEmail',\n Log: 'log',\n LogToTranscend: 'logToTranscend',\n ApplyTranscendPolicies: 'applyTranscendPolicies',\n});\n\n/**\n * Type override\n */\nexport type PathfinderPolicyName =\n (typeof PathfinderPolicyName)[keyof typeof PathfinderPolicyName];\n\n/**\n * The names of the OpenAI routes that we support setting policies for\n * reference: https://platform.openai.com/docs/api-reference/introduction\n */\nexport const OpenAIRouteName = makeEnum({\n ChatCompletion: '/v1/chat/completions',\n Embeddings: '/v1/embeddings',\n Completions: '/v1/completions',\n Agents: '/v1/assistants',\n Agent: '/v1/assistants/:assistantId',\n Threads: '/v1/threads',\n Thread: '/v1/threads/:threadId',\n Messages: '/v1/threads/:threadId/messages',\n Message: '/v1/threads/:threadId/messages/:messageId',\n Runs: '/v1/threads/:threadId/runs',\n Run: '/v1/threads/:threadId/runs/:runId',\n Files: '/v1/files',\n File: '/v1/files/:fileId',\n});\n\n/**\n * Type override\n */\nexport type OpenAIRouteName =\n (typeof OpenAIRouteName)[keyof typeof OpenAIRouteName];\n"],"mappings":"oDAGA,IAAY,EAAL,SAAA,EAAA,OACL,GAAA,KAAA,aACD,CAKW,EAAL,SAAA,EAAA,OACL,GAAA,YAAA,oBACD,CAKW,EAAL,SAAA,EAAA,OACL,GAAA,SAAA,WACA,EAAA,KAAA,aACD,CAKW,EAAL,SAAA,EAAA,OACL,GAAA,QAAA,UACA,EAAA,WAAA,eACA,EAAA,UAAA,YACA,EAAA,UAAA,YACA,EAAA,UAAA,YACA,EAAA,UAAA,YACA,EAAA,iBAAA,mBACA,EAAA,qBAAA,uBACA,EAAA,QAAA,UACA,EAAA,aAAA,eACA,EAAA,YAAA,cACA,EAAA,QAAA,UACA,EAAA,eAAA,iBACA,EAAA,WAAA,aACA,EAAA,QAAA,UACA,EAAA,eAAA,iBACA,EAAA,aAAA,eACA,EAAA,OAAA,SACA,EAAA,eAAA,iBACA,EAAA,WAAA,aACA,EAAA,QAAA,UACA,EAAA,eAAA,iBACA,EAAA,mBAAA,qBACA,EAAA,YAAA,cACA,EAAA,sBAAA,wBACA,EAAA,MAAA,QACA,EAAA,eAAA,iBACA,EAAA,SAAA,WACA,EAAA,SAAA,WACA,EAAA,YAAA,cACA,EAAA,oBAAA,sBACA,EAAA,SAAA,WACA,EAAA,gBAAA,wBACD,CAKD,MAAa,EAAuB,EAAS,CAC3C,YAAa,cACb,IAAK,MACL,eAAgB,iBAChB,uBAAwB,yBACzB,CAAC,CAYW,EAAkB,EAAS,CACtC,eAAgB,uBAChB,WAAY,iBACZ,YAAa,kBACb,OAAQ,iBACR,MAAO,8BACP,QAAS,cACT,OAAQ,wBACR,SAAU,iCACV,QAAS,4CACT,KAAM,6BACN,IAAK,oCACL,MAAO,YACP,KAAM,oBACP,CAAC"}
1
+ {"version":3,"file":"enums-CyFTrzXY.mjs","names":[],"sources":["../src/enums.ts"],"sourcesContent":["import { makeEnum } from '@transcend-io/type-utils';\n\n/** Accepted file formats for exporting resources from OneTrust */\nexport enum OneTrustFileFormat {\n Json = 'json',\n}\n\n/**\n * Resources that can be pulled in from OneTrust\n */\nexport enum OneTrustPullResource {\n Assessments = 'assessments',\n}\n\n/**\n * Where to read OneTrust resources from\n */\nexport enum OneTrustPullSource {\n OneTrust = 'oneTrust',\n File = 'file',\n}\n\n/**\n * Resources that can be pulled in\n */\nexport enum TranscendPullResource {\n ApiKeys = 'apiKeys',\n Attributes = 'customFields',\n Templates = 'templates',\n DataSilos = 'dataSilos',\n Enrichers = 'enrichers',\n DataFlows = 'dataFlows',\n BusinessEntities = 'businessEntities',\n ProcessingActivities = 'processingActivities',\n Actions = 'actions',\n DataSubjects = 'dataSubjects',\n Identifiers = 'identifiers',\n Cookies = 'cookies',\n ConsentManager = 'consentManager',\n Partitions = 'partitions',\n Prompts = 'prompts',\n PromptPartials = 'promptPartials',\n PromptGroups = 'promptGroups',\n Agents = 'agents',\n AgentFunctions = 'agentFunctions',\n AgentFiles = 'agentFiles',\n Vendors = 'vendors',\n DataCategories = 'dataCategories',\n ProcessingPurposes = 'processingPurposes',\n ActionItems = 'actionItems',\n ActionItemCollections = 'actionItemCollections',\n Teams = 'teams',\n PrivacyCenters = 'privacyCenters',\n Policies = 'policies',\n Messages = 'messages',\n Assessments = 'assessments',\n AssessmentTemplates = 'assessmentTemplates',\n Purposes = 'purposes',\n SystemDiscovery = 'systemDiscovery',\n}\n\n/**\n * Names of built in policies for pathfinder\n */\nexport const PathfinderPolicyName = makeEnum({\n RedactEmail: 'redactEmail',\n Log: 'log',\n LogToTranscend: 'logToTranscend',\n ApplyTranscendPolicies: 'applyTranscendPolicies',\n});\n\n/**\n * Type override\n */\nexport type PathfinderPolicyName = (typeof PathfinderPolicyName)[keyof typeof PathfinderPolicyName];\n\n/**\n * The names of the OpenAI routes that we support setting policies for\n * reference: https://platform.openai.com/docs/api-reference/introduction\n */\nexport const OpenAIRouteName = makeEnum({\n ChatCompletion: '/v1/chat/completions',\n Embeddings: '/v1/embeddings',\n Completions: '/v1/completions',\n Agents: '/v1/assistants',\n Agent: '/v1/assistants/:assistantId',\n Threads: '/v1/threads',\n Thread: '/v1/threads/:threadId',\n Messages: '/v1/threads/:threadId/messages',\n Message: '/v1/threads/:threadId/messages/:messageId',\n Runs: '/v1/threads/:threadId/runs',\n Run: '/v1/threads/:threadId/runs/:runId',\n Files: '/v1/files',\n File: '/v1/files/:fileId',\n});\n\n/**\n * Type override\n */\nexport type OpenAIRouteName = (typeof OpenAIRouteName)[keyof typeof OpenAIRouteName];\n"],"mappings":"oDAGA,IAAY,EAAL,SAAA,EAAA,OACL,GAAA,KAAA,aACD,CAKW,EAAL,SAAA,EAAA,OACL,GAAA,YAAA,oBACD,CAKW,EAAL,SAAA,EAAA,OACL,GAAA,SAAA,WACA,EAAA,KAAA,aACD,CAKW,EAAL,SAAA,EAAA,OACL,GAAA,QAAA,UACA,EAAA,WAAA,eACA,EAAA,UAAA,YACA,EAAA,UAAA,YACA,EAAA,UAAA,YACA,EAAA,UAAA,YACA,EAAA,iBAAA,mBACA,EAAA,qBAAA,uBACA,EAAA,QAAA,UACA,EAAA,aAAA,eACA,EAAA,YAAA,cACA,EAAA,QAAA,UACA,EAAA,eAAA,iBACA,EAAA,WAAA,aACA,EAAA,QAAA,UACA,EAAA,eAAA,iBACA,EAAA,aAAA,eACA,EAAA,OAAA,SACA,EAAA,eAAA,iBACA,EAAA,WAAA,aACA,EAAA,QAAA,UACA,EAAA,eAAA,iBACA,EAAA,mBAAA,qBACA,EAAA,YAAA,cACA,EAAA,sBAAA,wBACA,EAAA,MAAA,QACA,EAAA,eAAA,iBACA,EAAA,SAAA,WACA,EAAA,SAAA,WACA,EAAA,YAAA,cACA,EAAA,oBAAA,sBACA,EAAA,SAAA,WACA,EAAA,gBAAA,wBACD,CAKD,MAAa,EAAuB,EAAS,CAC3C,YAAa,cACb,IAAK,MACL,eAAgB,iBAChB,uBAAwB,yBACzB,CAAC,CAWW,EAAkB,EAAS,CACtC,eAAgB,uBAChB,WAAY,iBACZ,YAAa,kBACb,OAAQ,iBACR,MAAO,8BACP,QAAS,cACT,OAAQ,wBACR,SAAU,iCACV,QAAS,4CACT,KAAM,6BACN,IAAK,oCACL,MAAO,YACP,KAAM,oBACP,CAAC"}
@@ -0,0 +1,2 @@
1
+ import{IsoCountryCode as e,IsoCountrySubdivisionCode as t,RequestAction as n,RequestStatus as r}from"@transcend-io/privacy-types";import{uniq as i}from"lodash-es";import{decodeCodec as a,valuesOf as o}from"@transcend-io/type-utils";import*as s from"io-ts";const c=s.type({id:s.string,link:s.string,status:o(r),type:o(n),subjectType:s.string,email:s.union([s.null,s.string]),coreIdentifier:s.string,isSilent:s.boolean,isTest:s.boolean,country:s.union([s.null,o(e)]),countrySubDivision:s.union([s.null,o(t)]),attributeValues:s.array(s.type({attributeKey:s.type({name:s.string}),name:s.string}))});async function l(e,t,{details:n=``,isTest:r=!1,emailIsVerified:o=!0,skipSendingReceipt:l=!1,isSilent:u=!0,additionalAttributes:d=[]}={}){let f=[...d];(t.attributes||[]).forEach(e=>{let t=f.find(t=>t.key===e.key);t?(t.values.push(...e.values),t.values=i(t.values)):f.push(e)});let p;try{p=await e.post(`v1/data-subject-request`,{json:{type:t.requestType,subject:{coreIdentifier:t.coreIdentifier,email:t.email,emailIsVerified:o,attestedExtraIdentifiers:t.attestedExtraIdentifiers},subjectType:t.subjectType,isSilent:u,isTest:r,skipSendingReceipt:l,...t.locale?{locale:t.locale}:{},details:n,attributes:f,...t.country||t.countrySubDivision?{region:{...t.country?{country:t.country}:t.countrySubDivision?{country:t.countrySubDivision.split(`-`)[0]}:{},...t.countrySubDivision?{countrySubDivision:t.countrySubDivision}:{}}}:{},...t.createdAt?{createdAt:t.createdAt}:{},...t.dataSiloIds?{dataSiloIds:t.dataSiloIds}:{},...t.status?{completedRequestStatus:t.status}:{}}}).json()}catch(e){throw Error(`Received an error from server: ${e?.response?.body||e?.message}`)}let{request:m}=a(s.type({request:c}),p);return m}const u=/{\\"message\\":\\"(.+?)\\",/;function d(e){return u.test(e)?u.exec(e)[1]:null}export{c as n,l as r,d as t};
2
+ //# sourceMappingURL=extractClientError-DPjv09EH.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractClientError-DPjv09EH.mjs","names":[],"sources":["../src/lib/requests/submitPrivacyRequest.ts","../src/lib/requests/extractClientError.ts"],"sourcesContent":["import {\n IsoCountryCode,\n IsoCountrySubdivisionCode,\n RequestAction,\n RequestStatus,\n} from '@transcend-io/privacy-types';\nimport { valuesOf, decodeCodec } from '@transcend-io/type-utils';\nimport type { Got } from 'got';\nimport * as t from 'io-ts';\nimport { uniq } from 'lodash-es';\n\nimport { PrivacyRequestInput } from './mapCsvRowsToRequestInputs.js';\nimport { ParsedAttributeInput } from './parseAttributesFromString.js';\n\nexport const PrivacyRequestResponse = t.type({\n id: t.string,\n link: t.string,\n status: valuesOf(RequestStatus),\n type: valuesOf(RequestAction),\n subjectType: t.string,\n email: t.union([t.null, t.string]),\n coreIdentifier: t.string,\n isSilent: t.boolean,\n isTest: t.boolean,\n country: t.union([t.null, valuesOf(IsoCountryCode)]),\n countrySubDivision: t.union([t.null, valuesOf(IsoCountrySubdivisionCode)]),\n attributeValues: t.array(\n t.type({\n attributeKey: t.type({ name: t.string }),\n name: t.string,\n }),\n ),\n});\n\n/** Type override */\nexport type PrivacyRequestResponse = t.TypeOf<typeof PrivacyRequestResponse>;\n\n/**\n * Submit a privacy request to the Transcend API\n *\n * @param sombra - Sombra instance configured to make requests\n * @param input - Request input\n * @param options - Additional options\n * @returns Successfully submitted request\n */\nexport async function submitPrivacyRequest(\n sombra: Got,\n input: PrivacyRequestInput,\n {\n details = '',\n isTest = false,\n emailIsVerified = true,\n skipSendingReceipt = false,\n isSilent = true,\n additionalAttributes = [],\n }: {\n /** Whether or not the request is a test request */\n isTest?: boolean;\n /** Whether or not the request is in silent mode */\n isSilent?: boolean;\n /** Whether the email is verified up front */\n emailIsVerified?: boolean;\n /** When true, skip sending of the email receipt */\n skipSendingReceipt?: boolean;\n /** Request details */\n details?: string;\n /** Additional attributes to tag the requests with */\n additionalAttributes?: ParsedAttributeInput[];\n } = {},\n): Promise<PrivacyRequestResponse> {\n // Merge the per-request attributes with the\n // global attributes\n const mergedAttributes = [...additionalAttributes];\n (input.attributes || []).forEach((attribute) => {\n const existing = mergedAttributes.find((attr) => attr.key === attribute.key);\n if (existing) {\n existing.values.push(...attribute.values);\n existing.values = uniq(existing.values);\n } else {\n mergedAttributes.push(attribute);\n }\n });\n\n // Make the GraphQL request\n let response: unknown;\n try {\n response = await sombra\n .post('v1/data-subject-request', {\n json: {\n type: input.requestType,\n subject: {\n coreIdentifier: input.coreIdentifier,\n email: input.email,\n emailIsVerified,\n attestedExtraIdentifiers: input.attestedExtraIdentifiers,\n },\n subjectType: input.subjectType,\n isSilent,\n isTest,\n skipSendingReceipt,\n ...(input.locale ? { locale: input.locale } : {}),\n details,\n attributes: mergedAttributes,\n ...(input.country || input.countrySubDivision\n ? {\n region: {\n ...(input.country\n ? {\n country: input.country,\n }\n : input.countrySubDivision\n ? { country: input.countrySubDivision.split('-')[0] }\n : {}),\n ...(input.countrySubDivision\n ? { countrySubDivision: input.countrySubDivision }\n : {}),\n },\n }\n : {}),\n ...(input.createdAt ? { createdAt: input.createdAt } : {}),\n ...(input.dataSiloIds ? { dataSiloIds: input.dataSiloIds } : {}),\n ...(input.status ? { completedRequestStatus: input.status } : {}),\n },\n })\n .json();\n } catch (err) {\n throw new Error(`Received an error from server: ${err?.response?.body || err?.message}`);\n }\n\n const { request: requestResponse } = decodeCodec(\n t.type({\n request: PrivacyRequestResponse,\n }),\n response,\n );\n return requestResponse;\n}\n","const CLIENT_ERROR = /{\\\\\"message\\\\\":\\\\\"(.+?)\\\\\",/;\n\n/**\n * Extract a client error from the request\n *\n * @param err - Error message\n * @returns Client error or null\n */\nexport function extractClientError(err: string): string | null {\n return CLIENT_ERROR.test(err) ? CLIENT_ERROR.exec(err)![1] : null;\n}\n"],"mappings":"gQAcA,MAAa,EAAyB,EAAE,KAAK,CAC3C,GAAI,EAAE,OACN,KAAM,EAAE,OACR,OAAQ,EAAS,EAAc,CAC/B,KAAM,EAAS,EAAc,CAC7B,YAAa,EAAE,OACf,MAAO,EAAE,MAAM,CAAC,EAAE,KAAM,EAAE,OAAO,CAAC,CAClC,eAAgB,EAAE,OAClB,SAAU,EAAE,QACZ,OAAQ,EAAE,QACV,QAAS,EAAE,MAAM,CAAC,EAAE,KAAM,EAAS,EAAe,CAAC,CAAC,CACpD,mBAAoB,EAAE,MAAM,CAAC,EAAE,KAAM,EAAS,EAA0B,CAAC,CAAC,CAC1E,gBAAiB,EAAE,MACjB,EAAE,KAAK,CACL,aAAc,EAAE,KAAK,CAAE,KAAM,EAAE,OAAQ,CAAC,CACxC,KAAM,EAAE,OACT,CAAC,CACH,CACF,CAAC,CAaF,eAAsB,EACpB,EACA,EACA,CACE,UAAU,GACV,SAAS,GACT,kBAAkB,GAClB,qBAAqB,GACrB,WAAW,GACX,uBAAuB,EAAE,EAcvB,EAAE,CAC2B,CAGjC,IAAM,EAAmB,CAAC,GAAG,EAAqB,EACjD,EAAM,YAAc,EAAE,EAAE,QAAS,GAAc,CAC9C,IAAM,EAAW,EAAiB,KAAM,GAAS,EAAK,MAAQ,EAAU,IAAI,CACxE,GACF,EAAS,OAAO,KAAK,GAAG,EAAU,OAAO,CACzC,EAAS,OAAS,EAAK,EAAS,OAAO,EAEvC,EAAiB,KAAK,EAAU,EAElC,CAGF,IAAI,EACJ,GAAI,CACF,EAAW,MAAM,EACd,KAAK,0BAA2B,CAC/B,KAAM,CACJ,KAAM,EAAM,YACZ,QAAS,CACP,eAAgB,EAAM,eACtB,MAAO,EAAM,MACb,kBACA,yBAA0B,EAAM,yBACjC,CACD,YAAa,EAAM,YACnB,WACA,SACA,qBACA,GAAI,EAAM,OAAS,CAAE,OAAQ,EAAM,OAAQ,CAAG,EAAE,CAChD,UACA,WAAY,EACZ,GAAI,EAAM,SAAW,EAAM,mBACvB,CACE,OAAQ,CACN,GAAI,EAAM,QACN,CACE,QAAS,EAAM,QAChB,CACD,EAAM,mBACJ,CAAE,QAAS,EAAM,mBAAmB,MAAM,IAAI,CAAC,GAAI,CACnD,EAAE,CACR,GAAI,EAAM,mBACN,CAAE,mBAAoB,EAAM,mBAAoB,CAChD,EAAE,CACP,CACF,CACD,EAAE,CACN,GAAI,EAAM,UAAY,CAAE,UAAW,EAAM,UAAW,CAAG,EAAE,CACzD,GAAI,EAAM,YAAc,CAAE,YAAa,EAAM,YAAa,CAAG,EAAE,CAC/D,GAAI,EAAM,OAAS,CAAE,uBAAwB,EAAM,OAAQ,CAAG,EAAE,CACjE,CACF,CAAC,CACD,MAAM,OACF,EAAK,CACZ,MAAU,MAAM,kCAAkC,GAAK,UAAU,MAAQ,GAAK,UAAU,CAG1F,GAAM,CAAE,QAAS,GAAoB,EACnC,EAAE,KAAK,CACL,QAAS,EACV,CAAC,CACF,EACD,CACD,OAAO,ECvIT,MAAM,EAAe,8BAQrB,SAAgB,EAAmB,EAA4B,CAC7D,OAAO,EAAa,KAAK,EAAI,CAAG,EAAa,KAAK,EAAI,CAAE,GAAK"}
@@ -0,0 +1,2 @@
1
+ function e(e){let t=e,n=t?.response?.body||t?.message||`Unknown error`;try{let e=JSON.parse(n),t=e.errors||e.error?.errors||[e.error?.message||e.error];n=(Array.isArray(t)?t:[t]).filter(Boolean).join(`, `)}catch{}return n}export{e as t};
2
+ //# sourceMappingURL=extractErrorMessage-CPnTsT1S.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractErrorMessage-CPnTsT1S.mjs","names":[],"sources":["../src/lib/helpers/extractErrorMessage.ts"],"sourcesContent":["/**\n * Extract a human-readable error message from a thrown error.\n *\n * Tries to parse JSON bodies that follow common REST/GraphQL error patterns:\n * { error: { message: string } }\n * { errors: [{ message: string }, ...] }\n *\n * Falls back to `err.message` or 'Unknown error'.\n *\n * @param err - Unknown error thrown by network call\n * @returns A concise error string safe to log/show\n */\nexport function extractErrorMessage(err: unknown): string {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const anyErr = err as any;\n let errorMsg = anyErr?.response?.body || anyErr?.message || 'Unknown error';\n\n // Try to parse as JSON; if not parsable, leave as-is.\n try {\n const parsed = JSON.parse(errorMsg);\n // Typical shapes: errors[], error.errors[], error.message\n const candidates = parsed.errors ||\n parsed.error?.errors || [parsed.error?.message || parsed.error];\n\n const msgs = Array.isArray(candidates) ? candidates : [candidates];\n errorMsg = msgs.filter(Boolean).join(', ');\n } catch {\n // not JSON, ignore\n }\n return errorMsg;\n}\n"],"mappings":"AAYA,SAAgB,EAAoB,EAAsB,CAExD,IAAM,EAAS,EACX,EAAW,GAAQ,UAAU,MAAQ,GAAQ,SAAW,gBAG5D,GAAI,CACF,IAAM,EAAS,KAAK,MAAM,EAAS,CAE7B,EAAa,EAAO,QACxB,EAAO,OAAO,QAAU,CAAC,EAAO,OAAO,SAAW,EAAO,MAAM,CAGjE,GADa,MAAM,QAAQ,EAAW,CAAG,EAAa,CAAC,EAAW,EAClD,OAAO,QAAQ,CAAC,KAAK,KAAK,MACpC,EAGR,OAAO"}