@transcend-io/cli 10.16.0 → 10.17.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/README.md +20 -9
- package/dist/{app-COX_n1FP.mjs → app-BksK9SPh.mjs} +18 -18
- package/dist/{app-COX_n1FP.mjs.map → app-BksK9SPh.mjs.map} +1 -1
- package/dist/{approvePrivacyRequests-DJItn7R6.mjs → approvePrivacyRequests-CLi5rXP3.mjs} +2 -2
- package/dist/{approvePrivacyRequests-DJItn7R6.mjs.map → approvePrivacyRequests-CLi5rXP3.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/{buildExamples-CZ8kcEqO.mjs → buildExamples-BrLuHDdW.mjs} +2 -2
- package/dist/{buildExamples-CZ8kcEqO.mjs.map → buildExamples-BrLuHDdW.mjs.map} +1 -1
- package/dist/{buildXdiSyncEndpoint-CSGwr2H5.mjs → buildXdiSyncEndpoint-Bxi-Dlsu.mjs} +2 -2
- package/dist/{buildXdiSyncEndpoint-CSGwr2H5.mjs.map → buildXdiSyncEndpoint-Bxi-Dlsu.mjs.map} +1 -1
- package/dist/{bulkRestartRequests-D-t58SeM.mjs → bulkRestartRequests-NrX4ED7j.mjs} +2 -2
- package/dist/{bulkRestartRequests-D-t58SeM.mjs.map → bulkRestartRequests-NrX4ED7j.mjs.map} +1 -1
- package/dist/{bulkRetryEnrichers-BmwRLF2w.mjs → bulkRetryEnrichers-BYVCTi_Q.mjs} +2 -2
- package/dist/{bulkRetryEnrichers-BmwRLF2w.mjs.map → bulkRetryEnrichers-BYVCTi_Q.mjs.map} +1 -1
- package/dist/{cancelPrivacyRequests-CFCULeSv.mjs → cancelPrivacyRequests-BxwCIpUR.mjs} +2 -2
- package/dist/{cancelPrivacyRequests-CFCULeSv.mjs.map → cancelPrivacyRequests-BxwCIpUR.mjs.map} +1 -1
- package/dist/codecs-CwRYEdQK.mjs +2 -0
- package/dist/{codecs-DW8SY77H.mjs.map → codecs-CwRYEdQK.mjs.map} +1 -1
- package/dist/{command-8AnltUOG.mjs → command-BFlaWkwf.mjs} +2 -2
- package/dist/{command-8AnltUOG.mjs.map → command-BFlaWkwf.mjs.map} +1 -1
- package/dist/constants-BX7PrKxC.mjs +2 -0
- package/dist/constants-BX7PrKxC.mjs.map +1 -0
- package/dist/{createExtraKeyHandler-DqiD609a.mjs → createExtraKeyHandler-1HjUyY-D.mjs} +2 -2
- package/dist/{createExtraKeyHandler-DqiD609a.mjs.map → createExtraKeyHandler-1HjUyY-D.mjs.map} +1 -1
- package/dist/{downloadPrivacyRequestFiles-B7HNc-Y1.mjs → downloadPrivacyRequestFiles-CnwWfn0A.mjs} +2 -2
- package/dist/{downloadPrivacyRequestFiles-B7HNc-Y1.mjs.map → downloadPrivacyRequestFiles-CnwWfn0A.mjs.map} +1 -1
- package/dist/{enums-CyFTrzXY.mjs → enums-mAXnon_I.mjs} +2 -2
- package/dist/enums-mAXnon_I.mjs.map +1 -0
- package/dist/{generateCrossAccountApiKeys-kqzneWII.mjs → generateCrossAccountApiKeys-BZiBRDZL.mjs} +2 -2
- package/dist/{generateCrossAccountApiKeys-kqzneWII.mjs.map → generateCrossAccountApiKeys-BZiBRDZL.mjs.map} +1 -1
- package/dist/{impl-BVcXWJyI2.mjs → impl-0OHjJHDD2.mjs} +2 -2
- package/dist/{impl-BVcXWJyI2.mjs.map → impl-0OHjJHDD2.mjs.map} +1 -1
- package/dist/{impl-Bvkhu8fB.mjs → impl-B-9HvUMl.mjs} +2 -2
- package/dist/{impl-Bvkhu8fB.mjs.map → impl-B-9HvUMl.mjs.map} +1 -1
- package/dist/{impl-BDc4D9nA.mjs → impl-B0CVYN6x.mjs} +2 -2
- package/dist/{impl-BDc4D9nA.mjs.map → impl-B0CVYN6x.mjs.map} +1 -1
- package/dist/{impl-CX1J2iHE.mjs → impl-B4weFiPq.mjs} +2 -2
- package/dist/{impl-CX1J2iHE.mjs.map → impl-B4weFiPq.mjs.map} +1 -1
- package/dist/{impl-CRSNjo07.mjs → impl-B7HFZI-o.mjs} +2 -2
- package/dist/{impl-CRSNjo07.mjs.map → impl-B7HFZI-o.mjs.map} +1 -1
- package/dist/impl-B9rlOyl5.mjs +2 -0
- package/dist/impl-B9rlOyl5.mjs.map +1 -0
- package/dist/{impl-BbfuEhKu.mjs → impl-BATZJZAu.mjs} +2 -2
- package/dist/{impl-BbfuEhKu.mjs.map → impl-BATZJZAu.mjs.map} +1 -1
- package/dist/{impl-6rvA_yyd.mjs → impl-BCsrAqZI.mjs} +2 -2
- package/dist/{impl-6rvA_yyd.mjs.map → impl-BCsrAqZI.mjs.map} +1 -1
- package/dist/{impl-Bul8gUqq.mjs → impl-BIDhVXeB.mjs} +2 -2
- package/dist/{impl-Bul8gUqq.mjs.map → impl-BIDhVXeB.mjs.map} +1 -1
- package/dist/{impl-DTDnN3Hn.mjs → impl-BeIevZ_X.mjs} +2 -2
- package/dist/{impl-DTDnN3Hn.mjs.map → impl-BeIevZ_X.mjs.map} +1 -1
- package/dist/{impl-0C9N9md8.mjs → impl-BimGJAmf.mjs} +2 -2
- package/dist/{impl-0C9N9md8.mjs.map → impl-BimGJAmf.mjs.map} +1 -1
- package/dist/{impl-C_K23xoc.mjs → impl-Bjr5Uf1c.mjs} +2 -2
- package/dist/{impl-C_K23xoc.mjs.map → impl-Bjr5Uf1c.mjs.map} +1 -1
- package/dist/{impl-DK2Rai3F.mjs → impl-BtgbwWAB.mjs} +2 -2
- package/dist/{impl-DK2Rai3F.mjs.map → impl-BtgbwWAB.mjs.map} +1 -1
- package/dist/{impl-DYsJKLfp.mjs → impl-BvU-r-wF.mjs} +2 -2
- package/dist/{impl-DYsJKLfp.mjs.map → impl-BvU-r-wF.mjs.map} +1 -1
- package/dist/{impl-B9AtL5ta2.mjs → impl-Bw3__zkc2.mjs} +2 -2
- package/dist/{impl-B9AtL5ta2.mjs.map → impl-Bw3__zkc2.mjs.map} +1 -1
- package/dist/{impl-CCSb7Pyd.mjs → impl-C6wqboV2.mjs} +2 -2
- package/dist/{impl-CCSb7Pyd.mjs.map → impl-C6wqboV2.mjs.map} +1 -1
- package/dist/{impl-RqwgNa2O.mjs → impl-CBFgXSWV.mjs} +2 -2
- package/dist/{impl-RqwgNa2O.mjs.map → impl-CBFgXSWV.mjs.map} +1 -1
- package/dist/{impl-C0I8JaaR.mjs → impl-CCP1-ZeX.mjs} +2 -2
- package/dist/{impl-C0I8JaaR.mjs.map → impl-CCP1-ZeX.mjs.map} +1 -1
- package/dist/{impl-DQH1CGup.mjs → impl-CNKjJBfX.mjs} +2 -2
- package/dist/{impl-DQH1CGup.mjs.map → impl-CNKjJBfX.mjs.map} +1 -1
- package/dist/{impl-Bkdu-3yo.mjs → impl-CPkl4IRz.mjs} +2 -2
- package/dist/{impl-Bkdu-3yo.mjs.map → impl-CPkl4IRz.mjs.map} +1 -1
- package/dist/{impl-DMbgck0i.mjs → impl-CUbaczq8.mjs} +2 -2
- package/dist/{impl-DMbgck0i.mjs.map → impl-CUbaczq8.mjs.map} +1 -1
- package/dist/{impl-BOXnkx44.mjs → impl-CgDCcV00.mjs} +2 -2
- package/dist/{impl-BOXnkx44.mjs.map → impl-CgDCcV00.mjs.map} +1 -1
- package/dist/{impl-DiysQB762.mjs → impl-CsSRW8xl2.mjs} +2 -2
- package/dist/{impl-DiysQB762.mjs.map → impl-CsSRW8xl2.mjs.map} +1 -1
- package/dist/{impl-BvOLkTWD.mjs → impl-CuxbHVUs.mjs} +2 -2
- package/dist/{impl-BvOLkTWD.mjs.map → impl-CuxbHVUs.mjs.map} +1 -1
- package/dist/{impl-Bq-tabdZ2.mjs → impl-Cz-cy5Q92.mjs} +2 -2
- package/dist/{impl-Bq-tabdZ2.mjs.map → impl-Cz-cy5Q92.mjs.map} +1 -1
- package/dist/{impl-CkFqqhQ-.mjs → impl-D7GBtInJ.mjs} +2 -2
- package/dist/{impl-CkFqqhQ-.mjs.map → impl-D7GBtInJ.mjs.map} +1 -1
- package/dist/{impl-BUF6G3P32.mjs → impl-DDrubha_2.mjs} +2 -2
- package/dist/{impl-BUF6G3P32.mjs.map → impl-DDrubha_2.mjs.map} +1 -1
- package/dist/{impl-Dl-XNXfK.mjs → impl-DGBJkbeS.mjs} +2 -2
- package/dist/{impl-Dl-XNXfK.mjs.map → impl-DGBJkbeS.mjs.map} +1 -1
- package/dist/{impl-CsHfqKxU.mjs → impl-DOGMbdAR.mjs} +2 -2
- package/dist/{impl-CsHfqKxU.mjs.map → impl-DOGMbdAR.mjs.map} +1 -1
- package/dist/{impl-ChDwTQ3Z2.mjs → impl-DPCAbsLy2.mjs} +2 -2
- package/dist/{impl-ChDwTQ3Z2.mjs.map → impl-DPCAbsLy2.mjs.map} +1 -1
- package/dist/{impl-TTeKThep2.mjs → impl-DZnctw762.mjs} +2 -2
- package/dist/{impl-TTeKThep2.mjs.map → impl-DZnctw762.mjs.map} +1 -1
- package/dist/{impl-BcIZos3y.mjs → impl-DcQfhjZL.mjs} +2 -2
- package/dist/{impl-BcIZos3y.mjs.map → impl-DcQfhjZL.mjs.map} +1 -1
- package/dist/{impl-CeqMxdZm2.mjs → impl-Dj5dWvYr2.mjs} +2 -2
- package/dist/{impl-CeqMxdZm2.mjs.map → impl-Dj5dWvYr2.mjs.map} +1 -1
- package/dist/{impl-X13pzYJN2.mjs → impl-DwOllcc22.mjs} +2 -2
- package/dist/{impl-X13pzYJN2.mjs.map → impl-DwOllcc22.mjs.map} +1 -1
- package/dist/{impl-BuqBEZCk.mjs → impl-ELz2nyJq.mjs} +2 -2
- package/dist/{impl-BuqBEZCk.mjs.map → impl-ELz2nyJq.mjs.map} +1 -1
- package/dist/{impl-CLrF-Xhp2.mjs → impl-kU6M_9xS2.mjs} +2 -2
- package/dist/{impl-CLrF-Xhp2.mjs.map → impl-kU6M_9xS2.mjs.map} +1 -1
- package/dist/{impl-DqyYxDti.mjs → impl-taJyQmlW.mjs} +2 -2
- package/dist/{impl-DqyYxDti.mjs.map → impl-taJyQmlW.mjs.map} +1 -1
- package/dist/{impl-CDNTdi62.mjs → impl-z2bzz69O.mjs} +2 -2
- package/dist/{impl-CDNTdi62.mjs.map → impl-z2bzz69O.mjs.map} +1 -1
- package/dist/{impl-CkU-WD3b.mjs → impl-zXXUv3a4.mjs} +2 -2
- package/dist/{impl-CkU-WD3b.mjs.map → impl-zXXUv3a4.mjs.map} +1 -1
- package/dist/index.d.mts +29 -10
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/{markRequestDataSiloIdsCompleted-nAV0VLEA.mjs → markRequestDataSiloIdsCompleted-DDNYecva.mjs} +2 -2
- package/dist/{markRequestDataSiloIdsCompleted-nAV0VLEA.mjs.map → markRequestDataSiloIdsCompleted-DDNYecva.mjs.map} +1 -1
- package/dist/{markSilentPrivacyRequests-BhF4r8n9.mjs → markSilentPrivacyRequests-DDDJEoJe.mjs} +2 -2
- package/dist/{markSilentPrivacyRequests-BhF4r8n9.mjs.map → markSilentPrivacyRequests-DDDJEoJe.mjs.map} +1 -1
- package/dist/{notifyPrivacyRequestsAdditionalTime-B6e9SfP7.mjs → notifyPrivacyRequestsAdditionalTime-NGNzjpY9.mjs} +2 -2
- package/dist/{notifyPrivacyRequestsAdditionalTime-B6e9SfP7.mjs.map → notifyPrivacyRequestsAdditionalTime-NGNzjpY9.mjs.map} +1 -1
- package/dist/parseVariablesFromString-CrzXJu3n.mjs +3 -0
- package/dist/parseVariablesFromString-CrzXJu3n.mjs.map +1 -0
- package/dist/{pullChunkedCustomSiloOutstandingIdentifiers-DiZTo2K_.mjs → pullChunkedCustomSiloOutstandingIdentifiers-NtMi2t5b.mjs} +2 -2
- package/dist/{pullChunkedCustomSiloOutstandingIdentifiers-DiZTo2K_.mjs.map → pullChunkedCustomSiloOutstandingIdentifiers-NtMi2t5b.mjs.map} +1 -1
- package/dist/{pullManualEnrichmentIdentifiersToCsv--dw03arC.mjs → pullManualEnrichmentIdentifiersToCsv-Bl0qvlM2.mjs} +2 -2
- package/dist/{pullManualEnrichmentIdentifiersToCsv--dw03arC.mjs.map → pullManualEnrichmentIdentifiersToCsv-Bl0qvlM2.mjs.map} +1 -1
- package/dist/pullTranscendConfiguration-CZD-sx8L.mjs +58 -0
- package/dist/pullTranscendConfiguration-CZD-sx8L.mjs.map +1 -0
- package/dist/{pushCronIdentifiersFromCsv-DdcsnXf5.mjs → pushCronIdentifiersFromCsv-CRZnkyWD.mjs} +2 -2
- package/dist/{pushCronIdentifiersFromCsv-DdcsnXf5.mjs.map → pushCronIdentifiersFromCsv-CRZnkyWD.mjs.map} +1 -1
- package/dist/{pushManualEnrichmentIdentifiersFromCsv-BYJCQOI-.mjs → pushManualEnrichmentIdentifiersFromCsv-DSFn8TeU.mjs} +2 -2
- package/dist/{pushManualEnrichmentIdentifiersFromCsv-BYJCQOI-.mjs.map → pushManualEnrichmentIdentifiersFromCsv-DSFn8TeU.mjs.map} +1 -1
- package/dist/{readTranscendYaml-I64TqeSd.mjs → readTranscendYaml-B2Asm9c5.mjs} +2 -2
- package/dist/{readTranscendYaml-I64TqeSd.mjs.map → readTranscendYaml-B2Asm9c5.mjs.map} +1 -1
- package/dist/{removeUnverifiedRequestIdentifiers-CC471vSR.mjs → removeUnverifiedRequestIdentifiers-DCeBwyyi.mjs} +2 -2
- package/dist/{removeUnverifiedRequestIdentifiers-CC471vSR.mjs.map → removeUnverifiedRequestIdentifiers-DCeBwyyi.mjs.map} +1 -1
- package/dist/{retryRequestDataSilos-DlkJmEjH.mjs → retryRequestDataSilos-BjXaDGk3.mjs} +2 -2
- package/dist/{retryRequestDataSilos-DlkJmEjH.mjs.map → retryRequestDataSilos-BjXaDGk3.mjs.map} +1 -1
- package/dist/{skipPreflightJobs-xVBZC-iI.mjs → skipPreflightJobs-DBYfdstu.mjs} +2 -2
- package/dist/{skipPreflightJobs-xVBZC-iI.mjs.map → skipPreflightJobs-DBYfdstu.mjs.map} +1 -1
- package/dist/{skipRequestDataSilos-BriqhLT3.mjs → skipRequestDataSilos-G2Ox2c6q.mjs} +2 -2
- package/dist/{skipRequestDataSilos-BriqhLT3.mjs.map → skipRequestDataSilos-G2Ox2c6q.mjs.map} +1 -1
- package/dist/{streamPrivacyRequestsToCsv-D8b097c1.mjs → streamPrivacyRequestsToCsv-vB1a_Xmx.mjs} +2 -2
- package/dist/{streamPrivacyRequestsToCsv-D8b097c1.mjs.map → streamPrivacyRequestsToCsv-vB1a_Xmx.mjs.map} +1 -1
- package/dist/{updateConsentManagerVersionToLatest-w_ftOmxi.mjs → updateConsentManagerVersionToLatest-g5a3brwY.mjs} +2 -2
- package/dist/{updateConsentManagerVersionToLatest-w_ftOmxi.mjs.map → updateConsentManagerVersionToLatest-g5a3brwY.mjs.map} +1 -1
- package/dist/{uploadConsents-D8IJDaTN.mjs → uploadConsents-aYnPgzBZ.mjs} +2 -2
- package/dist/{uploadConsents-D8IJDaTN.mjs.map → uploadConsents-aYnPgzBZ.mjs.map} +1 -1
- package/dist/{uploadCookiesFromCsv-8hq-Of_p.mjs → uploadCookiesFromCsv-DkgIHEdl.mjs} +2 -2
- package/dist/{uploadCookiesFromCsv-8hq-Of_p.mjs.map → uploadCookiesFromCsv-DkgIHEdl.mjs.map} +1 -1
- package/dist/{uploadDataFlowsFromCsv-B854o0O5.mjs → uploadDataFlowsFromCsv-D1zxhWRt.mjs} +2 -2
- package/dist/{uploadDataFlowsFromCsv-B854o0O5.mjs.map → uploadDataFlowsFromCsv-D1zxhWRt.mjs.map} +1 -1
- package/dist/{uploadPrivacyRequestsFromCsv-D-RTgJsx.mjs → uploadPrivacyRequestsFromCsv-B8lK4TL2.mjs} +2 -2
- package/dist/{uploadPrivacyRequestsFromCsv-D-RTgJsx.mjs.map → uploadPrivacyRequestsFromCsv-B8lK4TL2.mjs.map} +1 -1
- package/dist/{validateTranscendAuth-CToEUu1U.mjs → validateTranscendAuth-DrVM-Bxh.mjs} +2 -2
- package/dist/{validateTranscendAuth-CToEUu1U.mjs.map → validateTranscendAuth-DrVM-Bxh.mjs.map} +1 -1
- package/package.json +3 -3
- package/dist/codecs-DW8SY77H.mjs +0 -2
- package/dist/constants-B7bW_WN2.mjs +0 -2
- package/dist/constants-B7bW_WN2.mjs.map +0 -1
- package/dist/enums-CyFTrzXY.mjs.map +0 -1
- package/dist/impl-e-_DWiv4.mjs +0 -2
- package/dist/impl-e-_DWiv4.mjs.map +0 -1
- package/dist/parseVariablesFromString-Cpjk0zeN.mjs +0 -3
- package/dist/parseVariablesFromString-Cpjk0zeN.mjs.map +0 -1
- package/dist/pullTranscendConfiguration-CICvJuZ5.mjs +0 -58
- package/dist/pullTranscendConfiguration-CICvJuZ5.mjs.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{t as e}from"./logger-D1tXVwJj.mjs";import{t}from"./pullChunkedCustomSiloOutstandingIdentifiers-
|
|
2
|
-
//# sourceMappingURL=impl-
|
|
1
|
+
import{t as e}from"./logger-D1tXVwJj.mjs";import{t}from"./pullChunkedCustomSiloOutstandingIdentifiers-NtMi2t5b.mjs";import{i as n,s as r}from"./writeCsv-Dg4Wuj5V.mjs";import{t as i}from"./done-input-validation-D25TzrxG.mjs";import{uniq as a}from"lodash-es";import o from"colors";async function s({file:s,transcendUrl:c,auth:l,sombraAuth:u,dataSiloId:d,actions:f,pageLimit:p,skipRequestCount:m,chunkSize:h}){m&&e.info(o.yellow(`Skipping request count as requested. This may help speed up the call.`)),(Number.isNaN(h)||h<=0||h%p!==0)&&(e.error(o.red(`Invalid chunk size: "${h}". Must be a positive integer that is a multiple of ${p}.`)),this.process.exit(1)),i(this.process.exit);let{baseName:g,extension:_}=n(s),v=0;await t({transcendUrl:c,apiPageSize:p,savePageSize:h,onSave:async t=>{let n=`${g}-${v}${_}`;return e.info(o.blue(`Saving ${t.length} identifiers to file "${n}"`)),await r(n,t,a(t.map(e=>Object.keys(e)).flat())),e.info(o.green(`Successfully wrote ${t.length} identifiers to file "${n}"`)),v+=1,Promise.resolve()},actions:f,auth:l,sombraAuth:u,dataSiloId:d,skipRequestCount:m})}export{s as pullIdentifiers};
|
|
2
|
+
//# sourceMappingURL=impl-DcQfhjZL.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"impl-
|
|
1
|
+
{"version":3,"file":"impl-DcQfhjZL.mjs","names":[],"sources":["../src/commands/request/cron/pull-identifiers/impl.ts"],"sourcesContent":["import { RequestAction } from '@transcend-io/privacy-types';\nimport colors from 'colors';\nimport { uniq } from 'lodash-es';\n\nimport type { LocalContext } from '../../../../context.js';\nimport { doneInputValidation } from '../../../../lib/cli/done-input-validation.js';\nimport {\n CsvFormattedIdentifier,\n pullChunkedCustomSiloOutstandingIdentifiers,\n} from '../../../../lib/cron/index.js';\nimport { parseFilePath, writeLargeCsv } from '../../../../lib/helpers/index.js';\nimport { logger } from '../../../../logger.js';\n\nexport interface PullIdentifiersCommandFlags {\n file: string;\n transcendUrl: string;\n auth: string;\n sombraAuth?: string;\n dataSiloId: string;\n actions: RequestAction[];\n pageLimit: number;\n skipRequestCount: boolean;\n chunkSize: number;\n}\n\nexport async function pullIdentifiers(\n this: LocalContext,\n {\n file,\n transcendUrl,\n auth,\n sombraAuth,\n dataSiloId,\n actions,\n pageLimit,\n skipRequestCount,\n chunkSize,\n }: PullIdentifiersCommandFlags,\n): Promise<void> {\n if (skipRequestCount) {\n logger.info(\n colors.yellow('Skipping request count as requested. This may help speed up the call.'),\n );\n }\n\n if (Number.isNaN(chunkSize) || chunkSize <= 0 || chunkSize % pageLimit !== 0) {\n logger.error(\n colors.red(\n `Invalid chunk size: \"${chunkSize}\". Must be a positive integer that is a multiple of ${pageLimit}.`,\n ),\n );\n this.process.exit(1);\n }\n\n doneInputValidation(this.process.exit);\n\n const { baseName, extension } = parseFilePath(file);\n let fileCount = 0;\n\n const onSave = async (chunk: CsvFormattedIdentifier[]): Promise<void> => {\n const numberedFileName = `${baseName}-${fileCount}${extension}`;\n logger.info(colors.blue(`Saving ${chunk.length} identifiers to file \"${numberedFileName}\"`));\n\n const headers = uniq(chunk.map((d) => Object.keys(d)).flat());\n await writeLargeCsv(numberedFileName, chunk, headers);\n logger.info(\n colors.green(`Successfully wrote ${chunk.length} identifiers to file \"${numberedFileName}\"`),\n );\n fileCount += 1;\n return Promise.resolve();\n };\n\n // Pull down outstanding identifiers\n await pullChunkedCustomSiloOutstandingIdentifiers({\n transcendUrl,\n apiPageSize: pageLimit,\n savePageSize: chunkSize,\n onSave,\n actions,\n auth,\n sombraAuth,\n dataSiloId,\n skipRequestCount,\n });\n}\n"],"mappings":"uRAyBA,eAAsB,EAEpB,CACE,OACA,eACA,OACA,aACA,aACA,UACA,YACA,mBACA,aAEa,CACX,GACF,EAAO,KACL,EAAO,OAAO,wEAAwE,CACvF,EAGC,OAAO,MAAM,EAAU,EAAI,GAAa,GAAK,EAAY,IAAc,KACzE,EAAO,MACL,EAAO,IACL,wBAAwB,EAAU,sDAAsD,EAAU,GACnG,CACF,CACD,KAAK,QAAQ,KAAK,EAAE,EAGtB,EAAoB,KAAK,QAAQ,KAAK,CAEtC,GAAM,CAAE,WAAU,aAAc,EAAc,EAAK,CAC/C,EAAY,EAgBhB,MAAM,EAA4C,CAChD,eACA,YAAa,EACb,aAAc,EACd,YAlBoB,IAAmD,CACvE,IAAM,EAAmB,GAAG,EAAS,GAAG,IAAY,IASpD,OARA,EAAO,KAAK,EAAO,KAAK,UAAU,EAAM,OAAO,wBAAwB,EAAiB,GAAG,CAAC,CAG5F,MAAM,EAAc,EAAkB,EADtB,EAAK,EAAM,IAAK,GAAM,OAAO,KAAK,EAAE,CAAC,CAAC,MAAM,CACR,CAAC,CACrD,EAAO,KACL,EAAO,MAAM,sBAAsB,EAAM,OAAO,wBAAwB,EAAiB,GAAG,CAC7F,CACD,GAAa,EACN,QAAQ,SAAS,EASxB,UACA,OACA,aACA,aACA,mBACD,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{t as e}from"./bulkRetryEnrichers-
|
|
2
|
-
//# sourceMappingURL=impl-
|
|
1
|
+
import{t as e}from"./bulkRetryEnrichers-BYVCTi_Q.mjs";import{t}from"./done-input-validation-D25TzrxG.mjs";async function n({auth:n,enricherId:r,actions:i,requestEnricherStatuses:a,requestIds:o,createdAtBefore:s,createdAtAfter:c,updatedAtBefore:l,updatedAtAfter:u,concurrency:d,transcendUrl:f}){t(this.process.exit),await e({auth:n,enricherId:r,requestActions:i,requestEnricherStatuses:a,requestIds:o,createdAtBefore:s?new Date(s):void 0,createdAtAfter:c?new Date(c):void 0,updatedAtBefore:l?new Date(l):void 0,updatedAtAfter:u?new Date(u):void 0,concurrency:d,transcendUrl:f})}export{n as enricherRestart};
|
|
2
|
+
//# sourceMappingURL=impl-Dj5dWvYr2.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"impl-
|
|
1
|
+
{"version":3,"file":"impl-Dj5dWvYr2.mjs","names":[],"sources":["../src/commands/request/enricher-restart/impl.ts"],"sourcesContent":["import type { RequestAction, RequestEnricherStatus } from '@transcend-io/privacy-types';\n\nimport type { LocalContext } from '../../../context.js';\nimport { doneInputValidation } from '../../../lib/cli/done-input-validation.js';\nimport { bulkRetryEnrichers } from '../../../lib/requests/index.js';\n\nexport interface EnricherRestartCommandFlags {\n auth: string;\n enricherId: string;\n actions?: RequestAction[];\n requestEnricherStatuses?: RequestEnricherStatus[];\n transcendUrl: string;\n concurrency: number;\n requestIds?: string[];\n createdAtBefore?: Date;\n createdAtAfter?: Date;\n updatedAtBefore?: Date;\n updatedAtAfter?: Date;\n}\n\nexport async function enricherRestart(\n this: LocalContext,\n {\n auth,\n enricherId,\n actions,\n requestEnricherStatuses,\n requestIds,\n createdAtBefore,\n createdAtAfter,\n updatedAtBefore,\n updatedAtAfter,\n concurrency,\n transcendUrl,\n }: EnricherRestartCommandFlags,\n): Promise<void> {\n doneInputValidation(this.process.exit);\n\n await bulkRetryEnrichers({\n auth,\n enricherId,\n requestActions: actions,\n requestEnricherStatuses,\n requestIds,\n createdAtBefore: createdAtBefore ? new Date(createdAtBefore) : undefined,\n createdAtAfter: createdAtAfter ? new Date(createdAtAfter) : undefined,\n updatedAtBefore: updatedAtBefore ? new Date(updatedAtBefore) : undefined,\n updatedAtAfter: updatedAtAfter ? new Date(updatedAtAfter) : undefined,\n concurrency,\n transcendUrl,\n });\n}\n"],"mappings":"0GAoBA,eAAsB,EAEpB,CACE,OACA,aACA,UACA,0BACA,aACA,kBACA,iBACA,kBACA,iBACA,cACA,gBAEa,CACf,EAAoB,KAAK,QAAQ,KAAK,CAEtC,MAAM,EAAmB,CACvB,OACA,aACA,eAAgB,EAChB,0BACA,aACA,gBAAiB,EAAkB,IAAI,KAAK,EAAgB,CAAG,IAAA,GAC/D,eAAgB,EAAiB,IAAI,KAAK,EAAe,CAAG,IAAA,GAC5D,gBAAiB,EAAkB,IAAI,KAAK,EAAgB,CAAG,IAAA,GAC/D,eAAgB,EAAiB,IAAI,KAAK,EAAe,CAAG,IAAA,GAC5D,cACA,eACD,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{t as e}from"./uploadPrivacyRequestsFromCsv-
|
|
2
|
-
//# sourceMappingURL=impl-
|
|
1
|
+
import{t as e}from"./uploadPrivacyRequestsFromCsv-B8lK4TL2.mjs";import{t}from"./done-input-validation-D25TzrxG.mjs";import{splitCsvToList as n}from"@transcend-io/utils";async function r({auth:r,file:i,transcendUrl:a,cacheFilepath:o,requestReceiptFolder:s,sombraAuth:c,concurrency:l,attributes:u,isTest:d,isSilent:f,skipSendingReceipt:p,emailIsVerified:m,skipFilterStep:h,dryRun:g,debug:_,defaultPhoneCountryCode:v}){t(this.process.exit),await e({cacheFilepath:o,requestReceiptFolder:s,file:i,auth:r,sombraAuth:c,concurrency:l,transcendUrl:a,defaultPhoneCountryCode:v,attributes:n(u),debug:_,skipFilterStep:h,isSilent:f,skipSendingReceipt:p,emailIsVerified:m,isTest:d,dryRun:g})}export{r as upload};
|
|
2
|
+
//# sourceMappingURL=impl-DwOllcc22.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"impl-
|
|
1
|
+
{"version":3,"file":"impl-DwOllcc22.mjs","names":[],"sources":["../src/commands/request/upload/impl.ts"],"sourcesContent":["import { splitCsvToList } from '@transcend-io/utils';\n\nimport type { LocalContext } from '../../../context.js';\nimport { doneInputValidation } from '../../../lib/cli/done-input-validation.js';\nimport { uploadPrivacyRequestsFromCsv } from '../../../lib/requests/index.js';\n\nexport interface UploadCommandFlags {\n auth: string;\n file: string;\n transcendUrl: string;\n cacheFilepath: string;\n requestReceiptFolder: string;\n sombraAuth?: string;\n concurrency: number;\n attributes: string;\n isTest: boolean;\n isSilent: boolean;\n skipSendingReceipt: boolean;\n emailIsVerified: boolean;\n skipFilterStep: boolean;\n dryRun: boolean;\n debug: boolean;\n defaultPhoneCountryCode: string;\n}\n\nexport async function upload(\n this: LocalContext,\n {\n auth,\n file,\n transcendUrl,\n cacheFilepath,\n requestReceiptFolder,\n sombraAuth,\n concurrency,\n attributes,\n isTest,\n isSilent,\n skipSendingReceipt,\n emailIsVerified,\n skipFilterStep,\n dryRun,\n debug,\n defaultPhoneCountryCode,\n }: UploadCommandFlags,\n): Promise<void> {\n doneInputValidation(this.process.exit);\n\n await uploadPrivacyRequestsFromCsv({\n cacheFilepath,\n requestReceiptFolder,\n file,\n auth,\n sombraAuth,\n concurrency,\n transcendUrl,\n defaultPhoneCountryCode,\n attributes: splitCsvToList(attributes),\n debug,\n skipFilterStep,\n isSilent,\n skipSendingReceipt,\n emailIsVerified,\n isTest,\n dryRun,\n });\n}\n"],"mappings":"yKAyBA,eAAsB,EAEpB,CACE,OACA,OACA,eACA,gBACA,uBACA,aACA,cACA,aACA,SACA,WACA,qBACA,kBACA,iBACA,SACA,QACA,2BAEa,CACf,EAAoB,KAAK,QAAQ,KAAK,CAEtC,MAAM,EAA6B,CACjC,gBACA,uBACA,OACA,OACA,aACA,cACA,eACA,0BACA,WAAY,EAAe,EAAW,CACtC,QACA,iBACA,WACA,qBACA,kBACA,SACA,SACD,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{t as e}from"./uploadDataFlowsFromCsv-
|
|
2
|
-
//# sourceMappingURL=impl-
|
|
1
|
+
import{t as e}from"./uploadDataFlowsFromCsv-D1zxhWRt.mjs";import{t}from"./done-input-validation-D25TzrxG.mjs";async function n({auth:n,trackerStatus:r,file:i,classifyService:a,transcendUrl:o}){t(this.process.exit),await e({auth:n,trackerStatus:r,file:i,classifyService:a,transcendUrl:o})}export{n as uploadDataFlowsFromCsv};
|
|
2
|
+
//# sourceMappingURL=impl-ELz2nyJq.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"impl-
|
|
1
|
+
{"version":3,"file":"impl-ELz2nyJq.mjs","names":["uploadDataFlowsFromCsvHelper"],"sources":["../src/commands/consent/upload-data-flows-from-csv/impl.ts"],"sourcesContent":["import { ConsentTrackerStatus } from '@transcend-io/privacy-types';\n\nimport type { LocalContext } from '../../../context.js';\nimport { doneInputValidation } from '../../../lib/cli/done-input-validation.js';\nimport { uploadDataFlowsFromCsv as uploadDataFlowsFromCsvHelper } from '../../../lib/consent-manager/index.js';\n\nexport interface UploadDataFlowsFromCsvCommandFlags {\n auth: string;\n trackerStatus: ConsentTrackerStatus;\n file: string;\n classifyService: boolean;\n transcendUrl: string;\n}\n\nexport async function uploadDataFlowsFromCsv(\n this: LocalContext,\n { auth, trackerStatus, file, classifyService, transcendUrl }: UploadDataFlowsFromCsvCommandFlags,\n): Promise<void> {\n doneInputValidation(this.process.exit);\n\n await uploadDataFlowsFromCsvHelper({\n auth,\n trackerStatus,\n file,\n classifyService,\n transcendUrl,\n });\n}\n"],"mappings":"8GAcA,eAAsB,EAEpB,CAAE,OAAM,gBAAe,OAAM,kBAAiB,gBAC/B,CACf,EAAoB,KAAK,QAAQ,KAAK,CAEtC,MAAMA,EAA6B,CACjC,OACA,gBACA,OACA,kBACA,eACD,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{t as e}from"./logger-D1tXVwJj.mjs";import{t}from"./streamPrivacyRequestsToCsv-
|
|
2
|
-
//# sourceMappingURL=impl-
|
|
1
|
+
import{t as e}from"./logger-D1tXVwJj.mjs";import{t}from"./streamPrivacyRequestsToCsv-vB1a_Xmx.mjs";import{t as n}from"./done-input-validation-D25TzrxG.mjs";import r from"colors";async function i({auth:i,transcendUrl:a,file:o,pageLimit:s,concurrency:c,actions:l,sombraAuth:u,skipRequestIdentifiers:d,statuses:f,createdAtBefore:p,createdAtAfter:m,updatedAtBefore:h,updatedAtAfter:g,showTests:_}){n(this.process.exit);let{filePaths:v,totalCount:y}=await t({transcendUrl:a,concurrency:c,pageLimit:s,actions:l,statuses:f,auth:i,sombraAuth:u,skipRequestIdentifiers:d,createdAtBefore:p,createdAtAfter:m,updatedAtBefore:h,updatedAtAfter:g,isTest:_,file:o});e.info(r.green(`Successfully wrote ${y} requests to ${v.length} file(s): ${v.join(`, `)}`))}export{i as _export};
|
|
2
|
+
//# sourceMappingURL=impl-kU6M_9xS2.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"impl-
|
|
1
|
+
{"version":3,"file":"impl-kU6M_9xS2.mjs","names":[],"sources":["../src/commands/request/export/impl.ts"],"sourcesContent":["import type { RequestAction, RequestStatus } from '@transcend-io/privacy-types';\nimport colors from 'colors';\n\nimport type { LocalContext } from '../../../context.js';\nimport { doneInputValidation } from '../../../lib/cli/done-input-validation.js';\nimport { streamPrivacyRequestsToCsv } from '../../../lib/requests/index.js';\nimport { logger } from '../../../logger.js';\n\nexport interface ExportCommandFlags {\n auth: string;\n sombraAuth?: string;\n actions?: RequestAction[];\n statuses?: RequestStatus[];\n transcendUrl: string;\n file: string;\n concurrency: number;\n createdAtBefore?: Date;\n createdAtAfter?: Date;\n updatedAtBefore?: Date;\n updatedAtAfter?: Date;\n showTests?: boolean;\n skipRequestIdentifiers?: boolean;\n pageLimit: number;\n}\n\n// `export` is a reserved keyword, so we need to prefix it with an underscore\n// eslint-disable-next-line no-underscore-dangle\nexport async function _export(\n this: LocalContext,\n {\n auth,\n transcendUrl,\n file,\n pageLimit,\n concurrency,\n actions,\n sombraAuth,\n skipRequestIdentifiers,\n statuses,\n createdAtBefore,\n createdAtAfter,\n updatedAtBefore,\n updatedAtAfter,\n showTests,\n }: ExportCommandFlags,\n): Promise<void> {\n doneInputValidation(this.process.exit);\n\n const { filePaths, totalCount } = await streamPrivacyRequestsToCsv({\n transcendUrl,\n concurrency,\n pageLimit,\n actions,\n statuses,\n auth,\n sombraAuth,\n skipRequestIdentifiers,\n createdAtBefore,\n createdAtAfter,\n updatedAtBefore,\n updatedAtAfter,\n isTest: showTests,\n file,\n });\n\n logger.info(\n colors.green(\n `Successfully wrote ${totalCount} requests to ` +\n `${filePaths.length} file(s): ${filePaths.join(', ')}`,\n ),\n );\n}\n"],"mappings":"kLA2BA,eAAsB,EAEpB,CACE,OACA,eACA,OACA,YACA,cACA,UACA,aACA,yBACA,WACA,kBACA,iBACA,kBACA,iBACA,aAEa,CACf,EAAoB,KAAK,QAAQ,KAAK,CAEtC,GAAM,CAAE,YAAW,cAAe,MAAM,EAA2B,CACjE,eACA,cACA,YACA,UACA,WACA,OACA,aACA,yBACA,kBACA,iBACA,kBACA,iBACA,OAAQ,EACR,OACD,CAAC,CAEF,EAAO,KACL,EAAO,MACL,sBAAsB,EAAW,eAC5B,EAAU,OAAO,YAAY,EAAU,KAAK,KAAK,GACvD,CACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{t as e}from"./uploadCookiesFromCsv-
|
|
2
|
-
//# sourceMappingURL=impl-
|
|
1
|
+
import{t as e}from"./uploadCookiesFromCsv-DkgIHEdl.mjs";import{t}from"./done-input-validation-D25TzrxG.mjs";async function n({auth:n,trackerStatus:r,file:i,transcendUrl:a}){t(this.process.exit),await e({auth:n,trackerStatus:r,file:i,transcendUrl:a})}export{n as uploadCookiesFromCsv};
|
|
2
|
+
//# sourceMappingURL=impl-taJyQmlW.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"impl-
|
|
1
|
+
{"version":3,"file":"impl-taJyQmlW.mjs","names":["uploadCookiesFromCsvHelper"],"sources":["../src/commands/consent/upload-cookies-from-csv/impl.ts"],"sourcesContent":["import { ConsentTrackerStatus } from '@transcend-io/privacy-types';\n\nimport type { LocalContext } from '../../../context.js';\nimport { doneInputValidation } from '../../../lib/cli/done-input-validation.js';\nimport { uploadCookiesFromCsv as uploadCookiesFromCsvHelper } from '../../../lib/consent-manager/index.js';\n\nexport interface UploadCookiesFromCsvCommandFlags {\n auth: string;\n trackerStatus: ConsentTrackerStatus;\n file: string;\n transcendUrl: string;\n}\n\nexport async function uploadCookiesFromCsv(\n this: LocalContext,\n { auth, trackerStatus, file, transcendUrl }: UploadCookiesFromCsvCommandFlags,\n): Promise<void> {\n doneInputValidation(this.process.exit);\n\n // Upload cookies\n await uploadCookiesFromCsvHelper({\n auth,\n trackerStatus,\n file,\n transcendUrl,\n });\n}\n"],"mappings":"4GAaA,eAAsB,EAEpB,CAAE,OAAM,gBAAe,OAAM,gBACd,CACf,EAAoB,KAAK,QAAQ,KAAK,CAGtC,MAAMA,EAA2B,CAC/B,OACA,gBACA,OACA,eACD,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{r as e}from"./constants-
|
|
1
|
+
import{r as e}from"./constants-BX7PrKxC.mjs";import{t}from"./logger-D1tXVwJj.mjs";import{a as n}from"./writeCsv-Dg4Wuj5V.mjs";import{t as r}from"./pullConsentManagerMetrics-C0gYmy2K.mjs";import{t as i}from"./validateTranscendAuth-DrVM-Bxh.mjs";import{t as a}from"./done-input-validation-D25TzrxG.mjs";import{ConsentManagerMetricBin as o}from"@transcend-io/privacy-types";import s,{existsSync as c,mkdirSync as l}from"node:fs";import{join as u}from"node:path";import d from"colors";import{buildTranscendGraphQLClient as f}from"@transcend-io/sdk";import{map as p,mapSeries as m}from"@transcend-io/utils";async function h({auth:h,start:g,end:_,folder:v,bin:y,transcendUrl:b}){let x=y;Object.values(o).includes(x)||(t.error(d.red(`Failed to parse argument "bin" with value "${y}"\nExpected one of: \n${Object.values(o).join(`
|
|
2
2
|
`)}`)),this.process.exit(1));let S=new Date(g),C=_?new Date(_):new Date;Number.isNaN(S.getTime())&&(t.error(d.red(`Start date provided is invalid date. Got --start="${g}" expected --start="01/01/2023"`)),this.process.exit(1)),Number.isNaN(C.getTime())&&(t.error(d.red(`End date provided is invalid date. Got --end="${_}" expected --end="01/01/2023"`)),this.process.exit(1)),S>C&&(t.error(d.red(`Got a start date "${S.toISOString()}" that was larger than the end date "${C.toISOString()}". Start date must be before end date.`)),this.process.exit(1)),a(this.process.exit);let w=await i(h);if(s.existsSync(v)&&!s.lstatSync(v).isDirectory()&&(t.error(d.red(`The provided argument "folder" was passed a file. expected: folder="./consent-metrics/"`)),this.process.exit(1)),c(v)||l(v),t.info(d.magenta(`Pulling consent metrics from start=${S.toString()} to end=${C.toISOString()} with bin size "${y}"`)),typeof w==`string`){try{let e=await r(f(b,w),{bin:x,start:S,end:C});await p(Object.entries(e),async([e,r])=>{await p(r,async({points:r,name:i})=>{let a=u(v,`${e}_${i}.csv`);t.info(d.magenta(`Writing configuration to file "${a}"...`)),await n(a,r.map(({key:e,value:t})=>({timestamp:e,value:t})))},{concurrency:5})},{concurrency:5})}catch(e){t.error(d.red(`An error occurred syncing the schema: ${e.message}`)),this.process.exit(1)}t.info(d.green(`Successfully synced consent metrics to disk in folder "${v}"! View at ${e}`))}else{let i=[];await m(w,async(e,a)=>{let o=`[${a+1}/${w.length}][${e.organizationName}] `;t.info(d.magenta(`~~~\n\n${o}Attempting to pull consent metrics...\n\n~~~`));let s=f(b,e.apiKey);try{let i=await r(s,{bin:x,start:S,end:C}),a=u(v,e.organizationName);c(a)||l(a),Object.entries(i).forEach(([e,r])=>{r.forEach(({points:r,name:i})=>{let o=u(a,`${e}_${i}.csv`);t.info(d.magenta(`Writing configuration to file "${o}"...`)),n(o,r.map(({key:e,value:t})=>({timestamp:e,value:t})))})}),t.info(d.green(`${o}Successfully pulled configuration!`))}catch(n){t.error(d.red(`${o}Failed to sync configuration.`),n),i.push(e.organizationName)}}),i.length>0&&(t.info(d.red(`Sync encountered errors for "${i.join(`,`)}". View output above for more information, or check out ${e}`)),this.process.exit(1))}}export{h as pullConsentMetrics};
|
|
3
|
-
//# sourceMappingURL=impl-
|
|
3
|
+
//# sourceMappingURL=impl-z2bzz69O.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"impl-
|
|
1
|
+
{"version":3,"file":"impl-z2bzz69O.mjs","names":[],"sources":["../src/commands/consent/pull-consent-metrics/impl.ts"],"sourcesContent":["import fs, { existsSync, mkdirSync } from 'node:fs';\nimport { join } from 'node:path';\n\nimport { ConsentManagerMetricBin } from '@transcend-io/privacy-types';\nimport { buildTranscendGraphQLClient } from '@transcend-io/sdk';\nimport { map, mapSeries } from '@transcend-io/utils';\nimport colors from 'colors';\n\nimport { ADMIN_DASH_INTEGRATIONS } from '../../../constants.js';\nimport type { LocalContext } from '../../../context.js';\nimport { validateTranscendAuth } from '../../../lib/api-keys/index.js';\nimport { doneInputValidation } from '../../../lib/cli/done-input-validation.js';\nimport { pullConsentManagerMetrics } from '../../../lib/consent-manager/index.js';\nimport { writeCsv } from '../../../lib/helpers/index.js';\nimport { logger } from '../../../logger.js';\n\nexport interface PullConsentMetricsCommandFlags {\n auth: string;\n start: Date;\n end?: Date;\n folder: string;\n bin: string;\n transcendUrl: string;\n}\n\nexport async function pullConsentMetrics(\n this: LocalContext,\n { auth, start, end, folder, bin, transcendUrl }: PullConsentMetricsCommandFlags,\n): Promise<void> {\n // Validate bin\n const parsedBin = bin as ConsentManagerMetricBin;\n if (!Object.values(ConsentManagerMetricBin).includes(parsedBin)) {\n logger.error(\n colors.red(\n `Failed to parse argument \"bin\" with value \"${bin}\"\\n` +\n `Expected one of: \\n${Object.values(ConsentManagerMetricBin).join('\\n')}`,\n ),\n );\n this.process.exit(1);\n }\n\n // Parse the dates\n const startDate = new Date(start);\n const endDate = end ? new Date(end) : new Date();\n if (Number.isNaN(startDate.getTime())) {\n logger.error(\n colors.red(\n `Start date provided is invalid date. Got --start=\"${start}\" expected --start=\"01/01/2023\"`,\n ),\n );\n this.process.exit(1);\n }\n if (Number.isNaN(endDate.getTime())) {\n logger.error(\n colors.red(\n `End date provided is invalid date. Got --end=\"${end}\" expected --end=\"01/01/2023\"`,\n ),\n );\n this.process.exit(1);\n }\n if (startDate > endDate) {\n logger.error(\n colors.red(\n `Got a start date \"${startDate.toISOString()}\" that was larger than the end date \"${endDate.toISOString()}\". ` +\n 'Start date must be before end date.',\n ),\n );\n this.process.exit(1);\n }\n\n doneInputValidation(this.process.exit);\n\n // Parse authentication as API key or path to list of API keys\n const apiKeyOrList = await validateTranscendAuth(auth);\n\n // Ensure folder either does not exist or is not a file\n if (fs.existsSync(folder) && !fs.lstatSync(folder).isDirectory()) {\n logger.error(\n colors.red(\n 'The provided argument \"folder\" was passed a file. expected: folder=\"./consent-metrics/\"',\n ),\n );\n this.process.exit(1);\n }\n\n // Create the folder if it does not exist\n if (!existsSync(folder)) {\n mkdirSync(folder);\n }\n\n logger.info(\n colors.magenta(\n `Pulling consent metrics from start=${startDate.toString()} to end=${endDate.toISOString()} with bin size \"${bin}\"`,\n ),\n );\n\n // Sync to Disk\n if (typeof apiKeyOrList === 'string') {\n try {\n // Create a GraphQL client\n const client = buildTranscendGraphQLClient(transcendUrl, apiKeyOrList);\n\n // Pull the metrics\n const configuration = await pullConsentManagerMetrics(client, {\n bin: parsedBin,\n start: startDate,\n end: endDate,\n });\n\n // Write to file\n await map(\n Object.entries(configuration),\n async ([metricName, metrics]) => {\n await map(\n metrics,\n async ({ points, name }) => {\n const file = join(folder, `${metricName}_${name}.csv`);\n logger.info(colors.magenta(`Writing configuration to file \"${file}\"...`));\n await writeCsv(\n file,\n points.map(({ key, value }: { key: string; value: string }) => ({\n timestamp: key,\n value,\n })),\n );\n },\n {\n concurrency: 5,\n },\n );\n },\n { concurrency: 5 },\n );\n } catch (err) {\n logger.error(colors.red(`An error occurred syncing the schema: ${err.message}`));\n this.process.exit(1);\n }\n\n // Indicate success\n logger.info(\n colors.green(\n `Successfully synced consent metrics to disk in folder \"${folder}\"! View at ${ADMIN_DASH_INTEGRATIONS}`,\n ),\n );\n } else {\n const encounteredErrors: string[] = [];\n await mapSeries(apiKeyOrList, async (apiKey, ind) => {\n const prefix = `[${ind + 1}/${apiKeyOrList.length}][${apiKey.organizationName}] `;\n logger.info(colors.magenta(`~~~\\n\\n${prefix}Attempting to pull consent metrics...\\n\\n~~~`));\n\n // Create a GraphQL client\n const client = buildTranscendGraphQLClient(transcendUrl, apiKey.apiKey);\n\n try {\n const configuration = await pullConsentManagerMetrics(client, {\n bin: parsedBin,\n start: startDate,\n end: endDate,\n });\n\n // ensure folder exists for that organization\n const subFolder = join(folder, apiKey.organizationName);\n if (!existsSync(subFolder)) {\n mkdirSync(subFolder);\n }\n\n // Write to file\n Object.entries(configuration).forEach(([metricName, metrics]) => {\n metrics.forEach(({ points, name }) => {\n const file = join(subFolder, `${metricName}_${name}.csv`);\n logger.info(colors.magenta(`Writing configuration to file \"${file}\"...`));\n writeCsv(\n file,\n points.map(({ key, value }: { key: string; value: string }) => ({\n timestamp: key,\n value,\n })),\n );\n });\n });\n\n logger.info(colors.green(`${prefix}Successfully pulled configuration!`));\n } catch (err) {\n logger.error(colors.red(`${prefix}Failed to sync configuration.`), err);\n encounteredErrors.push(apiKey.organizationName);\n }\n });\n\n if (encounteredErrors.length > 0) {\n logger.info(\n colors.red(\n `Sync encountered errors for \"${encounteredErrors.join(\n ',',\n )}\". View output above for more information, or check out ${ADMIN_DASH_INTEGRATIONS}`,\n ),\n );\n\n this.process.exit(1);\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{t as e}from"./constants-
|
|
2
|
-
//# sourceMappingURL=impl-
|
|
1
|
+
import{t as e}from"./constants-BX7PrKxC.mjs";import{t}from"./logger-D1tXVwJj.mjs";import{n}from"./syncCodePackages-kQRUAGvl.mjs";import{t as r}from"./done-input-validation-D25TzrxG.mjs";import{t as i}from"./constants-2MiVdjAH.mjs";import{getEntries as a}from"@transcend-io/type-utils";import o from"colors";import{buildTranscendGraphQLClient as s}from"@transcend-io/sdk";import{execSync as c}from"child_process";import l from"fast-glob";async function u({scanPath:e,ignoreDirs:n=[],repositoryName:r}){return(await Promise.all(a(i).map(async([i,a])=>{let{ignoreDirs:s,supportedFiles:c,scanFunction:u}=a,d=[...n,...s].filter(e=>e.length>0);try{let n=await l(`${e}/**/${c.join(`|`)}`,{ignore:d.map(t=>`${e}/**/${t}`),unique:!0,onlyFiles:!0});t.info(o.magenta(`Scanning: ${n.length} files of type ${i}`));let a=n.map(t=>u(t).map(n=>({...n,relativePath:t.replace(`${e}/`,``)}))).flat();return t.info(o.green(`Found: ${a.length} packages and ${a.map(({softwareDevelopmentKits:e=[]})=>e).flat().length} sdks`)),a.map(e=>({...e,type:i,repositoryName:r}))}catch(e){throw Error(`Error scanning globs ${c} with error: ${e}`)}}))).flat()}const d=`A repository name must be provided. You can specify using --repositoryName=$REPO_NAME or by ensuring the command "git config --get remote.origin.url" returns the name of the repository`;async function f({auth:i,scanPath:a,ignoreDirs:l,repositoryName:f,transcendUrl:p}){r(this.process.exit);let m=f;if(!m)try{let e=c(`cd ${a} && git config --get remote.origin.url`).toString(`utf-8`).trim();[m]=e.includes(`https:`)?e.split(`/`).slice(3).join(`/`).split(`.`):(e.split(`:`).pop()||``).split(`.`),m||(t.error(o.red(d)),this.process.exit(1))}catch(e){t.error(o.red(`${d} - Got error: ${e.message}`)),this.process.exit(1)}let h=s(p,i),g=await u({scanPath:a,ignoreDirs:l,repositoryName:m});await n(h,g);let _=new URL(e);_.pathname=`/code-scanning/code-packages`,t.info(o.green(`Scan found ${g.length} packages at ${a}! View results at '${_.href}'`))}export{f as scanPackages};
|
|
2
|
+
//# sourceMappingURL=impl-zXXUv3a4.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"impl-
|
|
1
|
+
{"version":3,"file":"impl-zXXUv3a4.mjs","names":[],"sources":["../src/lib/code-scanning/findCodePackagesInFolder.ts","../src/commands/inventory/scan-packages/impl.ts"],"sourcesContent":["import { getEntries } from '@transcend-io/type-utils';\nimport colors from 'colors';\nimport fastGlob from 'fast-glob';\n\nimport { CodePackageInput } from '../../codecs.js';\nimport { logger } from '../../logger.js';\nimport { CODE_SCANNING_CONFIGS } from './constants.js';\n\n/**\n * Helper to scan and discovery all of the code packages within a folder\n *\n * @param options - Options\n * @returns the list of integrations\n */\nexport async function findCodePackagesInFolder({\n scanPath,\n ignoreDirs = [],\n repositoryName,\n}: {\n /** The name of the github repository reporting packages for */\n repositoryName: string;\n /** Where to look for package.json files */\n scanPath: string;\n /** The directories to ignore (excludes node_modules and serverless-build) */\n ignoreDirs?: string[];\n}): Promise<CodePackageInput[]> {\n const allCodePackages = await Promise.all(\n getEntries(CODE_SCANNING_CONFIGS).map(async ([codePackageType, config]) => {\n const { ignoreDirs: configIgnoreDirs, supportedFiles, scanFunction } = config;\n const dirsToIgnore = [...ignoreDirs, ...configIgnoreDirs].filter((dir) => dir.length > 0);\n try {\n const filesToScan: string[] = await fastGlob(`${scanPath}/**/${supportedFiles.join('|')}`, {\n ignore: dirsToIgnore.map((dir: string) => `${scanPath}/**/${dir}`),\n unique: true,\n onlyFiles: true,\n });\n logger.info(\n colors.magenta(`Scanning: ${filesToScan.length} files of type ${codePackageType}`),\n );\n const allPackages = filesToScan\n .map((filePath) =>\n scanFunction(filePath).map((result) => ({\n ...result,\n relativePath: filePath.replace(`${scanPath}/`, ''),\n })),\n )\n .flat();\n logger.info(\n colors.green(\n `Found: ${allPackages.length} packages and ${\n allPackages.map(({ softwareDevelopmentKits = [] }) => softwareDevelopmentKits).flat()\n .length\n } sdks`,\n ),\n );\n\n return allPackages.map(\n (pkg): CodePackageInput => ({\n ...pkg,\n type: codePackageType,\n repositoryName,\n }),\n );\n } catch (error) {\n throw new Error(`Error scanning globs ${supportedFiles} with error: ${error}`);\n }\n }),\n );\n\n return allCodePackages.flat();\n}\n","import { execSync } from 'child_process';\n\nimport { buildTranscendGraphQLClient } from '@transcend-io/sdk';\nimport colors from 'colors';\n\nimport { ADMIN_DASH } from '../../../constants.js';\nimport type { LocalContext } from '../../../context.js';\nimport { doneInputValidation } from '../../../lib/cli/done-input-validation.js';\nimport { findCodePackagesInFolder } from '../../../lib/code-scanning/index.js';\nimport { syncCodePackages } from '../../../lib/graphql/index.js';\nimport { logger } from '../../../logger.js';\n\nconst REPO_ERROR =\n 'A repository name must be provided. ' +\n 'You can specify using --repositoryName=$REPO_NAME or by ensuring the ' +\n 'command \"git config --get remote.origin.url\" returns the name of the repository';\n\nexport interface ScanPackagesCommandFlags {\n auth: string;\n scanPath: string;\n ignoreDirs?: string[];\n repositoryName?: string;\n transcendUrl: string;\n}\n\nexport async function scanPackages(\n this: LocalContext,\n { auth, scanPath, ignoreDirs, repositoryName, transcendUrl }: ScanPackagesCommandFlags,\n): Promise<void> {\n doneInputValidation(this.process.exit);\n\n // Ensure repository name is specified\n let gitRepositoryName = repositoryName;\n if (!gitRepositoryName) {\n try {\n const name = execSync(`cd ${scanPath} && git config --get remote.origin.url`);\n // Trim and parse the URL\n const url = name.toString('utf-8').trim();\n [gitRepositoryName] = !url.includes('https:')\n ? (url.split(':').pop() || '').split('.')\n : url.split('/').slice(3).join('/').split('.');\n if (!gitRepositoryName) {\n logger.error(colors.red(REPO_ERROR));\n this.process.exit(1);\n }\n } catch (err) {\n logger.error(colors.red(`${REPO_ERROR} - Got error: ${err.message}`));\n this.process.exit(1);\n }\n }\n\n // Create a GraphQL client\n const client = buildTranscendGraphQLClient(transcendUrl, auth);\n\n // Scan the codebase to discovery packages\n const results = await findCodePackagesInFolder({\n scanPath,\n ignoreDirs,\n repositoryName: gitRepositoryName,\n });\n\n // Report scan to Transcend\n await syncCodePackages(client, results);\n\n const newUrl = new URL(ADMIN_DASH);\n newUrl.pathname = '/code-scanning/code-packages';\n\n // Indicate success\n logger.info(\n colors.green(\n `Scan found ${results.length} packages at ${scanPath}! ` + `View results at '${newUrl.href}'`,\n ),\n );\n}\n"],"mappings":"qbAcA,eAAsB,EAAyB,CAC7C,WACA,aAAa,EAAE,CACf,kBAQ8B,CA4C9B,OAAO,MA3CuB,QAAQ,IACpC,EAAW,EAAsB,CAAC,IAAI,MAAO,CAAC,EAAiB,KAAY,CACzE,GAAM,CAAE,WAAY,EAAkB,iBAAgB,gBAAiB,EACjE,EAAe,CAAC,GAAG,EAAY,GAAG,EAAiB,CAAC,OAAQ,GAAQ,EAAI,OAAS,EAAE,CACzF,GAAI,CACF,IAAM,EAAwB,MAAM,EAAS,GAAG,EAAS,MAAM,EAAe,KAAK,IAAI,GAAI,CACzF,OAAQ,EAAa,IAAK,GAAgB,GAAG,EAAS,MAAM,IAAM,CAClE,OAAQ,GACR,UAAW,GACZ,CAAC,CACF,EAAO,KACL,EAAO,QAAQ,aAAa,EAAY,OAAO,iBAAiB,IAAkB,CACnF,CACD,IAAM,EAAc,EACjB,IAAK,GACJ,EAAa,EAAS,CAAC,IAAK,IAAY,CACtC,GAAG,EACH,aAAc,EAAS,QAAQ,GAAG,EAAS,GAAI,GAAG,CACnD,EAAE,CACJ,CACA,MAAM,CAUT,OATA,EAAO,KACL,EAAO,MACL,UAAU,EAAY,OAAO,gBAC3B,EAAY,KAAK,CAAE,0BAA0B,EAAE,IAAO,EAAwB,CAAC,MAAM,CAClF,OACJ,OACF,CACF,CAEM,EAAY,IAChB,IAA2B,CAC1B,GAAG,EACH,KAAM,EACN,iBACD,EACF,OACM,EAAO,CACd,MAAU,MAAM,wBAAwB,EAAe,eAAe,IAAQ,GAEhF,CACH,EAEsB,MAAM,CCzD/B,MAAM,EACJ,2LAYF,eAAsB,EAEpB,CAAE,OAAM,WAAU,aAAY,iBAAgB,gBAC/B,CACf,EAAoB,KAAK,QAAQ,KAAK,CAGtC,IAAI,EAAoB,EACxB,GAAI,CAAC,EACH,GAAI,CAGF,IAAM,EAFO,EAAS,MAAM,EAAS,wCAErB,CAAC,SAAS,QAAQ,CAAC,MAAM,CACzC,CAAC,GAAsB,EAAI,SAAS,SAAS,CAEzC,EAAI,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC,MAAM,IAAI,EAD3C,EAAI,MAAM,IAAI,CAAC,KAAK,EAAI,IAAI,MAAM,IAAI,CAEtC,IACH,EAAO,MAAM,EAAO,IAAI,EAAW,CAAC,CACpC,KAAK,QAAQ,KAAK,EAAE,QAEf,EAAK,CACZ,EAAO,MAAM,EAAO,IAAI,GAAG,EAAW,gBAAgB,EAAI,UAAU,CAAC,CACrE,KAAK,QAAQ,KAAK,EAAE,CAKxB,IAAM,EAAS,EAA4B,EAAc,EAAK,CAGxD,EAAU,MAAM,EAAyB,CAC7C,WACA,aACA,eAAgB,EACjB,CAAC,CAGF,MAAM,EAAiB,EAAQ,EAAQ,CAEvC,IAAM,EAAS,IAAI,IAAI,EAAW,CAClC,EAAO,SAAW,+BAGlB,EAAO,KACL,EAAO,MACL,cAAc,EAAQ,OAAO,eAAe,EAAS,qBAA0B,EAAO,KAAK,GAC5F,CACF"}
|
package/dist/index.d.mts
CHANGED
|
@@ -4,6 +4,7 @@ import { AssessmentFormTemplateSource, AssessmentFormTemplateStatus, CodePackage
|
|
|
4
4
|
import { ObjByString, Optionalize, Requirize } from "@transcend-io/type-utils";
|
|
5
5
|
import * as t from "io-ts";
|
|
6
6
|
import { Agent, AgentFile, AgentFileFilterBy, ApiKey, AssessmentSection, AttributeKey, CodePackage, ConsentManagerMetric, DataSiloAttributeValue, DataSubject, LargeLanguageModel, PromptThread, ReportPromptRunInput, RequestEnricher, RequestIdentifier, RetentionSchedule, TranscendPromptTemplated, TranscendPromptsAndVariables, UserPreview } from "@transcend-io/sdk";
|
|
7
|
+
import { Logger, SyncResult } from "@transcend-io/utils";
|
|
7
8
|
import inquirer from "inquirer";
|
|
8
9
|
import { GraphQLClient } from "graphql-request";
|
|
9
10
|
import * as _$io_ts_types0 from "io-ts-types";
|
|
@@ -65041,9 +65042,11 @@ declare const ConsentPreferenceTopic: t.IntersectionC<[t.TypeC<{
|
|
|
65041
65042
|
BOOLEAN: unknown;
|
|
65042
65043
|
}>; /** The title of the preference topic */
|
|
65043
65044
|
title: t.StringC; /** The description of the preference topic */
|
|
65044
|
-
description: t.StringC;
|
|
65045
|
+
description: t.StringC; /** API slug for the preference topic (PascalCase; alphabetical letters only) */
|
|
65046
|
+
slug: t.StringC;
|
|
65045
65047
|
}>, t.PartialC<{
|
|
65046
|
-
/**
|
|
65048
|
+
/** Hex color for the preference topic (pull-only; not writable via CLI push today) */color: t.StringC; /** Default value */
|
|
65049
|
+
'default-configuration': t.StringC; /** Whether the preference topic is shown in privacy center */
|
|
65047
65050
|
'show-in-privacy-center': t.BooleanC; /** The options when type is single or multi select */
|
|
65048
65051
|
options: t.ArrayC<t.TypeC<{
|
|
65049
65052
|
/** Title of option value */title: t.StringC; /** API slug */
|
|
@@ -65070,9 +65073,11 @@ declare const ConsentPurpose: t.IntersectionC<[t.TypeC<{
|
|
|
65070
65073
|
BOOLEAN: unknown;
|
|
65071
65074
|
}>; /** The title of the preference topic */
|
|
65072
65075
|
title: t.StringC; /** The description of the preference topic */
|
|
65073
|
-
description: t.StringC;
|
|
65076
|
+
description: t.StringC; /** API slug for the preference topic (PascalCase; alphabetical letters only) */
|
|
65077
|
+
slug: t.StringC;
|
|
65074
65078
|
}>, t.PartialC<{
|
|
65075
|
-
/**
|
|
65079
|
+
/** Hex color for the preference topic (pull-only; not writable via CLI push today) */color: t.StringC; /** Default value */
|
|
65080
|
+
'default-configuration': t.StringC; /** Whether the preference topic is shown in privacy center */
|
|
65076
65081
|
'show-in-privacy-center': t.BooleanC; /** The options when type is single or multi select */
|
|
65077
65082
|
options: t.ArrayC<t.TypeC<{
|
|
65078
65083
|
/** Title of option value */title: t.StringC; /** API slug */
|
|
@@ -122734,9 +122739,11 @@ declare const TranscendInput: t.PartialC<{
|
|
|
122734
122739
|
BOOLEAN: unknown;
|
|
122735
122740
|
}>; /** The title of the preference topic */
|
|
122736
122741
|
title: t.StringC; /** The description of the preference topic */
|
|
122737
|
-
description: t.StringC;
|
|
122742
|
+
description: t.StringC; /** API slug for the preference topic (PascalCase; alphabetical letters only) */
|
|
122743
|
+
slug: t.StringC;
|
|
122738
122744
|
}>, t.PartialC<{
|
|
122739
|
-
/**
|
|
122745
|
+
/** Hex color for the preference topic (pull-only; not writable via CLI push today) */color: t.StringC; /** Default value */
|
|
122746
|
+
'default-configuration': t.StringC; /** Whether the preference topic is shown in privacy center */
|
|
122740
122747
|
'show-in-privacy-center': t.BooleanC; /** The options when type is single or multi select */
|
|
122741
122748
|
options: t.ArrayC<t.TypeC<{
|
|
122742
122749
|
/** Title of option value */title: t.StringC; /** API slug */
|
|
@@ -128157,6 +128164,13 @@ declare const TranscendInput: t.PartialC<{
|
|
|
128157
128164
|
plaintextContext: t.StringC; /** The custom title of the data silo results */
|
|
128158
128165
|
title: t.UnionC<[t.StringC, t.NullC]>;
|
|
128159
128166
|
}>]>>;
|
|
128167
|
+
/**
|
|
128168
|
+
* Preference management options for multi and single selects
|
|
128169
|
+
*/
|
|
128170
|
+
'preference-options': t.ArrayC<t.TypeC<{
|
|
128171
|
+
/** Title of option value */title: t.StringC; /** API slug */
|
|
128172
|
+
slug: t.StringC;
|
|
128173
|
+
}>>;
|
|
128160
128174
|
}>;
|
|
128161
128175
|
/** Type override */
|
|
128162
128176
|
type TranscendInput = t.TypeOf<typeof TranscendInput>;
|
|
@@ -128417,6 +128431,7 @@ declare enum TranscendPullResource {
|
|
|
128417
128431
|
Assessments = "assessments",
|
|
128418
128432
|
AssessmentTemplates = "assessmentTemplates",
|
|
128419
128433
|
Purposes = "purposes",
|
|
128434
|
+
PreferenceOptions = "preferenceOptions",
|
|
128420
128435
|
SystemDiscovery = "systemDiscovery"
|
|
128421
128436
|
}
|
|
128422
128437
|
/**
|
|
@@ -128493,19 +128508,23 @@ declare function writeTranscendYaml(filePath: string, input: TranscendInput): vo
|
|
|
128493
128508
|
* @param input - The yml input
|
|
128494
128509
|
* @param client - GraphQL client
|
|
128495
128510
|
* @param pageSize - Page size
|
|
128496
|
-
* @returns
|
|
128511
|
+
* @returns Structured sync result with per-resource errors
|
|
128497
128512
|
*/
|
|
128498
128513
|
declare function syncConfigurationToTranscend(input: TranscendInput, client: GraphQLClient, {
|
|
128499
128514
|
pageSize,
|
|
128500
128515
|
publishToPrivacyCenter,
|
|
128501
128516
|
classifyService,
|
|
128502
|
-
deleteExtraAttributeValues
|
|
128517
|
+
deleteExtraAttributeValues,
|
|
128518
|
+
logger: syncLogger,
|
|
128519
|
+
warnings
|
|
128503
128520
|
}: {
|
|
128504
128521
|
/** Page size */pageSize?: number; /** When true, skip publishing to privacy center */
|
|
128505
128522
|
publishToPrivacyCenter?: boolean; /** When true, delete any attributes being synced up */
|
|
128506
128523
|
deleteExtraAttributeValues?: boolean; /** classify data flow service if missing */
|
|
128507
|
-
classifyService?: boolean;
|
|
128508
|
-
|
|
128524
|
+
classifyService?: boolean; /** Optional logger (e.g. collecting logger for MCP debug responses) */
|
|
128525
|
+
logger?: Logger; /** Non-fatal warnings to include in the result */
|
|
128526
|
+
warnings?: string[];
|
|
128527
|
+
}): Promise<SyncResult>;
|
|
128509
128528
|
//#endregion
|
|
128510
128529
|
//#region src/lib/mergeTranscendInputs.d.ts
|
|
128511
128530
|
/**
|