@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.
- 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-BlHM1nCd.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-BkZAO1Zs.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-CIJ6P1GD.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-C7JLTDUZ.mjs +0 -2
- package/dist/api-keys-C7JLTDUZ.mjs.map +0 -1
- package/dist/app-Dti3qTxV.mjs +0 -131
- package/dist/app-Dti3qTxV.mjs.map +0 -1
- package/dist/buildAIIntegrationType-Bk0EbFKV.mjs +0 -2
- package/dist/buildAIIntegrationType-Bk0EbFKV.mjs.map +0 -1
- package/dist/code-scanning-3tLsE1W5.mjs +0 -4
- package/dist/code-scanning-3tLsE1W5.mjs.map +0 -1
- package/dist/codecs-TR6p48v3.mjs +0 -2
- package/dist/codecs-TR6p48v3.mjs.map +0 -1
- package/dist/command-BlHM1nCd.mjs.map +0 -1
- package/dist/consent-manager-BoaaMjRQ.mjs +0 -12
- package/dist/consent-manager-BoaaMjRQ.mjs.map +0 -1
- package/dist/constants-DdeeX81W.mjs +0 -2
- package/dist/constants-DdeeX81W.mjs.map +0 -1
- package/dist/context-bkKpii_t.mjs.map +0 -1
- package/dist/cron-DOicA1l8.mjs +0 -2
- package/dist/cron-DOicA1l8.mjs.map +0 -1
- package/dist/data-inventory-OeEcogPl.mjs +0 -75
- package/dist/data-inventory-OeEcogPl.mjs.map +0 -1
- package/dist/dataFlowsToDataSilos-RAhfPV0l.mjs.map +0 -1
- package/dist/impl--Ov8Om49.mjs +0 -2
- package/dist/impl--Ov8Om49.mjs.map +0 -1
- package/dist/impl-4BP7gY61.mjs +0 -2
- package/dist/impl-4BP7gY61.mjs.map +0 -1
- package/dist/impl-B0d5M861.mjs +0 -2
- package/dist/impl-B0d5M861.mjs.map +0 -1
- package/dist/impl-B40z0Aoz2.mjs +0 -2
- package/dist/impl-B40z0Aoz2.mjs.map +0 -1
- package/dist/impl-B8CoAX4t.mjs +0 -2
- package/dist/impl-B8CoAX4t.mjs.map +0 -1
- package/dist/impl-BDKBhSiG2.mjs +0 -2
- package/dist/impl-BDKBhSiG2.mjs.map +0 -1
- package/dist/impl-BEzyqD_12.mjs +0 -2
- package/dist/impl-BEzyqD_12.mjs.map +0 -1
- package/dist/impl-BI4zCNs0.mjs +0 -2
- package/dist/impl-BI4zCNs0.mjs.map +0 -1
- package/dist/impl-BJ9Ge6Wf2.mjs +0 -2
- package/dist/impl-BJ9Ge6Wf2.mjs.map +0 -1
- package/dist/impl-BPz3SpXo2.mjs +0 -2
- package/dist/impl-BPz3SpXo2.mjs.map +0 -1
- package/dist/impl-BYBNi68b.mjs.map +0 -1
- package/dist/impl-Bh04BLeU2.mjs +0 -2
- package/dist/impl-Bh04BLeU2.mjs.map +0 -1
- package/dist/impl-BhMd6_J22.mjs +0 -2
- package/dist/impl-BhMd6_J22.mjs.map +0 -1
- package/dist/impl-BiWrlucD.mjs +0 -2
- package/dist/impl-BiWrlucD.mjs.map +0 -1
- package/dist/impl-BpMKYqSR.mjs +0 -2
- package/dist/impl-BpMKYqSR.mjs.map +0 -1
- package/dist/impl-BraVBCrF2.mjs +0 -4
- package/dist/impl-BraVBCrF2.mjs.map +0 -1
- package/dist/impl-BvTvjK72.mjs +0 -2
- package/dist/impl-BvTvjK72.mjs.map +0 -1
- package/dist/impl-BvZai1Pf2.mjs +0 -2
- package/dist/impl-BvZai1Pf2.mjs.map +0 -1
- package/dist/impl-C73Uh2Ze.mjs +0 -2
- package/dist/impl-C73Uh2Ze.mjs.map +0 -1
- package/dist/impl-CIJ6P1GD.mjs.map +0 -1
- package/dist/impl-CNiEzL3_2.mjs +0 -2
- package/dist/impl-CNiEzL3_2.mjs.map +0 -1
- package/dist/impl-CTPHR7O62.mjs +0 -2
- package/dist/impl-CTPHR7O62.mjs.map +0 -1
- package/dist/impl-CU29SrJb2.mjs +0 -2
- package/dist/impl-CU29SrJb2.mjs.map +0 -1
- package/dist/impl-CaTnsoDi.mjs +0 -2
- package/dist/impl-CaTnsoDi.mjs.map +0 -1
- package/dist/impl-CiQeM677.mjs +0 -2
- package/dist/impl-CiQeM677.mjs.map +0 -1
- package/dist/impl-CkY0wfCz.mjs +0 -2
- package/dist/impl-CkY0wfCz.mjs.map +0 -1
- package/dist/impl-CoZhgLjC.mjs +0 -12
- package/dist/impl-CoZhgLjC.mjs.map +0 -1
- package/dist/impl-CvxsioT4.mjs +0 -2
- package/dist/impl-CvxsioT4.mjs.map +0 -1
- package/dist/impl-D2HalFgB2.mjs +0 -2
- package/dist/impl-D2HalFgB2.mjs.map +0 -1
- package/dist/impl-DFNq8PBe.mjs +0 -2
- package/dist/impl-DFNq8PBe.mjs.map +0 -1
- package/dist/impl-DOgLpdLw.mjs +0 -2
- package/dist/impl-DOgLpdLw.mjs.map +0 -1
- package/dist/impl-DP757pBT.mjs +0 -2
- package/dist/impl-DP757pBT.mjs.map +0 -1
- package/dist/impl-DVDN007x.mjs +0 -2
- package/dist/impl-DVDN007x.mjs.map +0 -1
- package/dist/impl-DfKI4fmI.mjs +0 -2
- package/dist/impl-DfKI4fmI.mjs.map +0 -1
- package/dist/impl-DgsWGnhH.mjs +0 -2
- package/dist/impl-DgsWGnhH.mjs.map +0 -1
- package/dist/impl-DzSmriDw.mjs +0 -2
- package/dist/impl-DzSmriDw.mjs.map +0 -1
- package/dist/impl-EhTHDCC1.mjs +0 -2
- package/dist/impl-EhTHDCC1.mjs.map +0 -1
- package/dist/impl-J-dQqTZJ2.mjs +0 -2
- package/dist/impl-J-dQqTZJ2.mjs.map +0 -1
- package/dist/impl-SxwaNC4m2.mjs +0 -2
- package/dist/impl-SxwaNC4m2.mjs.map +0 -1
- package/dist/impl-fESuqAH1.mjs +0 -2
- package/dist/impl-fESuqAH1.mjs.map +0 -1
- package/dist/impl-gYrR3kIh.mjs +0 -4
- package/dist/impl-gYrR3kIh.mjs.map +0 -1
- package/dist/impl-iwjvzA7a.mjs +0 -2
- package/dist/impl-iwjvzA7a.mjs.map +0 -1
- package/dist/impl-nKY3m-Vx.mjs +0 -2
- package/dist/impl-nKY3m-Vx.mjs.map +0 -1
- package/dist/impl-qiK6VF4F2.mjs +0 -2
- package/dist/impl-qiK6VF4F2.mjs.map +0 -1
- package/dist/manual-enrichment-CYoZNBjO.mjs +0 -2
- package/dist/manual-enrichment-CYoZNBjO.mjs.map +0 -1
- package/dist/mergeTranscendInputs-Coj_e2N3.mjs +0 -2
- package/dist/mergeTranscendInputs-Coj_e2N3.mjs.map +0 -1
- package/dist/pooling-BkZAO1Zs.mjs.map +0 -1
- package/dist/preference-management-BHj26bmE.mjs +0 -7
- package/dist/preference-management-BHj26bmE.mjs.map +0 -1
- package/dist/readTranscendYaml-DhKG1ViI.mjs.map +0 -1
- package/dist/syncConfigurationToTranscend-wWSbGVrI.mjs +0 -3010
- package/dist/syncConfigurationToTranscend-wWSbGVrI.mjs.map +0 -1
- package/dist/uploadConsents-nsjKy1I4.mjs +0 -2
- package/dist/uploadConsents-nsjKy1I4.mjs.map +0 -1
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
import{gql as e}from"graphql-request";const t=`
|
|
2
|
+
id
|
|
3
|
+
title
|
|
4
|
+
status
|
|
5
|
+
index
|
|
6
|
+
questions {
|
|
7
|
+
id
|
|
8
|
+
title
|
|
9
|
+
index
|
|
10
|
+
type
|
|
11
|
+
subType
|
|
12
|
+
placeholder
|
|
13
|
+
description
|
|
14
|
+
isRequired
|
|
15
|
+
displayLogic
|
|
16
|
+
riskLogic
|
|
17
|
+
requireRiskEvaluation
|
|
18
|
+
requireRiskMatrixEvaluation
|
|
19
|
+
riskCategories {
|
|
20
|
+
id
|
|
21
|
+
title
|
|
22
|
+
}
|
|
23
|
+
riskFramework {
|
|
24
|
+
id
|
|
25
|
+
title
|
|
26
|
+
description
|
|
27
|
+
riskLevels {
|
|
28
|
+
id
|
|
29
|
+
title
|
|
30
|
+
}
|
|
31
|
+
riskCategories {
|
|
32
|
+
id
|
|
33
|
+
title
|
|
34
|
+
}
|
|
35
|
+
riskMatrixColumns {
|
|
36
|
+
id
|
|
37
|
+
title
|
|
38
|
+
}
|
|
39
|
+
riskMatrixRows {
|
|
40
|
+
id
|
|
41
|
+
title
|
|
42
|
+
}
|
|
43
|
+
riskMatrix {
|
|
44
|
+
id
|
|
45
|
+
title
|
|
46
|
+
}
|
|
47
|
+
creator {
|
|
48
|
+
id
|
|
49
|
+
email
|
|
50
|
+
name
|
|
51
|
+
}
|
|
52
|
+
riskMatrixRowTitle
|
|
53
|
+
riskMatrixColumnTitle
|
|
54
|
+
}
|
|
55
|
+
riskLevel {
|
|
56
|
+
id
|
|
57
|
+
title
|
|
58
|
+
}
|
|
59
|
+
reviewerRiskLevel {
|
|
60
|
+
id
|
|
61
|
+
title
|
|
62
|
+
}
|
|
63
|
+
riskLevelFromRiskMatrix {
|
|
64
|
+
id
|
|
65
|
+
title
|
|
66
|
+
}
|
|
67
|
+
answerOptions {
|
|
68
|
+
id
|
|
69
|
+
index
|
|
70
|
+
value
|
|
71
|
+
}
|
|
72
|
+
selectedAnswers {
|
|
73
|
+
... on AssessmentAnswerInterface {
|
|
74
|
+
id
|
|
75
|
+
index
|
|
76
|
+
value
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
respondent {
|
|
80
|
+
id
|
|
81
|
+
email
|
|
82
|
+
name
|
|
83
|
+
}
|
|
84
|
+
attributeKey {
|
|
85
|
+
name
|
|
86
|
+
}
|
|
87
|
+
externalRespondentEmail
|
|
88
|
+
comments {
|
|
89
|
+
id
|
|
90
|
+
content
|
|
91
|
+
createdAt
|
|
92
|
+
updatedAt
|
|
93
|
+
author {
|
|
94
|
+
id
|
|
95
|
+
email
|
|
96
|
+
name
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
allowedMimeTypes
|
|
100
|
+
updatedAt
|
|
101
|
+
referenceId
|
|
102
|
+
previousSubmissions {
|
|
103
|
+
id
|
|
104
|
+
updatedAt
|
|
105
|
+
assessmentQuestionId
|
|
106
|
+
answers {
|
|
107
|
+
... on AssessmentAnswerInterface {
|
|
108
|
+
id
|
|
109
|
+
index
|
|
110
|
+
value
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
allowSelectOther
|
|
115
|
+
syncModel
|
|
116
|
+
syncColumn
|
|
117
|
+
syncRowIds
|
|
118
|
+
syncOverride
|
|
119
|
+
}
|
|
120
|
+
assignees {
|
|
121
|
+
id
|
|
122
|
+
email
|
|
123
|
+
name
|
|
124
|
+
}
|
|
125
|
+
externalAssignees {
|
|
126
|
+
id
|
|
127
|
+
email
|
|
128
|
+
}
|
|
129
|
+
isReviewed
|
|
130
|
+
`,n=e`
|
|
131
|
+
query TranscendCliAssessments(
|
|
132
|
+
$first: Int!
|
|
133
|
+
$offset: Int!
|
|
134
|
+
$filterBy: AssessmentFormFiltersInput
|
|
135
|
+
) {
|
|
136
|
+
assessmentForms(first: $first, offset: $offset, filterBy: $filterBy) {
|
|
137
|
+
nodes {
|
|
138
|
+
id
|
|
139
|
+
creator {
|
|
140
|
+
id
|
|
141
|
+
email
|
|
142
|
+
name
|
|
143
|
+
}
|
|
144
|
+
lastEditor {
|
|
145
|
+
id
|
|
146
|
+
email
|
|
147
|
+
name
|
|
148
|
+
}
|
|
149
|
+
title
|
|
150
|
+
description
|
|
151
|
+
status
|
|
152
|
+
assignees {
|
|
153
|
+
id
|
|
154
|
+
email
|
|
155
|
+
name
|
|
156
|
+
}
|
|
157
|
+
externalAssignees {
|
|
158
|
+
id
|
|
159
|
+
email
|
|
160
|
+
}
|
|
161
|
+
reviewers {
|
|
162
|
+
id
|
|
163
|
+
email
|
|
164
|
+
name
|
|
165
|
+
}
|
|
166
|
+
isLocked
|
|
167
|
+
isArchived
|
|
168
|
+
isExternallyCreated
|
|
169
|
+
dueDate
|
|
170
|
+
createdAt
|
|
171
|
+
updatedAt
|
|
172
|
+
assignedAt
|
|
173
|
+
submittedAt
|
|
174
|
+
approvedAt
|
|
175
|
+
rejectedAt
|
|
176
|
+
titleIsInternal
|
|
177
|
+
retentionSchedule {
|
|
178
|
+
id
|
|
179
|
+
type
|
|
180
|
+
durationDays
|
|
181
|
+
operation
|
|
182
|
+
}
|
|
183
|
+
attributeValues {
|
|
184
|
+
name
|
|
185
|
+
attributeKey {
|
|
186
|
+
name
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
sections {
|
|
190
|
+
${t}
|
|
191
|
+
}
|
|
192
|
+
assessmentGroup {
|
|
193
|
+
id
|
|
194
|
+
title
|
|
195
|
+
description
|
|
196
|
+
}
|
|
197
|
+
resources {
|
|
198
|
+
resourceType
|
|
199
|
+
... on AttributeBusinessEntityResource {
|
|
200
|
+
id
|
|
201
|
+
title
|
|
202
|
+
}
|
|
203
|
+
... on AttributeDataSiloResource {
|
|
204
|
+
id
|
|
205
|
+
title
|
|
206
|
+
}
|
|
207
|
+
... on AttributeDataSubCategoryResource {
|
|
208
|
+
id
|
|
209
|
+
name
|
|
210
|
+
category
|
|
211
|
+
}
|
|
212
|
+
... on AttributeSubDataPointResource {
|
|
213
|
+
id
|
|
214
|
+
name
|
|
215
|
+
}
|
|
216
|
+
... on AttributeProcessingPurposeSubCategoryResource {
|
|
217
|
+
id
|
|
218
|
+
name
|
|
219
|
+
purpose
|
|
220
|
+
}
|
|
221
|
+
... on AttributeRequestResource {
|
|
222
|
+
id
|
|
223
|
+
type
|
|
224
|
+
}
|
|
225
|
+
... on AttributeVendorResource {
|
|
226
|
+
id
|
|
227
|
+
title
|
|
228
|
+
}
|
|
229
|
+
... on AttributePromptResource {
|
|
230
|
+
id
|
|
231
|
+
title
|
|
232
|
+
}
|
|
233
|
+
... on AttributePromptRunResource {
|
|
234
|
+
id
|
|
235
|
+
title
|
|
236
|
+
}
|
|
237
|
+
... on AttributePromptGroupResource {
|
|
238
|
+
id
|
|
239
|
+
title
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
syncedRows {
|
|
243
|
+
resourceType
|
|
244
|
+
... on AttributeBusinessEntityResource {
|
|
245
|
+
id
|
|
246
|
+
title
|
|
247
|
+
}
|
|
248
|
+
... on AttributeDataSiloResource {
|
|
249
|
+
id
|
|
250
|
+
title
|
|
251
|
+
}
|
|
252
|
+
... on AttributeDataSubCategoryResource {
|
|
253
|
+
id
|
|
254
|
+
name
|
|
255
|
+
category
|
|
256
|
+
}
|
|
257
|
+
... on AttributeSubDataPointResource {
|
|
258
|
+
id
|
|
259
|
+
name
|
|
260
|
+
}
|
|
261
|
+
... on AttributeProcessingPurposeSubCategoryResource {
|
|
262
|
+
id
|
|
263
|
+
name
|
|
264
|
+
purpose
|
|
265
|
+
}
|
|
266
|
+
... on AttributeVendorResource {
|
|
267
|
+
id
|
|
268
|
+
title
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
`,r=e`
|
|
275
|
+
mutation TranscendCliImportOneTrustAssessmentForms($input: ImportOnetrustAssessmentsInput!) {
|
|
276
|
+
importOneTrustAssessmentForms(input: $input) {
|
|
277
|
+
assessmentForms {
|
|
278
|
+
id
|
|
279
|
+
title
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
`;export{t as n,r,n as t};
|
|
284
|
+
//# sourceMappingURL=assessment-BDywVaGR.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assessment-BDywVaGR.mjs","names":[],"sources":["../src/lib/graphql/gqls/assessment.ts"],"sourcesContent":["import { gql } from 'graphql-request';\n\nexport const ASSESSMENT_SECTION_FIELDS = `\n id\n title\n status\n index\n questions {\n id\n title\n index\n type\n subType\n placeholder\n description\n isRequired\n displayLogic\n riskLogic\n requireRiskEvaluation\n requireRiskMatrixEvaluation\n riskCategories {\n id\n title\n }\n riskFramework {\n id\n title\n description\n riskLevels {\n id\n title\n }\n riskCategories {\n id\n title\n }\n riskMatrixColumns {\n id\n title\n }\n riskMatrixRows {\n id\n title\n }\n riskMatrix {\n id\n title\n }\n creator {\n id\n email\n name\n }\n riskMatrixRowTitle\n riskMatrixColumnTitle\n }\n riskLevel {\n id\n title\n }\n reviewerRiskLevel {\n id\n title\n }\n riskLevelFromRiskMatrix {\n id\n title\n }\n answerOptions {\n id\n index\n value\n }\n selectedAnswers {\n ... on AssessmentAnswerInterface {\n id\n index\n value\n }\n }\n respondent {\n id\n email\n name\n }\n attributeKey {\n name\n }\n externalRespondentEmail\n comments {\n id\n content\n createdAt\n updatedAt\n author {\n id\n email\n name\n }\n }\n allowedMimeTypes\n updatedAt\n referenceId\n previousSubmissions {\n id\n updatedAt\n assessmentQuestionId\n answers {\n ... on AssessmentAnswerInterface {\n id\n index\n value\n }\n }\n }\n allowSelectOther\n syncModel\n syncColumn\n syncRowIds\n syncOverride\n }\n assignees {\n id\n email\n name\n }\n externalAssignees {\n id\n email\n }\n isReviewed\n`;\n\n// TODO: https://transcend.height.app/T-27909 - enable optimizations\n// isExportCsv: true\n// useMaster: false\n// orderBy: [\n// { field: createdAt, direction: ASC }\n// { field: name, direction: ASC }\n// ]\nexport const ASSESSMENTS = gql`\n query TranscendCliAssessments(\n $first: Int!\n $offset: Int!\n $filterBy: AssessmentFormFiltersInput\n ) {\n assessmentForms(first: $first, offset: $offset, filterBy: $filterBy) {\n nodes {\n id\n creator {\n id\n email\n name\n }\n lastEditor {\n id\n email\n name\n }\n title\n description\n status\n assignees {\n id\n email\n name\n }\n externalAssignees {\n id\n email\n }\n reviewers {\n id\n email\n name\n }\n isLocked\n isArchived\n isExternallyCreated\n dueDate\n createdAt\n updatedAt\n assignedAt\n submittedAt\n approvedAt\n rejectedAt\n titleIsInternal\n retentionSchedule {\n id\n type\n durationDays\n operation\n }\n attributeValues {\n name\n attributeKey {\n name\n }\n }\n sections {\n ${ASSESSMENT_SECTION_FIELDS}\n }\n assessmentGroup {\n id\n title\n description\n }\n resources {\n resourceType\n ... on AttributeBusinessEntityResource {\n id\n title\n }\n ... on AttributeDataSiloResource {\n id\n title\n }\n ... on AttributeDataSubCategoryResource {\n id\n name\n category\n }\n ... on AttributeSubDataPointResource {\n id\n name\n }\n ... on AttributeProcessingPurposeSubCategoryResource {\n id\n name\n purpose\n }\n ... on AttributeRequestResource {\n id\n type\n }\n ... on AttributeVendorResource {\n id\n title\n }\n ... on AttributePromptResource {\n id\n title\n }\n ... on AttributePromptRunResource {\n id\n title\n }\n ... on AttributePromptGroupResource {\n id\n title\n }\n }\n syncedRows {\n resourceType\n ... on AttributeBusinessEntityResource {\n id\n title\n }\n ... on AttributeDataSiloResource {\n id\n title\n }\n ... on AttributeDataSubCategoryResource {\n id\n name\n category\n }\n ... on AttributeSubDataPointResource {\n id\n name\n }\n ... on AttributeProcessingPurposeSubCategoryResource {\n id\n name\n purpose\n }\n ... on AttributeVendorResource {\n id\n title\n }\n }\n }\n }\n }\n`;\n\nexport const IMPORT_ONE_TRUST_ASSESSMENT_FORMS = gql`\n mutation TranscendCliImportOneTrustAssessmentForms($input: ImportOnetrustAssessmentsInput!) {\n importOneTrustAssessmentForms(input: $input) {\n assessmentForms {\n id\n title\n }\n }\n }\n`;\n"],"mappings":"sCAEA,MAAa,EAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0I5B,EAAc,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YA4DlB,EAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsFzB,EAAoC,CAAG"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import
|
|
2
|
+
import{t as e}from"../app-By_zDIkK.mjs";import{t}from"../context-CdSyuBlf.mjs";import{proposeCompletions as n}from"@stricli/core";async function r(){let r=process.argv.slice(3);process.env.COMP_LINE?.endsWith(` `)&&r.push(``),await n(e,r,t(process));try{for(let{completion:i}of await n(e,r,t(process)))process.stdout.write(`${i}\n`)}catch{}}r();export{};
|
|
3
3
|
//# sourceMappingURL=bash-complete.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bash-complete.mjs","names":[],"sources":["../../src/bin/bash-complete.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { proposeCompletions } from '@stricli/core';\nimport { app } from '../app';\nimport { buildContext } from '../context';\n\n/**\n * Install bash complete\n */\nasync function main(): Promise<void> {\n const inputs = process.argv.slice(3);\n if (process.env.COMP_LINE?.endsWith(' ')) {\n inputs.push('');\n }\n await proposeCompletions(app, inputs, buildContext(process));\n try {\n for (const { completion } of await proposeCompletions(
|
|
1
|
+
{"version":3,"file":"bash-complete.mjs","names":[],"sources":["../../src/bin/bash-complete.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { proposeCompletions } from '@stricli/core';\n\nimport { app } from '../app.js';\nimport { buildContext } from '../context.js';\n\n/**\n * Install bash complete\n */\nasync function main(): Promise<void> {\n const inputs = process.argv.slice(3);\n if (process.env.COMP_LINE?.endsWith(' ')) {\n inputs.push('');\n }\n await proposeCompletions(app, inputs, buildContext(process));\n try {\n for (const { completion } of await proposeCompletions(app, inputs, buildContext(process))) {\n process.stdout.write(`${completion}\\n`);\n }\n } catch {\n // ignore\n }\n}\n\nmain();\n"],"mappings":";kIASA,eAAe,GAAsB,CACnC,IAAM,EAAS,QAAQ,KAAK,MAAM,EAAE,CAChC,QAAQ,IAAI,WAAW,SAAS,IAAI,EACtC,EAAO,KAAK,GAAG,CAEjB,MAAM,EAAmB,EAAK,EAAQ,EAAa,QAAQ,CAAC,CAC5D,GAAI,CACF,IAAK,GAAM,CAAE,gBAAgB,MAAM,EAAmB,EAAK,EAAQ,EAAa,QAAQ,CAAC,CACvF,QAAQ,OAAO,MAAM,GAAG,EAAW,IAAI,MAEnC,GAKV,GAAM"}
|
package/dist/bin/cli.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import
|
|
2
|
+
import{t as e}from"../app-By_zDIkK.mjs";import{t}from"../context-CdSyuBlf.mjs";import{run as n}from"@stricli/core";async function r(){await n(e,process.argv.slice(2),t(process))}r();export{};
|
|
3
3
|
//# sourceMappingURL=cli.mjs.map
|
package/dist/bin/cli.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.mjs","names":[],"sources":["../../src/bin/cli.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { run } from '@stricli/core';\nimport { app } from '../app';\nimport { buildContext } from '../context';\n\n/**\n * Entrypoint for `transcend` CLI\n */\nasync function main(): Promise<void> {\n await run(app, process.argv.slice(2), buildContext(process));\n}\n\nmain();\n"],"mappings":";
|
|
1
|
+
{"version":3,"file":"cli.mjs","names":[],"sources":["../../src/bin/cli.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { run } from '@stricli/core';\n\nimport { app } from '../app.js';\nimport { buildContext } from '../context.js';\n\n/**\n * Entrypoint for `transcend` CLI\n */\nasync function main(): Promise<void> {\n await run(app, process.argv.slice(2), buildContext(process));\n}\n\nmain();\n"],"mappings":";mHASA,eAAe,GAAsB,CACnC,MAAM,EAAI,EAAK,QAAQ,KAAK,MAAM,EAAE,CAAE,EAAa,QAAQ,CAAC,CAG9D,GAAM"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import
|
|
2
|
+
import{t as e}from"../app-By_zDIkK.mjs";import{t}from"../logger-B-LXIf3U.mjs";import{generateHelpTextForAllCommands as n}from"@stricli/core";const r={"tr-build-xdi-sync-endpoint":[`consent`,`build-xdi-sync-endpoint`],"tr-consent-manager-service-json-to-yml":[`inventory`,`consent-manager-service-json-to-yml`],"tr-consent-managers-to-business-entities":[`inventory`,`consent-managers-to-business-entities`],"tr-cron-mark-identifiers-completed":[`request`,`cron`,`mark-identifiers-completed`],"tr-cron-pull-identifiers":[`request`,`cron`,`pull-identifiers`],"tr-derive-data-silos-from-data-flows":[`inventory`,`derive-data-silos-from-data-flows`],"tr-derive-data-silos-from-data-flows-cross-instance":[`inventory`,`derive-data-silos-from-data-flows-cross-instance`],"tr-discover-silos":[`inventory`,`discover-silos`],"tr-generate-api-keys":[`admin`,`generate-api-keys`],"tr-manual-enrichment-pull-identifiers":[`request`,`preflight`,`pull-identifiers`],"tr-manual-enrichment-push-identifiers":[`request`,`preflight`,`push-identifiers`],"tr-mark-request-data-silos-completed":[`request`,`system`,`mark-request-data-silos-completed`],"tr-pull":[`inventory`,`pull`],"tr-pull-consent-metrics":[`consent`,`pull-consent-metrics`],"tr-pull-consent-preferences":[`consent`,`pull-consent-preferences`],"tr-pull-datapoints":[`inventory`,`pull-datapoints`],"tr-pull-pull-unstructured-discovery-files":[`inventory`,`pull-unstructured-discovery-files`],"tr-push":[`inventory`,`push`],"tr-request-approve":[`request`,`approve`],"tr-request-cancel":[`request`,`cancel`],"tr-request-download-files":[`request`,`download-files`],"tr-request-enricher-restart":[`request`,`enricher-restart`],"tr-request-export":[`request`,`export`],"tr-request-mark-silent":[`request`,`mark-silent`],"tr-request-notify-additional-time":[`request`,`notify-additional-time`],"tr-request-reject-unverified-identifiers":[`request`,`reject-unverified-identifiers`],"tr-request-restart":[`request`,`restart`],"tr-request-upload":[`request`,`upload`],"tr-retry-request-data-silos":[`request`,`system`,`retry-request-data-silos`],"tr-scan-packages":[`inventory`,`scan-packages`],"tr-skip-preflight-jobs":[`request`,`skip-preflight-jobs`],"tr-skip-request-data-silos":[`request`,`system`,`skip-request-data-silos`],"tr-sync-ot":[`migration`,`sync-ot`],"tr-update-consent-manager":[`consent`,`update-consent-manager`],"tr-upload-consent-preferences":[`consent`,`upload-consent-preferences`],"tr-upload-cookies-from-csv":[`consent`,`upload-cookies-from-csv`],"tr-upload-data-flows-from-csv":[`consent`,`upload-data-flows-from-csv`],"tr-upload-preferences":[`consent`,`upload-preferences`]};function i(t){return n(e).find(n=>n[0]===`${e.config.name} ${t.join(` `)}`)?.[1]}function a(n){t.log(`[DEPRECATION NOTICE]`);let a=r[n];if(!a){let n=Object.entries(r).map(([t,n])=>`\`${t}\` -> \`${e.config.name} ${n.join(` `)}\``).join(`
|
|
3
3
|
`);t.log(`This command is deprecated as of v7.0.0. Here is a list of new commands, mapped to their legacy command names:
|
|
4
4
|
${n}`);return}t.log(`\`${n}\` is deprecated as of v7.0.0.\nUse \`${e.config.name} ${a.join(` `)}\` instead.\n`);let o=i(a);if(!o)throw Error(`Failed to get help text for command: \`${a.join(` `)}\``);t.log(o)}function o(){let e=process.argv.at(-1)?.split(`/`).pop()?.trim();if(e)a(e);else throw Error(`Deprecated command`);process.exit(1)}o();export{};
|
|
5
5
|
//# sourceMappingURL=deprecated-command.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deprecated-command.mjs","names":[],"sources":["../../src/lib/cli/legacy-commands.ts","../../src/bin/deprecated-command.ts"],"sourcesContent":["import {\n generateHelpTextForAllCommands,\n type Application,\n type CommandContext,\n} from '@stricli/core';\nimport { app } from '../../app';\nimport { logger } from '../../logger';\n\n// Maps legacy (<7.0.0) command names to their modern command structure\nexport const LEGACY_COMMAND_TO_MODERN_COMMAND_MAP: Record<string, string[]> = {\n 'tr-build-xdi-sync-endpoint': ['consent', 'build-xdi-sync-endpoint'],\n 'tr-consent-manager-service-json-to-yml': [
|
|
1
|
+
{"version":3,"file":"deprecated-command.mjs","names":[],"sources":["../../src/lib/cli/legacy-commands.ts","../../src/bin/deprecated-command.ts"],"sourcesContent":["import {\n generateHelpTextForAllCommands,\n type Application,\n type CommandContext,\n} from '@stricli/core';\n\nimport { app } from '../../app.js';\nimport { logger } from '../../logger.js';\n\n// Maps legacy (<7.0.0) command names to their modern command structure\nexport const LEGACY_COMMAND_TO_MODERN_COMMAND_MAP: Record<string, string[]> = {\n 'tr-build-xdi-sync-endpoint': ['consent', 'build-xdi-sync-endpoint'],\n 'tr-consent-manager-service-json-to-yml': ['inventory', 'consent-manager-service-json-to-yml'],\n 'tr-consent-managers-to-business-entities': [\n 'inventory',\n 'consent-managers-to-business-entities',\n ],\n 'tr-cron-mark-identifiers-completed': ['request', 'cron', 'mark-identifiers-completed'],\n 'tr-cron-pull-identifiers': ['request', 'cron', 'pull-identifiers'],\n 'tr-derive-data-silos-from-data-flows': ['inventory', 'derive-data-silos-from-data-flows'],\n 'tr-derive-data-silos-from-data-flows-cross-instance': [\n 'inventory',\n 'derive-data-silos-from-data-flows-cross-instance',\n ],\n 'tr-discover-silos': ['inventory', 'discover-silos'],\n 'tr-generate-api-keys': ['admin', 'generate-api-keys'],\n 'tr-manual-enrichment-pull-identifiers': ['request', 'preflight', 'pull-identifiers'],\n 'tr-manual-enrichment-push-identifiers': ['request', 'preflight', 'push-identifiers'],\n 'tr-mark-request-data-silos-completed': [\n 'request',\n 'system',\n 'mark-request-data-silos-completed',\n ],\n 'tr-pull': ['inventory', 'pull'],\n 'tr-pull-consent-metrics': ['consent', 'pull-consent-metrics'],\n 'tr-pull-consent-preferences': ['consent', 'pull-consent-preferences'],\n 'tr-pull-datapoints': ['inventory', 'pull-datapoints'],\n 'tr-pull-pull-unstructured-discovery-files': ['inventory', 'pull-unstructured-discovery-files'],\n 'tr-push': ['inventory', 'push'],\n 'tr-request-approve': ['request', 'approve'],\n 'tr-request-cancel': ['request', 'cancel'],\n 'tr-request-download-files': ['request', 'download-files'],\n 'tr-request-enricher-restart': ['request', 'enricher-restart'],\n 'tr-request-export': ['request', 'export'],\n 'tr-request-mark-silent': ['request', 'mark-silent'],\n 'tr-request-notify-additional-time': ['request', 'notify-additional-time'],\n 'tr-request-reject-unverified-identifiers': ['request', 'reject-unverified-identifiers'],\n 'tr-request-restart': ['request', 'restart'],\n 'tr-request-upload': ['request', 'upload'],\n 'tr-retry-request-data-silos': ['request', 'system', 'retry-request-data-silos'],\n 'tr-scan-packages': ['inventory', 'scan-packages'],\n 'tr-skip-preflight-jobs': ['request', 'skip-preflight-jobs'],\n 'tr-skip-request-data-silos': ['request', 'system', 'skip-request-data-silos'],\n 'tr-sync-ot': ['migration', 'sync-ot'],\n 'tr-update-consent-manager': ['consent', 'update-consent-manager'],\n 'tr-upload-consent-preferences': ['consent', 'upload-consent-preferences'],\n 'tr-upload-cookies-from-csv': ['consent', 'upload-cookies-from-csv'],\n 'tr-upload-data-flows-from-csv': ['consent', 'upload-data-flows-from-csv'],\n 'tr-upload-preferences': ['consent', 'upload-preferences'],\n};\n\n// All commands have been migrated to the modern command structure\n\n/**\n * Gets the help text for a command\n *\n * @param command - The command to get help text for\n * @returns The help text for the command\n */\nexport function getHelpTextForCommand(command: string[]): string | undefined {\n const helpTextForAllCommands = generateHelpTextForAllCommands(app as Application<CommandContext>);\n\n return helpTextForAllCommands.find(\n (x) => x[0] === `${app.config.name} ${command.join(' ')}`,\n )?.[1];\n}\n\n/**\n * Logs a modern command recommendation for a legacy command\n *\n * @param legacyCommand - The legacy command to log a modern command recommendation for\n * @example\n * logModernCommandRecommendation('tr-cron-mark-identifiers-completed');\n */\nexport function logModernCommandRecommendation(\n legacyCommand: keyof typeof LEGACY_COMMAND_TO_MODERN_COMMAND_MAP,\n): void {\n logger.log('[DEPRECATION NOTICE]');\n\n const modernCommand = LEGACY_COMMAND_TO_MODERN_COMMAND_MAP[legacyCommand];\n if (!modernCommand) {\n const modernCommandString = Object.entries(LEGACY_COMMAND_TO_MODERN_COMMAND_MAP)\n .map(\n ([legacyCommand, modernCommand]) =>\n `\\`${legacyCommand}\\` -> \\`${app.config.name} ${modernCommand.join(' ')}\\``,\n )\n .join('\\n');\n logger.log(\n 'This command is deprecated as of v7.0.0.' +\n ` Here is a list of new commands, mapped to their legacy command names:\n${modernCommandString}`,\n );\n return;\n }\n\n logger.log(\n `\\`${legacyCommand}\\` is deprecated as of v7.0.0.\\nUse \\`${\n app.config.name\n } ${modernCommand.join(' ')}\\` instead.\\n`,\n );\n\n const helpText = getHelpTextForCommand(modernCommand);\n if (!helpText) {\n throw new Error(`Failed to get help text for command: \\`${modernCommand.join(' ')}\\``);\n }\n\n logger.log(helpText);\n}\n","#!/usr/bin/env node\nimport { logModernCommandRecommendation } from '../lib/cli/legacy-commands.js';\n\n/**\n * Runs when a deprecated command is called.\n */\nfunction main(): void {\n const command = process.argv.at(-1);\n const legacyCommand = command?.split('/').pop()?.trim();\n if (legacyCommand) {\n logModernCommandRecommendation(legacyCommand);\n } else {\n throw new Error('Deprecated command');\n }\n\n process.exit(1);\n}\n\nmain();\n"],"mappings":";6IAUA,MAAa,EAAiE,CAC5E,6BAA8B,CAAC,UAAW,0BAA0B,CACpE,yCAA0C,CAAC,YAAa,sCAAsC,CAC9F,2CAA4C,CAC1C,YACA,wCACD,CACD,qCAAsC,CAAC,UAAW,OAAQ,6BAA6B,CACvF,2BAA4B,CAAC,UAAW,OAAQ,mBAAmB,CACnE,uCAAwC,CAAC,YAAa,oCAAoC,CAC1F,sDAAuD,CACrD,YACA,mDACD,CACD,oBAAqB,CAAC,YAAa,iBAAiB,CACpD,uBAAwB,CAAC,QAAS,oBAAoB,CACtD,wCAAyC,CAAC,UAAW,YAAa,mBAAmB,CACrF,wCAAyC,CAAC,UAAW,YAAa,mBAAmB,CACrF,uCAAwC,CACtC,UACA,SACA,oCACD,CACD,UAAW,CAAC,YAAa,OAAO,CAChC,0BAA2B,CAAC,UAAW,uBAAuB,CAC9D,8BAA+B,CAAC,UAAW,2BAA2B,CACtE,qBAAsB,CAAC,YAAa,kBAAkB,CACtD,4CAA6C,CAAC,YAAa,oCAAoC,CAC/F,UAAW,CAAC,YAAa,OAAO,CAChC,qBAAsB,CAAC,UAAW,UAAU,CAC5C,oBAAqB,CAAC,UAAW,SAAS,CAC1C,4BAA6B,CAAC,UAAW,iBAAiB,CAC1D,8BAA+B,CAAC,UAAW,mBAAmB,CAC9D,oBAAqB,CAAC,UAAW,SAAS,CAC1C,yBAA0B,CAAC,UAAW,cAAc,CACpD,oCAAqC,CAAC,UAAW,yBAAyB,CAC1E,2CAA4C,CAAC,UAAW,gCAAgC,CACxF,qBAAsB,CAAC,UAAW,UAAU,CAC5C,oBAAqB,CAAC,UAAW,SAAS,CAC1C,8BAA+B,CAAC,UAAW,SAAU,2BAA2B,CAChF,mBAAoB,CAAC,YAAa,gBAAgB,CAClD,yBAA0B,CAAC,UAAW,sBAAsB,CAC5D,6BAA8B,CAAC,UAAW,SAAU,0BAA0B,CAC9E,aAAc,CAAC,YAAa,UAAU,CACtC,4BAA6B,CAAC,UAAW,yBAAyB,CAClE,gCAAiC,CAAC,UAAW,6BAA6B,CAC1E,6BAA8B,CAAC,UAAW,0BAA0B,CACpE,gCAAiC,CAAC,UAAW,6BAA6B,CAC1E,wBAAyB,CAAC,UAAW,qBAAqB,CAC3D,CAUD,SAAgB,EAAsB,EAAuC,CAG3E,OAF+B,EAA+B,EAAmC,CAEnE,KAC3B,GAAM,EAAE,KAAO,GAAG,EAAI,OAAO,KAAK,GAAG,EAAQ,KAAK,IAAI,GACxD,GAAG,GAUN,SAAgB,EACd,EACM,CACN,EAAO,IAAI,uBAAuB,CAElC,IAAM,EAAgB,EAAqC,GAC3D,GAAI,CAAC,EAAe,CAClB,IAAM,EAAsB,OAAO,QAAQ,EAAqC,CAC7E,KACE,CAAC,EAAe,KACf,KAAK,EAAc,UAAU,EAAI,OAAO,KAAK,GAAG,EAAc,KAAK,IAAI,CAAC,IAC3E,CACA,KAAK;EAAK,CACb,EAAO,IACL;EAEJ,IACG,CACD,OAGF,EAAO,IACL,KAAK,EAAc,wCACjB,EAAI,OAAO,KACZ,GAAG,EAAc,KAAK,IAAI,CAAC,eAC7B,CAED,IAAM,EAAW,EAAsB,EAAc,CACrD,GAAI,CAAC,EACH,MAAU,MAAM,0CAA0C,EAAc,KAAK,IAAI,CAAC,IAAI,CAGxF,EAAO,IAAI,EAAS,CC9GtB,SAAS,GAAa,CAEpB,IAAM,EADU,QAAQ,KAAK,GAAG,GAAG,EACJ,MAAM,IAAI,CAAC,KAAK,EAAE,MAAM,CACvD,GAAI,EACF,EAA+B,EAAc,MAE7C,MAAU,MAAM,qBAAqB,CAGvC,QAAQ,KAAK,EAAE,CAGjB,GAAM"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bluebird-CUitXgsY.mjs","names":[],"sources":["../src/lib/bluebird.ts"],"sourcesContent":["import Bluebird from 'bluebird';\n\nconst { map, mapSeries } = Bluebird;\n\nexport { map, mapSeries };\n"],"mappings":"wBAEA,KAAM,CAAE,MAAK,aAAc"}
|
|
@@ -0,0 +1,9 @@
|
|
|
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{n as r}from"./fetchConsentManagerId-DHDA5Py9.mjs";import{r as i}from"./makeGraphQLRequest-G078PsEL.mjs";import{difference as a}from"lodash-es";import o from"colors";const s=e=>new URL(`https://${e}`).hostname.split(`.`).slice(-2).join(`.`),c=/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;async function l(l,{xdiLocation:u,transcendUrl:d=e,removeIpAddresses:f=!0,domainBlockList:p=[`localhost`],xdiAllowedCommands:m=`ConsentManager:Sync`}){let h=await n(Array.isArray(l)?l:[{apiKey:l,organizationId:``,organizationName:``}],async e=>(t.info(o.magenta(`Pulling consent metadata for organization - ${e.organizationName}`)),await r(i(d,e.apiKey))),{concurrency:5}),g={};return h.forEach(e=>{let t=e.partition?.partition||e.bundleURL.split(`/`).reverse()[1];g[t]||(g[t]=[]);let n=a(e.configuration.domains.filter(e=>!f||!c.test(e)).map(e=>s(e)),p);g[t]=[...new Set([...g[t]||[],...n])]}),{html:`
|
|
2
|
+
<!DOCTYPE html>
|
|
3
|
+
<script
|
|
4
|
+
src="${u}"
|
|
5
|
+
data-sync-groups='${JSON.stringify(g,null,2)}'
|
|
6
|
+
data-xdi-commands="${m}"
|
|
7
|
+
><\/script>
|
|
8
|
+
`,syncGroups:g}}export{l as n,s as r,c as t};
|
|
9
|
+
//# sourceMappingURL=buildXdiSyncEndpoint-BMaMHO7Z.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildXdiSyncEndpoint-BMaMHO7Z.mjs","names":[],"sources":["../src/lib/consent-manager/domainToHost.ts","../src/lib/consent-manager/buildXdiSyncEndpoint.ts"],"sourcesContent":["/**\n * Convert a domain to host\n *\n * @param domain - e.g. test.acme.com\n * @returns Host acme.com\n */\nexport const domainToHost = (domain: string): string =>\n new URL(`https://${domain}`).hostname.split('.').slice(-2).join('.');\n","import colors from 'colors';\nimport { difference } from 'lodash-es';\n\nimport { StoredApiKey } from '../../codecs.js';\nimport { DEFAULT_TRANSCEND_API } from '../../constants.js';\nimport { logger } from '../../logger.js';\nimport { map } from '../bluebird.js';\nimport { buildTranscendGraphQLClient, fetchConsentManager } from '../graphql/index.js';\nimport { domainToHost } from './domainToHost.js';\n\n/**\n * Sync group configuration mapping\n * e.g.\n * {\n * \"abdb5e78-0d69-4554-a3bd-84b72ca3b3d9\": [\n * \"test.com\"\n * ],\n * \"f6b3ba87-c9df-444f-b420-6fac49e35910\": [\n * \"blue.com\"\n * ]\n * }\n */\nexport type XdiSyncGroups = { [k in string]: string[] };\n\n/** Regular expression for IP addresses - remove these from sync endpoint */\nexport const IP_ADDRESS_REGEX =\n // eslint-disable-next-line max-len\n /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;\n\n/**\n * Build the sync endpoint definition for a set of Transcend accounts\n *\n * @param apiKeys - The API keys that will be used to pull down configurations for\n * @param options - Options\n * @returns The XDI configuration\n */\nexport async function buildXdiSyncEndpoint(\n apiKeys: string | StoredApiKey[],\n {\n xdiLocation,\n transcendUrl = DEFAULT_TRANSCEND_API,\n removeIpAddresses = true,\n domainBlockList = ['localhost'],\n xdiAllowedCommands = 'ConsentManager:Sync',\n }: {\n /** The file location where the XDI file is hosted */\n xdiLocation: string;\n /** URL of Transcend API */\n transcendUrl?: string;\n /** When true, remove IP addresses (defaults to true) */\n removeIpAddresses?: boolean;\n /** Block list of domains to omit from sync endpoint - includes `localhost` by default */\n domainBlockList?: string[];\n /** Allows XDI commands */\n xdiAllowedCommands?: string;\n },\n): Promise<{\n /** Sync group configurations */\n syncGroups: XdiSyncGroups;\n /** The HTML string */\n html: string;\n}> {\n // Convert API keys to list\n const apiKeysAsList = Array.isArray(apiKeys)\n ? apiKeys\n : [{ apiKey: apiKeys, organizationId: '', organizationName: '' }];\n\n // Fetch configuration for each account\n const consentManagers = await map(\n apiKeysAsList,\n async (apiKey) => {\n logger.info(\n colors.magenta(`Pulling consent metadata for organization - ${apiKey.organizationName}`),\n );\n\n // Create a GraphQL client\n const client = buildTranscendGraphQLClient(transcendUrl, apiKey.apiKey);\n\n // Grab consent manager\n const consentManager = await fetchConsentManager(client);\n return consentManager;\n },\n { concurrency: 5 },\n );\n\n // construct the sync groups\n const syncGroups: XdiSyncGroups = {};\n consentManagers.forEach((consentManager) => {\n // grab the partition key\n const partitionKey =\n // take explicit key first\n consentManager.partition?.partition ||\n // fallback to bundle ID\n consentManager.bundleURL.split('/').reverse()[1];\n\n // Ensure that partition exists in the sync groups\n if (!syncGroups[partitionKey]) {\n syncGroups[partitionKey] = [];\n }\n\n // Map domain list to a host list\n const hosts = difference(\n consentManager.configuration.domains\n .filter(\n // ignore IP addresses\n (domain) => !removeIpAddresses || !IP_ADDRESS_REGEX.test(domain),\n )\n .map((domain) => domainToHost(domain)),\n // ignore block list\n domainBlockList,\n );\n // merge existing sync group with hosts for this consent manager\n syncGroups[partitionKey] = [...new Set([...(syncGroups[partitionKey] || []), ...hosts])];\n });\n\n // Construct the HTML\n const syncEndpointHtml = `\n<!DOCTYPE html>\n<script\nsrc=\"${xdiLocation}\"\ndata-sync-groups='${JSON.stringify(syncGroups, null, 2)}'\ndata-xdi-commands=\"${xdiAllowedCommands}\"\n></script>\n`;\n\n return {\n html: syncEndpointHtml,\n syncGroups,\n };\n}\n"],"mappings":"0SAMA,MAAa,EAAgB,GAC3B,IAAI,IAAI,WAAW,IAAS,CAAC,SAAS,MAAM,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,IAAI,CCkBzD,EAEX,mKASF,eAAsB,EACpB,EACA,CACE,cACA,eAAe,EACf,oBAAoB,GACpB,kBAAkB,CAAC,YAAY,CAC/B,qBAAqB,uBAkBtB,CAOD,IAAM,EAAkB,MAAM,EALR,MAAM,QAAQ,EAAQ,CACxC,EACA,CAAC,CAAE,OAAQ,EAAS,eAAgB,GAAI,iBAAkB,GAAI,CAAC,CAKjE,KAAO,KACL,EAAO,KACL,EAAO,QAAQ,+CAA+C,EAAO,mBAAmB,CACzF,CAMsB,MAAM,EAHd,EAA4B,EAAc,EAAO,OAAO,CAGf,EAG1D,CAAE,YAAa,EAAG,CACnB,CAGK,EAA4B,EAAE,CAuCpC,OAtCA,EAAgB,QAAS,GAAmB,CAE1C,IAAM,EAEJ,EAAe,WAAW,WAE1B,EAAe,UAAU,MAAM,IAAI,CAAC,SAAS,CAAC,GAG3C,EAAW,KACd,EAAW,GAAgB,EAAE,EAI/B,IAAM,EAAQ,EACZ,EAAe,cAAc,QAC1B,OAEE,GAAW,CAAC,GAAqB,CAAC,EAAiB,KAAK,EAAO,CACjE,CACA,IAAK,GAAW,EAAa,EAAO,CAAC,CAExC,EACD,CAED,EAAW,GAAgB,CAAC,GAAG,IAAI,IAAI,CAAC,GAAI,EAAW,IAAiB,EAAE,CAAG,GAAG,EAAM,CAAC,CAAC,EACxF,CAYK,CACL,KAVuB;;;OAGpB,EAAY;oBACC,KAAK,UAAU,EAAY,KAAM,EAAE,CAAC;qBACnC,EAAmB;;EAMpC,aACD"}
|
|
@@ -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{n as i,r as a}from"./fetchAllRequestIdentifiers-YP-geTV4.mjs";import{s as o,u as s}from"./constants-lIvXgkdp.mjs";import{r as c}from"./makeGraphQLRequest-G078PsEL.mjs";import{r as l}from"./fetchAllRequests-DEPTEUbi.mjs";import{n as u,t as d}from"./extractClientError-DPjv09EH.mjs";import{IdentifierType as f}from"@transcend-io/privacy-types";import{difference as p,groupBy as m}from"lodash-es";import{apply as h,decodeCodec as g}from"@transcend-io/type-utils";import{join as _,resolve as v}from"node:path";import y from"colors";import*as b from"io-ts";import x from"cli-progress";import{PersistedState as S}from"@transcend-io/persisted-state";async function C(e,t,{sendEmailReceipt:n=!1,skipWaitingPeriod:r=!1,emailIsVerified:i=!0,requestIdentifiers:a=[]}={}){let s=await e.post(`v1/data-subject-request`,{json:{type:t.type,subject:{coreIdentifier:t.coreIdentifier,email:t.email,emailIsVerified:i,...a.length>0?{attestedExtraIdentifiers:h(m(a.filter(e=>!(e.name===`email`&&e.value===t.email)&&!o.includes(e.name)).map(e=>({...e,type:Object.values(f).includes(e.name)?e.name:f.Custom})),`type`),(e,t)=>e.map(({name:e,value:n})=>({...t===f.Custom?{name:e}:{},value:n})))}:{}},requestId:t.id,subjectType:t.subjectType,isSilent:t.isSilent,isTest:t.isTest,locale:t.locale,skipWaitingPeriod:r,createdAt:t.createdAt,details:`Restarted by Transcend cli: "tr-request-restart" - ${t.details}`,skipSendingReceipt:!n}}).json(),{request:c}=g(b.type({request:u}),s);return c}const w=b.intersection([s,b.type({error:b.string})]),T=b.type({restartedRequests:b.array(s),failingRequests:b.array(w)});async function E({requestReceiptFolder:o,auth:s,sombraAuth:u,requestActions:f,requestStatuses:m,createdAtBefore:h,createdAtAfter:g,updatedAtBefore:b,updatedAtAfter:w,transcendUrl:E=e,requestIds:D=[],createdAt:O=new Date,silentModeBefore:k,sendEmailReceipt:A=!1,emailIsVerified:j=!0,copyIdentifiers:M=!1,skipWaitingPeriod:N=!1,concurrency:P=20}){let F=new Date().getTime(),I=new x.SingleBar({},x.Presets.shades_classic),L=_(o,`tr-request-restart-${new Date().toISOString()}.json`),R=new S(L,T,{restartedRequests:[],failingRequests:[]}),z=await r(E,s,u),B=c(E,s),V=(await l(B,{requestIds:D,actions:f,statuses:m,createdAtBefore:h,createdAtAfter:g,updatedAtBefore:b,updatedAtAfter:w})).filter(e=>new Date(e.createdAt)<O);if(t.info(`Found ${V.length} requests to restart`),M&&t.info(`copyIdentifiers detected - All Identifiers will be copied.`),A&&t.info(`sendEmailReceipt detected - Email receipts will be sent.`),N&&t.info(`skipWaitingPeriod detected - Waiting period will be skipped.`),D.length>0&&D.length!==V.length){let e=p(D,V.map(({id:e})=>e));e.length>0&&(t.error(y.red(`Failed to find the following requests by ID: ${e.join(`,`)}.`)),process.exit(1))}M&&await a(B);let H=0;I.start(V.length,0),await n(V,async(e,t)=>{try{let n=M?await i(B,z,{requestId:e.id,skipSombraCheck:!0}):[],r=await C(z,{...e,isSilent:k&&new Date(e.createdAt)<k?!0:e.isSilent},{requestIdentifiers:n,skipWaitingPeriod:N,sendEmailReceipt:A,emailIsVerified:j}),a=R.getValue(`restartedRequests`);a.push({id:r.id,link:r.link,rowIndex:t,coreIdentifier:r.coreIdentifier,attemptedAt:new Date().toISOString()}),await R.setValue(a,`restartedRequests`)}catch(n){let r=`${n.message} - ${JSON.stringify(n.response?.body,null,2)}`,i=d(r),a=R.getValue(`failingRequests`);a.push({id:e.id,link:e.link,rowIndex:t,coreIdentifier:e.coreIdentifier,attemptedAt:new Date().toISOString(),error:i||r}),await R.setValue(a,`failingRequests`)}H+=1,I.update(H)},{concurrency:P}),I.stop();let U=new Date().getTime()-F;t.info(y.green(`Completed restarting of requests in "${U/1e3}" seconds.`)),R.getValue(`failingRequests`).length>0&&(t.error(y.red(`Encountered "${R.getValue(`failingRequests`).length}" errors. See "${v(L)}" to review the error messages and inputs.`)),process.exit(1))}export{C as n,E as t};
|
|
2
|
+
//# sourceMappingURL=bulkRestartRequests-DEPSHov-.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bulkRestartRequests-DEPSHov-.mjs","names":[],"sources":["../src/lib/requests/restartPrivacyRequest.ts","../src/lib/requests/bulkRestartRequests.ts"],"sourcesContent":["import { IdentifierType } from '@transcend-io/privacy-types';\nimport { apply, decodeCodec } from '@transcend-io/type-utils';\nimport type { Got } from 'got';\nimport * as t from 'io-ts';\nimport { groupBy } from 'lodash-es';\n\nimport { PrivacyRequest, RequestIdentifier } from '../graphql/index.js';\nimport { IDENTIFIER_BLOCK_LIST } from './constants.js';\nimport { PrivacyRequestResponse } from './submitPrivacyRequest.js';\n\n/**\n * Restart a privacy request to the Transcend API\n *\n * @param sombra - Sombra instance configured to make requests\n * @param request - Request to restart\n * @param input - Request input\n * @returns Successfully submitted request\n */\nexport async function restartPrivacyRequest(\n sombra: Got,\n request: PrivacyRequest,\n {\n sendEmailReceipt = false,\n skipWaitingPeriod = false,\n emailIsVerified = true,\n requestIdentifiers = [],\n }: {\n /** List of request identifiers to include */\n requestIdentifiers?: RequestIdentifier[];\n /** When true, send an email receipt to data subject */\n sendEmailReceipt?: boolean;\n /** Whether the email is verified */\n emailIsVerified?: boolean;\n /** Whether to skip waiting period */\n skipWaitingPeriod?: boolean;\n } = {},\n): Promise<PrivacyRequestResponse> {\n // Make the GraphQL request\n const response = await sombra\n .post('v1/data-subject-request', {\n json: {\n type: request.type,\n subject: {\n coreIdentifier: request.coreIdentifier,\n email: request.email,\n emailIsVerified,\n ...(requestIdentifiers.length > 0\n ? {\n attestedExtraIdentifiers: apply(\n groupBy(\n requestIdentifiers\n .filter(\n (ri) =>\n // these are already submitted above\n !(ri.name === 'email' && ri.value === request.email) &&\n !IDENTIFIER_BLOCK_LIST.includes(ri.name),\n )\n .map((ri) => ({\n ...ri,\n type: Object.values(IdentifierType).includes(\n ri.name as any, // eslint-disable-line @typescript-eslint/no-explicit-any\n )\n ? ri.name\n : IdentifierType.Custom,\n })),\n 'type',\n ),\n (values, type) =>\n values.map(({ name, value }) => ({\n ...(type === IdentifierType.Custom ? { name } : {}),\n value,\n })),\n ),\n }\n : {}),\n },\n requestId: request.id,\n subjectType: request.subjectType,\n isSilent: request.isSilent,\n isTest: request.isTest,\n locale: request.locale,\n skipWaitingPeriod,\n createdAt: request.createdAt,\n details: `Restarted by Transcend cli: \"tr-request-restart\" - ${request.details}`,\n skipSendingReceipt: !sendEmailReceipt,\n },\n })\n .json();\n\n const { request: requestResponse } = decodeCodec(\n t.type({\n request: PrivacyRequestResponse,\n }),\n response,\n );\n return requestResponse;\n}\n","import { join, resolve } from 'node:path';\n\nimport { PersistedState } from '@transcend-io/persisted-state';\nimport { RequestAction, RequestStatus } from '@transcend-io/privacy-types';\nimport cliProgress from 'cli-progress';\nimport colors from 'colors';\nimport * as t from 'io-ts';\nimport { difference } from 'lodash-es';\n\nimport { DEFAULT_TRANSCEND_API } from '../../constants.js';\nimport { logger } from '../../logger.js';\nimport { map } from '../bluebird.js';\nimport {\n buildTranscendGraphQLClient,\n createSombraGotInstance,\n fetchAllRequestIdentifiers,\n fetchAllRequests,\n validateSombraVersion,\n} from '../graphql/index.js';\nimport { SuccessfulRequest } from './constants.js';\nimport { extractClientError } from './extractClientError.js';\nimport { restartPrivacyRequest } from './restartPrivacyRequest.js';\n\n/** Minimal state we need to keep a list of requests */\nconst ErrorRequest = t.intersection([\n SuccessfulRequest,\n t.type({\n error: t.string,\n }),\n]);\n\n/** Type override */\ntype ErrorRequest = t.TypeOf<typeof ErrorRequest>;\n\n/** Persist this data between runs of the script */\nconst CachedRequestState = t.type({\n restartedRequests: t.array(SuccessfulRequest),\n failingRequests: t.array(ErrorRequest),\n});\n\n/**\n * Upload a set of privacy requests from CSV\n *\n * @param options - Options\n */\nexport async function bulkRestartRequests({\n requestReceiptFolder,\n auth,\n sombraAuth,\n requestActions,\n requestStatuses,\n createdAtBefore,\n createdAtAfter,\n updatedAtBefore,\n updatedAtAfter,\n transcendUrl = DEFAULT_TRANSCEND_API,\n requestIds = [],\n createdAt = new Date(),\n silentModeBefore,\n sendEmailReceipt = false,\n emailIsVerified = true,\n copyIdentifiers = false,\n skipWaitingPeriod = false,\n concurrency = 20,\n}: {\n /** Actions to filter for */\n requestActions: RequestAction[];\n /** Statues to filter for */\n requestStatuses: RequestStatus[];\n /** File where request receipts are stored */\n requestReceiptFolder: string;\n /** Transcend API key authentication */\n auth: string;\n /** API URL for Transcend backend */\n transcendUrl?: string;\n /** Sombra API key authentication */\n sombraAuth?: string;\n /** Request IDs to filter for */\n requestIds?: string[];\n /** Whether to re-verify the email when restarting the request */\n emailIsVerified?: boolean;\n /** Filter for requests that were submitted before this date */\n createdAt?: Date;\n /** Requests that have been open for this length of time should be marked as silent mode */\n silentModeBefore?: Date;\n /** Send an email receipt to the restarted requests */\n sendEmailReceipt?: boolean;\n /** Copy over all identifiers rather than restarting the request only with the core identifier */\n copyIdentifiers?: boolean;\n /** Skip the waiting period when restarting requests */\n skipWaitingPeriod?: boolean;\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 /** Concurrency to upload requests at */\n concurrency?: number;\n}): Promise<void> {\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 // Create a new state file to store the requests from this run\n const cacheFile = join(\n requestReceiptFolder,\n `tr-request-restart-${new Date().toISOString()}.json`,\n );\n const state = new PersistedState(cacheFile, CachedRequestState, {\n restartedRequests: [],\n failingRequests: [],\n });\n\n // Create sombra instance to communicate with\n const sombra = await createSombraGotInstance(transcendUrl, auth, sombraAuth);\n\n // Find all requests made before createdAt that are in a removing data state\n const client = buildTranscendGraphQLClient(transcendUrl, auth);\n const allRequests = await fetchAllRequests(client, {\n requestIds,\n actions: requestActions,\n statuses: requestStatuses,\n createdAtBefore,\n createdAtAfter,\n updatedAtBefore,\n updatedAtAfter,\n });\n const requests = allRequests.filter((request) => new Date(request.createdAt) < createdAt);\n logger.info(`Found ${requests.length} requests to restart`);\n\n if (copyIdentifiers) {\n logger.info('copyIdentifiers detected - All Identifiers will be copied.');\n }\n if (sendEmailReceipt) {\n logger.info('sendEmailReceipt detected - Email receipts will be sent.');\n }\n if (skipWaitingPeriod) {\n logger.info('skipWaitingPeriod detected - Waiting period will be skipped.');\n }\n\n // Validate request IDs\n if (requestIds.length > 0 && requestIds.length !== requests.length) {\n const missingRequests = difference(\n requestIds,\n requests.map(({ id }) => id),\n );\n if (missingRequests.length > 0) {\n logger.error(\n colors.red(`Failed to find the following requests by ID: ${missingRequests.join(',')}.`),\n );\n process.exit(1);\n }\n }\n\n if (copyIdentifiers) {\n await validateSombraVersion(client);\n }\n\n // Map over the requests\n let total = 0;\n progressBar.start(requests.length, 0);\n await map(\n requests,\n async (request, ind) => {\n try {\n // Pull the request identifiers\n const requestIdentifiers = copyIdentifiers\n ? await fetchAllRequestIdentifiers(client, sombra, {\n requestId: request.id,\n skipSombraCheck: true,\n })\n : [];\n\n // Make the GraphQL request to restart the request\n const requestResponse = await restartPrivacyRequest(\n sombra,\n {\n ...request,\n // override silent mode\n isSilent:\n !!silentModeBefore && new Date(request.createdAt) < silentModeBefore\n ? true\n : request.isSilent,\n },\n {\n requestIdentifiers,\n skipWaitingPeriod,\n sendEmailReceipt,\n emailIsVerified,\n },\n );\n\n // Cache successful upload\n const restartedRequests = state.getValue('restartedRequests');\n restartedRequests.push({\n id: requestResponse.id,\n link: requestResponse.link,\n rowIndex: ind,\n coreIdentifier: requestResponse.coreIdentifier,\n attemptedAt: new Date().toISOString(),\n });\n await state.setValue(restartedRequests, 'restartedRequests');\n } catch (err) {\n const msg = `${err.message} - ${JSON.stringify(err.response?.body, null, 2)}`;\n const clientError = extractClientError(msg);\n\n const failingRequests = state.getValue('failingRequests');\n failingRequests.push({\n id: request.id,\n link: request.link,\n rowIndex: ind,\n coreIdentifier: request.coreIdentifier,\n attemptedAt: new Date().toISOString(),\n error: clientError || msg,\n });\n await state.setValue(failingRequests, 'failingRequests');\n }\n total += 1;\n progressBar.update(total);\n },\n { concurrency },\n );\n\n progressBar.stop();\n const t1 = new Date().getTime();\n const totalTime = t1 - t0;\n\n // Log completion time\n logger.info(colors.green(`Completed restarting of requests in \"${totalTime / 1000}\" seconds.`));\n\n // Log errors\n if (state.getValue('failingRequests').length > 0) {\n logger.error(\n colors.red(\n `Encountered \"${state.getValue('failingRequests').length}\" errors. ` +\n `See \"${resolve(cacheFile)}\" to review the error messages and inputs.`,\n ),\n );\n process.exit(1);\n }\n}\n"],"mappings":"m0BAkBA,eAAsB,EACpB,EACA,EACA,CACE,mBAAmB,GACnB,oBAAoB,GACpB,kBAAkB,GAClB,qBAAqB,EAAE,EAUrB,EAAE,CAC2B,CAEjC,IAAM,EAAW,MAAM,EACpB,KAAK,0BAA2B,CAC/B,KAAM,CACJ,KAAM,EAAQ,KACd,QAAS,CACP,eAAgB,EAAQ,eACxB,MAAO,EAAQ,MACf,kBACA,GAAI,EAAmB,OAAS,EAC5B,CACE,yBAA0B,EACxB,EACE,EACG,OACE,GAEC,EAAE,EAAG,OAAS,SAAW,EAAG,QAAU,EAAQ,QAC9C,CAAC,EAAsB,SAAS,EAAG,KAAK,CAC3C,CACA,IAAK,IAAQ,CACZ,GAAG,EACH,KAAM,OAAO,OAAO,EAAe,CAAC,SAClC,EAAG,KACJ,CACG,EAAG,KACH,EAAe,OACpB,EAAE,CACL,OACD,EACA,EAAQ,IACP,EAAO,KAAK,CAAE,OAAM,YAAa,CAC/B,GAAI,IAAS,EAAe,OAAS,CAAE,OAAM,CAAG,EAAE,CAClD,QACD,EAAE,CACN,CACF,CACD,EAAE,CACP,CACD,UAAW,EAAQ,GACnB,YAAa,EAAQ,YACrB,SAAU,EAAQ,SAClB,OAAQ,EAAQ,OAChB,OAAQ,EAAQ,OAChB,oBACA,UAAW,EAAQ,UACnB,QAAS,sDAAsD,EAAQ,UACvE,mBAAoB,CAAC,EACtB,CACF,CAAC,CACD,MAAM,CAEH,CAAE,QAAS,GAAoB,EACnC,EAAE,KAAK,CACL,QAAS,EACV,CAAC,CACF,EACD,CACD,OAAO,ECvET,MAAM,EAAe,EAAE,aAAa,CAClC,EACA,EAAE,KAAK,CACL,MAAO,EAAE,OACV,CAAC,CACH,CAAC,CAMI,EAAqB,EAAE,KAAK,CAChC,kBAAmB,EAAE,MAAM,EAAkB,CAC7C,gBAAiB,EAAE,MAAM,EAAa,CACvC,CAAC,CAOF,eAAsB,EAAoB,CACxC,uBACA,OACA,aACA,iBACA,kBACA,kBACA,iBACA,kBACA,iBACA,eAAe,EACf,aAAa,EAAE,CACf,YAAY,IAAI,KAChB,mBACA,mBAAmB,GACnB,kBAAkB,GAClB,kBAAkB,GAClB,oBAAoB,GACpB,cAAc,IAsCE,CAEhB,IAAM,EAAK,IAAI,MAAM,CAAC,SAAS,CAEzB,EAAc,IAAI,EAAY,UAAU,EAAE,CAAE,EAAY,QAAQ,eAAe,CAG/E,EAAY,EAChB,EACA,sBAAsB,IAAI,MAAM,CAAC,aAAa,CAAC,OAChD,CACK,EAAQ,IAAI,EAAe,EAAW,EAAoB,CAC9D,kBAAmB,EAAE,CACrB,gBAAiB,EAAE,CACpB,CAAC,CAGI,EAAS,MAAM,EAAwB,EAAc,EAAM,EAAW,CAGtE,EAAS,EAA4B,EAAc,EAAK,CAUxD,GATc,MAAM,EAAiB,EAAQ,CACjD,aACA,QAAS,EACT,SAAU,EACV,kBACA,iBACA,kBACA,iBACD,CAAC,EAC2B,OAAQ,GAAY,IAAI,KAAK,EAAQ,UAAU,CAAG,EAAU,CAczF,GAbA,EAAO,KAAK,SAAS,EAAS,OAAO,sBAAsB,CAEvD,GACF,EAAO,KAAK,6DAA6D,CAEvE,GACF,EAAO,KAAK,2DAA2D,CAErE,GACF,EAAO,KAAK,+DAA+D,CAIzE,EAAW,OAAS,GAAK,EAAW,SAAW,EAAS,OAAQ,CAClE,IAAM,EAAkB,EACtB,EACA,EAAS,KAAK,CAAE,QAAS,EAAG,CAC7B,CACG,EAAgB,OAAS,IAC3B,EAAO,MACL,EAAO,IAAI,gDAAgD,EAAgB,KAAK,IAAI,CAAC,GAAG,CACzF,CACD,QAAQ,KAAK,EAAE,EAIf,GACF,MAAM,EAAsB,EAAO,CAIrC,IAAI,EAAQ,EACZ,EAAY,MAAM,EAAS,OAAQ,EAAE,CACrC,MAAM,EACJ,EACA,MAAO,EAAS,IAAQ,CACtB,GAAI,CAEF,IAAM,EAAqB,EACvB,MAAM,EAA2B,EAAQ,EAAQ,CAC/C,UAAW,EAAQ,GACnB,gBAAiB,GAClB,CAAC,CACF,EAAE,CAGA,EAAkB,MAAM,EAC5B,EACA,CACE,GAAG,EAEH,SACI,GAAoB,IAAI,KAAK,EAAQ,UAAU,CAAG,EAChD,GACA,EAAQ,SACf,CACD,CACE,qBACA,oBACA,mBACA,kBACD,CACF,CAGK,EAAoB,EAAM,SAAS,oBAAoB,CAC7D,EAAkB,KAAK,CACrB,GAAI,EAAgB,GACpB,KAAM,EAAgB,KACtB,SAAU,EACV,eAAgB,EAAgB,eAChC,YAAa,IAAI,MAAM,CAAC,aAAa,CACtC,CAAC,CACF,MAAM,EAAM,SAAS,EAAmB,oBAAoB,OACrD,EAAK,CACZ,IAAM,EAAM,GAAG,EAAI,QAAQ,KAAK,KAAK,UAAU,EAAI,UAAU,KAAM,KAAM,EAAE,GACrE,EAAc,EAAmB,EAAI,CAErC,EAAkB,EAAM,SAAS,kBAAkB,CACzD,EAAgB,KAAK,CACnB,GAAI,EAAQ,GACZ,KAAM,EAAQ,KACd,SAAU,EACV,eAAgB,EAAQ,eACxB,YAAa,IAAI,MAAM,CAAC,aAAa,CACrC,MAAO,GAAe,EACvB,CAAC,CACF,MAAM,EAAM,SAAS,EAAiB,kBAAkB,CAE1D,GAAS,EACT,EAAY,OAAO,EAAM,EAE3B,CAAE,cAAa,CAChB,CAED,EAAY,MAAM,CAElB,IAAM,EADK,IAAI,MAAM,CAAC,SAAS,CACR,EAGvB,EAAO,KAAK,EAAO,MAAM,wCAAwC,EAAY,IAAK,YAAY,CAAC,CAG3F,EAAM,SAAS,kBAAkB,CAAC,OAAS,IAC7C,EAAO,MACL,EAAO,IACL,gBAAgB,EAAM,SAAS,kBAAkB,CAAC,OAAO,iBAC/C,EAAQ,EAAU,CAAC,4CAC9B,CACF,CACD,QAAQ,KAAK,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{r,t as i}from"./fetchAllRequestEnrichers-q34mRuE5.mjs";import{r as a,t as o}from"./makeGraphQLRequest-G078PsEL.mjs";import{r as s}from"./fetchAllRequests-DEPTEUbi.mjs";import{RequestEnricherStatus as c,RequestStatus as l}from"@transcend-io/privacy-types";import{difference as u}from"lodash-es";import d from"colors";import f from"cli-progress";async function p(e,t){await o(e,r,{requestEnricherId:t})}async function m({auth:r,requestActions:o=[],createdAtBefore:m,createdAtAfter:h,updatedAtBefore:g,updatedAtAfter:_,transcendUrl:v=e,requestEnricherStatuses:y=Object.values(c),requestIds:b=[],enricherId:x,concurrency:S=20}){let C=new Date().getTime(),w=new f.SingleBar({},f.Presets.shades_classic),T=a(v,r);t.info(d.magenta(`Fetching requests to restart...`));let E=await s(T,{actions:o,statuses:[l.Enriching],createdAtBefore:m,createdAtAfter:h,updatedAtBefore:g,updatedAtAfter:_,requestIds:b}),D=0;if(b.length>0&&b.length!==E.length){let e=u(b,E.map(({id:e})=>e));e.length>0&&(t.error(d.red(`Failed to find the following requests by ID: ${e.join(`,`)}.`)),process.exit(1))}let O=0;w.start(E.length,0),await n(E,async e=>{await n((await i(T,{requestId:e.id})).filter(e=>e.enricher.id===x&&y.includes(e.status)),async e=>{await p(T,e.id),D+=1}),O+=1,w.update(O)},{concurrency:S}),w.stop();let k=new Date().getTime()-C;t.info(d.green(`Completed restarting of ${E.length} requests and ${D} enrichers in "${k/1e3}" seconds.`))}export{p as n,m as t};
|
|
2
|
+
//# sourceMappingURL=bulkRetryEnrichers-BLkcFKXC.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bulkRetryEnrichers-BLkcFKXC.mjs","names":[],"sources":["../src/lib/graphql/retryRequestEnricher.ts","../src/lib/requests/bulkRetryEnrichers.ts"],"sourcesContent":["import { GraphQLClient } from 'graphql-request';\n\nimport { RETRY_REQUEST_ENRICHER } from './gqls/index.js';\nimport { makeGraphQLRequest } from './makeGraphQLRequest.js';\n\n/**\n * Retry a request enricher\n *\n * @param client - GraphQL client\n * @param id - The ID of the request enricher to restart\n */\nexport async function retryRequestEnricher(client: GraphQLClient, id: string): Promise<void> {\n await makeGraphQLRequest(client, RETRY_REQUEST_ENRICHER, {\n requestEnricherId: id,\n });\n}\n","import { RequestAction, RequestEnricherStatus, RequestStatus } from '@transcend-io/privacy-types';\nimport cliProgress from 'cli-progress';\nimport colors from 'colors';\nimport { difference } from 'lodash-es';\n\nimport { DEFAULT_TRANSCEND_API } from '../../constants.js';\nimport { logger } from '../../logger.js';\nimport { map } from '../bluebird.js';\nimport {\n buildTranscendGraphQLClient,\n fetchAllRequestEnrichers,\n fetchAllRequests,\n retryRequestEnricher,\n} from '../graphql/index.js';\n\n/**\n * Restart a bunch of request enrichers\n *\n * @param options - Options\n */\nexport async function bulkRetryEnrichers({\n auth,\n requestActions = [],\n createdAtBefore,\n createdAtAfter,\n updatedAtBefore,\n updatedAtAfter,\n transcendUrl = DEFAULT_TRANSCEND_API,\n requestEnricherStatuses = Object.values(RequestEnricherStatus),\n requestIds = [],\n enricherId,\n concurrency = 20,\n}: {\n /** Actions to filter for */\n requestActions?: RequestAction[];\n /** Request enricher statuses to restart - defaults to all statuses */\n requestEnricherStatuses?: RequestEnricherStatus[];\n /** Transcend API key authentication */\n auth: string;\n /** The ID of the enricher to restart */\n enricherId: string;\n /** API URL for Transcend backend */\n transcendUrl?: string;\n /** Request IDs to filter for */\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 /** Concurrency to upload requests at */\n concurrency?: number;\n}): Promise<void> {\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 // Find all requests made before createdAt that are in a removing data state\n const client = buildTranscendGraphQLClient(transcendUrl, auth);\n\n logger.info(colors.magenta('Fetching requests to restart...'));\n\n const requests = await fetchAllRequests(client, {\n actions: requestActions,\n statuses: [RequestStatus.Enriching],\n createdAtBefore,\n createdAtAfter,\n updatedAtBefore,\n updatedAtAfter,\n requestIds,\n });\n\n let totalRestarted = 0;\n\n // Validate request IDs\n if (requestIds.length > 0 && requestIds.length !== requests.length) {\n const missingRequests = difference(\n requestIds,\n requests.map(({ id }) => id),\n );\n if (missingRequests.length > 0) {\n logger.error(\n colors.red(`Failed to find the following requests by ID: ${missingRequests.join(',')}.`),\n );\n process.exit(1);\n }\n }\n\n // Map over the requests\n let total = 0;\n progressBar.start(requests.length, 0);\n await map(\n requests,\n async (request) => {\n // Pull the request identifiers\n const requestEnrichers = await fetchAllRequestEnrichers(client, {\n requestId: request.id,\n });\n const requestEnrichersToRestart = requestEnrichers.filter(\n (requestEnricher) =>\n requestEnricher.enricher.id === enricherId &&\n requestEnricherStatuses.includes(requestEnricher.status),\n );\n await map(requestEnrichersToRestart, async (requestEnricher) => {\n await retryRequestEnricher(client, requestEnricher.id);\n totalRestarted += 1;\n });\n\n // Cache successful upload\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 // Log completion time\n logger.info(\n colors.green(\n `Completed restarting of ${requests.length} requests and ${totalRestarted} enrichers in \"${\n totalTime / 1000\n }\" seconds.`,\n ),\n );\n}\n"],"mappings":"6dAWA,eAAsB,EAAqB,EAAuB,EAA2B,CAC3F,MAAM,EAAmB,EAAQ,EAAwB,CACvD,kBAAmB,EACpB,CAAC,CCMJ,eAAsB,EAAmB,CACvC,OACA,iBAAiB,EAAE,CACnB,kBACA,iBACA,kBACA,iBACA,eAAe,EACf,0BAA0B,OAAO,OAAO,EAAsB,CAC9D,aAAa,EAAE,CACf,aACA,cAAc,IAwBE,CAEhB,IAAM,EAAK,IAAI,MAAM,CAAC,SAAS,CAEzB,EAAc,IAAI,EAAY,UAAU,EAAE,CAAE,EAAY,QAAQ,eAAe,CAG/E,EAAS,EAA4B,EAAc,EAAK,CAE9D,EAAO,KAAK,EAAO,QAAQ,kCAAkC,CAAC,CAE9D,IAAM,EAAW,MAAM,EAAiB,EAAQ,CAC9C,QAAS,EACT,SAAU,CAAC,EAAc,UAAU,CACnC,kBACA,iBACA,kBACA,iBACA,aACD,CAAC,CAEE,EAAiB,EAGrB,GAAI,EAAW,OAAS,GAAK,EAAW,SAAW,EAAS,OAAQ,CAClE,IAAM,EAAkB,EACtB,EACA,EAAS,KAAK,CAAE,QAAS,EAAG,CAC7B,CACG,EAAgB,OAAS,IAC3B,EAAO,MACL,EAAO,IAAI,gDAAgD,EAAgB,KAAK,IAAI,CAAC,GAAG,CACzF,CACD,QAAQ,KAAK,EAAE,EAKnB,IAAI,EAAQ,EACZ,EAAY,MAAM,EAAS,OAAQ,EAAE,CACrC,MAAM,EACJ,EACA,KAAO,IAAY,CAUjB,MAAM,GARmB,MAAM,EAAyB,EAAQ,CAC9D,UAAW,EAAQ,GACpB,CAAC,EACiD,OAChD,GACC,EAAgB,SAAS,KAAO,GAChC,EAAwB,SAAS,EAAgB,OAAO,CAC3D,CACoC,KAAO,IAAoB,CAC9D,MAAM,EAAqB,EAAQ,EAAgB,GAAG,CACtD,GAAkB,GAClB,CAGF,GAAS,EACT,EAAY,OAAO,EAAM,EAE3B,CAAE,cAAa,CAChB,CAED,EAAY,MAAM,CAElB,IAAM,EADK,IAAI,MAAM,CAAC,SAAS,CACR,EAGvB,EAAO,KACL,EAAO,MACL,2BAA2B,EAAS,OAAO,gBAAgB,EAAe,iBACxE,EAAY,IACb,YACF,CACF"}
|
|
@@ -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"./syncTemplates-BNu1_dmW.mjs";import{n as i,o as a}from"./request-CAsR6CMY.mjs";import{r as o,t as s}from"./makeGraphQLRequest-G078PsEL.mjs";import{r as c}from"./fetchAllRequests-DEPTEUbi.mjs";import{RequestStatus as l}from"@transcend-io/privacy-types";import u from"colors";import d from"cli-progress";async function f({requestActions:f,cancellationTitle:p,auth:m,requestIds:h,silentModeBefore:g,createdAtBefore:_,createdAtAfter:v,updatedAtBefore:y,updatedAtAfter:b,statuses:x=[l.Compiling,l.RequestMade,l.Delayed,l.Approving,l.Secondary,l.Enriching,l.Waiting,l.SecondaryApproving],concurrency:S=50,transcendUrl:C=e}){let w=o(C,m),T=new Date().getTime(),E=new d.SingleBar({},d.Presets.shades_classic),D;if(p){let e=(await r(w,p)).find(e=>e.title===p);if(!e)throw Error(`Failed to find a template with title: "${p}"`);D=e}let O=await c(w,{actions:f,createdAtBefore:_,createdAtAfter:v,updatedAtBefore:y,updatedAtAfter:b,statuses:x,requestIds:h});t.info(u.magenta(`Canceling "${O.length}" requests${D?` Using template: ${D.title}`:``}.`));let k=0;E.start(O.length,0),await n(O,async e=>{g&&new Date(g)>new Date(e.createdAt)&&await s(w,a,{input:{id:e.id,isSilent:!0}}),await s(w,i,{input:{requestId:e.id,...D?{subject:`Re: ${D.subject.defaultMessage}`,template:D.template.defaultMessage}:{}}}),k+=1,E.update(k)},{concurrency:S}),E.stop();let A=new Date().getTime()-T;return t.info(u.green(`Successfully canceled ${k} requests in "${A/1e3}" seconds!`)),O.length}export{f as t};
|
|
2
|
+
//# sourceMappingURL=cancelPrivacyRequests-C8MZQvsq.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cancelPrivacyRequests-C8MZQvsq.mjs","names":[],"sources":["../src/lib/requests/cancelPrivacyRequests.ts"],"sourcesContent":["import { 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 UPDATE_PRIVACY_REQUEST,\n fetchAllRequests,\n makeGraphQLRequest,\n buildTranscendGraphQLClient,\n CANCEL_PRIVACY_REQUEST,\n fetchAllTemplates,\n Template,\n} from '../graphql/index.js';\n\n/**\n * Cancel a set of privacy requests\n *\n * @param options - Options\n * @returns The number of requests canceled\n */\nexport async function cancelPrivacyRequests({\n requestActions,\n cancellationTitle,\n auth,\n requestIds,\n silentModeBefore,\n createdAtBefore,\n createdAtAfter,\n updatedAtBefore,\n updatedAtAfter,\n statuses = [\n RequestStatus.Compiling,\n RequestStatus.RequestMade,\n RequestStatus.Delayed,\n RequestStatus.Approving,\n RequestStatus.Secondary,\n RequestStatus.Enriching,\n RequestStatus.Waiting,\n RequestStatus.SecondaryApproving,\n ],\n concurrency = 50,\n transcendUrl = DEFAULT_TRANSCEND_API,\n}: {\n /** The request actions that should be restarted */\n requestActions: RequestAction[];\n /** Transcend API key authentication */\n auth: 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 /** Mark these requests as silent mode if they were created before this date */\n silentModeBefore?: Date;\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 /** The email template to use when canceling the requests */\n cancellationTitle?: string;\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 // 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 // Grab the template with that title\n let cancelationTemplate: Template | undefined;\n if (cancellationTitle) {\n const matchingTemplates = await fetchAllTemplates(client, cancellationTitle);\n const exactTitleMatch = matchingTemplates.find(\n (template) => template.title === cancellationTitle,\n );\n if (!exactTitleMatch) {\n throw new Error(`Failed to find a template with title: \"${cancellationTitle}\"`);\n }\n cancelationTemplate = exactTitleMatch;\n }\n\n // Pull in the requests\n const allRequests = await fetchAllRequests(client, {\n actions: requestActions,\n createdAtBefore,\n createdAtAfter,\n updatedAtBefore,\n updatedAtAfter,\n statuses,\n requestIds,\n });\n\n // Notify Transcend\n logger.info(\n colors.magenta(\n `Canceling \"${allRequests.length}\" requests${\n cancelationTemplate ? ` Using template: ${cancelationTemplate.title}` : ''\n }.`,\n ),\n );\n\n let total = 0;\n progressBar.start(allRequests.length, 0);\n await map(\n allRequests,\n async (requestToCancel) => {\n // update request to silent mode if silentModeBefore is defined\n // and the request was created before silentModeBefore\n if (silentModeBefore && new Date(silentModeBefore) > new Date(requestToCancel.createdAt)) {\n await makeGraphQLRequest(client, UPDATE_PRIVACY_REQUEST, {\n input: {\n id: requestToCancel.id,\n isSilent: true,\n },\n });\n }\n\n // cancel the request\n await makeGraphQLRequest(client, CANCEL_PRIVACY_REQUEST, {\n input: {\n requestId: requestToCancel.id,\n ...(cancelationTemplate\n ? {\n subject: `Re: ${cancelationTemplate.subject.defaultMessage}`,\n template: cancelationTemplate.template.defaultMessage,\n }\n : {}),\n },\n });\n\n total += 1;\n progressBar.update(total);\n },\n { concurrency },\n );\n\n progressBar.stop();\n const t1 = new Date().getTime();\n const totalTime = t1 - t0;\n\n logger.info(\n colors.green(`Successfully canceled ${total} requests in \"${totalTime / 1000}\" seconds!`),\n );\n return allRequests.length;\n}\n"],"mappings":"gcAuBA,eAAsB,EAAsB,CAC1C,iBACA,oBACA,OACA,aACA,mBACA,kBACA,iBACA,kBACA,iBACA,WAAW,CACT,EAAc,UACd,EAAc,YACd,EAAc,QACd,EAAc,UACd,EAAc,UACd,EAAc,UACd,EAAc,QACd,EAAc,mBACf,CACD,cAAc,GACd,eAAe,GA0BG,CAElB,IAAM,EAAS,EAA4B,EAAc,EAAK,CAGxD,EAAK,IAAI,MAAM,CAAC,SAAS,CAEzB,EAAc,IAAI,EAAY,UAAU,EAAE,CAAE,EAAY,QAAQ,eAAe,CAGjF,EACJ,GAAI,EAAmB,CAErB,IAAM,GADoB,MAAM,EAAkB,EAAQ,EAAkB,EAClC,KACvC,GAAa,EAAS,QAAU,EAClC,CACD,GAAI,CAAC,EACH,MAAU,MAAM,0CAA0C,EAAkB,GAAG,CAEjF,EAAsB,EAIxB,IAAM,EAAc,MAAM,EAAiB,EAAQ,CACjD,QAAS,EACT,kBACA,iBACA,kBACA,iBACA,WACA,aACD,CAAC,CAGF,EAAO,KACL,EAAO,QACL,cAAc,EAAY,OAAO,YAC/B,EAAsB,oBAAoB,EAAoB,QAAU,GACzE,GACF,CACF,CAED,IAAI,EAAQ,EACZ,EAAY,MAAM,EAAY,OAAQ,EAAE,CACxC,MAAM,EACJ,EACA,KAAO,IAAoB,CAGrB,GAAoB,IAAI,KAAK,EAAiB,CAAG,IAAI,KAAK,EAAgB,UAAU,EACtF,MAAM,EAAmB,EAAQ,EAAwB,CACvD,MAAO,CACL,GAAI,EAAgB,GACpB,SAAU,GACX,CACF,CAAC,CAIJ,MAAM,EAAmB,EAAQ,EAAwB,CACvD,MAAO,CACL,UAAW,EAAgB,GAC3B,GAAI,EACA,CACE,QAAS,OAAO,EAAoB,QAAQ,iBAC5C,SAAU,EAAoB,SAAS,eACxC,CACD,EAAE,CACP,CACF,CAAC,CAEF,GAAS,EACT,EAAY,OAAO,EAAM,EAE3B,CAAE,cAAa,CAChB,CAED,EAAY,MAAM,CAElB,IAAM,EADK,IAAI,MAAM,CAAC,SAAS,CACR,EAKvB,OAHA,EAAO,KACL,EAAO,MAAM,yBAAyB,EAAM,gBAAgB,EAAY,IAAK,YAAY,CAC1F,CACM,EAAY"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as e,i as t}from"./enums-CyFTrzXY.mjs";import{ActionItemCode as ee,ActionItemPriorityOverride as te,AssessmentFormStatus as ne,AssessmentFormTemplateSource as re,AssessmentFormTemplateStatus as ie,AssessmentQuestionSubType as ae,AssessmentQuestionType as oe,AssessmentSyncColumn as se,AssessmentSyncModel as ce,AssessmentsDisplayLogicAction as le,AttributeKeyType as ue,AttributeSupportedResourceType as n,BrowserTimeZone as de,CodePackageType as r,ComparisonOperator as i,ConfigurableColorPaletteColor as fe,ConsentBundleType as pe,ConsentPrecedenceOption as me,ConsentTrackerStatus as a,Controllership as he,DataCategoryType as o,DataFlowScope as s,DataProtectionImpactAssessmentStatus as ge,DefaultConsentOption as _e,EnricherType as ve,IsoCountryCode as c,IsoCountrySubdivisionCode as l,LargeLanguageModelClient as ye,LogicOperator as be,PreferenceStoreAuthLevel as xe,PreferenceTopicType as Se,PreflightRequestStatus as Ce,PrivacyCenterComponentStyles as we,PrivacyCenterTextStyles as Te,ProcessingPurpose as u,PromptAVendorEmailCompletionLinkType as Ee,PromptAVendorEmailSendType as De,PromptFilePurpose as Oe,RegionDetectionMethod as ke,RegionsOperator as Ae,RequestAction as d,RequestActionObjectResolver as f,RetentionScheduleOperation as je,RetentionScheduleType as Me,RetentionType as Ne,ScopeName as Pe,SignedIabAgreementOption as Fe,SubDataPointDataSubCategoryGuessStatus as Ie,TelemetryPartitionStrategy as Le,TranscendProduct as Re,UnknownRequestPolicy as p,UnstructuredSubDataPointRecommendationStatus as ze}from"@transcend-io/privacy-types";import{applyEnum as m,valuesOf as h}from"@transcend-io/type-utils";import{BrowserLanguage as Be,InitialViewState as Ve,OnConsentExpiry as He,UserPrivacySignalEnum as Ue}from"@transcend-io/airgap.js-types";import{LOCALE_KEY as g}from"@transcend-io/internationalization";import*as _ from"io-ts";const v=({TEnabledRoutes:e})=>_.type({enabledRoutes:e}),y=({TRouteName:t})=>_.type({routeName:t,enabledPolicies:_.array(h(e))}),b=_.type({title:_.string}),x=_.intersection([_.type({name:_.string,value:_.string}),_.partial({isSecret:_.boolean})]),S=_.type({title:_.string}),C=_.intersection([_.type({name:_.string,description:_.string}),_.partial({"sso-department":_.string,"sso-group":_.string,"sso-title":_.string,users:_.array(_.string),scopes:_.array(h(Pe))})]),w=_.intersection([_.type({title:_.string,"output-identifiers":_.array(_.string)}),_.partial({description:_.string,url:_.string,type:h(ve),"input-identifier":_.string,testRegex:_.string,lookerQueryTitle:_.string,expirationDuration:_.number,transitionRequestStatus:h(Ce),phoneNumbers:_.array(_.string),regionList:_.array(h({...c,...l})),"data-subjects":_.array(_.string),headers:_.array(x),"privacy-actions":_.array(h(d))})]),T=_.intersection([_.type({purpose:h(u)}),_.partial({name:_.string})]),E=_.intersection([_.type({category:h(o)}),_.partial({name:_.string})]),D=_.intersection([_.type({category:E,status:h(Ie),confidence:_.number}),_.partial({classifierVersion:_.number})]),We=_.intersection([_.type({category:E,status:h(ze),confidence:_.number}),_.partial({classifierVersion:_.number})]),O=_.intersection([_.type({name:_.string}),_.partial({description:_.string,color:_.string})]),k=_.intersection([_.type({name:_.string,type:h(ue)}),_.partial({description:_.string,resources:_.array(h(n)),values:_.array(O)})]),A=_.type({key:_.string,values:_.array(_.string)}),j=_.intersection([_.type({name:_.string,instructions:_.string,agentId:_.string,codeInterpreterEnabled:_.boolean,retrievalEnabled:_.boolean,"large-language-model":_.type({name:_.string,client:h(ye)})}),_.partial({description:_.string,prompt:_.string,owners:_.array(_.string),teams:_.array(_.string),"agent-functions":_.array(_.string),"agent-files":_.array(_.string)})]),M=_.type({name:_.string,description:_.string,parameters:_.string}),N=_.intersection([_.type({name:_.string,fileId:_.string,size:_.number,purpose:h(Oe)}),_.partial({description:_.string})]),P=_.intersection([_.type({title:_.string}),_.partial({description:_.string,dataProcessingAgreementLink:_.string,contactName:_.string,contactPhone:_.string,address:_.string,headquarterCountry:h(c),headquarterSubDivision:h(l),websiteUrl:_.string,businessEntity:_.string,owners:_.array(_.string),teams:_.array(_.string),attributes:_.array(A)})]),F=_.intersection([_.type({name:_.string,category:h(o)}),_.partial({description:_.string,regex:_.string,owners:_.array(_.string),teams:_.array(_.string),attributes:_.array(A)})]),I=_.intersection([_.type({name:_.string,purpose:h(u)}),_.partial({description:_.string,owners:_.array(_.string),teams:_.array(_.string),attributes:_.array(A)})]),L=_.type({title:_.string,content:_.string}),R=_.type({title:_.string,content:_.string}),z=_.type({title:_.string,description:_.string,prompts:_.array(_.string)}),B=_.intersection([_.type({key:_.string}),_.partial({title:_.string,description:_.union([_.string,_.null]),purposes:_.array(T),categories:_.array(E),"guessed-categories":_.array(D),"access-request-visibility-enabled":_.boolean,"erasure-request-redaction-enabled":_.boolean,attributes:_.array(A)})]),V=_.intersection([_.type({key:_.string}),_.partial({path:_.array(_.string),title:_.string,description:_.string,"data-collection-tag":_.string,"privacy-action-queries":_.partial(m(f,()=>_.string)),"privacy-actions":_.array(h(f)),fields:_.array(B),owners:_.array(_.string),teams:_.array(_.string)})]),H=_.partial({"notify-email-address":_.string,"send-frequency":_.number,"send-type":h(De),"include-identifiers-attachment":_.boolean,"completion-link-type":h(Ee),"manual-work-retry-frequency":_.string}),U=_.intersection([_.type({title:_.string}),_.partial({description:_.string,address:_.string,headquarterCountry:h(c),headquarterSubDivision:h(l),dataProtectionOfficerName:_.string,dataProtectionOfficerEmail:_.string,attributes:_.array(A),owners:_.array(_.string),teams:_.array(_.string)})]),W=_.partial({country:h(c),countrySubDivision:h(l)}),Ge=_.intersection([_.type({title:_.string}),_.partial({description:_.string,securityMeasureDetails:_.string,controllerships:_.array(h(he)),storageRegions:_.array(W),transferRegions:_.array(W),retentionType:h(Ne),retentionPeriod:_.number,dataProtectionImpactAssessmentLink:_.string,dataProtectionImpactAssessmentStatus:h(ge),attributes:_.array(A),dataSiloTitles:_.array(_.string),dataSubjectTypes:_.array(_.string),teamNames:_.array(_.string),ownerEmails:_.array(_.string),processingSubPurposes:_.array(T),dataSubCategories:_.array(E),saaSCategories:_.array(_.string)})]),Ke=_.intersection([_.type({name:_.string,codePackageType:h(r)}),_.partial({description:_.string,repositoryUrl:_.string,catalogIntegrationName:_.string,documentationLinks:_.array(_.string),ownerEmails:_.array(_.string),teamNames:_.array(_.string)})]),G=_.intersection([_.type({name:_.string}),_.partial({version:_.string,isDevDependency:_.boolean})]),qe=_.intersection([_.type({name:_.string,type:h(r),relativePath:_.string,repositoryName:_.string}),_.partial({description:_.string,softwareDevelopmentKits:_.array(G),teamNames:_.array(_.string),ownerEmails:_.array(_.string)})]),Je=_.intersection([_.type({name:_.string,url:_.string}),_.partial({description:_.string,teamNames:_.array(_.string),ownerEmails:_.array(_.string)})]),K=_.intersection([_.type({type:_.string}),_.partial({active:_.boolean,title:_.string,adminDashboardDefaultSilentMode:_.boolean,actions:_.array(h(d))})]),q=_.intersection([_.type({type:h(d)}),_.partial({skipSecondaryIfNoFiles:_.boolean,skipDownloadableStep:_.boolean,requiresReview:_.boolean,waitingPeriod:_.number,regionDetectionMethod:h(ke),regionList:_.array(h({...c,...l})),regionBlockList:_.array(h({...c,...l}))})]),J=_.intersection([_.type({name:_.string,type:_.string}),_.partial({regex:_.string,selectOptions:_.array(_.string),privacyCenterVisibility:_.array(h(d)),dataSubjects:_.array(_.string),isRequiredInForm:_.boolean,placeholder:_.string,displayTitle:_.string,displayDescription:_.string,displayOrder:_.number,isUniqueOnPreferenceStore:_.boolean})]),Y=_.intersection([_.type({value:_.string,type:h(s)}),_.partial({description:_.string,trackingPurposes:_.array(_.string),service:_.string,status:h(a),owners:_.array(_.string),teams:_.array(_.string),attributes:_.array(A)})]),Ye=_.intersection([_.type({name:_.string}),_.partial({isRegex:_.boolean,description:_.string,trackingPurposes:_.array(_.string),service:_.string,status:h(a),owners:_.array(_.string),teams:_.array(_.string),attributes:_.array(A)})]),Xe=_.intersection([_.type({name:_.string}),_.partial({displayName:_.string,regions:_.array(W),onConsentExpiry:h(He),consentExpiry:_.number,operator:h(Ae),displayPriority:_.number,viewState:h(Ve),purposes:_.array(_.type({trackingType:_.string})),optedOutPurposes:_.array(_.type({trackingType:_.string})),browserLanguages:_.array(h(Be)),browserTimeZones:_.array(h(de))})]),Ze=_.intersection([_.type({name:_.string}),_.partial({partition:_.string})]),Qe=_.partial({version:_.string,bundleUrls:_.record(h(pe),_.string),domains:_.array(_.string),partition:_.string,consentPrecedence:h(me),unknownRequestPolicy:h(p),unknownCookiePolicy:h(p),syncEndpoint:_.string,telemetryPartitioning:h(Le),signedIabAgreement:h(Fe),experiences:_.array(Xe),theme:_.partial({primaryColor:_.string,fontColor:_.string,privacyPolicy:_.string,prompt:_.number}),syncGroups:_.string}),$e=_.partial({isDisabled:_.boolean,showPrivacyRequestButton:_.boolean,showDataPractices:_.boolean,showPolicies:_.boolean,showTrackingTechnologies:_.boolean,showCookies:_.boolean,showDataFlows:_.boolean,showConsentManager:_.boolean,showManageYourPrivacy:_.boolean,showMarketingPreferences:_.boolean,locales:_.array(h(g)),defaultLocale:h(g),preferBrowserDefaultLocale:_.boolean,supportEmail:_.string,replyToEmail:_.string,useNoReplyEmailAddress:_.boolean,useCustomEmailDomain:_.boolean,transformAccessReportJsonToCsv:_.boolean,theme:_.partial({colors:_.partial(m(fe,()=>_.string)),componentStyles:we,textStyles:Te})}),et=_.intersection([_.type({title:_.string}),_.partial({effectiveOn:_.string,disableEffectiveOn:_.boolean,content:_.string,disabledLocales:_.array(h(g))})]),tt=_.intersection([_.type({id:_.string}),_.partial({targetReactIntlId:_.string,description:_.string,defaultMessage:_.string,translations:_.partial(m(g,()=>_.string))})]),nt=_.intersection([_.type({title:_.string,integrationName:_.string}),_.partial({"outer-type":_.string,description:_.string,url:_.string,"api-key-title":_.string,headers:_.array(x),"data-subjects":_.array(_.string),"identity-keys":_.array(_.string),"deletion-dependencies":_.array(_.string),owners:_.array(_.string),teams:_.array(_.string),disabled:_.boolean,datapoints:_.array(V),"email-settings":H,country:h(c),countrySubDivision:h(l),attributes:_.array(A),businessEntityTitles:_.array(_.string)})]),rt=_.intersection([_.type({title:_.string,productLine:h(Re)}),_.partial({description:_.string,hidden:_.boolean})]),it=_.intersection([_.type({title:_.string,type:h(ee),collections:_.array(_.string)}),_.partial({priority:h(te),customerExperienceActionItemId:_.string,dueDate:_.string,resolved:_.boolean,notes:_.string,link:_.string,users:_.array(_.string),teams:_.array(_.string),attributes:_.array(A)})]),X=_.intersection([_.type({"depends-on-question-reference-id":_.string,"comparison-operator":h(i)}),_.partial({"comparison-operands":_.array(_.string)})]),at=_.recursion(`AssessmentNestedRuleInput`,e=>_.intersection([_.type({"logic-operator":h(be)}),_.partial({rules:_.array(X),"nested-rules":_.array(e)})])),ot=_.intersection([_.type({action:h(le)}),_.partial({rule:X,"nested-rule":at})]),st=_.partial({"risk-level":_.string,"risk-matrix-column":_.string,"risk-matrix-row":_.string}),ct=_.intersection([_.type({"comparison-operands":_.array(_.string),"comparison-operator":h(i)}),_.partial({"risk-level":_.string,"risk-matrix-column":_.string,"risk-matrix-row":_.string})]),lt=_.type({value:_.string}),ut=_.intersection([_.type({title:_.string,type:h(oe)}),_.partial({"sub-type":h(ae),placeholder:_.string,description:_.string,"is-required":_.boolean,"reference-id":_.string,"display-logic":ot,"risk-logic":_.array(ct),"risk-categories":_.array(_.string),"risk-framework":_.string,"answer-options":_.array(lt),"selected-answers":_.array(_.string),"allowed-mime-types":_.array(_.string),"allow-select-other":_.boolean,"sync-model":h(ce),"sync-column":h(se),"attribute-key":_.string,"require-risk-evaluation":_.boolean,"require-risk-matrix-evaluation":_.boolean})]),Z=_.intersection([_.type({title:_.string,questions:_.array(ut)}),_.partial({assignees:_.array(_.string),"external-assignees":_.array(_.string),status:_.string,"is-reviewed":_.boolean})]),Q=_.type({type:h(Me),"duration-days":_.number,operand:h(je)}),dt=_.intersection([_.type({title:_.string}),_.partial({sections:_.array(Z),description:_.string,status:h(ie),source:h(re),creator:_.string,locked:_.boolean,"parent-id":_.string,archived:_.boolean,"created-at":_.string,"attribute-keys":_.array(_.string),"retention-schedule":Q,templates:_.array(_.string)})]),$=_.type({title:_.string,type:h(n)}),ft=_.intersection([_.type({title:_.string,group:_.string}),_.partial({sections:_.array(Z),creator:_.string,description:_.string,status:h(ne),assignees:_.array(_.string),"external-assignees":_.array(_.string),reviewers:_.array(_.string),locked:_.boolean,archived:_.boolean,external:_.boolean,"title-is-internal":_.boolean,"due-date":_.string,"created-at":_.string,"assigned-at":_.string,"submitted-at":_.string,"approved-at":_.string,"rejected-at":_.string,resources:_.array($),rows:_.array($),"retention-schedule":Q,attributes:_.array(A)})]),pt=_.type({title:_.string,slug:_.string}),mt=_.intersection([_.type({type:h(Se),title:_.string,description:_.string}),_.partial({"default-configuration":_.string,"show-in-privacy-center":_.boolean,options:_.array(pt)})]),ht=_.intersection([_.type({trackingType:_.string,title:_.string,name:_.string}),_.partial({description:_.string,"is-active":_.boolean,configurable:_.boolean,"display-order":_.number,"show-in-privacy-center":_.boolean,"show-in-consent-manager":_.boolean,"preference-topics":_.array(mt),"auth-level":h(xe),"opt-out-signals":_.array(h(Ue)),"default-consent":h(_e)})]),gt=_.intersection([_.type({resourceId:_.string,plugin:_.string,suggestedCatalog:_.string,containsSensitiveData:_.string,status:_.string}),_.partial({country:h(c),countrySubDivision:h(l),plaintextContext:_.string,title:_.union([_.string,_.null])})]),_t=_.partial({"action-items":_.array(it),"action-item-collections":_.array(rt),"api-keys":_.array(S),teams:_.array(C),templates:_.array(b),enrichers:_.array(w),attributes:_.array(k),"business-entities":_.array(U),vendors:_.array(P),"data-categories":_.array(F),"processing-purposes":_.array(I),"data-subjects":_.array(K),actions:_.array(q),identifiers:_.array(J),"data-silos":_.array(nt),"data-flows":_.array(Y),cookies:_.array(Ye),"consent-manager":Qe,prompts:_.array(L),"prompt-partials":_.array(R),"prompt-groups":_.array(z),agents:_.array(j),"agent-functions":_.array(M),"agent-files":_.array(N),"privacy-center":$e,policies:_.array(et),messages:_.array(tt),partitions:_.array(Ze),"assessment-templates":_.array(dt),assessments:_.array(ft),"processing-activities":_.array(Ge),purposes:_.array(ht),"system-discovery":_.array(gt)}),vt=_.type({organizationName:_.string,apiKey:_.string,organizationId:_.string}),yt=_.intersection([_.type({"Connections Made To":_.string,Type:h(s),Purpose:_.string}),_.partial({Service:_.string,Notes:_.string,Owners:_.string,Teams:_.string,Status:h(a)}),_.record(_.string,_.string)]),bt=_.intersection([_.type({Name:_.string,Purpose:_.string}),_.partial({Service:_.string,Notes:_.string,Owners:_.string,Teams:_.string,Status:h(a)}),_.record(_.string,_.string)]),xt=_.type({title:_.string,description:_.string,cookies:_.array(_.type({name:_.string,trackingPurposes:_.array(_.string)})),dataFlows:_.array(_.type({value:_.string,type:h(s),trackingPurposes:_.array(_.string)}))}),St=h(e),Ct=y({TRouteName:h(t)});h(t);const wt=_.array(Ct),Tt=v({TEnabledRoutes:wt}),Et=_.partial({enabledIntegrations:_.partial({openAI:Tt})}),Dt=_.partial({promptRunName:_.string,promptId:_.string,promptTitle:_.string,promptGroupId:_.string,promptGroupTitle:_.string,runByEmployeeEmail:_.string,applicationId:_.string,applicationName:_.string,codePackageName:_.string,repositoryName:_.string,applicationUserCoreIdentifier:_.string,applicationUserName:_.string,slackMessageTs:_.string,slackTeamId:_.string,slackChannelId:_.string,slackChannelName:_.string}),Ot=_.intersection([_.type({title:_.string}),_.partial({value:_.string})]),kt=_.type({columns:_.array(Ot)}),At=_.partial({rows:_.array(kt),json:_.string});export{et as $,bt as A,V as B,G as C,mt as D,xt as E,We as F,tt as G,B as H,yt as I,Tt as J,Ct as K,Y as L,D as M,F as N,pt as O,E as P,Dt as Q,nt as R,qe as S,Qe as T,J as U,w as V,At as W,Et as X,Ze as Y,St as Z,dt as _,_t,M as a,z as at,O as b,y as bt,lt as c,W as ct,at as d,ct as dt,$e as et,$ as f,gt as ft,ut as g,b as gt,Z as h,C as ht,N as i,H as it,Ye as j,ht as k,ot as l,Je as lt,X as m,vt as mt,rt as n,I as nt,j as o,L as ot,Q as p,Ke as pt,wt as q,it as r,T as rt,S as s,R as st,q as t,Ge as tt,ft as u,st as ut,k as v,P as vt,Xe as w,U as x,v as xt,A as y,x as yt,K as z};
|
|
2
|
+
//# sourceMappingURL=codecs-BE3Wmoh8.mjs.map
|