@transcend-io/cli 10.1.0 → 10.2.1
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/dist/{app-Cx8-4u8K.mjs → app-DLzaZHc8.mjs} +20 -20
- package/dist/{app-Cx8-4u8K.mjs.map → app-DLzaZHc8.mjs.map} +1 -1
- package/dist/{approvePrivacyRequests-Bjq5cPSI.mjs → approvePrivacyRequests-BlUcYXpH.mjs} +2 -2
- package/dist/{approvePrivacyRequests-Bjq5cPSI.mjs.map → approvePrivacyRequests-BlUcYXpH.mjs.map} +1 -1
- package/dist/bin/bash-complete.mjs +1 -1
- package/dist/bin/cli.mjs +1 -1
- package/dist/bin/deprecated-command.mjs +1 -1
- package/dist/{buildXdiSyncEndpoint-DWs9ImOw.mjs → buildXdiSyncEndpoint-D5GxPH6o.mjs} +2 -2
- package/dist/{buildXdiSyncEndpoint-DWs9ImOw.mjs.map → buildXdiSyncEndpoint-D5GxPH6o.mjs.map} +1 -1
- package/dist/bulkRestartRequests-DILDBdc1.mjs +2 -0
- package/dist/bulkRestartRequests-DILDBdc1.mjs.map +1 -0
- package/dist/bulkRetryEnrichers-CjSz1472.mjs +2 -0
- package/dist/bulkRetryEnrichers-CjSz1472.mjs.map +1 -0
- package/dist/cancelPrivacyRequests-BWJZmZVY.mjs +2 -0
- package/dist/cancelPrivacyRequests-BWJZmZVY.mjs.map +1 -0
- package/dist/{collectCsvFilesOrExit-D-csvd13.mjs → collectCsvFilesOrExit-CbtyKAzu.mjs} +1 -1
- package/dist/{collectCsvFilesOrExit-D-csvd13.mjs.map → collectCsvFilesOrExit-CbtyKAzu.mjs.map} +1 -1
- package/dist/{collectParquetFilesOrExit-C8qT5_57.mjs → collectParquetFilesOrExit-BJiAyaQ5.mjs} +1 -1
- package/dist/{collectParquetFilesOrExit-C8qT5_57.mjs.map → collectParquetFilesOrExit-BJiAyaQ5.mjs.map} +1 -1
- package/dist/{command-rzZKmlky.mjs → command-BMa3UWax.mjs} +2 -2
- package/dist/{command-rzZKmlky.mjs.map → command-BMa3UWax.mjs.map} +1 -1
- package/dist/commands/admin/parquet-to-csv/worker.mjs +1 -1
- package/dist/{consentManagersToBusinessEntities-D1bdBgnA.mjs → consentManagersToBusinessEntities-BdKDganK.mjs} +1 -1
- package/dist/{consentManagersToBusinessEntities-D1bdBgnA.mjs.map → consentManagersToBusinessEntities-BdKDganK.mjs.map} +1 -1
- package/dist/{constants-mjLYTIJm.mjs → constants-BmwXDQu9.mjs} +2 -2
- package/dist/{constants-mjLYTIJm.mjs.map → constants-BmwXDQu9.mjs.map} +1 -1
- package/dist/{constants-DYbzl8QH.mjs → constants-ClkQQhJs.mjs} +1 -1
- package/dist/{constants-DYbzl8QH.mjs.map → constants-ClkQQhJs.mjs.map} +1 -1
- package/dist/{constants-XOsAW1__.mjs → constants-TpID7AXE.mjs} +2 -2
- package/dist/{constants-XOsAW1__.mjs.map → constants-TpID7AXE.mjs.map} +1 -1
- package/dist/{createExtraKeyHandler-Jp5XpTJi.mjs → createExtraKeyHandler-BO4lu0HO.mjs} +2 -2
- package/dist/{createExtraKeyHandler-Jp5XpTJi.mjs.map → createExtraKeyHandler-BO4lu0HO.mjs.map} +1 -1
- package/dist/{dataFlowsToDataSilos-DUj1NhOt.mjs → dataFlowsToDataSilos-Ca2DtTsd.mjs} +1 -1
- package/dist/{dataFlowsToDataSilos-DUj1NhOt.mjs.map → dataFlowsToDataSilos-Ca2DtTsd.mjs.map} +1 -1
- package/dist/{done-input-validation-C5rgR0Wr.mjs → done-input-validation-BcNBxhEs.mjs} +1 -1
- package/dist/{done-input-validation-C5rgR0Wr.mjs.map → done-input-validation-BcNBxhEs.mjs.map} +1 -1
- package/dist/{downloadPrivacyRequestFiles-GUbd_PRc.mjs → downloadPrivacyRequestFiles-8DtRUNXp.mjs} +2 -2
- package/dist/{downloadPrivacyRequestFiles-GUbd_PRc.mjs.map → downloadPrivacyRequestFiles-8DtRUNXp.mjs.map} +1 -1
- package/dist/{extractClientError-X9wJVqGq.mjs → extractClientError-i-Tw_az7.mjs} +1 -1
- package/dist/{extractClientError-X9wJVqGq.mjs.map → extractClientError-i-Tw_az7.mjs.map} +1 -1
- package/dist/{fetchAllRequests-xGgt_STo.mjs → fetchAllRequests-CHHdyb4Q.mjs} +2 -2
- package/dist/{fetchAllRequests-xGgt_STo.mjs.map → fetchAllRequests-CHHdyb4Q.mjs.map} +1 -1
- package/dist/generateCrossAccountApiKeys-D6hg9146.mjs +2 -0
- package/dist/generateCrossAccountApiKeys-D6hg9146.mjs.map +1 -0
- package/dist/{impl-ogUHfunr.mjs → impl--VlanXjT.mjs} +2 -2
- package/dist/{impl-ogUHfunr.mjs.map → impl--VlanXjT.mjs.map} +1 -1
- package/dist/{impl-B-PzeHxN.mjs → impl-3VLH9aat.mjs} +2 -2
- package/dist/{impl-B-PzeHxN.mjs.map → impl-3VLH9aat.mjs.map} +1 -1
- package/dist/{impl-DfVep2mE.mjs → impl-6mCOBlSD.mjs} +2 -2
- package/dist/{impl-DfVep2mE.mjs.map → impl-6mCOBlSD.mjs.map} +1 -1
- package/dist/impl-AEjPyfhu.mjs +2 -0
- package/dist/impl-AEjPyfhu.mjs.map +1 -0
- package/dist/{impl-CZsYoSZQ.mjs → impl-BC17WMY4.mjs} +2 -2
- package/dist/{impl-CZsYoSZQ.mjs.map → impl-BC17WMY4.mjs.map} +1 -1
- package/dist/{impl-yvc0y1uO.mjs → impl-BECek1in.mjs} +2 -2
- package/dist/{impl-yvc0y1uO.mjs.map → impl-BECek1in.mjs.map} +1 -1
- package/dist/{impl-B6TXE2oE.mjs → impl-BKvcmB7W.mjs} +2 -2
- package/dist/{impl-B6TXE2oE.mjs.map → impl-BKvcmB7W.mjs.map} +1 -1
- package/dist/impl-BNDNzc2I.mjs +2 -0
- package/dist/impl-BNDNzc2I.mjs.map +1 -0
- package/dist/{impl-Cy8-6_Oo2.mjs → impl-BTZOd3VN.mjs} +2 -2
- package/dist/impl-BTZOd3VN.mjs.map +1 -0
- package/dist/{impl-BffzTHKU.mjs → impl-BXb07jBU.mjs} +2 -2
- package/dist/{impl-BffzTHKU.mjs.map → impl-BXb07jBU.mjs.map} +1 -1
- package/dist/{impl-BBnnC5xq.mjs → impl-BaHZqboi.mjs} +2 -2
- package/dist/{impl-BBnnC5xq.mjs.map → impl-BaHZqboi.mjs.map} +1 -1
- package/dist/{impl-BSKl6rC6.mjs → impl-BhnojAfL.mjs} +2 -2
- package/dist/{impl-BSKl6rC6.mjs.map → impl-BhnojAfL.mjs.map} +1 -1
- package/dist/{impl-CqH3YYuv.mjs → impl-BjCQSRLu.mjs} +2 -2
- package/dist/{impl-CqH3YYuv.mjs.map → impl-BjCQSRLu.mjs.map} +1 -1
- package/dist/{impl-Cpndlxar.mjs → impl-BjIylEKQ.mjs} +2 -2
- package/dist/{impl-Cpndlxar.mjs.map → impl-BjIylEKQ.mjs.map} +1 -1
- package/dist/{impl-DKAV-8XC.mjs → impl-BsecIND0.mjs} +2 -2
- package/dist/{impl-DKAV-8XC.mjs.map → impl-BsecIND0.mjs.map} +1 -1
- package/dist/{impl-Dw9uW5zy2.mjs → impl-BtIsgTGn.mjs} +2 -2
- package/dist/impl-BtIsgTGn.mjs.map +1 -0
- package/dist/{impl-BMnXA_Vd.mjs → impl-BuvbXmXj.mjs} +2 -2
- package/dist/{impl-BMnXA_Vd.mjs.map → impl-BuvbXmXj.mjs.map} +1 -1
- package/dist/{impl-BBKJIP0Q.mjs → impl-C71CkarV.mjs} +2 -2
- package/dist/{impl-BBKJIP0Q.mjs.map → impl-C71CkarV.mjs.map} +1 -1
- package/dist/{impl-CpJljZV2.mjs → impl-CIYSnaMG.mjs} +2 -2
- package/dist/{impl-CpJljZV2.mjs.map → impl-CIYSnaMG.mjs.map} +1 -1
- package/dist/{impl-DhXQb3bm.mjs → impl-CLznNZ5F.mjs} +2 -2
- package/dist/{impl-DhXQb3bm.mjs.map → impl-CLznNZ5F.mjs.map} +1 -1
- package/dist/{impl-BGGm947r2.mjs → impl-CR6tW9Jz.mjs} +2 -2
- package/dist/impl-CR6tW9Jz.mjs.map +1 -0
- package/dist/{impl-CPIMsZg-.mjs → impl-CScy-GrG.mjs} +2 -2
- package/dist/{impl-CPIMsZg-.mjs.map → impl-CScy-GrG.mjs.map} +1 -1
- package/dist/{impl-uwkj-RbF.mjs → impl-CYS38cQM.mjs} +2 -2
- package/dist/{impl-uwkj-RbF.mjs.map → impl-CYS38cQM.mjs.map} +1 -1
- package/dist/{impl-BVnfUDUm.mjs → impl-Cw3_0zqC.mjs} +2 -2
- package/dist/{impl-BVnfUDUm.mjs.map → impl-Cw3_0zqC.mjs.map} +1 -1
- package/dist/{impl-D_AxguFh2.mjs → impl-CxwEMQhw.mjs} +2 -2
- package/dist/impl-CxwEMQhw.mjs.map +1 -0
- package/dist/{impl-DaK9UOwL.mjs → impl-CzvCA0Ev.mjs} +2 -2
- package/dist/{impl-DaK9UOwL.mjs.map → impl-CzvCA0Ev.mjs.map} +1 -1
- package/dist/{impl-StdJMCiM.mjs → impl-DAkBsgQN.mjs} +2 -2
- package/dist/{impl-StdJMCiM.mjs.map → impl-DAkBsgQN.mjs.map} +1 -1
- package/dist/{impl-iGMjSniP.mjs → impl-DAu079Yl.mjs} +2 -2
- package/dist/{impl-iGMjSniP.mjs.map → impl-DAu079Yl.mjs.map} +1 -1
- package/dist/{impl-BKrNGF2F.mjs → impl-DTaM3UE3.mjs} +2 -2
- package/dist/{impl-BKrNGF2F.mjs.map → impl-DTaM3UE3.mjs.map} +1 -1
- package/dist/{impl-CnHiD4zU.mjs → impl-DWiE5RsV.mjs} +2 -2
- package/dist/{impl-CnHiD4zU.mjs.map → impl-DWiE5RsV.mjs.map} +1 -1
- package/dist/{impl-CODwodEc.mjs → impl-DXHqqWJb.mjs} +2 -2
- package/dist/{impl-CODwodEc.mjs.map → impl-DXHqqWJb.mjs.map} +1 -1
- package/dist/impl-DZicly6r.mjs +2 -0
- package/dist/{impl-BVHfSIVG.mjs.map → impl-DZicly6r.mjs.map} +1 -1
- package/dist/{impl-CvJtt8H2.mjs → impl-DbGCApR_.mjs} +2 -2
- package/dist/{impl-CvJtt8H2.mjs.map → impl-DbGCApR_.mjs.map} +1 -1
- package/dist/{impl-BxOydpyJ.mjs → impl-DgG4lZ9T.mjs} +2 -2
- package/dist/{impl-BxOydpyJ.mjs.map → impl-DgG4lZ9T.mjs.map} +1 -1
- package/dist/{impl-DpwyYsfg.mjs → impl-Dik9I7Bz.mjs} +2 -2
- package/dist/{impl-DpwyYsfg.mjs.map → impl-Dik9I7Bz.mjs.map} +1 -1
- package/dist/impl-Djlx-Dqj.mjs +2 -0
- package/dist/impl-Djlx-Dqj.mjs.map +1 -0
- package/dist/{impl-CC0rkA9s.mjs → impl-DmQAAT-u.mjs} +2 -2
- package/dist/{impl-CC0rkA9s.mjs.map → impl-DmQAAT-u.mjs.map} +1 -1
- package/dist/{impl-C3DXXn8M.mjs → impl-DpuPyy-w.mjs} +2 -2
- package/dist/{impl-C3DXXn8M.mjs.map → impl-DpuPyy-w.mjs.map} +1 -1
- package/dist/{impl-C-u5h8We.mjs → impl-Du8quB1O.mjs} +2 -2
- package/dist/{impl-C-u5h8We.mjs.map → impl-Du8quB1O.mjs.map} +1 -1
- package/dist/{impl-BRiRfzgu.mjs → impl-OxHej0UO.mjs} +2 -2
- package/dist/{impl-BRiRfzgu.mjs.map → impl-OxHej0UO.mjs.map} +1 -1
- package/dist/{impl-DJ4VCAcc.mjs → impl-c7VvcNpZ.mjs} +2 -2
- package/dist/{impl-DJ4VCAcc.mjs.map → impl-c7VvcNpZ.mjs.map} +1 -1
- package/dist/{impl-DvrSuAJv.mjs → impl-fZQxhZRu.mjs} +2 -2
- package/dist/{impl-DvrSuAJv.mjs.map → impl-fZQxhZRu.mjs.map} +1 -1
- package/dist/{impl-DpGVNllB.mjs → impl-xtlx25UP.mjs} +2 -2
- package/dist/{impl-DpGVNllB.mjs.map → impl-xtlx25UP.mjs.map} +1 -1
- package/dist/{impl-Cw10WeUv.mjs → impl-yMumZUUX.mjs} +2 -2
- package/dist/{impl-Cw10WeUv.mjs.map → impl-yMumZUUX.mjs.map} +1 -1
- package/dist/index.d.mts +895 -1698
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +4 -4
- package/dist/index.mjs.map +1 -1
- package/dist/{inquirer-DyRwhvoh.mjs → inquirer-BqZXFEt1.mjs} +2 -2
- package/dist/{inquirer-DyRwhvoh.mjs.map → inquirer-BqZXFEt1.mjs.map} +1 -1
- package/dist/{listFiles-Odj7j2E1.mjs → listFiles-D2wMHnEr.mjs} +1 -1
- package/dist/{listFiles-Odj7j2E1.mjs.map → listFiles-D2wMHnEr.mjs.map} +1 -1
- package/dist/markRequestDataSiloIdsCompleted-sDBo1vUD.mjs +2 -0
- package/dist/markRequestDataSiloIdsCompleted-sDBo1vUD.mjs.map +1 -0
- package/dist/{markSilentPrivacyRequests-ytCzpUkY.mjs → markSilentPrivacyRequests-Cmn1fxHI.mjs} +2 -2
- package/dist/{markSilentPrivacyRequests-ytCzpUkY.mjs.map → markSilentPrivacyRequests-Cmn1fxHI.mjs.map} +1 -1
- package/dist/notifyPrivacyRequestsAdditionalTime-CmhFE4b0.mjs +2 -0
- package/dist/notifyPrivacyRequestsAdditionalTime-CmhFE4b0.mjs.map +1 -0
- package/dist/{parquetToCsvOneFile-bgEgRoAi.mjs → parquetToCsvOneFile-B84XXInh.mjs} +1 -1
- package/dist/{parquetToCsvOneFile-bgEgRoAi.mjs.map → parquetToCsvOneFile-B84XXInh.mjs.map} +1 -1
- package/dist/{parseAttributesFromString-B8h4DudO.mjs → parseAttributesFromString-D1Yl0xwT.mjs} +2 -2
- package/dist/{parseAttributesFromString-B8h4DudO.mjs.map → parseAttributesFromString-D1Yl0xwT.mjs.map} +1 -1
- package/dist/parseVariablesFromString-BeKOGw5n.mjs +3 -0
- package/dist/parseVariablesFromString-BeKOGw5n.mjs.map +1 -0
- package/dist/pullAllDatapoints-Bbmky50p.mjs +45 -0
- package/dist/pullAllDatapoints-Bbmky50p.mjs.map +1 -0
- package/dist/pullChunkedCustomSiloOutstandingIdentifiers-QRET4M0x.mjs +2 -0
- package/dist/pullChunkedCustomSiloOutstandingIdentifiers-QRET4M0x.mjs.map +1 -0
- package/dist/{pullConsentManagerMetrics-BO0hYPDG.mjs → pullConsentManagerMetrics-zKgjc3Ap.mjs} +1 -1
- package/dist/{pullConsentManagerMetrics-BO0hYPDG.mjs.map → pullConsentManagerMetrics-zKgjc3Ap.mjs.map} +1 -1
- package/dist/pullManualEnrichmentIdentifiersToCsv-8I6PgBQc.mjs +2 -0
- package/dist/pullManualEnrichmentIdentifiersToCsv-8I6PgBQc.mjs.map +1 -0
- package/dist/pullTranscendConfiguration-DjOELnPo.mjs +58 -0
- package/dist/pullTranscendConfiguration-DjOELnPo.mjs.map +1 -0
- package/dist/{pullUnstructuredSubDataPointRecommendations-jE-tdoVK.mjs → pullUnstructuredSubDataPointRecommendations-D0z-vPgq.mjs} +3 -3
- package/dist/{pullUnstructuredSubDataPointRecommendations-jE-tdoVK.mjs.map → pullUnstructuredSubDataPointRecommendations-D0z-vPgq.mjs.map} +1 -1
- package/dist/{pushCronIdentifiersFromCsv-D9Hzna0W.mjs → pushCronIdentifiersFromCsv-CBb2FvPD.mjs} +2 -2
- package/dist/{pushCronIdentifiersFromCsv-D9Hzna0W.mjs.map → pushCronIdentifiersFromCsv-CBb2FvPD.mjs.map} +1 -1
- package/dist/{pushManualEnrichmentIdentifiersFromCsv-BiR7PS_d.mjs → pushManualEnrichmentIdentifiersFromCsv-DYQq7hsN.mjs} +2 -2
- package/dist/{pushManualEnrichmentIdentifiersFromCsv-BiR7PS_d.mjs.map → pushManualEnrichmentIdentifiersFromCsv-DYQq7hsN.mjs.map} +1 -1
- package/dist/{readCsv-0PIlJQCN.mjs → readCsv-C4TyEs-r.mjs} +1 -1
- package/dist/{readCsv-0PIlJQCN.mjs.map → readCsv-C4TyEs-r.mjs.map} +1 -1
- package/dist/removeUnverifiedRequestIdentifiers-VCbL2BXD.mjs +2 -0
- package/dist/removeUnverifiedRequestIdentifiers-VCbL2BXD.mjs.map +1 -0
- package/dist/{request-SLqRySNU.mjs → request-DfkRPQFr.mjs} +1 -1
- package/dist/{request-SLqRySNU.mjs.map → request-DfkRPQFr.mjs.map} +1 -1
- package/dist/retryRequestDataSilos-BCe-WGdL.mjs +2 -0
- package/dist/retryRequestDataSilos-BCe-WGdL.mjs.map +1 -0
- package/dist/skipPreflightJobs-Bc0--Bvs.mjs +2 -0
- package/dist/skipPreflightJobs-Bc0--Bvs.mjs.map +1 -0
- package/dist/skipRequestDataSilos-BHbAQkpb.mjs +2 -0
- package/dist/skipRequestDataSilos-BHbAQkpb.mjs.map +1 -0
- package/dist/streamPrivacyRequestsToCsv-eB3gNhol.mjs +2 -0
- package/dist/streamPrivacyRequestsToCsv-eB3gNhol.mjs.map +1 -0
- package/dist/{syncCodePackages-BOS5foh6.mjs → syncCodePackages-CAk_Hjyl.mjs} +1 -1
- package/dist/{syncCodePackages-BOS5foh6.mjs.map → syncCodePackages-CAk_Hjyl.mjs.map} +1 -1
- package/dist/updateConsentManagerVersionToLatest-D6i1Xh6o.mjs +2 -0
- package/dist/updateConsentManagerVersionToLatest-D6i1Xh6o.mjs.map +1 -0
- package/dist/{uploadConsents-BP5XILuw.mjs → uploadConsents-BTM49EbZ.mjs} +2 -2
- package/dist/{uploadConsents-BP5XILuw.mjs.map → uploadConsents-BTM49EbZ.mjs.map} +1 -1
- package/dist/{uploadCookiesFromCsv-B42cZgYW.mjs → uploadCookiesFromCsv-DoC9rtEF.mjs} +2 -2
- package/dist/{uploadCookiesFromCsv-B42cZgYW.mjs.map → uploadCookiesFromCsv-DoC9rtEF.mjs.map} +1 -1
- package/dist/{uploadDataFlowsFromCsv-D2V567pP.mjs → uploadDataFlowsFromCsv-DL1-cAit.mjs} +2 -2
- package/dist/{uploadDataFlowsFromCsv-D2V567pP.mjs.map → uploadDataFlowsFromCsv-DL1-cAit.mjs.map} +1 -1
- package/dist/uploadPrivacyRequestsFromCsv-wXm4H4FH.mjs +2 -0
- package/dist/uploadPrivacyRequestsFromCsv-wXm4H4FH.mjs.map +1 -0
- package/dist/{validateTranscendAuth-DCwAtgvh.mjs → validateTranscendAuth-Cuh2Qfdl.mjs} +1 -1
- package/dist/{validateTranscendAuth-DCwAtgvh.mjs.map → validateTranscendAuth-Cuh2Qfdl.mjs.map} +1 -1
- package/dist/{writeCsv-Da8NUe1V.mjs → writeCsv-C4pjXGsD.mjs} +1 -1
- package/dist/{writeCsv-Da8NUe1V.mjs.map → writeCsv-C4pjXGsD.mjs.map} +1 -1
- package/package.json +8 -8
- package/dist/RequestDataSilo-Rrc2dL9g.mjs +0 -54
- package/dist/RequestDataSilo-Rrc2dL9g.mjs.map +0 -1
- package/dist/bulkRestartRequests-sie3tM3W.mjs +0 -2
- package/dist/bulkRestartRequests-sie3tM3W.mjs.map +0 -1
- package/dist/bulkRetryEnrichers-C1RrxiTR.mjs +0 -2
- package/dist/bulkRetryEnrichers-C1RrxiTR.mjs.map +0 -1
- package/dist/cancelPrivacyRequests-DmvFijq_.mjs +0 -2
- package/dist/cancelPrivacyRequests-DmvFijq_.mjs.map +0 -1
- package/dist/dataSilo-Dvi8-PkH.mjs +0 -302
- package/dist/dataSilo-Dvi8-PkH.mjs.map +0 -1
- package/dist/dataSubject-CF784Ug0.mjs +0 -92
- package/dist/dataSubject-CF784Ug0.mjs.map +0 -1
- package/dist/fetchAllRequestEnrichers-Bt97Bb7F.mjs +0 -42
- package/dist/fetchAllRequestEnrichers-Bt97Bb7F.mjs.map +0 -1
- package/dist/fetchAllRequestIdentifiers-BXx3rSee.mjs +0 -10
- package/dist/fetchAllRequestIdentifiers-BXx3rSee.mjs.map +0 -1
- package/dist/fetchRequestDataSilo-0UvyeL60.mjs +0 -2
- package/dist/fetchRequestDataSilo-0UvyeL60.mjs.map +0 -1
- package/dist/fetchRequestFilesForRequest-CJH2iB-P.mjs +0 -33
- package/dist/fetchRequestFilesForRequest-CJH2iB-P.mjs.map +0 -1
- package/dist/generateCrossAccountApiKeys-DztJoLQS.mjs +0 -2
- package/dist/generateCrossAccountApiKeys-DztJoLQS.mjs.map +0 -1
- package/dist/impl-BGGm947r2.mjs.map +0 -1
- package/dist/impl-BVHfSIVG.mjs +0 -2
- package/dist/impl-BfeWet_F2.mjs +0 -2
- package/dist/impl-BfeWet_F2.mjs.map +0 -1
- package/dist/impl-Cy8-6_Oo2.mjs.map +0 -1
- package/dist/impl-D_AxguFh2.mjs.map +0 -1
- package/dist/impl-Dw9uW5zy2.mjs.map +0 -1
- package/dist/impl-PdIU1pLr2.mjs +0 -2
- package/dist/impl-PdIU1pLr2.mjs.map +0 -1
- package/dist/impl-daUiLV3c.mjs +0 -2
- package/dist/impl-daUiLV3c.mjs.map +0 -1
- package/dist/markRequestDataSiloIdsCompleted-DJSICILv.mjs +0 -2
- package/dist/markRequestDataSiloIdsCompleted-DJSICILv.mjs.map +0 -1
- package/dist/notifyPrivacyRequestsAdditionalTime-D8v68eAg.mjs +0 -2
- package/dist/notifyPrivacyRequestsAdditionalTime-D8v68eAg.mjs.map +0 -1
- package/dist/parseVariablesFromString-CvoeZZ75.mjs +0 -23
- package/dist/parseVariablesFromString-CvoeZZ75.mjs.map +0 -1
- package/dist/pullAllDatapoints-CqgqXRbp.mjs +0 -45
- package/dist/pullAllDatapoints-CqgqXRbp.mjs.map +0 -1
- package/dist/pullChunkedCustomSiloOutstandingIdentifiers-DaYEDZ66.mjs +0 -2
- package/dist/pullChunkedCustomSiloOutstandingIdentifiers-DaYEDZ66.mjs.map +0 -1
- package/dist/pullManualEnrichmentIdentifiersToCsv-BNuhsG20.mjs +0 -2
- package/dist/pullManualEnrichmentIdentifiersToCsv-BNuhsG20.mjs.map +0 -1
- package/dist/pullTranscendConfiguration-DSyMRyPe.mjs +0 -58
- package/dist/pullTranscendConfiguration-DSyMRyPe.mjs.map +0 -1
- package/dist/removeUnverifiedRequestIdentifiers-B0Gx09XN.mjs +0 -35
- package/dist/removeUnverifiedRequestIdentifiers-B0Gx09XN.mjs.map +0 -1
- package/dist/retryRequestDataSilos-DFjFhhC0.mjs +0 -2
- package/dist/retryRequestDataSilos-DFjFhhC0.mjs.map +0 -1
- package/dist/skipPreflightJobs-Bm8lZZk-.mjs +0 -2
- package/dist/skipPreflightJobs-Bm8lZZk-.mjs.map +0 -1
- package/dist/skipRequestDataSilos-B5FByYTj.mjs +0 -2
- package/dist/skipRequestDataSilos-B5FByYTj.mjs.map +0 -1
- package/dist/streamPrivacyRequestsToCsv-CBzh80oQ.mjs +0 -2
- package/dist/streamPrivacyRequestsToCsv-CBzh80oQ.mjs.map +0 -1
- package/dist/syncEnrichers-C9HcWCrs.mjs +0 -3
- package/dist/syncEnrichers-C9HcWCrs.mjs.map +0 -1
- package/dist/updateConsentManagerVersionToLatest-X1HAM_IX.mjs +0 -2
- package/dist/updateConsentManagerVersionToLatest-X1HAM_IX.mjs.map +0 -1
- package/dist/uploadPrivacyRequestsFromCsv-Czc3vGfJ.mjs +0 -2
- package/dist/uploadPrivacyRequestsFromCsv-Czc3vGfJ.mjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bulkRestartRequests-sie3tM3W.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 { buildTranscendGraphQLClient, createSombraGotInstance } from '@transcend-io/sdk';\nimport { map } from '@transcend-io/utils';\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 {\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, {\n logger,\n sombraApiKey: sombraAuth,\n sombraUrl: process.env.SOMBRA_URL,\n });\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":"myBAkBA,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,ECxET,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,CAC/D,SACA,aAAc,EACd,UAAW,QAAQ,IAAI,WACxB,CAAC,CAGI,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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as e}from"./constants-XOsAW1__.mjs";import{t}from"./logger-Bj782ZYD.mjs";import{r as n,t as r}from"./fetchAllRequestEnrichers-Bt97Bb7F.mjs";import{r as i}from"./fetchAllRequests-xGgt_STo.mjs";import{RequestEnricherStatus as a,RequestStatus as o}from"@transcend-io/privacy-types";import{difference as s}from"lodash-es";import c from"colors";import{buildTranscendGraphQLClient as l,makeGraphQLRequest as u}from"@transcend-io/sdk";import{map as d}from"@transcend-io/utils";import f from"cli-progress";async function p(e,r){await u(e,n,{variables:{requestEnricherId:r},logger:t})}async function m({auth:n,requestActions:u=[],createdAtBefore:m,createdAtAfter:h,updatedAtBefore:g,updatedAtAfter:_,transcendUrl:v=e,requestEnricherStatuses:y=Object.values(a),requestIds:b=[],enricherId:x,concurrency:S=20}){let C=new Date().getTime(),w=new f.SingleBar({},f.Presets.shades_classic),T=l(v,n);t.info(c.magenta(`Fetching requests to restart...`));let E=await i(T,{actions:u,statuses:[o.Enriching],createdAtBefore:m,createdAtAfter:h,updatedAtBefore:g,updatedAtAfter:_,requestIds:b}),D=0;if(b.length>0&&b.length!==E.length){let e=s(b,E.map(({id:e})=>e));e.length>0&&(t.error(c.red(`Failed to find the following requests by ID: ${e.join(`,`)}.`)),process.exit(1))}let O=0;w.start(E.length,0),await d(E,async e=>{await d((await r(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(c.green(`Completed restarting of ${E.length} requests and ${D} enrichers in "${k/1e3}" seconds.`))}export{p as n,m as t};
|
|
2
|
-
//# sourceMappingURL=bulkRetryEnrichers-C1RrxiTR.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bulkRetryEnrichers-C1RrxiTR.mjs","names":[],"sources":["../src/lib/graphql/retryRequestEnricher.ts","../src/lib/requests/bulkRetryEnrichers.ts"],"sourcesContent":["import { makeGraphQLRequest } from '@transcend-io/sdk';\nimport { GraphQLClient } from 'graphql-request';\n\nimport { logger } from '../../logger.js';\nimport { RETRY_REQUEST_ENRICHER } from './gqls/index.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 variables: { requestEnricherId: id },\n logger,\n });\n}\n","import { RequestAction, RequestEnricherStatus, RequestStatus } from '@transcend-io/privacy-types';\nimport { buildTranscendGraphQLClient } from '@transcend-io/sdk';\nimport { map } from '@transcend-io/utils';\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 {\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":"2fAYA,eAAsB,EAAqB,EAAuB,EAA2B,CAC3F,MAAM,EAAmB,EAAQ,EAAwB,CACvD,UAAW,CAAE,kBAAmB,EAAI,CACpC,SACD,CAAC,CCIJ,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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as e}from"./constants-XOsAW1__.mjs";import{t}from"./logger-Bj782ZYD.mjs";import{n,o as r}from"./request-SLqRySNU.mjs";import{r as i}from"./fetchAllRequests-xGgt_STo.mjs";import{RequestStatus as a}from"@transcend-io/privacy-types";import o from"colors";import{buildTranscendGraphQLClient as s,fetchAllTemplates as c,makeGraphQLRequest as l}from"@transcend-io/sdk";import{map as u}from"@transcend-io/utils";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=[a.Compiling,a.RequestMade,a.Delayed,a.Approving,a.Secondary,a.Enriching,a.Waiting,a.SecondaryApproving],concurrency:S=50,transcendUrl:C=e}){let w=s(C,m),T=new Date().getTime(),E=new d.SingleBar({},d.Presets.shades_classic),D;if(p){let e=(await c(w,{title:p,logger:t})).find(e=>e.title===p);if(!e)throw Error(`Failed to find a template with title: "${p}"`);D=e}let O=await i(w,{actions:f,createdAtBefore:_,createdAtAfter:v,updatedAtBefore:y,updatedAtAfter:b,statuses:x,requestIds:h});t.info(o.magenta(`Canceling "${O.length}" requests${D?` Using template: ${D.title}`:``}.`));let k=0;E.start(O.length,0),await u(O,async e=>{g&&new Date(g)>new Date(e.createdAt)&&await l(w,r,{variables:{input:{id:e.id,isSilent:!0}},logger:t}),await l(w,n,{variables:{input:{requestId:e.id,...D?{subject:`Re: ${D.subject.defaultMessage}`,template:D.template.defaultMessage}:{}}},logger:t}),k+=1,E.update(k)},{concurrency:S}),E.stop();let A=new Date().getTime()-T;return t.info(o.green(`Successfully canceled ${k} requests in "${A/1e3}" seconds!`)),O.length}export{f as t};
|
|
2
|
-
//# sourceMappingURL=cancelPrivacyRequests-DmvFijq_.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cancelPrivacyRequests-DmvFijq_.mjs","names":[],"sources":["../src/lib/requests/cancelPrivacyRequests.ts"],"sourcesContent":["import { RequestAction, RequestStatus } from '@transcend-io/privacy-types';\nimport {\n buildTranscendGraphQLClient,\n fetchAllTemplates,\n makeGraphQLRequest,\n type Template,\n} from '@transcend-io/sdk';\nimport { map } from '@transcend-io/utils';\nimport cliProgress from 'cli-progress';\nimport colors from 'colors';\n\nimport { DEFAULT_TRANSCEND_API } from '../../constants.js';\nimport { logger } from '../../logger.js';\nimport {\n UPDATE_PRIVACY_REQUEST,\n fetchAllRequests,\n CANCEL_PRIVACY_REQUEST,\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, {\n title: cancellationTitle,\n logger,\n });\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 variables: {\n input: {\n id: requestToCancel.id,\n isSilent: true,\n },\n },\n logger,\n });\n }\n\n // cancel the request\n await makeGraphQLRequest(client, CANCEL_PRIVACY_REQUEST, {\n variables: {\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 logger,\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":"0bAyBA,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,CAKrB,IAAM,GAJoB,MAAM,EAAkB,EAAQ,CACxD,MAAO,EACP,SACD,CAAC,EACwC,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,UAAW,CACT,MAAO,CACL,GAAI,EAAgB,GACpB,SAAU,GACX,CACF,CACD,SACD,CAAC,CAIJ,MAAM,EAAmB,EAAQ,EAAwB,CACvD,UAAW,CACT,MAAO,CACL,UAAW,EAAgB,GAC3B,GAAI,EACA,CACE,QAAS,OAAO,EAAoB,QAAQ,iBAC5C,SAAU,EAAoB,SAAS,eACxC,CACD,EAAE,CACP,CACF,CACD,SACD,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"}
|
|
@@ -1,302 +0,0 @@
|
|
|
1
|
-
import{gql as e}from"graphql-request";const t=e`
|
|
2
|
-
query TranscendCliDataPoints($filterBy: DataPointFiltersInput, $first: Int!, $offset: Int!) {
|
|
3
|
-
dataPoints(
|
|
4
|
-
filterBy: $filterBy
|
|
5
|
-
first: $first
|
|
6
|
-
offset: $offset
|
|
7
|
-
useMaster: false
|
|
8
|
-
orderBy: [{ field: createdAt, direction: ASC }, { field: name, direction: ASC }]
|
|
9
|
-
) {
|
|
10
|
-
nodes {
|
|
11
|
-
id
|
|
12
|
-
title {
|
|
13
|
-
defaultMessage
|
|
14
|
-
}
|
|
15
|
-
description {
|
|
16
|
-
defaultMessage
|
|
17
|
-
}
|
|
18
|
-
owners {
|
|
19
|
-
email
|
|
20
|
-
}
|
|
21
|
-
teams {
|
|
22
|
-
name
|
|
23
|
-
}
|
|
24
|
-
name
|
|
25
|
-
path
|
|
26
|
-
actionSettings {
|
|
27
|
-
type
|
|
28
|
-
active
|
|
29
|
-
}
|
|
30
|
-
dataCollection {
|
|
31
|
-
title {
|
|
32
|
-
defaultMessage
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
dbIntegrationQueries {
|
|
36
|
-
query
|
|
37
|
-
suggestedQuery
|
|
38
|
-
requestType
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
`,n=e`
|
|
44
|
-
query TranscendCliDataPointCount($filterBy: DataPointFiltersInput) {
|
|
45
|
-
dataPoints(filterBy: $filterBy, useMaster: false) {
|
|
46
|
-
totalCount
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
`,r=e`
|
|
50
|
-
query TranscendCliSubDataPoints(
|
|
51
|
-
$filterBy: SubDataPointFiltersInput
|
|
52
|
-
$first: Int!
|
|
53
|
-
$offset: Int!
|
|
54
|
-
) {
|
|
55
|
-
subDataPoints(filterBy: $filterBy, first: $first, offset: $offset, useMaster: false) {
|
|
56
|
-
nodes {
|
|
57
|
-
id
|
|
58
|
-
name
|
|
59
|
-
description
|
|
60
|
-
purposes {
|
|
61
|
-
name
|
|
62
|
-
purpose
|
|
63
|
-
}
|
|
64
|
-
categories {
|
|
65
|
-
name
|
|
66
|
-
category
|
|
67
|
-
}
|
|
68
|
-
accessRequestVisibilityEnabled
|
|
69
|
-
erasureRequestRedactionEnabled
|
|
70
|
-
attributeValues {
|
|
71
|
-
attributeKey {
|
|
72
|
-
name
|
|
73
|
-
}
|
|
74
|
-
name
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
`,i=e`
|
|
80
|
-
query TranscendCliSubDataPointsCount($filterBy: SubDataPointFiltersInput) {
|
|
81
|
-
subDataPoints(filterBy: $filterBy, useMaster: false) {
|
|
82
|
-
totalCount
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
`,a=e`
|
|
86
|
-
query TranscendCliSubDataPointGuesses(
|
|
87
|
-
$filterBy: SubDataPointFiltersInput
|
|
88
|
-
$first: Int!
|
|
89
|
-
$offset: Int!
|
|
90
|
-
) {
|
|
91
|
-
subDataPoints(filterBy: $filterBy, first: $first, offset: $offset, useMaster: false) {
|
|
92
|
-
nodes {
|
|
93
|
-
id
|
|
94
|
-
name
|
|
95
|
-
description
|
|
96
|
-
purposes {
|
|
97
|
-
name
|
|
98
|
-
purpose
|
|
99
|
-
}
|
|
100
|
-
categories {
|
|
101
|
-
name
|
|
102
|
-
category
|
|
103
|
-
}
|
|
104
|
-
pendingCategoryGuesses {
|
|
105
|
-
category {
|
|
106
|
-
name
|
|
107
|
-
category
|
|
108
|
-
}
|
|
109
|
-
status
|
|
110
|
-
confidence
|
|
111
|
-
classifierVersion
|
|
112
|
-
}
|
|
113
|
-
accessRequestVisibilityEnabled
|
|
114
|
-
erasureRequestRedactionEnabled
|
|
115
|
-
attributeValues {
|
|
116
|
-
attributeKey {
|
|
117
|
-
name
|
|
118
|
-
}
|
|
119
|
-
name
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
`,o=e`
|
|
125
|
-
mutation TranscendCliUpdateOrCreateDataPoint(
|
|
126
|
-
$dataSiloId: ID!
|
|
127
|
-
$name: String!
|
|
128
|
-
$path: [String!]
|
|
129
|
-
$title: String
|
|
130
|
-
$description: String
|
|
131
|
-
$ownerIds: [ID!]
|
|
132
|
-
$ownerEmails: [String!]
|
|
133
|
-
$teamNames: [String!]
|
|
134
|
-
$teamIds: [ID!]
|
|
135
|
-
$dataCollectionTag: String
|
|
136
|
-
$querySuggestions: [DbIntegrationQuerySuggestionInput!]
|
|
137
|
-
$enabledActions: [RequestActionObjectResolver!]
|
|
138
|
-
$subDataPoints: [DataPointSubDataPointInput!]
|
|
139
|
-
) {
|
|
140
|
-
updateOrCreateDataPoint(
|
|
141
|
-
input: {
|
|
142
|
-
dataSiloId: $dataSiloId
|
|
143
|
-
name: $name
|
|
144
|
-
path: $path
|
|
145
|
-
title: $title
|
|
146
|
-
teamNames: $teamNames
|
|
147
|
-
ownerEmails: $ownerEmails
|
|
148
|
-
dataCollectionTag: $dataCollectionTag
|
|
149
|
-
description: $description
|
|
150
|
-
ownerIds: $ownerIds
|
|
151
|
-
teamIds: $teamIds
|
|
152
|
-
querySuggestions: $querySuggestions
|
|
153
|
-
enabledActions: $enabledActions
|
|
154
|
-
subDataPoints: $subDataPoints
|
|
155
|
-
}
|
|
156
|
-
) {
|
|
157
|
-
dataPoint {
|
|
158
|
-
id
|
|
159
|
-
name
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
`,s=e`
|
|
164
|
-
query TranscendCliDataPointCsvExport($filterBy: DataPointFiltersInput, $first: Int!) {
|
|
165
|
-
dataPoints(filterBy: $filterBy, first: $first, useMaster: false) {
|
|
166
|
-
nodes {
|
|
167
|
-
id
|
|
168
|
-
title {
|
|
169
|
-
defaultMessage
|
|
170
|
-
}
|
|
171
|
-
description {
|
|
172
|
-
defaultMessage
|
|
173
|
-
}
|
|
174
|
-
owners {
|
|
175
|
-
email
|
|
176
|
-
}
|
|
177
|
-
teams {
|
|
178
|
-
name
|
|
179
|
-
}
|
|
180
|
-
name
|
|
181
|
-
path
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
`,c=e`
|
|
186
|
-
query TranscendCliDataSilos($filterBy: DataSiloFiltersInput!, $first: Int!, $offset: Int!) {
|
|
187
|
-
dataSilos(
|
|
188
|
-
filterBy: $filterBy
|
|
189
|
-
first: $first
|
|
190
|
-
offset: $offset
|
|
191
|
-
orderBy: [{ field: createdAt, direction: ASC }, { field: title, direction: ASC }]
|
|
192
|
-
useMaster: false
|
|
193
|
-
) {
|
|
194
|
-
nodes {
|
|
195
|
-
id
|
|
196
|
-
title
|
|
197
|
-
link
|
|
198
|
-
type
|
|
199
|
-
catalog {
|
|
200
|
-
hasAvcFunctionality
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
`,l=e`
|
|
206
|
-
query TranscendCliDataSiloExport($filterBy: DataSiloFiltersInput!, $first: Int!) {
|
|
207
|
-
dataSilos(filterBy: $filterBy, first: $first, useMaster: false) {
|
|
208
|
-
nodes {
|
|
209
|
-
id
|
|
210
|
-
title
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
`,u=e`
|
|
215
|
-
query TranscendCliDataSilosEnriched(
|
|
216
|
-
$filterBy: DataSiloFiltersInput!
|
|
217
|
-
$first: Int!
|
|
218
|
-
$offset: Int!
|
|
219
|
-
) {
|
|
220
|
-
dataSilos(
|
|
221
|
-
filterBy: $filterBy
|
|
222
|
-
first: $first
|
|
223
|
-
offset: $offset
|
|
224
|
-
orderBy: [{ field: createdAt, direction: ASC }, { field: title, direction: ASC }]
|
|
225
|
-
useMaster: false
|
|
226
|
-
) {
|
|
227
|
-
nodes {
|
|
228
|
-
id
|
|
229
|
-
title
|
|
230
|
-
description
|
|
231
|
-
type
|
|
232
|
-
outerType
|
|
233
|
-
link
|
|
234
|
-
country
|
|
235
|
-
countrySubDivision
|
|
236
|
-
url
|
|
237
|
-
notifyEmailAddress
|
|
238
|
-
attributeValues {
|
|
239
|
-
attributeKey {
|
|
240
|
-
name
|
|
241
|
-
}
|
|
242
|
-
name
|
|
243
|
-
}
|
|
244
|
-
apiKeys {
|
|
245
|
-
title
|
|
246
|
-
}
|
|
247
|
-
subjectBlocklist {
|
|
248
|
-
type
|
|
249
|
-
}
|
|
250
|
-
identifiers {
|
|
251
|
-
name
|
|
252
|
-
isConnected
|
|
253
|
-
}
|
|
254
|
-
dependentDataSilos {
|
|
255
|
-
title
|
|
256
|
-
}
|
|
257
|
-
owners {
|
|
258
|
-
email
|
|
259
|
-
}
|
|
260
|
-
teams {
|
|
261
|
-
id
|
|
262
|
-
name
|
|
263
|
-
}
|
|
264
|
-
catalog {
|
|
265
|
-
hasAvcFunctionality
|
|
266
|
-
}
|
|
267
|
-
isLive
|
|
268
|
-
promptAVendorEmailSendFrequency
|
|
269
|
-
promptAVendorEmailSendType
|
|
270
|
-
promptAVendorEmailIncludeIdentifiersAttachment
|
|
271
|
-
promptAVendorEmailCompletionLinkType
|
|
272
|
-
manualWorkRetryFrequency
|
|
273
|
-
discoveredBy {
|
|
274
|
-
title
|
|
275
|
-
}
|
|
276
|
-
businessEntities {
|
|
277
|
-
title
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
`,d=e`
|
|
283
|
-
mutation TranscendCliUpdateDataSilo($input: UpdateDataSilosInput!) {
|
|
284
|
-
updateDataSilos(input: $input) {
|
|
285
|
-
clientMutationId
|
|
286
|
-
dataSilos {
|
|
287
|
-
id
|
|
288
|
-
title
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
`,f=e`
|
|
293
|
-
mutation TranscendCliCreateDataSilo($input: [CreateDataSilosInput!]!) {
|
|
294
|
-
createDataSilos(input: $input) {
|
|
295
|
-
dataSilos {
|
|
296
|
-
id
|
|
297
|
-
title
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
`;export{d as a,n as c,a as d,o as f,l as i,r as l,c as n,s as o,u as r,t as s,f as t,i as u};
|
|
302
|
-
//# sourceMappingURL=dataSilo-Dvi8-PkH.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dataSilo-Dvi8-PkH.mjs","names":[],"sources":["../src/lib/graphql/gqls/dataPoint.ts","../src/lib/graphql/gqls/dataSilo.ts"],"sourcesContent":["import { gql } from 'graphql-request';\n\n// TODO: https://transcend.height.app/T-27909 - enable optimizations\n// isExportCsv: true\nexport const DATA_POINTS = gql`\n query TranscendCliDataPoints($filterBy: DataPointFiltersInput, $first: Int!, $offset: Int!) {\n dataPoints(\n filterBy: $filterBy\n first: $first\n offset: $offset\n useMaster: false\n orderBy: [{ field: createdAt, direction: ASC }, { field: name, direction: ASC }]\n ) {\n nodes {\n id\n title {\n defaultMessage\n }\n description {\n defaultMessage\n }\n owners {\n email\n }\n teams {\n name\n }\n name\n path\n actionSettings {\n type\n active\n }\n dataCollection {\n title {\n defaultMessage\n }\n }\n dbIntegrationQueries {\n query\n suggestedQuery\n requestType\n }\n }\n }\n }\n`;\n\n// TODO: https://transcend.height.app/T-27909 - enable optimizations\n// isExportCsv: true\nexport const DATA_POINT_COUNT = gql`\n query TranscendCliDataPointCount($filterBy: DataPointFiltersInput) {\n dataPoints(filterBy: $filterBy, useMaster: false) {\n totalCount\n }\n }\n`;\n\n// TODO: https://transcend.height.app/T-27909 - add orderBy\n// isExportCsv: true\nexport const SUB_DATA_POINTS = gql`\n query TranscendCliSubDataPoints(\n $filterBy: SubDataPointFiltersInput\n $first: Int!\n $offset: Int!\n ) {\n subDataPoints(filterBy: $filterBy, first: $first, offset: $offset, useMaster: false) {\n nodes {\n id\n name\n description\n purposes {\n name\n purpose\n }\n categories {\n name\n category\n }\n accessRequestVisibilityEnabled\n erasureRequestRedactionEnabled\n attributeValues {\n attributeKey {\n name\n }\n name\n }\n }\n }\n }\n`;\n\nexport const SUB_DATA_POINTS_COUNT = gql`\n query TranscendCliSubDataPointsCount($filterBy: SubDataPointFiltersInput) {\n subDataPoints(filterBy: $filterBy, useMaster: false) {\n totalCount\n }\n }\n`;\n\nexport const SUB_DATA_POINTS_WITH_GUESSES = gql`\n query TranscendCliSubDataPointGuesses(\n $filterBy: SubDataPointFiltersInput\n $first: Int!\n $offset: Int!\n ) {\n subDataPoints(filterBy: $filterBy, first: $first, offset: $offset, useMaster: false) {\n nodes {\n id\n name\n description\n purposes {\n name\n purpose\n }\n categories {\n name\n category\n }\n pendingCategoryGuesses {\n category {\n name\n category\n }\n status\n confidence\n classifierVersion\n }\n accessRequestVisibilityEnabled\n erasureRequestRedactionEnabled\n attributeValues {\n attributeKey {\n name\n }\n name\n }\n }\n }\n }\n`;\n\nexport const UPDATE_OR_CREATE_DATA_POINT = gql`\n mutation TranscendCliUpdateOrCreateDataPoint(\n $dataSiloId: ID!\n $name: String!\n $path: [String!]\n $title: String\n $description: String\n $ownerIds: [ID!]\n $ownerEmails: [String!]\n $teamNames: [String!]\n $teamIds: [ID!]\n $dataCollectionTag: String\n $querySuggestions: [DbIntegrationQuerySuggestionInput!]\n $enabledActions: [RequestActionObjectResolver!]\n $subDataPoints: [DataPointSubDataPointInput!]\n ) {\n updateOrCreateDataPoint(\n input: {\n dataSiloId: $dataSiloId\n name: $name\n path: $path\n title: $title\n teamNames: $teamNames\n ownerEmails: $ownerEmails\n dataCollectionTag: $dataCollectionTag\n description: $description\n ownerIds: $ownerIds\n teamIds: $teamIds\n querySuggestions: $querySuggestions\n enabledActions: $enabledActions\n subDataPoints: $subDataPoints\n }\n ) {\n dataPoint {\n id\n name\n }\n }\n }\n`;\n\nexport const DATAPOINT_EXPORT = gql`\n query TranscendCliDataPointCsvExport($filterBy: DataPointFiltersInput, $first: Int!) {\n dataPoints(filterBy: $filterBy, first: $first, useMaster: false) {\n nodes {\n id\n title {\n defaultMessage\n }\n description {\n defaultMessage\n }\n owners {\n email\n }\n teams {\n name\n }\n name\n path\n }\n }\n }\n`;\n","import { gql } from 'graphql-request';\n\n// TODO: https://transcend.height.app/T-27909 - enable optimizations\n// isExportCsv: true\nexport const DATA_SILOS = gql`\n query TranscendCliDataSilos($filterBy: DataSiloFiltersInput!, $first: Int!, $offset: Int!) {\n dataSilos(\n filterBy: $filterBy\n first: $first\n offset: $offset\n orderBy: [{ field: createdAt, direction: ASC }, { field: title, direction: ASC }]\n useMaster: false\n ) {\n nodes {\n id\n title\n link\n type\n catalog {\n hasAvcFunctionality\n }\n }\n }\n }\n`;\n\n// TODO: https://transcend.height.app/T-27909 - enable optimizations\n// isExportCsv: true\nexport const DATA_SILO_EXPORT = gql`\n query TranscendCliDataSiloExport($filterBy: DataSiloFiltersInput!, $first: Int!) {\n dataSilos(filterBy: $filterBy, first: $first, useMaster: false) {\n nodes {\n id\n title\n }\n }\n }\n`;\n\n// TODO: https://transcend.height.app/T-27909 - enable optimizations\n// isExportCsv: true\nexport const DATA_SILOS_ENRICHED = gql`\n query TranscendCliDataSilosEnriched(\n $filterBy: DataSiloFiltersInput!\n $first: Int!\n $offset: Int!\n ) {\n dataSilos(\n filterBy: $filterBy\n first: $first\n offset: $offset\n orderBy: [{ field: createdAt, direction: ASC }, { field: title, direction: ASC }]\n useMaster: false\n ) {\n nodes {\n id\n title\n description\n type\n outerType\n link\n country\n countrySubDivision\n url\n notifyEmailAddress\n attributeValues {\n attributeKey {\n name\n }\n name\n }\n apiKeys {\n title\n }\n subjectBlocklist {\n type\n }\n identifiers {\n name\n isConnected\n }\n dependentDataSilos {\n title\n }\n owners {\n email\n }\n teams {\n id\n name\n }\n catalog {\n hasAvcFunctionality\n }\n isLive\n promptAVendorEmailSendFrequency\n promptAVendorEmailSendType\n promptAVendorEmailIncludeIdentifiersAttachment\n promptAVendorEmailCompletionLinkType\n manualWorkRetryFrequency\n discoveredBy {\n title\n }\n businessEntities {\n title\n }\n }\n }\n }\n`;\n\nexport const UPDATE_DATA_SILOS = gql`\n mutation TranscendCliUpdateDataSilo($input: UpdateDataSilosInput!) {\n updateDataSilos(input: $input) {\n clientMutationId\n dataSilos {\n id\n title\n }\n }\n }\n`;\n\nexport const CREATE_DATA_SILOS = gql`\n mutation TranscendCliCreateDataSilo($input: [CreateDataSilosInput!]!) {\n createDataSilos(input: $input) {\n dataSilos {\n id\n title\n }\n }\n }\n`;\n"],"mappings":"sCAIA,MAAa,EAAc,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8CjB,EAAmB,CAAG;;;;;;EAUtB,EAAkB,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgCrB,EAAwB,CAAG;;;;;;EAQ3B,EAA+B,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyClC,EAA8B,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyCjC,EAAmB,CAAG;;;;;;;;;;;;;;;;;;;;;;EClLtB,EAAa,CAAG;;;;;;;;;;;;;;;;;;;;EAwBhB,EAAmB,CAAG;;;;;;;;;EAatB,EAAsB,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsEzB,EAAoB,CAAG;;;;;;;;;;EAYvB,EAAoB,CAAG"}
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import{gql as e}from"graphql-request";const t=e`
|
|
2
|
-
query TranscendCliEnrichers($title: String, $first: Int!, $offset: Int!) {
|
|
3
|
-
enrichers(
|
|
4
|
-
filterBy: { text: $title }
|
|
5
|
-
first: $first
|
|
6
|
-
offset: $offset
|
|
7
|
-
useMaster: false
|
|
8
|
-
orderBy: [{ field: createdAt, direction: ASC }, { field: title, direction: ASC }]
|
|
9
|
-
) {
|
|
10
|
-
nodes {
|
|
11
|
-
id
|
|
12
|
-
title
|
|
13
|
-
url
|
|
14
|
-
type
|
|
15
|
-
expirationDuration
|
|
16
|
-
lookerQueryTitle
|
|
17
|
-
testRegex
|
|
18
|
-
transitionRequestStatus
|
|
19
|
-
phoneNumbers
|
|
20
|
-
regionList
|
|
21
|
-
inputIdentifier {
|
|
22
|
-
name
|
|
23
|
-
}
|
|
24
|
-
identifiers {
|
|
25
|
-
name
|
|
26
|
-
}
|
|
27
|
-
dataSubjects {
|
|
28
|
-
type
|
|
29
|
-
}
|
|
30
|
-
actions
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
`,n=e`
|
|
35
|
-
query TranscendCliInitializer {
|
|
36
|
-
initializer {
|
|
37
|
-
id
|
|
38
|
-
identifiers {
|
|
39
|
-
name
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
`,r=e`
|
|
44
|
-
mutation TranscendCliCreateEnricher($input: EnricherInput!) {
|
|
45
|
-
createEnricher(input: $input) {
|
|
46
|
-
clientMutationId
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
`,i=e`
|
|
50
|
-
mutation TranscendCliUpdateEnricher($input: UpdateEnricherInput!) {
|
|
51
|
-
updateEnricher(input: $input) {
|
|
52
|
-
clientMutationId
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
`,a=e`
|
|
56
|
-
query TranscendCliDataSubjects {
|
|
57
|
-
internalSubjects {
|
|
58
|
-
id
|
|
59
|
-
title {
|
|
60
|
-
defaultMessage
|
|
61
|
-
}
|
|
62
|
-
active
|
|
63
|
-
type
|
|
64
|
-
adminDashboardDefaultSilentMode
|
|
65
|
-
actions {
|
|
66
|
-
type
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
`,o=e`
|
|
71
|
-
mutation TranscendCliCreateDataSubject($type: String!) {
|
|
72
|
-
createSubject(input: { type: $type, title: $type, subjectClass: OTHER }) {
|
|
73
|
-
subject {
|
|
74
|
-
id
|
|
75
|
-
type
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
`,s=e`
|
|
80
|
-
mutation TranscendCliUpdateDataSubject($input: UpdateSubjectInput!) {
|
|
81
|
-
updateSubject(input: $input) {
|
|
82
|
-
clientMutationId
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
`,c=e`
|
|
86
|
-
mutation TranscendCliToggleDataSubject($input: ToggleSubjectInput!) {
|
|
87
|
-
toggleSubject(input: $input) {
|
|
88
|
-
clientMutationId
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
`;export{r as a,i as c,s as i,a as n,t as o,c as r,n as s,o as t};
|
|
92
|
-
//# sourceMappingURL=dataSubject-CF784Ug0.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dataSubject-CF784Ug0.mjs","names":[],"sources":["../src/lib/graphql/gqls/enricher.ts","../src/lib/graphql/gqls/dataSubject.ts"],"sourcesContent":["import { gql } from 'graphql-request';\n\n// TODO: https://transcend.height.app/T-27909 - enable optimizations\n// isExportCsv: true\nexport const ENRICHERS = gql`\n query TranscendCliEnrichers($title: String, $first: Int!, $offset: Int!) {\n enrichers(\n filterBy: { text: $title }\n first: $first\n offset: $offset\n useMaster: false\n orderBy: [{ field: createdAt, direction: ASC }, { field: title, direction: ASC }]\n ) {\n nodes {\n id\n title\n url\n type\n expirationDuration\n lookerQueryTitle\n testRegex\n transitionRequestStatus\n phoneNumbers\n regionList\n inputIdentifier {\n name\n }\n identifiers {\n name\n }\n dataSubjects {\n type\n }\n actions\n }\n }\n }\n`;\n\nexport interface Initializer {\n /** ID of enricher */\n id: string;\n /** Identifiers */\n identifiers: {\n /** Name of identifier */\n name: string;\n }[];\n}\n\nexport const INITIALIZER = gql`\n query TranscendCliInitializer {\n initializer {\n id\n identifiers {\n name\n }\n }\n }\n`;\n\nexport const CREATE_ENRICHER = gql`\n mutation TranscendCliCreateEnricher($input: EnricherInput!) {\n createEnricher(input: $input) {\n clientMutationId\n }\n }\n`;\n\nexport const UPDATE_ENRICHER = gql`\n mutation TranscendCliUpdateEnricher($input: UpdateEnricherInput!) {\n updateEnricher(input: $input) {\n clientMutationId\n }\n }\n`;\n","import { gql } from 'graphql-request';\n\nexport const DATA_SUBJECTS = gql`\n query TranscendCliDataSubjects {\n internalSubjects {\n id\n title {\n defaultMessage\n }\n active\n type\n adminDashboardDefaultSilentMode\n actions {\n type\n }\n }\n }\n`;\n\nexport const CREATE_DATA_SUBJECT = gql`\n mutation TranscendCliCreateDataSubject($type: String!) {\n createSubject(input: { type: $type, title: $type, subjectClass: OTHER }) {\n subject {\n id\n type\n }\n }\n }\n`;\n\nexport const UPDATE_DATA_SUBJECT = gql`\n mutation TranscendCliUpdateDataSubject($input: UpdateSubjectInput!) {\n updateSubject(input: $input) {\n clientMutationId\n }\n }\n`;\n\nexport const TOGGLE_DATA_SUBJECT = gql`\n mutation TranscendCliToggleDataSubject($input: ToggleSubjectInput!) {\n toggleSubject(input: $input) {\n clientMutationId\n }\n }\n`;\n"],"mappings":"sCAIA,MAAa,EAAY,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6Cf,EAAc,CAAG;;;;;;;;;EAWjB,EAAkB,CAAG;;;;;;EAQrB,EAAkB,CAAG;;;;;;EClErB,EAAgB,CAAG;;;;;;;;;;;;;;;EAiBnB,EAAsB,CAAG;;;;;;;;;EAWzB,EAAsB,CAAG;;;;;;EAQzB,EAAsB,CAAG"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./logger-Bj782ZYD.mjs";import{makeGraphQLRequest as t}from"@transcend-io/sdk";import{gql as n}from"graphql-request";const r=n`
|
|
2
|
-
query TranscendCliRequestEnrichers($first: Int!, $offset: Int!, $requestId: ID!) {
|
|
3
|
-
requestEnrichers(
|
|
4
|
-
input: { requestId: $requestId }
|
|
5
|
-
first: $first
|
|
6
|
-
offset: $offset
|
|
7
|
-
useMaster: false
|
|
8
|
-
orderBy: [
|
|
9
|
-
{ field: createdAt, direction: ASC }
|
|
10
|
-
{ field: title, direction: ASC, model: enricher }
|
|
11
|
-
]
|
|
12
|
-
) {
|
|
13
|
-
nodes {
|
|
14
|
-
id
|
|
15
|
-
status
|
|
16
|
-
enricher {
|
|
17
|
-
id
|
|
18
|
-
type
|
|
19
|
-
title
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
totalCount
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
`,i=n`
|
|
26
|
-
mutation TranscendCliRetryRequestEnricher($requestEnricherId: ID!) {
|
|
27
|
-
retryRequestEnricher(id: $requestEnricherId) {
|
|
28
|
-
requestEnricher {
|
|
29
|
-
id
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
`,a=n`
|
|
34
|
-
mutation TranscendCliSkipRequestEnricher($requestEnricherId: ID!) {
|
|
35
|
-
skipRequestEnricher(id: $requestEnricherId) {
|
|
36
|
-
requestEnricher {
|
|
37
|
-
id
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
`;async function o(n,{requestId:i}){let a=[],o=0,s=!1;do{let{requestEnrichers:{nodes:c}}=await t(n,r,{variables:{first:50,offset:o,requestId:i},logger:e});a.push(...c),o+=50,s=c.length===50}while(s);return a}export{a as i,r as n,i as r,o as t};
|
|
42
|
-
//# sourceMappingURL=fetchAllRequestEnrichers-Bt97Bb7F.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fetchAllRequestEnrichers-Bt97Bb7F.mjs","names":[],"sources":["../src/lib/graphql/gqls/RequestEnricher.ts","../src/lib/graphql/fetchAllRequestEnrichers.ts"],"sourcesContent":["import { gql } from 'graphql-request';\n\n// TODO: https://transcend.height.app/T-27909 - enable optimizations\n// isExportCsv: true\nexport const REQUEST_ENRICHERS = gql`\n query TranscendCliRequestEnrichers($first: Int!, $offset: Int!, $requestId: ID!) {\n requestEnrichers(\n input: { requestId: $requestId }\n first: $first\n offset: $offset\n useMaster: false\n orderBy: [\n { field: createdAt, direction: ASC }\n { field: title, direction: ASC, model: enricher }\n ]\n ) {\n nodes {\n id\n status\n enricher {\n id\n type\n title\n }\n }\n totalCount\n }\n }\n`;\n\nexport const RETRY_REQUEST_ENRICHER = gql`\n mutation TranscendCliRetryRequestEnricher($requestEnricherId: ID!) {\n retryRequestEnricher(id: $requestEnricherId) {\n requestEnricher {\n id\n }\n }\n }\n`;\n\nexport const SKIP_REQUEST_ENRICHER = gql`\n mutation TranscendCliSkipRequestEnricher($requestEnricherId: ID!) {\n skipRequestEnricher(id: $requestEnricherId) {\n requestEnricher {\n id\n }\n }\n }\n`;\n","import { RequestEnricherStatus } from '@transcend-io/privacy-types';\nimport { makeGraphQLRequest } from '@transcend-io/sdk';\nimport { GraphQLClient } from 'graphql-request';\n\nimport { logger } from '../../logger.js';\nimport { REQUEST_ENRICHERS } from './gqls/index.js';\n\nexport interface RequestEnricher {\n /** ID of request enricher */\n id: string;\n /** Name of identifier */\n enricher: {\n /** ID of enricher */\n id: string;\n /** Title of enricher */\n title: string;\n /** Typeof of enricher */\n type: string;\n };\n /** The status of the enricher */\n status: RequestEnricherStatus;\n}\n\nconst PAGE_SIZE = 50;\n\n/**\n * Fetch all request enrichers for a particular request\n *\n * @param client - GraphQL client\n * @param options - Filter options\n * @returns List of request enrichers\n */\nexport async function fetchAllRequestEnrichers(\n client: GraphQLClient,\n {\n requestId,\n }: {\n /** ID of request to filter on */\n requestId: string;\n },\n): Promise<RequestEnricher[]> {\n const requestEnrichers: RequestEnricher[] = [];\n let offset = 0;\n\n // Paginate\n let shouldContinue = false;\n do {\n const {\n requestEnrichers: { nodes },\n } = await makeGraphQLRequest<{\n /** Request Enrichers */\n requestEnrichers: {\n /** List */\n nodes: RequestEnricher[];\n };\n }>(client, REQUEST_ENRICHERS, {\n variables: { first: PAGE_SIZE, offset, requestId },\n logger,\n });\n requestEnrichers.push(...nodes);\n offset += PAGE_SIZE;\n shouldContinue = nodes.length === PAGE_SIZE;\n } while (shouldContinue);\n\n return requestEnrichers;\n}\n"],"mappings":"uIAIA,MAAa,EAAoB,CAAG;;;;;;;;;;;;;;;;;;;;;;;;EA0BvB,EAAyB,CAAG;;;;;;;;EAU5B,EAAwB,CAAG;;;;;;;;ECRxC,eAAsB,EACpB,EACA,CACE,aAK0B,CAC5B,IAAM,EAAsC,EAAE,CAC1C,EAAS,EAGT,EAAiB,GACrB,EAAG,CACD,GAAM,CACJ,iBAAkB,CAAE,UAClB,MAAM,EAMP,EAAQ,EAAmB,CAC5B,UAAW,CAAE,MAAO,GAAW,SAAQ,YAAW,CAClD,SACD,CAAC,CACF,EAAiB,KAAK,GAAG,EAAM,CAC/B,GAAU,GACV,EAAiB,EAAM,SAAW,SAC3B,GAET,OAAO"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./logger-Bj782ZYD.mjs";import{IdentifierType as t}from"@transcend-io/privacy-types";import{decodeCodec as n,valuesOf as r}from"@transcend-io/type-utils";import*as i from"io-ts";import{makeGraphQLRequest as a}from"@transcend-io/sdk";import{gql as o}from"graphql-request";import s from"semver";const c=o`
|
|
2
|
-
query TranscendSombraVersion {
|
|
3
|
-
organization {
|
|
4
|
-
sombra {
|
|
5
|
-
version
|
|
6
|
-
}
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
`,l=`7.180.0`,u=i.type({id:i.string,name:i.string,value:i.string,type:r(t)}),d=i.type({identifiers:i.array(u)});async function f(t){let{organization:{sombra:{version:n}}}=await a(t,c,{logger:e});if(n&&s.lt(n,l))throw Error(`Please upgrade Sombra to ${l} or greater to use this command.`)}async function p(e,t,{requestId:r,skipSombraCheck:i=!1}){let a=[],o=0,s=!1;i||await f(e);do{let e;try{e=await t.post(`v1/request-identifiers`,{json:{first:50,offset:o,requestId:r}}).json()}catch(e){throw Error(`Failed to fetch request identifiers: ${e?.response?.body||e?.message}`)}let{identifiers:i}=n(d,e);a.push(...i),o+=50,s=i.length===50}while(s);return a}export{c as i,p as n,f as r,d as t};
|
|
10
|
-
//# sourceMappingURL=fetchAllRequestIdentifiers-BXx3rSee.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fetchAllRequestIdentifiers-BXx3rSee.mjs","names":[],"sources":["../src/lib/graphql/gqls/sombraVersion.ts","../src/lib/graphql/fetchAllRequestIdentifiers.ts"],"sourcesContent":["import { gql } from 'graphql-request';\n\nexport const SOMBRA_VERSION = gql`\n query TranscendSombraVersion {\n organization {\n sombra {\n version\n }\n }\n }\n`;\n","import { IdentifierType } from '@transcend-io/privacy-types';\nimport { makeGraphQLRequest } from '@transcend-io/sdk';\nimport { decodeCodec, valuesOf } from '@transcend-io/type-utils';\nimport type { Got } from 'got';\nimport { GraphQLClient } from 'graphql-request';\nimport * as t from 'io-ts';\nimport semver from 'semver';\n\nimport { logger } from '../../logger.js';\nimport { SOMBRA_VERSION } from './gqls/index.js';\n\nconst MIN_SOMBRA_VERSION_TO_DECRYPT = '7.180.0';\n\nconst RequestIdentifier = t.type({\n /** ID of request */\n id: t.string,\n /** Name of identifier */\n name: t.string,\n /** The underlying identifier value */\n value: t.string,\n /** Type of identifier */\n type: valuesOf(IdentifierType),\n});\n\n/** Type override */\nexport type RequestIdentifier = t.TypeOf<typeof RequestIdentifier>;\n\nconst PAGE_SIZE = 50;\n\nexport const RequestIdentifiersResponse = t.type({\n identifiers: t.array(RequestIdentifier),\n});\n\n/**\n * Validate that the Sombra version meets the minimum requirement for\n * decrypting request identifiers. Call once before bulk-fetching identifiers\n * to avoid repeating this check on every request.\n *\n * @param client - GraphQL client\n */\nexport async function validateSombraVersion(client: GraphQLClient): Promise<void> {\n const {\n organization: {\n sombra: { version },\n },\n } = await makeGraphQLRequest<{\n /** The organization */\n organization: {\n /** Sombra */\n sombra: {\n /** Version string */\n version: string;\n };\n };\n }>(client, SOMBRA_VERSION, { logger });\n\n if (version && semver.lt(version, MIN_SOMBRA_VERSION_TO_DECRYPT)) {\n throw new Error(\n `Please upgrade Sombra to ${MIN_SOMBRA_VERSION_TO_DECRYPT} or greater to use this command.`,\n );\n }\n}\n\n/**\n * Fetch all request identifiers for a particular request\n *\n * @param client - GraphQL client\n * @param sombra - Sombra client\n * @param options - Options\n * @returns List of request identifiers\n */\nexport async function fetchAllRequestIdentifiers(\n client: GraphQLClient,\n sombra: Got,\n {\n requestId,\n skipSombraCheck = false,\n }: {\n /** ID of request to filter on */\n requestId: string;\n /** Skip the Sombra version check (caller already validated) */\n skipSombraCheck?: boolean;\n },\n): Promise<RequestIdentifier[]> {\n const requestIdentifiers: RequestIdentifier[] = [];\n let offset = 0;\n let shouldContinue = false;\n\n if (!skipSombraCheck) {\n await validateSombraVersion(client);\n }\n\n do {\n let response: unknown;\n try {\n response = await sombra!\n .post<{\n /** Decrypted identifiers */\n identifiers: RequestIdentifier[];\n }>('v1/request-identifiers', {\n json: {\n first: PAGE_SIZE,\n offset,\n requestId,\n },\n })\n .json();\n } catch (err) {\n throw new Error(\n `Failed to fetch request identifiers: ${err?.response?.body || err?.message}`,\n );\n }\n\n const { identifiers: nodes } = decodeCodec(RequestIdentifiersResponse, response);\n\n requestIdentifiers.push(...nodes);\n\n offset += PAGE_SIZE;\n shouldContinue = nodes.length === PAGE_SIZE;\n } while (shouldContinue);\n\n return requestIdentifiers;\n}\n"],"mappings":"uTAEA,MAAa,EAAiB,CAAG;;;;;;;;ECS3B,EAAgC,UAEhC,EAAoB,EAAE,KAAK,CAE/B,GAAI,EAAE,OAEN,KAAM,EAAE,OAER,MAAO,EAAE,OAET,KAAM,EAAS,EAAe,CAC/B,CAAC,CAOW,EAA6B,EAAE,KAAK,CAC/C,YAAa,EAAE,MAAM,EAAkB,CACxC,CAAC,CASF,eAAsB,EAAsB,EAAsC,CAChF,GAAM,CACJ,aAAc,CACZ,OAAQ,CAAE,aAEV,MAAM,EASP,EAAQ,EAAgB,CAAE,SAAQ,CAAC,CAEtC,GAAI,GAAW,EAAO,GAAG,EAAS,EAA8B,CAC9D,MAAU,MACR,4BAA4B,EAA8B,kCAC3D,CAYL,eAAsB,EACpB,EACA,EACA,CACE,YACA,kBAAkB,IAOU,CAC9B,IAAM,EAA0C,EAAE,CAC9C,EAAS,EACT,EAAiB,GAEhB,GACH,MAAM,EAAsB,EAAO,CAGrC,EAAG,CACD,IAAI,EACJ,GAAI,CACF,EAAW,MAAM,EACd,KAGE,yBAA0B,CAC3B,KAAM,CACJ,MAAO,GACP,SACA,YACD,CACF,CAAC,CACD,MAAM,OACF,EAAK,CACZ,MAAU,MACR,wCAAwC,GAAK,UAAU,MAAQ,GAAK,UACrE,CAGH,GAAM,CAAE,YAAa,GAAU,EAAY,EAA4B,EAAS,CAEhF,EAAmB,KAAK,GAAG,EAAM,CAEjC,GAAU,GACV,EAAiB,EAAM,SAAW,SAC3B,GAET,OAAO"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./logger-Bj782ZYD.mjs";import{r as t}from"./RequestDataSilo-Rrc2dL9g.mjs";import{makeGraphQLRequest as n}from"@transcend-io/sdk";async function r(r,{requestId:i,dataSiloId:a,requestStatuses:o,statuses:s}){let{requestDataSilos:{totalCount:c}}=await n(r,t,{variables:{first:1,offset:0,filterBy:{dataSiloId:a,requestId:i,status:s,requestStatus:o}},logger:e});return c}async function i(r,{requestId:i,dataSiloId:a,requestStatuses:o,statuses:s,limit:c,onProgress:l}){let u=[],d=0,f=!1;do{let{requestDataSilos:{nodes:c}}=await n(r,t,{variables:{first:100,offset:d,filterBy:{dataSiloId:a,requestId:i,status:s,requestStatus:o}},logger:e});u.push(...c),d+=100,f=c.length===100,l?.(c.length)}while(f&&(!c||d<c));return u}async function a(e,{requestId:t,dataSiloId:n}){let r=await i(e,{requestId:t,dataSiloId:n});if(r.length!==1)throw Error(`Failed to find RequestDataSilo with requestId:${t},dataSiloId:${n}`);return r[0]}export{i as n,r,a as t};
|
|
2
|
-
//# sourceMappingURL=fetchRequestDataSilo-0UvyeL60.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fetchRequestDataSilo-0UvyeL60.mjs","names":[],"sources":["../src/lib/graphql/fetchRequestDataSilo.ts"],"sourcesContent":["import { RequestAction, RequestDataSiloStatus, RequestStatus } from '@transcend-io/privacy-types';\nimport { makeGraphQLRequest } from '@transcend-io/sdk';\nimport { GraphQLClient } from 'graphql-request';\n\nimport { logger } from '../../logger.js';\nimport { REQUEST_DATA_SILOS } from './gqls/index.js';\n\nexport interface RequestDataSilo {\n /** ID of RequestDataSilo */\n id: string;\n /** Request */\n request: {\n /** Type of request */\n type: RequestAction;\n };\n}\n\nexport interface RequestDataSiloFilters {\n /** ID of request to filter on */\n requestId?: string;\n /** Data silo ID */\n dataSiloId?: string;\n /**\n * The statuses to filter on\n */\n statuses?: RequestDataSiloStatus[];\n /** The request statuses to filter on */\n requestStatuses?: RequestStatus[];\n}\n\n/**\n * Fetch a count of request data silos\n *\n * @param client - GraphQL client\n * @param options - Filter options\n * @returns List of request identifiers\n */\nexport async function fetchRequestDataSilosCount(\n client: GraphQLClient,\n { requestId, dataSiloId, requestStatuses, statuses }: RequestDataSiloFilters,\n): Promise<number> {\n const {\n requestDataSilos: { totalCount },\n } = await makeGraphQLRequest<{\n /** Request Data Silos */\n requestDataSilos: {\n /** List */\n nodes: RequestDataSilo[];\n /** Total count */\n totalCount: number;\n };\n }>(client, REQUEST_DATA_SILOS, {\n variables: {\n first: 1,\n offset: 0,\n filterBy: {\n dataSiloId,\n requestId,\n status: statuses,\n requestStatus: requestStatuses,\n },\n },\n logger,\n });\n\n return totalCount;\n}\n\nconst PAGE_SIZE = 100;\n\n/**\n * Fetch all request data silos by some filter criteria\n *\n * @param client - GraphQL client\n * @param options - Filter options\n * @returns List of request identifiers\n */\nexport async function fetchRequestDataSilos(\n client: GraphQLClient,\n {\n requestId,\n dataSiloId,\n requestStatuses,\n statuses,\n limit,\n onProgress,\n }: {\n /** ID of request to filter on */\n requestId?: string;\n /** Data silo ID */\n dataSiloId?: string;\n /**\n * The statuses to filter on\n */\n statuses?: RequestDataSiloStatus[];\n /** The request statuses to filter on */\n requestStatuses?: RequestStatus[];\n /** Limit on number of requests */\n limit?: number;\n /** Handle progress updates */\n onProgress?: (numUpdated: number) => void;\n },\n): Promise<RequestDataSilo[]> {\n const requestDataSilos: RequestDataSilo[] = [];\n let offset = 0;\n\n // Try to fetch an DataFlow with the same title\n let shouldContinue = false;\n do {\n const {\n requestDataSilos: { nodes },\n } = await makeGraphQLRequest<{\n /** Request Data Silos */\n requestDataSilos: {\n /** List */\n nodes: RequestDataSilo[];\n /** Total count */\n totalCount: number;\n };\n }>(client, REQUEST_DATA_SILOS, {\n variables: {\n first: PAGE_SIZE,\n offset,\n filterBy: {\n dataSiloId,\n requestId,\n status: statuses,\n requestStatus: requestStatuses,\n },\n },\n logger,\n });\n requestDataSilos.push(...nodes);\n\n offset += PAGE_SIZE;\n shouldContinue = nodes.length === PAGE_SIZE;\n onProgress?.(nodes.length);\n } while (shouldContinue && (!limit || offset < limit));\n\n return requestDataSilos;\n}\n\n/**\n * Fetch all request identifiers for a particular request\n *\n * @param client - GraphQL client\n * @param options - Filter options\n * @returns List of request identifiers\n */\nexport async function fetchRequestDataSilo(\n client: GraphQLClient,\n {\n requestId,\n dataSiloId,\n }: {\n /** ID of request to filter on */\n requestId: string;\n /** Data silo ID */\n dataSiloId: string;\n },\n): Promise<RequestDataSilo> {\n const nodes = await fetchRequestDataSilos(client, {\n requestId,\n dataSiloId,\n });\n if (nodes.length !== 1) {\n throw new Error(\n `Failed to find RequestDataSilo with requestId:${requestId},dataSiloId:${dataSiloId}`,\n );\n }\n\n return nodes[0];\n}\n"],"mappings":"oJAqCA,eAAsB,EACpB,EACA,CAAE,YAAW,aAAY,kBAAiB,YACzB,CACjB,GAAM,CACJ,iBAAkB,CAAE,eAClB,MAAM,EAQP,EAAQ,EAAoB,CAC7B,UAAW,CACT,MAAO,EACP,OAAQ,EACR,SAAU,CACR,aACA,YACA,OAAQ,EACR,cAAe,EAChB,CACF,CACD,SACD,CAAC,CAEF,OAAO,EAYT,eAAsB,EACpB,EACA,CACE,YACA,aACA,kBACA,WACA,QACA,cAiB0B,CAC5B,IAAM,EAAsC,EAAE,CAC1C,EAAS,EAGT,EAAiB,GACrB,EAAG,CACD,GAAM,CACJ,iBAAkB,CAAE,UAClB,MAAM,EAQP,EAAQ,EAAoB,CAC7B,UAAW,CACT,MAAO,IACP,SACA,SAAU,CACR,aACA,YACA,OAAQ,EACR,cAAe,EAChB,CACF,CACD,SACD,CAAC,CACF,EAAiB,KAAK,GAAG,EAAM,CAE/B,GAAU,IACV,EAAiB,EAAM,SAAW,IAClC,IAAa,EAAM,OAAO,OACnB,IAAmB,CAAC,GAAS,EAAS,IAE/C,OAAO,EAUT,eAAsB,EACpB,EACA,CACE,YACA,cAOwB,CAC1B,IAAM,EAAQ,MAAM,EAAsB,EAAQ,CAChD,YACA,aACD,CAAC,CACF,GAAI,EAAM,SAAW,EACnB,MAAU,MACR,iDAAiD,EAAU,cAAc,IAC1E,CAGH,OAAO,EAAM"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./logger-Bj782ZYD.mjs";import{makeGraphQLRequest as t}from"@transcend-io/sdk";import{gql as n}from"graphql-request";const r=n`
|
|
2
|
-
query TranscendCliRequestFiles($first: Int!, $offset: Int!, $filterBy: RequestFileFiltersInput!) {
|
|
3
|
-
requestFiles(
|
|
4
|
-
filterBy: $filterBy
|
|
5
|
-
first: $first
|
|
6
|
-
offset: $offset
|
|
7
|
-
orderBy: [{ field: createdAt, direction: ASC }, { field: id, direction: ASC }]
|
|
8
|
-
) {
|
|
9
|
-
nodes {
|
|
10
|
-
remoteId
|
|
11
|
-
fileName
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
`,i=n`
|
|
16
|
-
query TranscendCliBulkRequestFiles(
|
|
17
|
-
$filterBy: BulkRequestFilesFiltersInput!
|
|
18
|
-
$first: Int!
|
|
19
|
-
$after: String
|
|
20
|
-
) {
|
|
21
|
-
bulkRequestFiles(filterBy: $filterBy, first: $first, after: $after) {
|
|
22
|
-
nodes {
|
|
23
|
-
remoteId
|
|
24
|
-
fileName
|
|
25
|
-
}
|
|
26
|
-
pageInfo {
|
|
27
|
-
hasNextPage
|
|
28
|
-
endCursor
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
`;async function a(n,r,a){let o=[],s=null,c=!1;do{let{bulkRequestFiles:{nodes:l,pageInfo:u}}=await t(n,i,{variables:{filterBy:{...a},first:r,after:s??void 0},logger:e});o.push(...l),c=u.hasNextPage,s=u.endCursor}while(c);return o.sort((e,t)=>e.remoteId.localeCompare(t.remoteId))}export{i as n,r,a as t};
|
|
33
|
-
//# sourceMappingURL=fetchRequestFilesForRequest-CJH2iB-P.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fetchRequestFilesForRequest-CJH2iB-P.mjs","names":[],"sources":["../src/lib/graphql/gqls/requestFile.ts","../src/lib/graphql/fetchRequestFilesForRequest.ts"],"sourcesContent":["import { gql } from 'graphql-request';\n\n// TODO: https://transcend.height.app/T-27909 - enable optimizations\n// isExportCsv: true\n// useMaster: false\nexport const REQUEST_FILES = gql`\n query TranscendCliRequestFiles($first: Int!, $offset: Int!, $filterBy: RequestFileFiltersInput!) {\n requestFiles(\n filterBy: $filterBy\n first: $first\n offset: $offset\n orderBy: [{ field: createdAt, direction: ASC }, { field: id, direction: ASC }]\n ) {\n nodes {\n remoteId\n fileName\n }\n }\n }\n`;\n\nexport const BULK_REQUEST_FILES = gql`\n query TranscendCliBulkRequestFiles(\n $filterBy: BulkRequestFilesFiltersInput!\n $first: Int!\n $after: String\n ) {\n bulkRequestFiles(filterBy: $filterBy, first: $first, after: $after) {\n nodes {\n remoteId\n fileName\n }\n pageInfo {\n hasNextPage\n endCursor\n }\n }\n }\n`;\n","import { makeGraphQLRequest } from '@transcend-io/sdk';\nimport { GraphQLClient } from 'graphql-request';\n\nimport { logger } from '../../logger.js';\nimport { BULK_REQUEST_FILES } from './gqls/index.js';\n\nexport interface RequestFileCursor {\n /** The ID of the request file */\n id: string;\n /** The created at timestamp */\n createdAt: string;\n}\n\nexport interface RequestFile {\n /** The remote ID */\n remoteId: string;\n /** The file name */\n fileName: string;\n}\n\nexport interface RequestFileResponse {\n /** RequestFiles */\n bulkRequestFiles: {\n /** List */\n nodes: RequestFile[];\n /** The page info */\n pageInfo: {\n /** Whether there is a next page */\n hasNextPage: boolean;\n /** The end cursor */\n endCursor: string;\n };\n };\n}\n\n/**\n * Fetch all RequestFiles for a single request\n *\n * @param client - GraphQL client\n * @param pageSize - How many request files to fetch per API call\n * @param filterBy - Filter by\n * @returns All RequestFiles in the organization\n */\nexport async function fetchRequestFilesForRequest(\n client: GraphQLClient,\n /** How many request files to fetch per API call */\n pageSize: number,\n filterBy: {\n /** Filter by request IDs */\n requestIds: string[];\n /** Filter by data silo ID */\n dataSiloIds: string[];\n },\n): Promise<RequestFile[]> {\n const requestFiles: RequestFile[] = [];\n let cursor: string | null = null;\n\n // Whether to continue looping\n let shouldContinue = false;\n do {\n const response: RequestFileResponse = await makeGraphQLRequest<RequestFileResponse>(\n client,\n BULK_REQUEST_FILES,\n {\n variables: {\n filterBy: {\n ...filterBy,\n },\n first: pageSize,\n after: cursor ?? undefined,\n },\n logger,\n },\n );\n const {\n bulkRequestFiles: { nodes, pageInfo },\n } = response;\n requestFiles.push(...nodes);\n shouldContinue = pageInfo.hasNextPage;\n cursor = pageInfo.endCursor;\n } while (shouldContinue);\n\n return requestFiles.sort((a, b) => a.remoteId.localeCompare(b.remoteId));\n}\n"],"mappings":"uIAKA,MAAa,EAAgB,CAAG;;;;;;;;;;;;;;EAgBnB,EAAqB,CAAG;;;;;;;;;;;;;;;;;ECsBrC,eAAsB,EACpB,EAEA,EACA,EAMwB,CACxB,IAAM,EAA8B,EAAE,CAClC,EAAwB,KAGxB,EAAiB,GACrB,EAAG,CAeD,GAAM,CACJ,iBAAkB,CAAE,QAAO,aAfS,MAAM,EAC1C,EACA,EACA,CACE,UAAW,CACT,SAAU,CACR,GAAG,EACJ,CACD,MAAO,EACP,MAAO,GAAU,IAAA,GAClB,CACD,SACD,CACF,CAID,EAAa,KAAK,GAAG,EAAM,CAC3B,EAAiB,EAAS,YAC1B,EAAS,EAAS,gBACX,GAET,OAAO,EAAa,MAAM,EAAG,IAAM,EAAE,SAAS,cAAc,EAAE,SAAS,CAAC"}
|