@transcend-io/cli 9.0.1 → 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.
- package/LICENSE +201 -0
- package/README.md +26 -34
- package/dist/RateCounter-DFL_mnk2.mjs +2 -0
- package/dist/RateCounter-DFL_mnk2.mjs.map +1 -0
- package/dist/RequestDataSilo-_Iv44M9u.mjs +51 -0
- package/dist/RequestDataSilo-_Iv44M9u.mjs.map +1 -0
- package/dist/app-By_zDIkK.mjs +131 -0
- package/dist/app-By_zDIkK.mjs.map +1 -0
- package/dist/approvePrivacyRequests-1cguqGqq.mjs +2 -0
- package/dist/approvePrivacyRequests-1cguqGqq.mjs.map +1 -0
- package/dist/assessment-BDywVaGR.mjs +284 -0
- package/dist/assessment-BDywVaGR.mjs.map +1 -0
- package/dist/bin/bash-complete.mjs +1 -1
- package/dist/bin/bash-complete.mjs.map +1 -1
- package/dist/bin/cli.mjs +1 -1
- package/dist/bin/cli.mjs.map +1 -1
- package/dist/bin/deprecated-command.mjs +1 -1
- package/dist/bin/deprecated-command.mjs.map +1 -1
- package/dist/bluebird-CUitXgsY.mjs +2 -0
- package/dist/bluebird-CUitXgsY.mjs.map +1 -0
- package/dist/buildXdiSyncEndpoint-BMaMHO7Z.mjs +9 -0
- package/dist/buildXdiSyncEndpoint-BMaMHO7Z.mjs.map +1 -0
- package/dist/bulkRestartRequests-DEPSHov-.mjs +2 -0
- package/dist/bulkRestartRequests-DEPSHov-.mjs.map +1 -0
- package/dist/bulkRetryEnrichers-BLkcFKXC.mjs +2 -0
- package/dist/bulkRetryEnrichers-BLkcFKXC.mjs.map +1 -0
- package/dist/cancelPrivacyRequests-C8MZQvsq.mjs +2 -0
- package/dist/cancelPrivacyRequests-C8MZQvsq.mjs.map +1 -0
- package/dist/codecs-BE3Wmoh8.mjs +2 -0
- package/dist/codecs-BE3Wmoh8.mjs.map +1 -0
- package/dist/codecs-Dx_vGxsl.mjs +2 -0
- package/dist/codecs-Dx_vGxsl.mjs.map +1 -0
- package/dist/{command-Bzyj3M2G.mjs → command-BUnCUxva.mjs} +2 -2
- package/dist/command-BUnCUxva.mjs.map +1 -0
- package/dist/consentManagersToBusinessEntities-BDgOFga7.mjs +5 -0
- package/dist/consentManagersToBusinessEntities-BDgOFga7.mjs.map +1 -0
- package/dist/constants-AFtS5Nad.mjs +4 -0
- package/dist/constants-AFtS5Nad.mjs.map +1 -0
- package/dist/constants-CeMiHaHx.mjs +2 -0
- package/dist/constants-CeMiHaHx.mjs.map +1 -0
- package/dist/constants-lIvXgkdp.mjs +2 -0
- package/dist/constants-lIvXgkdp.mjs.map +1 -0
- package/dist/{context-bkKpii_t.mjs → context-CdSyuBlf.mjs} +1 -1
- package/dist/context-CdSyuBlf.mjs.map +1 -0
- package/dist/{pooling-CazydwlD.mjs → createExtraKeyHandler-C_0EVj10.mjs} +5 -5
- package/dist/createExtraKeyHandler-C_0EVj10.mjs.map +1 -0
- package/dist/createPreferenceAccessTokens-6WLr6z-l.mjs +10 -0
- package/dist/createPreferenceAccessTokens-6WLr6z-l.mjs.map +1 -0
- package/dist/createSombraGotInstance-CahOgD6V.mjs +10 -0
- package/dist/createSombraGotInstance-CahOgD6V.mjs.map +1 -0
- package/dist/{dataFlowsToDataSilos-RAhfPV0l.mjs → dataFlowsToDataSilos-NhvBw1iy.mjs} +1 -1
- package/dist/dataFlowsToDataSilos-NhvBw1iy.mjs.map +1 -0
- package/dist/dataSilo-DrFetFXw.mjs +302 -0
- package/dist/dataSilo-DrFetFXw.mjs.map +1 -0
- package/dist/dataSubject-y_aXI0pa.mjs +92 -0
- package/dist/dataSubject-y_aXI0pa.mjs.map +1 -0
- package/dist/{done-input-validation-CcZtaz03.mjs → done-input-validation-DLR0-MJ7.mjs} +1 -1
- package/dist/{done-input-validation-CcZtaz03.mjs.map → done-input-validation-DLR0-MJ7.mjs.map} +1 -1
- package/dist/downloadPrivacyRequestFiles-B2yduagB.mjs +2 -0
- package/dist/downloadPrivacyRequestFiles-B2yduagB.mjs.map +1 -0
- package/dist/enums-CyFTrzXY.mjs.map +1 -1
- package/dist/extractClientError-DPjv09EH.mjs +2 -0
- package/dist/extractClientError-DPjv09EH.mjs.map +1 -0
- package/dist/extractErrorMessage-CPnTsT1S.mjs +2 -0
- package/dist/extractErrorMessage-CPnTsT1S.mjs.map +1 -0
- package/dist/fetchAllActions-C0l3wjQV.mjs +832 -0
- package/dist/fetchAllActions-C0l3wjQV.mjs.map +1 -0
- package/dist/fetchAllDataFlows-AQ9j_NRa.mjs +2 -0
- package/dist/fetchAllDataFlows-AQ9j_NRa.mjs.map +1 -0
- package/dist/fetchAllPreferenceTopics-Bn9PG-rO.mjs +36 -0
- package/dist/fetchAllPreferenceTopics-Bn9PG-rO.mjs.map +1 -0
- package/dist/fetchAllPurposes-CykSkZRY.mjs +29 -0
- package/dist/fetchAllPurposes-CykSkZRY.mjs.map +1 -0
- package/dist/fetchAllPurposesAndPreferences-Dog6N9L2.mjs +2 -0
- package/dist/fetchAllPurposesAndPreferences-Dog6N9L2.mjs.map +1 -0
- package/dist/fetchAllRequestEnrichers-q34mRuE5.mjs +42 -0
- package/dist/fetchAllRequestEnrichers-q34mRuE5.mjs.map +1 -0
- package/dist/fetchAllRequestIdentifiers-YP-geTV4.mjs +10 -0
- package/dist/fetchAllRequestIdentifiers-YP-geTV4.mjs.map +1 -0
- package/dist/fetchAllRequests-DEPTEUbi.mjs +2 -0
- package/dist/fetchAllRequests-DEPTEUbi.mjs.map +1 -0
- package/dist/fetchApiKeys-DkBco7W0.mjs +33 -0
- package/dist/fetchApiKeys-DkBco7W0.mjs.map +1 -0
- package/dist/fetchCatalogs-CBk871k6.mjs +12 -0
- package/dist/fetchCatalogs-CBk871k6.mjs.map +1 -0
- package/dist/fetchConsentManagerId-DHDA5Py9.mjs +321 -0
- package/dist/fetchConsentManagerId-DHDA5Py9.mjs.map +1 -0
- package/dist/fetchIdentifiers-DjqjUnaw.mjs +54 -0
- package/dist/fetchIdentifiers-DjqjUnaw.mjs.map +1 -0
- package/dist/fetchRequestDataSilo-CF6XOTQ-.mjs +2 -0
- package/dist/fetchRequestDataSilo-CF6XOTQ-.mjs.map +1 -0
- package/dist/fetchRequestFilesForRequest-DrHGOdih.mjs +33 -0
- package/dist/fetchRequestFilesForRequest-DrHGOdih.mjs.map +1 -0
- package/dist/generateCrossAccountApiKeys-F11uqpc5.mjs +33 -0
- package/dist/generateCrossAccountApiKeys-F11uqpc5.mjs.map +1 -0
- package/dist/impl--Lmj1RHh2.mjs +2 -0
- package/dist/impl--Lmj1RHh2.mjs.map +1 -0
- package/dist/impl-0ooudQ_J2.mjs +4 -0
- package/dist/impl-0ooudQ_J2.mjs.map +1 -0
- package/dist/{impl-BYBNi68b.mjs → impl-1U4QBT_L.mjs} +2 -2
- package/dist/impl-1U4QBT_L.mjs.map +1 -0
- package/dist/impl-2FbPcOv_2.mjs +2 -0
- package/dist/impl-2FbPcOv_2.mjs.map +1 -0
- package/dist/impl-ArGeiHuz.mjs +2 -0
- package/dist/impl-ArGeiHuz.mjs.map +1 -0
- package/dist/impl-B8iVBYdg.mjs +2 -0
- package/dist/impl-B8iVBYdg.mjs.map +1 -0
- package/dist/impl-BWjBYTQZ.mjs +2 -0
- package/dist/impl-BWjBYTQZ.mjs.map +1 -0
- package/dist/impl-Bc8Es_bT.mjs +7 -0
- package/dist/impl-Bc8Es_bT.mjs.map +1 -0
- package/dist/impl-BkyC7nnu.mjs +2 -0
- package/dist/impl-BkyC7nnu.mjs.map +1 -0
- package/dist/impl-BpUksm1b2.mjs +2 -0
- package/dist/impl-BpUksm1b2.mjs.map +1 -0
- package/dist/impl-BzupMfJi.mjs +12 -0
- package/dist/impl-BzupMfJi.mjs.map +1 -0
- package/dist/impl-C05tQHSq.mjs +2 -0
- package/dist/impl-C05tQHSq.mjs.map +1 -0
- package/dist/impl-CMX0qQr_2.mjs +2 -0
- package/dist/impl-CMX0qQr_2.mjs.map +1 -0
- package/dist/impl-CWHnw3oX.mjs +2 -0
- package/dist/impl-CWHnw3oX.mjs.map +1 -0
- package/dist/impl-CXK-D84c.mjs +4 -0
- package/dist/impl-CXK-D84c.mjs.map +1 -0
- package/dist/impl-CdoTu8TH.mjs +2 -0
- package/dist/impl-CdoTu8TH.mjs.map +1 -0
- package/dist/impl-CeLfAnyA2.mjs +2 -0
- package/dist/impl-CeLfAnyA2.mjs.map +1 -0
- package/dist/impl-Cgg_bv7j.mjs +2 -0
- package/dist/impl-Cgg_bv7j.mjs.map +1 -0
- package/dist/impl-CoLIqiH-2.mjs +2 -0
- package/dist/impl-CoLIqiH-2.mjs.map +1 -0
- package/dist/impl-Cq_RqK0_2.mjs +2 -0
- package/dist/impl-Cq_RqK0_2.mjs.map +1 -0
- package/dist/{impl-CZP2l3Ds.mjs → impl-Cwj9LeEI.mjs} +3 -3
- package/dist/impl-Cwj9LeEI.mjs.map +1 -0
- package/dist/impl-CyJBbyuF.mjs +2 -0
- package/dist/impl-CyJBbyuF.mjs.map +1 -0
- package/dist/impl-D-cp0CYr.mjs +2 -0
- package/dist/impl-D-cp0CYr.mjs.map +1 -0
- package/dist/impl-D-ldjJzl2.mjs +2 -0
- package/dist/impl-D-ldjJzl2.mjs.map +1 -0
- package/dist/impl-D6nwGrO8.mjs +2 -0
- package/dist/impl-D6nwGrO8.mjs.map +1 -0
- package/dist/impl-DGRuk3AB.mjs +2 -0
- package/dist/impl-DGRuk3AB.mjs.map +1 -0
- package/dist/impl-DXWN22xV.mjs +2 -0
- package/dist/impl-DXWN22xV.mjs.map +1 -0
- package/dist/impl-DZnSlfwn2.mjs +2 -0
- package/dist/impl-DZnSlfwn2.mjs.map +1 -0
- package/dist/impl-DcC8_dCy.mjs +2 -0
- package/dist/impl-DcC8_dCy.mjs.map +1 -0
- package/dist/impl-Dfc_yQML2.mjs +2 -0
- package/dist/impl-Dfc_yQML2.mjs.map +1 -0
- package/dist/impl-DgyjJ8RY2.mjs +2 -0
- package/dist/impl-DgyjJ8RY2.mjs.map +1 -0
- package/dist/impl-DhIyASha.mjs +2 -0
- package/dist/impl-DhIyASha.mjs.map +1 -0
- package/dist/impl-Dny1LX9A.mjs +2 -0
- package/dist/impl-Dny1LX9A.mjs.map +1 -0
- package/dist/impl-G1brwI4o.mjs +2 -0
- package/dist/impl-G1brwI4o.mjs.map +1 -0
- package/dist/impl-KV3yZaHz2.mjs +2 -0
- package/dist/impl-KV3yZaHz2.mjs.map +1 -0
- package/dist/impl-Rt3C_fDF.mjs +2 -0
- package/dist/impl-Rt3C_fDF.mjs.map +1 -0
- package/dist/impl-VHp2K2bg.mjs +2 -0
- package/dist/impl-VHp2K2bg.mjs.map +1 -0
- package/dist/impl-Zr8uLP_n.mjs +2 -0
- package/dist/impl-Zr8uLP_n.mjs.map +1 -0
- package/dist/impl-dEQtD5uE.mjs +2 -0
- package/dist/impl-dEQtD5uE.mjs.map +1 -0
- package/dist/impl-dlRlTYAQ.mjs +2 -0
- package/dist/impl-dlRlTYAQ.mjs.map +1 -0
- package/dist/impl-f4UPMoS_2.mjs +2 -0
- package/dist/impl-f4UPMoS_2.mjs.map +1 -0
- package/dist/impl-ph0q6K3i.mjs +2 -0
- package/dist/impl-ph0q6K3i.mjs.map +1 -0
- package/dist/impl-r8tHyAHB.mjs +2 -0
- package/dist/impl-r8tHyAHB.mjs.map +1 -0
- package/dist/impl-y1I9Muyc2.mjs +2 -0
- package/dist/impl-y1I9Muyc2.mjs.map +1 -0
- package/dist/index.d.mts +44 -32
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +78 -4
- package/dist/index.mjs.map +1 -1
- package/dist/inquirer-BgNcicZ4.mjs +2 -0
- package/dist/inquirer-BgNcicZ4.mjs.map +1 -0
- package/dist/listFiles-qzyQMaYH.mjs +2 -0
- package/dist/listFiles-qzyQMaYH.mjs.map +1 -0
- package/dist/{logger-Bj782ZYD.mjs → logger-B-LXIf3U.mjs} +1 -1
- package/dist/{logger-Bj782ZYD.mjs.map → logger-B-LXIf3U.mjs.map} +1 -1
- package/dist/makeGraphQLRequest-G078PsEL.mjs +2 -0
- package/dist/makeGraphQLRequest-G078PsEL.mjs.map +1 -0
- package/dist/markRequestDataSiloIdsCompleted-DmAz-R0M.mjs +2 -0
- package/dist/markRequestDataSiloIdsCompleted-DmAz-R0M.mjs.map +1 -0
- package/dist/markSilentPrivacyRequests-s7_aBROE.mjs +2 -0
- package/dist/markSilentPrivacyRequests-s7_aBROE.mjs.map +1 -0
- package/dist/mergeTranscendInputs-C64BJsse.mjs +2 -0
- package/dist/mergeTranscendInputs-C64BJsse.mjs.map +1 -0
- package/dist/notifyPrivacyRequestsAdditionalTime-BvXIXZYu.mjs +2 -0
- package/dist/notifyPrivacyRequestsAdditionalTime-BvXIXZYu.mjs.map +1 -0
- package/dist/package-BjNQxHlz.mjs +2 -0
- package/dist/package-BjNQxHlz.mjs.map +1 -0
- package/dist/parquetToCsvOneFile-DZVKXrjn.mjs +6 -0
- package/dist/parquetToCsvOneFile-DZVKXrjn.mjs.map +1 -0
- package/dist/parseAttributesFromString-CZStzJc0.mjs +2 -0
- package/dist/parseAttributesFromString-CZStzJc0.mjs.map +1 -0
- package/dist/pullAllDatapoints-DiMWp8a7.mjs +45 -0
- package/dist/pullAllDatapoints-DiMWp8a7.mjs.map +1 -0
- package/dist/pullChunkedCustomSiloOutstandingIdentifiers-DgWgggQt.mjs +2 -0
- package/dist/pullChunkedCustomSiloOutstandingIdentifiers-DgWgggQt.mjs.map +1 -0
- package/dist/pullConsentManagerMetrics-pFRPXTHJ.mjs +2 -0
- package/dist/pullConsentManagerMetrics-pFRPXTHJ.mjs.map +1 -0
- package/dist/pullManualEnrichmentIdentifiersToCsv-DA_4rIzW.mjs +2 -0
- package/dist/pullManualEnrichmentIdentifiersToCsv-DA_4rIzW.mjs.map +1 -0
- package/dist/pullTranscendConfiguration-D2cYlu6V.mjs +80 -0
- package/dist/pullTranscendConfiguration-D2cYlu6V.mjs.map +1 -0
- package/dist/pullUnstructuredSubDataPointRecommendations-C4aVhH-W.mjs +38 -0
- package/dist/pullUnstructuredSubDataPointRecommendations-C4aVhH-W.mjs.map +1 -0
- package/dist/pushCronIdentifiersFromCsv-C34TB9tG.mjs +2 -0
- package/dist/pushCronIdentifiersFromCsv-C34TB9tG.mjs.map +1 -0
- package/dist/pushManualEnrichmentIdentifiersFromCsv-CGS9E3Ft.mjs +2 -0
- package/dist/pushManualEnrichmentIdentifiersFromCsv-CGS9E3Ft.mjs.map +1 -0
- package/dist/readCsv-CyOL7eCc.mjs +2 -0
- package/dist/readCsv-CyOL7eCc.mjs.map +1 -0
- package/dist/{readTranscendYaml-DhKG1ViI.mjs → readTranscendYaml-D-J1ilS0.mjs} +2 -2
- package/dist/readTranscendYaml-D-J1ilS0.mjs.map +1 -0
- package/dist/removeUnverifiedRequestIdentifiers-pGGOFbfE.mjs +35 -0
- package/dist/removeUnverifiedRequestIdentifiers-pGGOFbfE.mjs.map +1 -0
- package/dist/request-CAsR6CMY.mjs +117 -0
- package/dist/request-CAsR6CMY.mjs.map +1 -0
- package/dist/retryRequestDataSilos-DXwN5uPw.mjs +2 -0
- package/dist/retryRequestDataSilos-DXwN5uPw.mjs.map +1 -0
- package/dist/skipPreflightJobs-BNQhuPZ8.mjs +2 -0
- package/dist/skipPreflightJobs-BNQhuPZ8.mjs.map +1 -0
- package/dist/skipRequestDataSilos-C39ji4lO.mjs +2 -0
- package/dist/skipRequestDataSilos-C39ji4lO.mjs.map +1 -0
- package/dist/splitCsvToList-BRq_CIfd.mjs +2 -0
- package/dist/splitCsvToList-BRq_CIfd.mjs.map +1 -0
- package/dist/streamPrivacyRequestsToCsv-C8lquiyd.mjs +2 -0
- package/dist/streamPrivacyRequestsToCsv-C8lquiyd.mjs.map +1 -0
- package/dist/syncCodePackages-BHgjfXCI.mjs +232 -0
- package/dist/syncCodePackages-BHgjfXCI.mjs.map +1 -0
- package/dist/syncCookies-CiLtxDFf.mjs +2 -0
- package/dist/syncCookies-CiLtxDFf.mjs.map +1 -0
- package/dist/syncDataFlows-DmBUs3G_.mjs +2 -0
- package/dist/syncDataFlows-DmBUs3G_.mjs.map +1 -0
- package/dist/syncTemplates-BNu1_dmW.mjs +23 -0
- package/dist/syncTemplates-BNu1_dmW.mjs.map +1 -0
- package/dist/time-Bl_c3W8U.mjs +2 -0
- package/dist/time-Bl_c3W8U.mjs.map +1 -0
- package/dist/types-B4CVJCpj.mjs +2 -0
- package/dist/types-B4CVJCpj.mjs.map +1 -0
- package/dist/updateConsentManagerVersionToLatest-BBMN94Hs.mjs +2 -0
- package/dist/updateConsentManagerVersionToLatest-BBMN94Hs.mjs.map +1 -0
- package/dist/uploadConsents-BbR7_sSt.mjs +2 -0
- package/dist/uploadConsents-BbR7_sSt.mjs.map +1 -0
- package/dist/uploadCookiesFromCsv-BKZx_E_2.mjs +2 -0
- package/dist/uploadCookiesFromCsv-BKZx_E_2.mjs.map +1 -0
- package/dist/uploadDataFlowsFromCsv-CJFVLvCJ.mjs +2 -0
- package/dist/uploadDataFlowsFromCsv-CJFVLvCJ.mjs.map +1 -0
- package/dist/uploadPrivacyRequestsFromCsv-BmP1JluQ.mjs +17 -0
- package/dist/uploadPrivacyRequestsFromCsv-BmP1JluQ.mjs.map +1 -0
- package/dist/uploadSiloDiscoveryResults-XpDp2u35.mjs +20 -0
- package/dist/uploadSiloDiscoveryResults-XpDp2u35.mjs.map +1 -0
- package/dist/validateTranscendAuth-1W1IylqE.mjs +2 -0
- package/dist/validateTranscendAuth-1W1IylqE.mjs.map +1 -0
- package/dist/withPreferenceRetry-Cb5S310L.mjs +2 -0
- package/dist/withPreferenceRetry-Cb5S310L.mjs.map +1 -0
- package/dist/writeCsv-B51ulrVl.mjs +6 -0
- package/dist/writeCsv-B51ulrVl.mjs.map +1 -0
- package/package.json +34 -53
- package/dist/api-keys-CxvKdj2v.mjs +0 -2
- package/dist/api-keys-CxvKdj2v.mjs.map +0 -1
- package/dist/app-BKMxG7RO.mjs +0 -131
- package/dist/app-BKMxG7RO.mjs.map +0 -1
- package/dist/buildAIIntegrationType-Bk0EbFKV.mjs +0 -2
- package/dist/buildAIIntegrationType-Bk0EbFKV.mjs.map +0 -1
- package/dist/code-scanning-Cx1kpssH.mjs +0 -4
- package/dist/code-scanning-Cx1kpssH.mjs.map +0 -1
- package/dist/codecs-TR6p48v3.mjs +0 -2
- package/dist/codecs-TR6p48v3.mjs.map +0 -1
- package/dist/command-Bzyj3M2G.mjs.map +0 -1
- package/dist/consent-manager-c4bgQF1N.mjs +0 -12
- package/dist/consent-manager-c4bgQF1N.mjs.map +0 -1
- package/dist/constants-CnLQtIBn.mjs +0 -2
- package/dist/constants-CnLQtIBn.mjs.map +0 -1
- package/dist/context-bkKpii_t.mjs.map +0 -1
- package/dist/cron-BvxWyvDu.mjs +0 -2
- package/dist/cron-BvxWyvDu.mjs.map +0 -1
- package/dist/data-inventory-CkS_kmus.mjs +0 -75
- package/dist/data-inventory-CkS_kmus.mjs.map +0 -1
- package/dist/dataFlowsToDataSilos-RAhfPV0l.mjs.map +0 -1
- package/dist/impl-8dOatHnF.mjs +0 -2
- package/dist/impl-8dOatHnF.mjs.map +0 -1
- package/dist/impl-Ah-1lwzr.mjs +0 -2
- package/dist/impl-Ah-1lwzr.mjs.map +0 -1
- package/dist/impl-B5lTeRbn.mjs +0 -2
- package/dist/impl-B5lTeRbn.mjs.map +0 -1
- package/dist/impl-B6UhzQcY2.mjs +0 -2
- package/dist/impl-B6UhzQcY2.mjs.map +0 -1
- package/dist/impl-BFf_CotE2.mjs +0 -2
- package/dist/impl-BFf_CotE2.mjs.map +0 -1
- package/dist/impl-BGQ0EGS0.mjs +0 -2
- package/dist/impl-BGQ0EGS0.mjs.map +0 -1
- package/dist/impl-BYBNi68b.mjs.map +0 -1
- package/dist/impl-B__p3_wC.mjs +0 -2
- package/dist/impl-B__p3_wC.mjs.map +0 -1
- package/dist/impl-BcayRe6a.mjs +0 -2
- package/dist/impl-BcayRe6a.mjs.map +0 -1
- package/dist/impl-BkYKsEVG2.mjs +0 -2
- package/dist/impl-BkYKsEVG2.mjs.map +0 -1
- package/dist/impl-Bl2yVgh0.mjs +0 -4
- package/dist/impl-Bl2yVgh0.mjs.map +0 -1
- package/dist/impl-BmAMgEEM.mjs +0 -12
- package/dist/impl-BmAMgEEM.mjs.map +0 -1
- package/dist/impl-BsttzxTN2.mjs +0 -2
- package/dist/impl-BsttzxTN2.mjs.map +0 -1
- package/dist/impl-BtnySmbi.mjs +0 -2
- package/dist/impl-BtnySmbi.mjs.map +0 -1
- package/dist/impl-BwX-evfW2.mjs +0 -4
- package/dist/impl-BwX-evfW2.mjs.map +0 -1
- package/dist/impl-C-wzeAib2.mjs +0 -2
- package/dist/impl-C-wzeAib2.mjs.map +0 -1
- package/dist/impl-C61PYfk12.mjs +0 -2
- package/dist/impl-C61PYfk12.mjs.map +0 -1
- package/dist/impl-CAuNpuF2.mjs +0 -2
- package/dist/impl-CAuNpuF2.mjs.map +0 -1
- package/dist/impl-CSKrBIuV.mjs +0 -2
- package/dist/impl-CSKrBIuV.mjs.map +0 -1
- package/dist/impl-CZP2l3Ds.mjs.map +0 -1
- package/dist/impl-CiJ8hE5W2.mjs +0 -2
- package/dist/impl-CiJ8hE5W2.mjs.map +0 -1
- package/dist/impl-Cj3H-m2Z.mjs +0 -2
- package/dist/impl-Cj3H-m2Z.mjs.map +0 -1
- package/dist/impl-CkY0wfCz.mjs +0 -2
- package/dist/impl-CkY0wfCz.mjs.map +0 -1
- package/dist/impl-Cm8pUfBU2.mjs +0 -2
- package/dist/impl-Cm8pUfBU2.mjs.map +0 -1
- package/dist/impl-CpzS9LVu2.mjs +0 -2
- package/dist/impl-CpzS9LVu2.mjs.map +0 -1
- package/dist/impl-CwfamZ1c.mjs +0 -2
- package/dist/impl-CwfamZ1c.mjs.map +0 -1
- package/dist/impl-D81et1Yb2.mjs +0 -2
- package/dist/impl-D81et1Yb2.mjs.map +0 -1
- package/dist/impl-D92PTNk3.mjs +0 -2
- package/dist/impl-D92PTNk3.mjs.map +0 -1
- package/dist/impl-DTXDVeo6.mjs +0 -2
- package/dist/impl-DTXDVeo6.mjs.map +0 -1
- package/dist/impl-DWoysXup.mjs +0 -2
- package/dist/impl-DWoysXup.mjs.map +0 -1
- package/dist/impl-DX3JHZ4v2.mjs +0 -2
- package/dist/impl-DX3JHZ4v2.mjs.map +0 -1
- package/dist/impl-DhuUrzxQ.mjs +0 -2
- package/dist/impl-DhuUrzxQ.mjs.map +0 -1
- package/dist/impl-DqMYLKjU.mjs +0 -2
- package/dist/impl-DqMYLKjU.mjs.map +0 -1
- package/dist/impl-DqQ6CIj0.mjs +0 -2
- package/dist/impl-DqQ6CIj0.mjs.map +0 -1
- package/dist/impl-Duaq6iWI2.mjs +0 -2
- package/dist/impl-Duaq6iWI2.mjs.map +0 -1
- package/dist/impl-O5gz8qcm.mjs +0 -2
- package/dist/impl-O5gz8qcm.mjs.map +0 -1
- package/dist/impl-PH0AoC7i.mjs +0 -2
- package/dist/impl-PH0AoC7i.mjs.map +0 -1
- package/dist/impl-S8p6toVb2.mjs +0 -2
- package/dist/impl-S8p6toVb2.mjs.map +0 -1
- package/dist/impl-X2MSb8Ij.mjs +0 -2
- package/dist/impl-X2MSb8Ij.mjs.map +0 -1
- package/dist/impl-bo95wZIU2.mjs +0 -2
- package/dist/impl-bo95wZIU2.mjs.map +0 -1
- package/dist/impl-cfdCesro.mjs +0 -2
- package/dist/impl-cfdCesro.mjs.map +0 -1
- package/dist/impl-iZoXu4nV.mjs +0 -2
- package/dist/impl-iZoXu4nV.mjs.map +0 -1
- package/dist/impl-lebl6Zek2.mjs +0 -2
- package/dist/impl-lebl6Zek2.mjs.map +0 -1
- package/dist/impl-p0YN9e2e.mjs +0 -2
- package/dist/impl-p0YN9e2e.mjs.map +0 -1
- package/dist/manual-enrichment-B6lW5kAX.mjs +0 -2
- package/dist/manual-enrichment-B6lW5kAX.mjs.map +0 -1
- package/dist/mergeTranscendInputs-Coj_e2N3.mjs +0 -2
- package/dist/mergeTranscendInputs-Coj_e2N3.mjs.map +0 -1
- package/dist/pooling-CazydwlD.mjs.map +0 -1
- package/dist/preference-management-8gj7aSJB.mjs +0 -7
- package/dist/preference-management-8gj7aSJB.mjs.map +0 -1
- package/dist/readTranscendYaml-DhKG1ViI.mjs.map +0 -1
- package/dist/syncConfigurationToTranscend-VJd0PnaZ.mjs +0 -3010
- package/dist/syncConfigurationToTranscend-VJd0PnaZ.mjs.map +0 -1
- package/dist/uploadConsents-C1S-BNzw.mjs +0 -2
- package/dist/uploadConsents-C1S-BNzw.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-
|
|
2
|
+
//# sourceMappingURL=done-input-validation-DLR0-MJ7.mjs.map
|
package/dist/{done-input-validation-CcZtaz03.mjs.map → done-input-validation-DLR0-MJ7.mjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"done-input-validation-
|
|
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":"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"}
|
|
@@ -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
|
|
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"}
|