@transcend-io/cli 10.18.0 → 10.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -4
- package/dist/{app-BK2A6qdG.mjs → app-CoGyH0b1.mjs} +18 -18
- package/dist/{app-BK2A6qdG.mjs.map → app-CoGyH0b1.mjs.map} +1 -1
- package/dist/{approvePrivacyRequests-Cm24QYbH.mjs → approvePrivacyRequests-u7aJwb_X.mjs} +2 -2
- package/dist/{approvePrivacyRequests-Cm24QYbH.mjs.map → approvePrivacyRequests-u7aJwb_X.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-wKJUpdxN.mjs → buildExamples-BTZy8qpK.mjs} +2 -2
- package/dist/{buildExamples-wKJUpdxN.mjs.map → buildExamples-BTZy8qpK.mjs.map} +1 -1
- package/dist/{buildXdiSyncEndpoint-Bfm09sxE.mjs → buildXdiSyncEndpoint-CHPxc0Om.mjs} +2 -2
- package/dist/{buildXdiSyncEndpoint-Bfm09sxE.mjs.map → buildXdiSyncEndpoint-CHPxc0Om.mjs.map} +1 -1
- package/dist/{bulkRestartRequests-kE7DeCH8.mjs → bulkRestartRequests-BKT_Ys4F.mjs} +2 -2
- package/dist/{bulkRestartRequests-kE7DeCH8.mjs.map → bulkRestartRequests-BKT_Ys4F.mjs.map} +1 -1
- package/dist/{bulkRetryEnrichers-Btjk-K5s.mjs → bulkRetryEnrichers-CY8v2E38.mjs} +2 -2
- package/dist/{bulkRetryEnrichers-Btjk-K5s.mjs.map → bulkRetryEnrichers-CY8v2E38.mjs.map} +1 -1
- package/dist/{cancelPrivacyRequests-9rB0d3ac.mjs → cancelPrivacyRequests-BprOJ-TF.mjs} +2 -2
- package/dist/{cancelPrivacyRequests-9rB0d3ac.mjs.map → cancelPrivacyRequests-BprOJ-TF.mjs.map} +1 -1
- package/dist/codecs-CfHvcMSL.mjs +2 -0
- package/dist/codecs-CfHvcMSL.mjs.map +1 -0
- package/dist/{command-pJ-HQbPw.mjs → command-CMUZwJ0Y.mjs} +2 -2
- package/dist/{command-pJ-HQbPw.mjs.map → command-CMUZwJ0Y.mjs.map} +1 -1
- package/dist/constants-DhKT1_p8.mjs +2 -0
- package/dist/constants-DhKT1_p8.mjs.map +1 -0
- package/dist/{createExtraKeyHandler-XdmogH1d.mjs → createExtraKeyHandler-ogZXUqeP.mjs} +2 -2
- package/dist/{createExtraKeyHandler-XdmogH1d.mjs.map → createExtraKeyHandler-ogZXUqeP.mjs.map} +1 -1
- package/dist/{downloadPrivacyRequestFiles-Sknr1FGb.mjs → downloadPrivacyRequestFiles-BJbYewLs.mjs} +2 -2
- package/dist/{downloadPrivacyRequestFiles-Sknr1FGb.mjs.map → downloadPrivacyRequestFiles-BJbYewLs.mjs.map} +1 -1
- package/dist/{enums-mAXnon_I.mjs → enums-D53y231X.mjs} +2 -2
- package/dist/enums-D53y231X.mjs.map +1 -0
- package/dist/{generateCrossAccountApiKeys-Cx0ryS7R.mjs → generateCrossAccountApiKeys-BcDz9wXm.mjs} +2 -2
- package/dist/{generateCrossAccountApiKeys-Cx0ryS7R.mjs.map → generateCrossAccountApiKeys-BcDz9wXm.mjs.map} +1 -1
- package/dist/{impl-CE2r1YjC2.mjs → impl-1_z8b7dq2.mjs} +2 -2
- package/dist/{impl-CE2r1YjC2.mjs.map → impl-1_z8b7dq2.mjs.map} +1 -1
- package/dist/{impl-Cf0ilMtY.mjs → impl-8tbjF3a8.mjs} +2 -2
- package/dist/{impl-Cf0ilMtY.mjs.map → impl-8tbjF3a8.mjs.map} +1 -1
- package/dist/{impl-CaRcUBJW.mjs → impl-8tcxiruu.mjs} +2 -2
- package/dist/{impl-CaRcUBJW.mjs.map → impl-8tcxiruu.mjs.map} +1 -1
- package/dist/{impl-BhSv0Rt4.mjs → impl-B-oBrTZH.mjs} +2 -2
- package/dist/{impl-BhSv0Rt4.mjs.map → impl-B-oBrTZH.mjs.map} +1 -1
- package/dist/{impl-CV8ZUJpM2.mjs → impl-B8VvtKqK2.mjs} +2 -2
- package/dist/{impl-CV8ZUJpM2.mjs.map → impl-B8VvtKqK2.mjs.map} +1 -1
- package/dist/{impl-CtgTs2rf.mjs → impl-BCPzfDOr.mjs} +2 -2
- package/dist/{impl-CtgTs2rf.mjs.map → impl-BCPzfDOr.mjs.map} +1 -1
- package/dist/{impl-DYM8usyf.mjs → impl-BCTorB3_.mjs} +2 -2
- package/dist/{impl-DYM8usyf.mjs.map → impl-BCTorB3_.mjs.map} +1 -1
- package/dist/{impl-CYEjn9-f2.mjs → impl-BGPo1v0n2.mjs} +2 -2
- package/dist/{impl-CYEjn9-f2.mjs.map → impl-BGPo1v0n2.mjs.map} +1 -1
- package/dist/{impl-CE8Y3v0F.mjs → impl-BHIrjYvz.mjs} +2 -2
- package/dist/{impl-CE8Y3v0F.mjs.map → impl-BHIrjYvz.mjs.map} +1 -1
- package/dist/{impl-TccXt92R.mjs → impl-BL2crkB5.mjs} +2 -2
- package/dist/{impl-TccXt92R.mjs.map → impl-BL2crkB5.mjs.map} +1 -1
- package/dist/{impl-DHfHeId5.mjs → impl-BSZm5vDL.mjs} +2 -2
- package/dist/{impl-DHfHeId5.mjs.map → impl-BSZm5vDL.mjs.map} +1 -1
- package/dist/{impl-DVAcEvPM2.mjs → impl-BYsj7qu_2.mjs} +2 -2
- package/dist/{impl-DVAcEvPM2.mjs.map → impl-BYsj7qu_2.mjs.map} +1 -1
- package/dist/{impl-Al6BRaZv.mjs → impl-BZMvZ-H5.mjs} +2 -2
- package/dist/{impl-Al6BRaZv.mjs.map → impl-BZMvZ-H5.mjs.map} +1 -1
- package/dist/{impl-DWt1-1WC.mjs → impl-BeQ3_Wfg.mjs} +2 -2
- package/dist/{impl-DWt1-1WC.mjs.map → impl-BeQ3_Wfg.mjs.map} +1 -1
- package/dist/{impl-CDhdTP82.mjs → impl-BfrfvL5l.mjs} +2 -2
- package/dist/{impl-CDhdTP82.mjs.map → impl-BfrfvL5l.mjs.map} +1 -1
- package/dist/{impl-DhLDaqNH.mjs → impl-CFIr2tjA.mjs} +2 -2
- package/dist/{impl-DhLDaqNH.mjs.map → impl-CFIr2tjA.mjs.map} +1 -1
- package/dist/{impl-CZLMR9_o.mjs → impl-CGOsmCm1.mjs} +2 -2
- package/dist/{impl-CZLMR9_o.mjs.map → impl-CGOsmCm1.mjs.map} +1 -1
- package/dist/{impl-CkHIOElC.mjs → impl-CIp_3y6X.mjs} +2 -2
- package/dist/{impl-CkHIOElC.mjs.map → impl-CIp_3y6X.mjs.map} +1 -1
- package/dist/{impl-BAwyizeI.mjs → impl-CSnOATm5.mjs} +2 -2
- package/dist/{impl-BAwyizeI.mjs.map → impl-CSnOATm5.mjs.map} +1 -1
- package/dist/{impl-CDxkGkel.mjs → impl-CfOyPYaV.mjs} +2 -2
- package/dist/{impl-CDxkGkel.mjs.map → impl-CfOyPYaV.mjs.map} +1 -1
- package/dist/{impl-CMY9_nL0.mjs → impl-Cgq7_BzZ.mjs} +2 -2
- package/dist/{impl-CMY9_nL0.mjs.map → impl-Cgq7_BzZ.mjs.map} +1 -1
- package/dist/{impl-D37m-KH_.mjs → impl-Cv1a2Pae.mjs} +2 -2
- package/dist/{impl-D37m-KH_.mjs.map → impl-Cv1a2Pae.mjs.map} +1 -1
- package/dist/{impl-C2A-7CCE2.mjs → impl-CyComgJC2.mjs} +2 -2
- package/dist/{impl-C2A-7CCE2.mjs.map → impl-CyComgJC2.mjs.map} +1 -1
- package/dist/{impl-DSHZ8cw-.mjs → impl-CzWXCLm6.mjs} +2 -2
- package/dist/{impl-DSHZ8cw-.mjs.map → impl-CzWXCLm6.mjs.map} +1 -1
- package/dist/{impl-Dk8ALjBa2.mjs → impl-D42DnT_a2.mjs} +2 -2
- package/dist/{impl-Dk8ALjBa2.mjs.map → impl-D42DnT_a2.mjs.map} +1 -1
- package/dist/{impl-DoLi7ouF.mjs → impl-D9KXJOIg.mjs} +2 -2
- package/dist/{impl-DoLi7ouF.mjs.map → impl-D9KXJOIg.mjs.map} +1 -1
- package/dist/{impl-CAjSSYOf.mjs → impl-DFhURh_H.mjs} +2 -2
- package/dist/{impl-CAjSSYOf.mjs.map → impl-DFhURh_H.mjs.map} +1 -1
- package/dist/{impl-C7qHfIcx2.mjs → impl-DckqZlHS2.mjs} +2 -2
- package/dist/{impl-C7qHfIcx2.mjs.map → impl-DckqZlHS2.mjs.map} +1 -1
- package/dist/{impl-BR2KAlF-.mjs → impl-DeIo2HyV.mjs} +2 -2
- package/dist/{impl-BR2KAlF-.mjs.map → impl-DeIo2HyV.mjs.map} +1 -1
- package/dist/{impl-CfLCStH0.mjs → impl-DsmP1Uj_.mjs} +2 -2
- package/dist/{impl-CfLCStH0.mjs.map → impl-DsmP1Uj_.mjs.map} +1 -1
- package/dist/{impl-DUGoj_7M.mjs → impl-HJCx46F6.mjs} +2 -2
- package/dist/{impl-DUGoj_7M.mjs.map → impl-HJCx46F6.mjs.map} +1 -1
- package/dist/{impl-Aldb1uGI2.mjs → impl-cOqkyYd32.mjs} +2 -2
- package/dist/{impl-Aldb1uGI2.mjs.map → impl-cOqkyYd32.mjs.map} +1 -1
- package/dist/{impl-cbKOCJZ5.mjs → impl-lMY6fT6G.mjs} +2 -2
- package/dist/{impl-cbKOCJZ5.mjs.map → impl-lMY6fT6G.mjs.map} +1 -1
- package/dist/{impl-CQidV4Ed.mjs → impl-p4Up14kP.mjs} +2 -2
- package/dist/{impl-CQidV4Ed.mjs.map → impl-p4Up14kP.mjs.map} +1 -1
- package/dist/{impl-C5gN-WIS.mjs → impl-pTOz00yC.mjs} +2 -2
- package/dist/{impl-C5gN-WIS.mjs.map → impl-pTOz00yC.mjs.map} +1 -1
- package/dist/{impl-BcN3aYTh.mjs → impl-poG1QFx1.mjs} +2 -2
- package/dist/{impl-BcN3aYTh.mjs.map → impl-poG1QFx1.mjs.map} +1 -1
- package/dist/{impl-B3jtMu4u.mjs → impl-qexLI_cv.mjs} +2 -2
- package/dist/{impl-B3jtMu4u.mjs.map → impl-qexLI_cv.mjs.map} +1 -1
- package/dist/{impl-Bl2wbGhc2.mjs → impl-tec4fZTx2.mjs} +2 -2
- package/dist/{impl-Bl2wbGhc2.mjs.map → impl-tec4fZTx2.mjs.map} +1 -1
- package/dist/{impl-Cy4r4CTO.mjs → impl-umhvV4Zo.mjs} +2 -2
- package/dist/{impl-Cy4r4CTO.mjs.map → impl-umhvV4Zo.mjs.map} +1 -1
- package/dist/index.d.mts +22288 -633
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +3 -3
- package/dist/index.mjs.map +1 -1
- package/dist/{markRequestDataSiloIdsCompleted-DusvJkVf.mjs → markRequestDataSiloIdsCompleted-BuVxvSrw.mjs} +2 -2
- package/dist/{markRequestDataSiloIdsCompleted-DusvJkVf.mjs.map → markRequestDataSiloIdsCompleted-BuVxvSrw.mjs.map} +1 -1
- package/dist/{markSilentPrivacyRequests-De6Qnsph.mjs → markSilentPrivacyRequests-CgK-D7-n.mjs} +2 -2
- package/dist/{markSilentPrivacyRequests-De6Qnsph.mjs.map → markSilentPrivacyRequests-CgK-D7-n.mjs.map} +1 -1
- package/dist/{notifyPrivacyRequestsAdditionalTime-DzY_0Bp4.mjs → notifyPrivacyRequestsAdditionalTime-DIixk5bl.mjs} +2 -2
- package/dist/{notifyPrivacyRequestsAdditionalTime-DzY_0Bp4.mjs.map → notifyPrivacyRequestsAdditionalTime-DIixk5bl.mjs.map} +1 -1
- package/dist/parseVariablesFromString-C2SbrKX5.mjs +3 -0
- package/dist/parseVariablesFromString-C2SbrKX5.mjs.map +1 -0
- package/dist/{pullChunkedCustomSiloOutstandingIdentifiers-T7il7bHx.mjs → pullChunkedCustomSiloOutstandingIdentifiers-Le9YffBH.mjs} +2 -2
- package/dist/{pullChunkedCustomSiloOutstandingIdentifiers-T7il7bHx.mjs.map → pullChunkedCustomSiloOutstandingIdentifiers-Le9YffBH.mjs.map} +1 -1
- package/dist/{pullManualEnrichmentIdentifiersToCsv-CLIvx0xw.mjs → pullManualEnrichmentIdentifiersToCsv-DfxeelCg.mjs} +2 -2
- package/dist/{pullManualEnrichmentIdentifiersToCsv-CLIvx0xw.mjs.map → pullManualEnrichmentIdentifiersToCsv-DfxeelCg.mjs.map} +1 -1
- package/dist/pullTranscendConfiguration-B8mxJCi7.mjs +58 -0
- package/dist/pullTranscendConfiguration-B8mxJCi7.mjs.map +1 -0
- package/dist/{pushCronIdentifiersFromCsv-COAjK5ll.mjs → pushCronIdentifiersFromCsv-3QfEmXle.mjs} +2 -2
- package/dist/{pushCronIdentifiersFromCsv-COAjK5ll.mjs.map → pushCronIdentifiersFromCsv-3QfEmXle.mjs.map} +1 -1
- package/dist/{pushManualEnrichmentIdentifiersFromCsv-BOFhSX-Q.mjs → pushManualEnrichmentIdentifiersFromCsv-CVN2IgsU.mjs} +2 -2
- package/dist/{pushManualEnrichmentIdentifiersFromCsv-BOFhSX-Q.mjs.map → pushManualEnrichmentIdentifiersFromCsv-CVN2IgsU.mjs.map} +1 -1
- package/dist/{readTranscendYaml-DXGNTxJE.mjs → readTranscendYaml-BiOgzaYR.mjs} +2 -2
- package/dist/{readTranscendYaml-DXGNTxJE.mjs.map → readTranscendYaml-BiOgzaYR.mjs.map} +1 -1
- package/dist/{removeUnverifiedRequestIdentifiers-DMnqAEbS.mjs → removeUnverifiedRequestIdentifiers-XDX2YsXr.mjs} +2 -2
- package/dist/{removeUnverifiedRequestIdentifiers-DMnqAEbS.mjs.map → removeUnverifiedRequestIdentifiers-XDX2YsXr.mjs.map} +1 -1
- package/dist/{retryRequestDataSilos-Xyd_QQFY.mjs → retryRequestDataSilos-B-3pcTlW.mjs} +2 -2
- package/dist/{retryRequestDataSilos-Xyd_QQFY.mjs.map → retryRequestDataSilos-B-3pcTlW.mjs.map} +1 -1
- package/dist/{skipPreflightJobs-C_bhgZP-.mjs → skipPreflightJobs-vbKqISnj.mjs} +2 -2
- package/dist/{skipPreflightJobs-C_bhgZP-.mjs.map → skipPreflightJobs-vbKqISnj.mjs.map} +1 -1
- package/dist/{skipRequestDataSilos-BoO59V2e.mjs → skipRequestDataSilos-ynE55J9O.mjs} +2 -2
- package/dist/{skipRequestDataSilos-BoO59V2e.mjs.map → skipRequestDataSilos-ynE55J9O.mjs.map} +1 -1
- package/dist/{streamPrivacyRequestsToCsv-DxcuclHD.mjs → streamPrivacyRequestsToCsv-CTqmCJmH.mjs} +2 -2
- package/dist/{streamPrivacyRequestsToCsv-DxcuclHD.mjs.map → streamPrivacyRequestsToCsv-CTqmCJmH.mjs.map} +1 -1
- package/dist/{updateConsentManagerVersionToLatest-4gvcHq1B.mjs → updateConsentManagerVersionToLatest-CBBKqf7a.mjs} +2 -2
- package/dist/{updateConsentManagerVersionToLatest-4gvcHq1B.mjs.map → updateConsentManagerVersionToLatest-CBBKqf7a.mjs.map} +1 -1
- package/dist/{uploadConsents-CNUePcp7.mjs → uploadConsents-B-GaCLnK.mjs} +2 -2
- package/dist/{uploadConsents-CNUePcp7.mjs.map → uploadConsents-B-GaCLnK.mjs.map} +1 -1
- package/dist/{uploadCookiesFromCsv-DtKT2trD.mjs → uploadCookiesFromCsv-s2L3iYBb.mjs} +2 -2
- package/dist/{uploadCookiesFromCsv-DtKT2trD.mjs.map → uploadCookiesFromCsv-s2L3iYBb.mjs.map} +1 -1
- package/dist/{uploadDataFlowsFromCsv-CbmavWRd.mjs → uploadDataFlowsFromCsv-D7mdw8pz.mjs} +2 -2
- package/dist/{uploadDataFlowsFromCsv-CbmavWRd.mjs.map → uploadDataFlowsFromCsv-D7mdw8pz.mjs.map} +1 -1
- package/dist/{uploadPrivacyRequestsFromCsv-CfyPdlfZ.mjs → uploadPrivacyRequestsFromCsv-BEx6GSd5.mjs} +2 -2
- package/dist/{uploadPrivacyRequestsFromCsv-CfyPdlfZ.mjs.map → uploadPrivacyRequestsFromCsv-BEx6GSd5.mjs.map} +1 -1
- package/dist/{validateTranscendAuth-k4ufmEQW.mjs → validateTranscendAuth-B_EFnL1A.mjs} +2 -2
- package/dist/{validateTranscendAuth-k4ufmEQW.mjs.map → validateTranscendAuth-B_EFnL1A.mjs.map} +1 -1
- package/package.json +4 -4
- package/dist/codecs-8Cq4qQpS.mjs +0 -2
- package/dist/codecs-8Cq4qQpS.mjs.map +0 -1
- package/dist/constants-CTOC-2La.mjs +0 -2
- package/dist/constants-CTOC-2La.mjs.map +0 -1
- package/dist/enums-mAXnon_I.mjs.map +0 -1
- package/dist/parseVariablesFromString-COw5Nayn.mjs +0 -3
- package/dist/parseVariablesFromString-COw5Nayn.mjs.map +0 -1
- package/dist/pullTranscendConfiguration-QBl16rBd.mjs +0 -58
- package/dist/pullTranscendConfiguration-QBl16rBd.mjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pullTranscendConfiguration-QBl16rBd.mjs","names":[],"sources":["../src/lib/graphql/gqls/assessmentTemplate.ts","../src/lib/graphql/fetchAllAssessmentTemplates.ts","../src/lib/graphql/pullTranscendConfiguration.ts"],"sourcesContent":["import { ASSESSMENT_SECTION_FIELDS } from '@transcend-io/sdk';\nimport { gql } from 'graphql-request';\n\n// TODO: https://transcend.height.app/T-27909 - enable optimizations\n// isExportCsv: true\n// useMaster: false\n// orderBy: [\n// { field: createdAt, direction: ASC }\n// { field: name, direction: ASC }\n// ]\nexport const ASSESSMENT_TEMPLATES = gql`\n query TranscendCliAssessmentTemplates(\n $first: Int!\n $offset: Int!\n $filterBy: AssessmentFormTemplateFiltersInput\n ) {\n assessmentFormTemplates(\n first: $first\n offset: $offset\n filterBy: $filterBy\n ) {\n nodes {\n id\n creator {\n id\n email\n name\n }\n lastEditor {\n id\n email\n name\n }\n title\n description\n status\n source\n parentId\n isLocked\n isArchived\n createdAt\n updatedAt\n retentionSchedule {\n id\n type\n durationDays\n operation\n createdAt\n updatedAt\n }\n assessmentEmailSet {\n id\n title\n description\n isDefault\n templates {\n id\n title\n }\n }\n sections {\n ${ASSESSMENT_SECTION_FIELDS}\n }\n }\n }\n }\n`;\n","import {\n AssessmentFormTemplateSource,\n AssessmentFormTemplateStatus,\n} from '@transcend-io/privacy-types';\nimport {\n makeGraphQLRequest,\n type AssessmentSection,\n type RetentionSchedule,\n type UserPreview,\n} from '@transcend-io/sdk';\nimport { GraphQLClient } from 'graphql-request';\n\nimport { logger } from '../../logger.js';\nimport { ASSESSMENT_TEMPLATES } from './gqls/index.js';\n\n/**\n * Represents an assessment template with various properties and metadata.\n */\nexport interface AssessmentTemplate {\n /** The ID of the assessment template */\n id: string;\n /** The user who created the assessment template */\n creator: UserPreview;\n /** The user who last edited the assessment template */\n lastEditor: UserPreview;\n /** The title of the assessment template */\n title: string;\n /** The description of the assessment template */\n description: string;\n /** The current status of the assessment template */\n status: AssessmentFormTemplateStatus;\n /** The source fo the form template */\n source: AssessmentFormTemplateSource;\n /** ID of parent template */\n parentId: string;\n /** Indicates if the assessment template is locked */\n isLocked: boolean;\n /** Indicates if the assessment template is archived */\n isArchived: boolean;\n /** The date when the assessment template was created */\n createdAt: string;\n /** The date when the assessment template was last updated */\n updatedAt: string;\n /** The retention schedule of the assessment template */\n retentionSchedule?: RetentionSchedule;\n /** The sections of the assessment template */\n sections: AssessmentSection[];\n}\n\nconst PAGE_SIZE = 20;\n\n/**\n * Fetch all assessment templates in the organization\n *\n * @param client - GraphQL client\n * @returns All assessment templates in the organization\n */\nexport async function fetchAllAssessmentTemplates(\n client: GraphQLClient,\n): Promise<AssessmentTemplate[]> {\n const assessmentTemplates: AssessmentTemplate[] = [];\n let offset = 0;\n\n let shouldContinue = false;\n do {\n const {\n assessmentFormTemplates: { nodes },\n } = await makeGraphQLRequest<{\n /** Templates */\n assessmentFormTemplates: {\n /** Nodes */\n nodes: AssessmentTemplate[];\n };\n }>(client, ASSESSMENT_TEMPLATES, {\n variables: { first: PAGE_SIZE, offset },\n logger,\n });\n assessmentTemplates.push(...nodes);\n offset += PAGE_SIZE;\n shouldContinue = nodes.length === PAGE_SIZE;\n } while (shouldContinue);\n\n return assessmentTemplates.sort((a, b) => a.title.localeCompare(b.title));\n}\n","import { LocaleValue } from '@transcend-io/internationalization';\nimport {\n RequestAction,\n ConsentTrackerStatus,\n ActionItemCode,\n RetentionType,\n PreferenceTopicType,\n type ConsentThemeInput,\n type ConsentVariantInput,\n} from '@transcend-io/privacy-types';\nimport {\n fetchAllActionItemCollections,\n fetchAllActionItems,\n fetchAllActions,\n fetchAllAgentFiles,\n fetchAllAgentFunctions,\n fetchAllAgents,\n fetchAllAssessments,\n fetchAllAttributes,\n fetchAllBusinessEntities,\n fetchAllCookies,\n fetchAllDataCategories,\n fetchAllDataFlows,\n fetchAllPolicies,\n fetchAllPrivacyCenters,\n fetchAllProcessingPurposes,\n fetchAllSiloDiscoveryResults,\n fetchAllTemplates,\n fetchConsentManager,\n fetchConsentManagerExperiences,\n fetchConsentVariants,\n fetchConsentThemes,\n fetchConsentManagerTheme,\n fetchAllEnrichers,\n fetchAllIdentifiers,\n fetchAllMessages,\n fetchAllPromptGroups,\n fetchAllPromptPartials,\n fetchAllProcessingActivities,\n fetchAllPrompts,\n fetchAllPurposesAndPreferences,\n fetchAllPreferenceOptionValues,\n fetchPartitions,\n fetchAllTeams,\n fetchAllVendors,\n fetchApiKeys,\n formatAttributeValues,\n formatRegions,\n parseAssessmentDisplayLogic,\n parseAssessmentRiskLogic,\n convertToDataSubjectAllowlist,\n fetchAllDataSubjects,\n fetchEnrichedDataSilos,\n type AssessmentRule,\n} from '@transcend-io/sdk';\nimport colors from 'colors';\nimport { GraphQLClient } from 'graphql-request';\nimport { flatten, keyBy, mapValues } from 'lodash-es';\n\n/* eslint-disable max-lines */\nimport {\n TranscendInput,\n ApiKeyInput,\n DataSiloInput,\n AttributeInput,\n ActionInput,\n IdentifierInput,\n BusinessEntityInput,\n EnricherInput,\n PromptGroupInput,\n DataFlowInput,\n PromptPartialInput,\n DataSubjectInput,\n CookieInput,\n PromptInput,\n DatapointInput,\n FieldInput,\n ProcessingPurposeInput,\n ProcessingActivityInput,\n DataCategoryInput,\n VendorInput,\n AgentFileInput,\n AgentFunctionInput,\n AgentInput,\n PolicyInput,\n IntlMessageInput,\n ActionItemInput,\n TeamInput,\n ActionItemCollectionInput,\n AssessmentInput,\n AssessmentTemplateInput,\n AssessmentSectionInput,\n AssessmentSectionQuestionInput,\n RiskLogicInput,\n ConsentPurpose,\n ConsentPreferenceTopic,\n ConsentPreferenceTopicOptionValue,\n type SiloDiscoveryResultInput,\n} from '../../codecs.js';\nimport { TranscendPullResource } from '../../enums.js';\nimport { logger } from '../../logger.js';\nimport { fetchAllAssessmentTemplates } from './fetchAllAssessmentTemplates.js';\n\nexport const DEFAULT_TRANSCEND_PULL_RESOURCES = [\n TranscendPullResource.DataSilos,\n TranscendPullResource.Enrichers,\n TranscendPullResource.Templates,\n TranscendPullResource.ApiKeys,\n];\n\nexport interface TranscendPullConfigurationInput {\n /** Page size */\n pageSize: number;\n /** Enable debug logs */\n debug: boolean;\n /** The data silo IDs to sync. If empty list, pull all. */\n dataSiloIds: string[];\n /** Resources to pull in */\n resources?: TranscendPullResource[];\n /** The data silo types to sync.If empty list, pull all. */\n integrationNames: string[];\n /** The tracker statuses to pull */\n trackerStatuses?: ConsentTrackerStatus[];\n /** Skip fetching of datapoints */\n skipDatapoints?: boolean;\n /** Skip fetching of subdatapoints */\n skipSubDatapoints?: boolean;\n /** When true, metadata around guessed data categories should be included */\n includeGuessedCategories?: boolean;\n}\n\n/**\n * Pull a yaml configuration from Transcend\n *\n * @param client - GraphQL client\n * @param dataSiloIds - The data silos to sync. If empty list, pull all.\n * @returns The configuration\n */\nexport async function pullTranscendConfiguration(\n client: GraphQLClient,\n {\n dataSiloIds,\n integrationNames,\n debug,\n resources = DEFAULT_TRANSCEND_PULL_RESOURCES,\n pageSize,\n skipDatapoints,\n includeGuessedCategories,\n skipSubDatapoints,\n trackerStatuses = Object.values(ConsentTrackerStatus),\n }: TranscendPullConfigurationInput,\n): Promise<TranscendInput> {\n if (dataSiloIds.length > 0 && integrationNames.length > 0) {\n throw new Error('Only 1 of integrationNames OR dataSiloIds can be provided');\n }\n\n logger.info(colors.magenta(`Fetching data with page size ${pageSize}...`));\n\n // Fetch all data, but only conditional fetch data that is requested\n const [\n dataSubjects,\n apiKeyTitleMap,\n dataSilos,\n enrichers,\n dataFlows,\n cookies,\n attributes,\n templates,\n identifiers,\n actions,\n businessEntities,\n processingActivities,\n consentManager,\n consentManagerExperiences,\n consentVariants,\n consentThemes,\n prompts,\n promptPartials,\n promptGroups,\n agents,\n agentFunctions,\n agentFiles,\n vendors,\n dataCategories,\n processingPurposes,\n actionItems,\n actionItemCollections,\n teams,\n policies,\n privacyCenters,\n messages,\n partitions,\n assessments,\n assessmentTemplates,\n purposes,\n preferenceOptionValues,\n siloDiscoveryResults,\n ] = await Promise.all([\n // Grab all data subjects in the organization\n resources.includes(TranscendPullResource.DataSilos) ||\n resources.includes(TranscendPullResource.DataSubjects)\n ? fetchAllDataSubjects(client, { logger })\n : [],\n // Grab API keys\n resources.includes(TranscendPullResource.ApiKeys)\n ? fetchApiKeys(client, { fetchAll: true, logger })\n : [],\n // Fetch the data silos\n resources.includes(TranscendPullResource.DataSilos)\n ? fetchEnrichedDataSilos(client, {\n ids: dataSiloIds,\n integrationNames,\n pageSize,\n debug,\n includeGuessedCategories,\n skipDatapoints,\n skipSubDatapoints,\n logger,\n })\n : [],\n // Fetch enrichers\n resources.includes(TranscendPullResource.Enrichers)\n ? fetchAllEnrichers(client, { logger })\n : [],\n // Fetch data flows\n resources.includes(TranscendPullResource.DataFlows)\n ? [\n ...(trackerStatuses.includes(ConsentTrackerStatus.Live)\n ? await fetchAllDataFlows(client, {\n logger,\n filterBy: { status: ConsentTrackerStatus.Live },\n })\n : []),\n ...(trackerStatuses.includes(ConsentTrackerStatus.NeedsReview)\n ? await fetchAllDataFlows(client, {\n logger,\n filterBy: { status: ConsentTrackerStatus.NeedsReview },\n })\n : []),\n ]\n : [],\n // Fetch data flows\n resources.includes(TranscendPullResource.Cookies)\n ? [\n ...(trackerStatuses.includes(ConsentTrackerStatus.Live)\n ? await fetchAllCookies(client, {\n logger,\n filterBy: { status: ConsentTrackerStatus.Live },\n })\n : []),\n ...(trackerStatuses.includes(ConsentTrackerStatus.NeedsReview)\n ? await fetchAllCookies(client, {\n logger,\n filterBy: { status: ConsentTrackerStatus.NeedsReview },\n })\n : []),\n ]\n : [],\n // Fetch attributes\n resources.includes(TranscendPullResource.Attributes)\n ? fetchAllAttributes(client, { logger })\n : [],\n // Fetch email templates\n resources.includes(TranscendPullResource.Templates)\n ? fetchAllTemplates(client, { logger })\n : [],\n // Fetch identifiers\n resources.includes(TranscendPullResource.Identifiers)\n ? fetchAllIdentifiers(client, { logger })\n : [],\n // Fetch actions\n resources.includes(TranscendPullResource.Actions) ? fetchAllActions(client, { logger }) : [],\n // Fetch business entities\n resources.includes(TranscendPullResource.BusinessEntities)\n ? fetchAllBusinessEntities(client, { logger })\n : [],\n // Fetch processing activities\n resources.includes(TranscendPullResource.ProcessingActivities)\n ? fetchAllProcessingActivities(client, { logger })\n : [],\n // Fetch consent manager\n resources.includes(TranscendPullResource.ConsentManager)\n ? fetchConsentManager(client, { logger })\n : undefined,\n // Fetch consent manager experiences\n resources.includes(TranscendPullResource.ConsentManager)\n ? fetchConsentManagerExperiences(client, { logger })\n : [],\n // Fetch consent manager consent variants\n resources.includes(TranscendPullResource.ConsentManager)\n ? fetchConsentVariants(client, { logger })\n : [],\n // Fetch consent manager consent themes\n resources.includes(TranscendPullResource.ConsentManager)\n ? fetchConsentThemes(client, { logger })\n : [],\n // Fetch prompts\n resources.includes(TranscendPullResource.Prompts) ? fetchAllPrompts(client, { logger }) : [],\n // Fetch promptPartials\n resources.includes(TranscendPullResource.PromptPartials)\n ? fetchAllPromptPartials(client, { logger })\n : [],\n // Fetch promptGroups\n resources.includes(TranscendPullResource.PromptGroups)\n ? fetchAllPromptGroups(client, { logger })\n : [],\n // Fetch agents\n resources.includes(TranscendPullResource.Agents) ? fetchAllAgents(client, { logger }) : [],\n // Fetch agentFunctions\n resources.includes(TranscendPullResource.AgentFunctions)\n ? fetchAllAgentFunctions(client, { logger })\n : [],\n // Fetch agentFiles\n resources.includes(TranscendPullResource.AgentFiles)\n ? fetchAllAgentFiles(client, { logger })\n : [],\n // Fetch vendors\n resources.includes(TranscendPullResource.Vendors) ? fetchAllVendors(client, { logger }) : [],\n // Fetch dataCategories\n resources.includes(TranscendPullResource.DataCategories)\n ? fetchAllDataCategories(client, { logger })\n : [],\n // Fetch dataCategories\n resources.includes(TranscendPullResource.ProcessingPurposes)\n ? fetchAllProcessingPurposes(client, { logger })\n : [],\n // Fetch actionItems\n resources.includes(TranscendPullResource.ActionItems)\n ? fetchAllActionItems(client, {\n logger,\n filterBy: { type: [ActionItemCode.Onboarding] },\n })\n : [],\n // Fetch actionItemCollections\n resources.includes(TranscendPullResource.ActionItemCollections)\n ? fetchAllActionItemCollections(client, { logger })\n : [],\n // Fetch teams\n resources.includes(TranscendPullResource.Teams) ? fetchAllTeams(client, { logger }) : [],\n // Fetch policies\n resources.includes(TranscendPullResource.Policies) ? fetchAllPolicies(client, { logger }) : [],\n // Fetch privacy centers\n resources.includes(TranscendPullResource.PrivacyCenters)\n ? fetchAllPrivacyCenters(client, { logger })\n : [],\n // Fetch messages\n resources.includes(TranscendPullResource.Messages) ? fetchAllMessages(client, { logger }) : [],\n // Fetch partitions\n resources.includes(TranscendPullResource.Partitions) ? fetchPartitions(client, { logger }) : [],\n // Fetch assessments\n resources.includes(TranscendPullResource.Assessments)\n ? fetchAllAssessments(client, { logger })\n : [],\n // Fetch assessmentTemplates\n resources.includes(TranscendPullResource.AssessmentTemplates)\n ? fetchAllAssessmentTemplates(client)\n : [],\n // Fetch purpose and preferences\n resources.includes(TranscendPullResource.Purposes)\n ? fetchAllPurposesAndPreferences(client, { logger })\n : [],\n resources.includes(TranscendPullResource.PreferenceOptions)\n ? fetchAllPreferenceOptionValues(client, { logger })\n : [],\n // Fetch silo discovery results\n resources.includes(TranscendPullResource.SystemDiscovery)\n ? fetchAllSiloDiscoveryResults(client, { logger })\n : [],\n ]);\n\n const consentManagerTheme =\n resources.includes(TranscendPullResource.ConsentManager) && consentManager\n ? await fetchConsentManagerTheme(client, {\n logger,\n filterBy: { airgapBundleId: consentManager.id },\n })\n : undefined;\n\n const result: TranscendInput = {};\n\n // Save API keys\n const apiKeyTitles = flatten(dataSilos.map(([{ apiKeys }]) => apiKeys.map(({ title }) => title)));\n const relevantApiKeys = Object.values(apiKeyTitleMap).filter(({ title }) =>\n resources.includes(TranscendPullResource.ApiKeys) ? true : apiKeyTitles.includes(title),\n );\n if (relevantApiKeys.length > 0 && resources.includes(TranscendPullResource.ApiKeys)) {\n result['api-keys'] = relevantApiKeys.map(\n ({ title }): ApiKeyInput => ({\n title,\n }),\n );\n }\n\n // Save Partitions\n if (partitions.length > 0 && resources.includes(TranscendPullResource.Partitions)) {\n result.partitions = partitions.map(({ name, partition }) => ({\n name,\n partition,\n }));\n }\n\n // Save Consent Manager\n if (consentManager && resources.includes(TranscendPullResource.ConsentManager)) {\n result['consent-manager'] = {\n bundleUrls: {\n TEST: consentManager.testBundleURL,\n PRODUCTION: consentManager.bundleURL,\n },\n domains: consentManager.configuration.domains || undefined,\n partition: consentManager.configuration.partition || undefined,\n consentPrecedence: consentManager.configuration.consentPrecedence || undefined,\n unknownRequestPolicy: consentManager.configuration.unknownRequestPolicy || undefined,\n unknownCookiePolicy: consentManager.configuration.unknownCookiePolicy || undefined,\n syncEndpoint: consentManager.configuration.syncEndpoint || undefined,\n telemetryPartitioning: consentManager.configuration.telemetryPartitioning || undefined,\n signedIabAgreement: consentManager.configuration.signedIabAgreement || undefined,\n // TODO: https://transcend.height.app/T-23919 - reconsider simpler yml shape\n syncGroups: consentManager.configuration.syncGroups || undefined,\n theme: !consentManagerTheme\n ? undefined\n : {\n primaryColor: consentManagerTheme.primaryColor || undefined,\n fontColor: consentManagerTheme.fontColor || undefined,\n privacyPolicy: consentManagerTheme.privacyPolicy || undefined,\n prompt: consentManagerTheme.prompt,\n },\n experiences: consentManagerExperiences.map((experience) => ({\n name: experience.name,\n displayName: experience.displayName || undefined,\n regions: experience.regions.map((region) => ({\n countrySubDivision: region.countrySubDivision || undefined,\n country: region.country || undefined,\n })),\n onConsentExpiry: experience.onConsentExpiry,\n consentExpiry: experience.consentExpiry,\n operator: experience.operator,\n displayPriority: experience.displayPriority,\n viewState: experience.viewState,\n purposes: experience.purposes.map((purpose) => ({\n trackingType: purpose.trackingType,\n })),\n optedOutPurposes: experience.optedOutPurposes.map((purpose) => ({\n trackingType: purpose.trackingType,\n })),\n browserLanguages: experience.browserLanguages,\n browserTimeZones: experience.browserTimeZones,\n consentUiVariantSlug: experience.consentUiVariant?.slug,\n })),\n consentVariants: consentVariants.map(\n (variant): ConsentVariantInput => ({\n id: variant.id,\n name: variant.name,\n slug: variant.slug,\n description: variant.description,\n configuration: JSON.stringify(variant.configuration),\n locales: variant.locales as LocaleValue[],\n status: variant.status,\n userFlow: variant.userFlow,\n themeSlug: variant.theme?.slug,\n }),\n ),\n consentThemes: consentThemes.map(\n (theme): ConsentThemeInput => ({\n id: theme.id,\n name: theme.name,\n slug: theme.slug,\n configuration: JSON.stringify(theme.configuration),\n }),\n ),\n };\n }\n\n // Save assessments\n if (assessments.length > 0 && resources.includes(TranscendPullResource.Assessments)) {\n result.assessments = assessments.map(\n ({\n title,\n assessmentGroup,\n sections,\n creator,\n description,\n status,\n assignees,\n externalAssignees,\n reviewers,\n isLocked,\n isArchived,\n isExternallyCreated,\n dueDate,\n createdAt,\n assignedAt,\n submittedAt,\n approvedAt,\n rejectedAt,\n titleIsInternal,\n retentionSchedule,\n attributeValues,\n resources,\n syncedRows,\n }): AssessmentInput => ({\n title,\n group: assessmentGroup.title,\n sections: sections.map(\n ({\n title,\n status,\n questions,\n assignees,\n isReviewed,\n externalAssignees,\n }): AssessmentSectionInput => ({\n title,\n status,\n questions: questions.map(\n ({\n title,\n type,\n subType,\n placeholder,\n description,\n isRequired,\n referenceId,\n displayLogic,\n riskLogic,\n riskCategories,\n riskFramework,\n answerOptions,\n selectedAnswers,\n allowedMimeTypes,\n allowSelectOther,\n syncModel,\n syncColumn,\n attributeKey,\n requireRiskEvaluation,\n requireRiskMatrixEvaluation,\n }): AssessmentSectionQuestionInput => {\n const displayLogicParsed = displayLogic\n ? parseAssessmentDisplayLogic(displayLogic)\n : undefined;\n return {\n title,\n type,\n 'sub-type': subType,\n placeholder,\n description,\n 'is-required': isRequired,\n 'reference-id': referenceId,\n 'display-logic':\n displayLogicParsed && Object.keys(displayLogicParsed).length > 0\n ? {\n action: displayLogicParsed.action!,\n rule: displayLogicParsed.rule\n ? {\n 'depends-on-question-reference-id':\n displayLogicParsed.rule.dependsOnQuestionReferenceId,\n 'comparison-operator': displayLogicParsed.rule.comparisonOperator,\n 'comparison-operands':\n // Safely access property with a check\n 'comparisonOperands' in displayLogicParsed.rule\n ? displayLogicParsed.rule.comparisonOperands\n : undefined,\n }\n : undefined,\n 'nested-rule': displayLogicParsed.nestedRule\n ? {\n 'logic-operator': displayLogicParsed.nestedRule.logicOperator,\n rules: (displayLogicParsed.nestedRule.rules || []).map(\n (rule: AssessmentRule) => ({\n 'depends-on-question-reference-id':\n rule.dependsOnQuestionReferenceId,\n 'comparison-operator': rule.comparisonOperator,\n 'comparison-operands':\n // Safely access property on the nested rule\n 'comparisonOperands' in rule\n ? rule.comparisonOperands\n : undefined,\n }),\n ),\n }\n : undefined,\n }\n : undefined,\n 'risk-logic': riskLogic.map((logic): RiskLogicInput => {\n const parsed = parseAssessmentRiskLogic(logic);\n return {\n 'risk-level': parsed.riskAssignment?.riskLevelId,\n 'comparison-operands': parsed.comparisonOperands,\n 'comparison-operator': parsed.comparisonOperator,\n };\n }),\n 'risk-categories': riskCategories.map(({ title }) => title),\n 'risk-framework': riskFramework?.title,\n 'answer-options': answerOptions.map(({ value }) => ({\n value,\n })),\n 'selected-answers': selectedAnswers.map(({ value }) => value),\n 'allowed-mime-types': allowedMimeTypes,\n 'allow-select-other': allowSelectOther,\n 'sync-model': syncModel || undefined,\n 'sync-column': syncColumn || undefined,\n 'attribute-key': attributeKey?.name,\n 'require-risk-evaluation': requireRiskEvaluation,\n 'require-risk-matrix-evaluation': requireRiskMatrixEvaluation,\n };\n },\n ),\n assignees: assignees.map(({ email }) => email),\n 'external-assignees': externalAssignees.map(({ email }) => email),\n 'is-reviewed': isReviewed,\n }),\n ),\n creator: creator?.email,\n description,\n status,\n assignees: assignees.map(({ email }) => email),\n 'external-assignees': externalAssignees.map(({ email }) => email),\n reviewers: reviewers.map(({ email }) => email),\n locked: isLocked,\n archived: isArchived,\n external: isExternallyCreated,\n 'title-is-internal': titleIsInternal,\n 'due-date': dueDate || undefined,\n 'created-at': createdAt || undefined,\n 'assigned-at': assignedAt || undefined,\n 'submitted-at': submittedAt || undefined,\n 'approved-at': approvedAt || undefined,\n 'rejected-at': rejectedAt || undefined,\n 'retention-schedule': retentionSchedule\n ? {\n type: retentionSchedule.type,\n 'duration-days': retentionSchedule.durationDays,\n operand: retentionSchedule.operation,\n }\n : undefined,\n attributes:\n attributeValues !== undefined && attributeValues.length > 0\n ? formatAttributeValues(attributeValues)\n : undefined,\n resources: resources.map(({ resourceType, title, name, category, type, purpose }) => ({\n type: resourceType,\n title: category\n ? `${category} - ${name}`\n : purpose\n ? `${purpose} - ${name}`\n : title || name || type || '',\n })),\n rows: syncedRows.map(({ resourceType, title, name, category, type, purpose }) => ({\n type: resourceType,\n title: category\n ? `${category} - ${name}`\n : purpose\n ? `${purpose} - ${name}`\n : title || name || type || '',\n })),\n }),\n );\n }\n\n // Save assessmentTemplates\n if (\n assessmentTemplates.length > 0 &&\n resources.includes(TranscendPullResource.AssessmentTemplates)\n ) {\n result['assessment-templates'] = assessmentTemplates.map(\n ({\n title,\n description,\n sections,\n status,\n source,\n creator,\n isLocked,\n isArchived,\n createdAt,\n retentionSchedule,\n }): AssessmentTemplateInput => ({\n title,\n description,\n sections: sections.map(\n ({ title, questions }): AssessmentSectionInput => ({\n title,\n questions: questions.map(\n ({\n title,\n type,\n subType,\n placeholder,\n description,\n isRequired,\n referenceId,\n displayLogic,\n riskLogic,\n riskCategories,\n riskFramework,\n answerOptions,\n allowedMimeTypes,\n allowSelectOther,\n syncModel,\n syncColumn,\n attributeKey,\n requireRiskEvaluation,\n requireRiskMatrixEvaluation,\n }): AssessmentSectionQuestionInput => {\n const displayLogicParsed = displayLogic\n ? parseAssessmentDisplayLogic(displayLogic)\n : undefined;\n return {\n title,\n type,\n 'sub-type': subType,\n placeholder,\n description,\n 'is-required': isRequired,\n 'reference-id': referenceId,\n 'display-logic':\n displayLogicParsed && Object.keys(displayLogicParsed).length > 0\n ? {\n action: displayLogicParsed.action!,\n rule: displayLogicParsed.rule\n ? {\n 'depends-on-question-reference-id':\n displayLogicParsed.rule.dependsOnQuestionReferenceId,\n 'comparison-operator': displayLogicParsed.rule.comparisonOperator,\n 'comparison-operands':\n // Safely access property with a check\n 'comparisonOperands' in displayLogicParsed.rule\n ? displayLogicParsed.rule.comparisonOperands\n : undefined,\n }\n : undefined,\n 'nested-rule': displayLogicParsed.nestedRule\n ? {\n 'logic-operator': displayLogicParsed.nestedRule.logicOperator,\n rules: (displayLogicParsed.nestedRule.rules || []).map(\n (rule: AssessmentRule) => ({\n 'depends-on-question-reference-id':\n rule.dependsOnQuestionReferenceId,\n 'comparison-operator': rule.comparisonOperator,\n 'comparison-operands':\n // Safely access property on the nested rule\n 'comparisonOperands' in rule\n ? rule.comparisonOperands\n : undefined,\n }),\n ),\n }\n : undefined,\n }\n : undefined,\n 'risk-logic': riskLogic.map((logic): RiskLogicInput => {\n const parsed = parseAssessmentRiskLogic(logic);\n return {\n 'risk-level': parsed.riskAssignment?.riskLevelId,\n 'risk-matrix-row': parsed.riskAssignment?.riskMatrixRowId,\n 'risk-matrix-column': parsed.riskAssignment?.riskMatrixColumnId,\n 'comparison-operands': parsed.comparisonOperands,\n 'comparison-operator': parsed.comparisonOperator,\n };\n }),\n 'risk-categories': riskCategories.map(({ title }) => title),\n 'risk-framework': riskFramework?.title,\n 'answer-options': answerOptions.map(({ value }) => ({\n value,\n })),\n 'allowed-mime-types': allowedMimeTypes,\n 'allow-select-other': allowSelectOther,\n 'sync-model': syncModel || undefined,\n 'sync-column': syncColumn || undefined,\n 'attribute-key': attributeKey?.name,\n 'require-risk-evaluation': requireRiskEvaluation,\n 'require-risk-matrix-evaluation': requireRiskMatrixEvaluation,\n };\n },\n ),\n }),\n ),\n status,\n source,\n creator: creator?.email,\n locked: isLocked,\n archived: isArchived,\n 'created-at': createdAt || undefined,\n 'retention-schedule': retentionSchedule\n ? {\n type: retentionSchedule.type,\n 'duration-days': retentionSchedule.durationDays,\n operand: retentionSchedule.operation,\n }\n : undefined,\n }),\n );\n }\n\n // Save Silo Discovery Results\n if (\n siloDiscoveryResults.length > 0 &&\n resources.includes(TranscendPullResource.SystemDiscovery)\n ) {\n result['system-discovery'] = siloDiscoveryResults.map(\n ({\n title,\n resourceId,\n suggestedCatalog: { title: suggestedCatalogTitle },\n plugin: {\n dataSilo: { title: dataSiloTitle },\n },\n country,\n countrySubDivision,\n plaintextContext,\n containsSensitiveData,\n status,\n }): SiloDiscoveryResultInput => ({\n title,\n resourceId,\n suggestedCatalog: suggestedCatalogTitle,\n plugin: dataSiloTitle,\n country: country || undefined,\n countrySubDivision: countrySubDivision || undefined,\n plaintextContext,\n containsSensitiveData,\n status,\n }),\n );\n }\n\n // Save prompts\n if (prompts.length > 0 && resources.includes(TranscendPullResource.Prompts)) {\n result.prompts = prompts.map(\n ({ title, content }): PromptInput => ({\n title,\n content,\n }),\n );\n }\n\n // Save promptPartials\n if (promptPartials.length > 0 && resources.includes(TranscendPullResource.PromptPartials)) {\n result['prompt-partials'] = promptPartials.map(\n ({ title, content }): PromptPartialInput => ({\n title,\n content,\n }),\n );\n }\n\n // Save promptGroups\n if (promptGroups.length > 0 && resources.includes(TranscendPullResource.PromptGroups)) {\n result['prompt-groups'] = promptGroups.map(\n ({ title, description, prompts }): PromptGroupInput => ({\n title,\n description,\n prompts: prompts.map(({ title }) => title),\n }),\n );\n }\n\n // Save teams\n if (teams.length > 0 && resources.includes(TranscendPullResource.Teams)) {\n result.teams = teams.map(\n ({\n name,\n description,\n ssoDepartment,\n ssoGroup,\n ssoTitle,\n users,\n scopes,\n parentTeam,\n }): TeamInput => ({\n name,\n description,\n 'sso-department': ssoDepartment || undefined,\n 'sso-group': ssoGroup || undefined,\n 'sso-title': ssoTitle || undefined,\n 'parent-team-name': parentTeam?.name,\n users: users.map(({ email }) => email),\n scopes: scopes.map(({ name }) => name),\n }),\n );\n }\n\n // Save Data Subjects\n if (dataSubjects.length > 0 && resources.includes(TranscendPullResource.DataSubjects)) {\n result['data-subjects'] = dataSubjects.map(\n ({ type, title, active, adminDashboardDefaultSilentMode, actions }): DataSubjectInput => ({\n type,\n title: title?.defaultMessage,\n active,\n adminDashboardDefaultSilentMode,\n actions: actions.map(({ type }) => type),\n }),\n );\n }\n\n // Save privacy policies\n if (policies.length > 0) {\n result.policies = policies.map(\n ({ title, versions, disabledLocales }): PolicyInput => ({\n title: title?.defaultMessage,\n content: versions?.[0]?.content?.defaultMessage,\n disabledLocales,\n }),\n );\n }\n\n // Save messages\n if (messages.length > 0) {\n result.messages = messages.map(\n ({ id, defaultMessage, targetReactIntlId, description, translations }): IntlMessageInput => ({\n id,\n defaultMessage,\n description,\n targetReactIntlId: targetReactIntlId || undefined,\n translations: translations.reduce(\n (acc, { locale, value }) => Object.assign(acc, { [locale]: value }),\n {} as Record<LocaleValue, string>,\n ),\n }),\n );\n }\n\n // Save privacy center\n if (privacyCenters.length > 0) {\n const privacyCenter = privacyCenters[0];\n result['privacy-center'] = {\n isDisabled: privacyCenter.isDisabled,\n showPrivacyRequestButton: privacyCenter.showPrivacyRequestButton,\n showPolicies: privacyCenter.showPolicies,\n showTrackingTechnologies: privacyCenter.showTrackingTechnologies,\n showCookies: privacyCenter.showCookies,\n showDataFlows: privacyCenter.showDataFlows,\n showConsentManager: privacyCenter.showConsentManager,\n showManageYourPrivacy: privacyCenter.showManageYourPrivacy,\n showMarketingPreferences: privacyCenter.showMarketingPreferences,\n locales: privacyCenter.locales,\n defaultLocale: privacyCenter.defaultLocale,\n preferBrowserDefaultLocale: privacyCenter.preferBrowserDefaultLocale,\n supportEmail: privacyCenter.supportEmail || undefined,\n replyToEmail: privacyCenter.replyToEmail || undefined,\n useNoReplyEmailAddress: privacyCenter.useNoReplyEmailAddress,\n useCustomEmailDomain: privacyCenter.useCustomEmailDomain,\n transformAccessReportJsonToCsv: privacyCenter.transformAccessReportJsonToCsv,\n theme: privacyCenter.theme,\n };\n }\n\n // Save business entities\n if (businessEntities.length > 0 && resources.includes(TranscendPullResource.BusinessEntities)) {\n result['business-entities'] = businessEntities.map(\n ({\n title,\n description,\n address,\n headquarterCountry,\n headquarterSubDivision,\n dataProtectionOfficerName,\n dataProtectionOfficerEmail,\n attributeValues,\n }): BusinessEntityInput => ({\n title,\n description: description || undefined,\n address: address || undefined,\n headquarterCountry: headquarterCountry || undefined,\n headquarterSubDivision: headquarterSubDivision || undefined,\n dataProtectionOfficerName: dataProtectionOfficerName || undefined,\n dataProtectionOfficerEmail: dataProtectionOfficerEmail || undefined,\n attributes:\n attributeValues !== undefined && attributeValues.length > 0\n ? formatAttributeValues(attributeValues)\n : undefined,\n }),\n );\n }\n\n // Save processing activities\n if (\n processingActivities.length > 0 &&\n resources.includes(TranscendPullResource.ProcessingActivities)\n ) {\n result['processing-activities'] = processingActivities.map(\n ({\n title,\n description,\n securityMeasureDetails,\n controllerships,\n storageRegions,\n transferRegions,\n retentionType,\n retentionPeriod,\n dataProtectionImpactAssessmentLink,\n dataProtectionImpactAssessmentStatus,\n attributeValues,\n dataSilos,\n dataSubjects,\n teams,\n owners,\n processingPurposeSubCategories,\n dataSubCategories,\n saaSCategories,\n }): ProcessingActivityInput => ({\n title,\n description,\n securityMeasureDetails: securityMeasureDetails ?? undefined,\n controllerships: controllerships.length > 0 ? controllerships : undefined,\n storageRegions: storageRegions.length > 0 ? formatRegions(storageRegions) : undefined,\n transferRegions: transferRegions.length > 0 ? formatRegions(transferRegions) : undefined,\n retentionType,\n retentionPeriod: retentionType === RetentionType.StatedPeriod ? retentionPeriod : undefined,\n dataProtectionImpactAssessmentLink: dataProtectionImpactAssessmentLink ?? undefined,\n dataProtectionImpactAssessmentStatus,\n attributes:\n attributeValues !== undefined && attributeValues.length > 0\n ? formatAttributeValues(attributeValues)\n : undefined,\n dataSiloTitles: dataSilos.length > 0 ? dataSilos.map(({ title }) => title) : undefined,\n dataSubjectTypes:\n dataSubjects.length > 0 ? dataSubjects.map(({ type }) => type) : undefined,\n teamNames: teams.length > 0 ? teams.map(({ name }) => name) : undefined,\n ownerEmails: owners.length > 0 ? owners.map(({ email }) => email) : undefined,\n processingSubPurposes:\n processingPurposeSubCategories.length > 0\n ? processingPurposeSubCategories.map(({ name, purpose }) => ({\n purpose,\n ...(name ? { name } : {}),\n }))\n : undefined,\n dataSubCategories:\n dataSubCategories.length > 0\n ? dataSubCategories.map(({ name, category }) => ({\n category,\n ...(name ? { name } : {}),\n }))\n : undefined,\n saaSCategories:\n saaSCategories.length > 0 ? saaSCategories.map(({ title }) => title) : undefined,\n }),\n );\n }\n\n // Save Actions\n if (actions.length > 0 && resources.includes(TranscendPullResource.Actions)) {\n result.actions = actions.map(\n ({\n type,\n skipSecondaryIfNoFiles,\n skipDownloadableStep,\n requiresReview,\n regionList,\n regionDetectionMethod,\n waitingPeriod,\n }): ActionInput => ({\n type,\n ...(type === RequestAction.Erasure\n ? {\n skipSecondaryIfNoFiles,\n skipDownloadableStep,\n }\n : {}),\n requiresReview,\n waitingPeriod,\n regionDetectionMethod,\n regionList: regionList.length > 0 ? regionList : undefined,\n }),\n );\n }\n\n // Save identifiers\n if (identifiers.length > 0 && resources.includes(TranscendPullResource.Identifiers)) {\n result.identifiers = identifiers.map(\n ({\n name,\n type,\n regex,\n selectOptions,\n privacyCenterVisibility,\n isRequiredInForm,\n placeholder,\n displayTitle,\n dataSubjects,\n displayDescription,\n displayOrder,\n isUniqueOnPreferenceStore,\n }): IdentifierInput => ({\n name,\n type,\n regex,\n selectOptions: selectOptions.length > 0 ? selectOptions : undefined,\n privacyCenterVisibility:\n privacyCenterVisibility.length > 0 ? privacyCenterVisibility : undefined,\n isRequiredInForm,\n placeholder: placeholder || undefined,\n dataSubjects: dataSubjects.length > 0 ? dataSubjects.map(({ type }) => type) : undefined,\n displayTitle: displayTitle?.defaultMessage,\n displayDescription: displayDescription?.defaultMessage,\n displayOrder,\n isUniqueOnPreferenceStore,\n }),\n );\n }\n\n // Save agents\n if (agents.length > 0 && resources.includes(TranscendPullResource.Agents)) {\n result.agents = agents.map(\n ({\n name,\n agentId,\n description,\n instructions,\n codeInterpreterEnabled,\n retrievalEnabled,\n prompt,\n largeLanguageModel,\n teams,\n owners,\n agentFunctions,\n agentFiles,\n }): AgentInput => ({\n name,\n agentId,\n description: description || undefined,\n instructions,\n codeInterpreterEnabled,\n retrievalEnabled,\n prompt: prompt?.title,\n 'large-language-model': {\n name: largeLanguageModel.name,\n client: largeLanguageModel.client,\n },\n teams: teams && teams.length > 0 ? teams.map(({ name }) => name) : undefined,\n owners: owners && owners.length > 0 ? owners.map(({ email }) => email) : undefined,\n 'agent-functions':\n agentFunctions && agentFunctions.length > 0\n ? agentFunctions.map(({ name }) => name)\n : undefined,\n 'agent-files':\n agentFiles && agentFiles.length > 0 ? agentFiles.map(({ name }) => name) : undefined,\n }),\n );\n }\n\n // Save action items\n if (actionItems.length > 0 && resources.includes(TranscendPullResource.ActionItems)) {\n result['action-items'] = actionItems.map(\n ({\n teams,\n users,\n customerExperienceActionItemIds: [customerExperienceActionItemId],\n dueDate,\n priority,\n resolved,\n collections,\n notes,\n link,\n title,\n type,\n attributeValues,\n }): ActionItemInput => ({\n teams: teams.map(({ name }) => name),\n users: users.map(({ email }) => email),\n dueDate: dueDate || undefined,\n title,\n notes,\n customerExperienceActionItemId,\n collections: collections.map(({ title }) => title),\n link,\n priority: priority || undefined,\n resolved,\n type,\n attributes:\n attributeValues !== undefined && attributeValues.length > 0\n ? formatAttributeValues(attributeValues)\n : undefined,\n }),\n );\n }\n\n // Save action item collections\n if (\n actionItemCollections.length > 0 &&\n resources.includes(TranscendPullResource.ActionItemCollections)\n ) {\n result['action-item-collections'] = actionItemCollections.map(\n ({ title, description, hidden, productLine }): ActionItemCollectionInput => ({\n title,\n description: description || undefined,\n hidden,\n productLine,\n }),\n );\n }\n\n // Save agent functions\n if (agentFunctions.length > 0 && resources.includes(TranscendPullResource.AgentFunctions)) {\n result['agent-functions'] = agentFunctions.map(\n ({ name, description, parameters }): AgentFunctionInput => ({\n name,\n description,\n parameters: JSON.stringify(parameters),\n }),\n );\n }\n\n // Save agent files\n if (agentFiles.length > 0 && resources.includes(TranscendPullResource.AgentFiles)) {\n result['agent-files'] = agentFiles.map(\n ({ name, description, fileId, size, purpose }): AgentFileInput => ({\n name,\n description,\n fileId,\n size,\n purpose,\n }),\n );\n }\n\n // Save vendors\n if (vendors.length > 0 && resources.includes(TranscendPullResource.Vendors)) {\n result.vendors = vendors.map(\n ({\n title,\n description,\n dataProcessingAgreementLink,\n contactName,\n contactPhone,\n address,\n headquarterCountry,\n headquarterSubDivision,\n websiteUrl,\n businessEntity,\n teams,\n owners,\n attributeValues,\n }): VendorInput => ({\n title,\n description: description || undefined,\n dataProcessingAgreementLink: dataProcessingAgreementLink || undefined,\n contactName: contactName || undefined,\n contactPhone: contactPhone || undefined,\n address: address || undefined,\n headquarterCountry: headquarterCountry || undefined,\n headquarterSubDivision: headquarterSubDivision || undefined,\n websiteUrl: websiteUrl || undefined,\n businessEntity: businessEntity?.title,\n teams: teams && teams.length > 0 ? teams.map(({ name }) => name) : undefined,\n owners: owners && owners.length > 0 ? owners.map(({ email }) => email) : undefined,\n attributes:\n attributeValues !== undefined && attributeValues.length > 0\n ? formatAttributeValues(attributeValues)\n : undefined,\n }),\n );\n }\n\n // Save data categories\n if (dataCategories.length > 0 && resources.includes(TranscendPullResource.DataCategories)) {\n result['data-categories'] = dataCategories.map(\n ({\n name,\n category,\n description,\n regex,\n owners,\n teams,\n attributeValues,\n }): DataCategoryInput => ({\n name,\n category,\n description: description || undefined,\n regex: regex || undefined,\n owners: owners && owners.length > 0 ? owners.map(({ email }) => email) : undefined,\n teams: teams && teams.length > 0 ? teams.map(({ name }) => name) : undefined,\n attributes:\n attributeValues !== undefined && attributeValues.length > 0\n ? formatAttributeValues(attributeValues)\n : undefined,\n }),\n );\n }\n\n // Save processing purposes\n if (\n processingPurposes.length > 0 &&\n resources.includes(TranscendPullResource.ProcessingPurposes)\n ) {\n result['processing-purposes'] = processingPurposes.map(\n ({ name, purpose, description, owners, teams, attributeValues }): ProcessingPurposeInput => ({\n name,\n purpose,\n description: description || undefined,\n owners: owners && owners.length > 0 ? owners.map(({ email }) => email) : undefined,\n teams: teams && teams.length > 0 ? teams.map(({ name }) => name) : undefined,\n attributes:\n attributeValues !== undefined && attributeValues.length > 0\n ? formatAttributeValues(attributeValues)\n : undefined,\n }),\n );\n }\n\n // Save data flows\n if (dataFlows.length > 0 && resources.includes(TranscendPullResource.DataFlows)) {\n result['data-flows'] = dataFlows.map(\n ({\n value,\n type,\n description,\n trackingType,\n service,\n status,\n owners,\n teams,\n attributeValues,\n }): DataFlowInput => ({\n value,\n type,\n description: description || undefined,\n trackingPurposes: trackingType,\n status,\n service: service?.integrationName,\n owners: owners.map(({ email }) => email),\n teams: teams.map(({ name }) => name),\n attributes:\n attributeValues !== undefined && attributeValues.length > 0\n ? formatAttributeValues(attributeValues)\n : undefined,\n }),\n );\n }\n\n // Save cookies\n if (cookies.length > 0 && resources.includes(TranscendPullResource.Cookies)) {\n result.cookies = cookies.map(\n ({\n name,\n isRegex,\n description,\n trackingPurposes,\n service,\n status,\n owners,\n teams,\n attributeValues,\n }): CookieInput => ({\n name,\n isRegex,\n description: description || undefined,\n trackingPurposes,\n status,\n service: service?.integrationName,\n owners: owners.map(({ email }) => email),\n teams: teams.map(({ name }) => name),\n attributes:\n attributeValues !== undefined && attributeValues.length > 0\n ? formatAttributeValues(attributeValues)\n : undefined,\n }),\n );\n }\n\n // Save attributes\n if (attributes.length > 0 && resources.includes(TranscendPullResource.Attributes)) {\n result.attributes = attributes.map(\n ({ description, name, type, values, enabledOn = [] }): AttributeInput => ({\n description: description || undefined,\n resources: enabledOn,\n name,\n type,\n values: values.map(({ name, color, description }) => ({\n name,\n color: color || undefined,\n description,\n })),\n }),\n );\n }\n\n // save purposes\n if (purposes.length > 0) {\n result.purposes = purposes.map(\n ({\n name,\n description,\n trackingType,\n defaultConsent,\n configurable,\n showInConsentManager,\n isActive,\n displayOrder,\n optOutSignals,\n authLevel,\n topics,\n showInPrivacyCenter,\n title,\n }): ConsentPurpose => ({\n name,\n title,\n description: description || undefined,\n trackingType,\n 'default-consent': defaultConsent,\n configurable,\n 'show-in-consent-manager': showInConsentManager,\n 'show-in-privacy-center': showInPrivacyCenter,\n 'is-active': isActive,\n 'display-order': displayOrder,\n 'opt-out-signals': optOutSignals.length > 0 ? optOutSignals : undefined,\n 'auth-level': authLevel || undefined,\n 'preference-topics': topics.map(\n ({\n slug,\n title,\n type,\n color,\n displayDescription,\n defaultConfiguration,\n showInPrivacyCenter,\n preferenceOptionValues,\n }): ConsentPreferenceTopic => ({\n slug,\n title: title.defaultMessage,\n type,\n color,\n description: displayDescription.defaultMessage,\n 'default-configuration': defaultConfiguration,\n 'show-in-privacy-center': showInPrivacyCenter,\n options:\n type === PreferenceTopicType.Boolean\n ? []\n : preferenceOptionValues.map(({ title, slug }) => ({\n title: title.defaultMessage,\n slug,\n })),\n }),\n ),\n }),\n );\n }\n\n if (\n preferenceOptionValues.length > 0 &&\n resources.includes(TranscendPullResource.PreferenceOptions)\n ) {\n result['preference-options'] = preferenceOptionValues.map(\n ({ slug, title }): ConsentPreferenceTopicOptionValue => ({\n slug,\n title: title.defaultMessage,\n }),\n );\n }\n\n // save email templates\n if (\n dataSiloIds.length === 0 &&\n templates.length > 0 &&\n resources.includes(TranscendPullResource.Templates)\n ) {\n result.templates = templates.map(({ title }) => ({ title }));\n }\n\n // Save enrichers\n if (enrichers.length > 0 && resources.includes(TranscendPullResource.Enrichers)) {\n result.enrichers = enrichers.map(\n ({\n title,\n url,\n type,\n inputIdentifier,\n identifiers,\n actions,\n testRegex,\n dataSubjects,\n expirationDuration,\n lookerQueryTitle,\n transitionRequestStatus,\n phoneNumbers,\n regionList,\n }): EnricherInput => ({\n title,\n url: url || undefined,\n type,\n 'input-identifier': inputIdentifier?.name,\n 'output-identifiers': identifiers.map(({ name }) => name),\n 'privacy-actions':\n Object.values(RequestAction).length === actions.length ? undefined : actions,\n testRegex: testRegex || undefined,\n lookerQueryTitle: lookerQueryTitle || undefined,\n expirationDuration: parseInt(expirationDuration, 10),\n transitionRequestStatus: transitionRequestStatus || undefined,\n phoneNumbers: phoneNumbers && phoneNumbers.length > 0 ? phoneNumbers : undefined,\n regionList: regionList && regionList.length > 0 ? regionList : undefined,\n 'data-subjects': dataSubjects.map(({ type }) => type),\n }),\n );\n }\n\n // Save data silos\n if (dataSilos.length > 0 && resources.includes(TranscendPullResource.DataSilos)) {\n const indexedDataSubjects = keyBy(dataSubjects, 'type');\n result['data-silos'] = dataSilos.map(\n ([\n {\n title,\n description,\n url,\n type,\n outerType,\n apiKeys,\n notifyEmailAddress,\n identifiers,\n dependentDataSilos,\n owners,\n country,\n countrySubDivision,\n teams,\n subjectBlocklist,\n isLive,\n promptAVendorEmailSendFrequency,\n promptAVendorEmailSendType,\n promptAVendorEmailIncludeIdentifiersAttachment,\n promptAVendorEmailCompletionLinkType,\n manualWorkRetryFrequency,\n catalog,\n attributeValues,\n discoveredBy,\n businessEntities,\n },\n dataPoints,\n ]): DataSiloInput => ({\n title,\n description,\n integrationName: type,\n 'outer-type': outerType || undefined,\n url: url || undefined,\n 'api-key-title': apiKeys[0]?.title,\n 'identity-keys': identifiers\n .filter(({ isConnected }) => isConnected)\n .map(({ name }) => name),\n ...(dependentDataSilos.length > 0\n ? {\n 'deletion-dependencies': dependentDataSilos.map(({ title }) => title),\n }\n : {}),\n ...(owners.length > 0 ? { owners: owners.map(({ email }) => email) } : {}),\n ...(teams.length > 0 ? { teams: teams.map(({ name }) => name) } : {}),\n ...(discoveredBy.length > 0\n ? { discoveredBy: discoveredBy.map(({ title }) => title) }\n : {}),\n ...(businessEntities.length > 0\n ? {\n businessEntities: businessEntities.map(({ title }) => title),\n }\n : {}),\n country: country || undefined,\n countrySubDivision: countrySubDivision || undefined,\n disabled: !isLive,\n 'data-subjects':\n subjectBlocklist.length > 0\n ? convertToDataSubjectAllowlist(\n subjectBlocklist.map(({ type }) => type),\n indexedDataSubjects,\n )\n : undefined,\n ...(catalog.hasAvcFunctionality\n ? {\n 'email-settings': {\n 'notify-email-address': notifyEmailAddress || undefined,\n 'send-frequency': promptAVendorEmailSendFrequency,\n 'send-type': promptAVendorEmailSendType,\n 'include-identifiers-attachment': promptAVendorEmailIncludeIdentifiersAttachment,\n 'completion-link-type': promptAVendorEmailCompletionLinkType,\n 'manual-work-retry-frequency': manualWorkRetryFrequency,\n },\n }\n : {}),\n attributes:\n attributeValues !== undefined && attributeValues.length > 0\n ? formatAttributeValues(attributeValues)\n : undefined,\n\n datapoints: dataPoints\n .map(\n (dataPoint): DatapointInput => ({\n key: dataPoint.name,\n title: dataPoint.title?.defaultMessage,\n description: dataPoint.description?.defaultMessage,\n owners: dataPoint.owners.map(({ email }) => email),\n teams: dataPoint.teams.map(({ name }) => name),\n ...(dataPoint.path.length > 0 ? { path: dataPoint.path } : {}),\n ...(dataPoint.dataCollection?.title\n ? {\n 'data-collection-tag': dataPoint.dataCollection.title.defaultMessage,\n }\n : {}),\n ...(dataPoint.dbIntegrationQueries.length > 0\n ? {\n 'privacy-action-queries': mapValues(\n keyBy(dataPoint.dbIntegrationQueries, 'requestType'),\n (databaseIntegrationQuery) =>\n databaseIntegrationQuery.suggestedQuery ||\n databaseIntegrationQuery.query ||\n undefined,\n ),\n }\n : {}),\n ...(dataPoint.subDataPoints.length > 0\n ? {\n fields: dataPoint.subDataPoints\n .map(\n (field): FieldInput => ({\n key: field.name,\n description: field.description,\n purposes: field.purposes,\n categories: field.categories,\n ...(includeGuessedCategories && field.pendingCategoryGuesses\n ? {\n 'guessed-categories': field.pendingCategoryGuesses\n .filter((guess) => guess.status === 'PENDING')\n .map((guess) => ({\n category: {\n name: guess.category.name,\n category: guess.category.category,\n },\n status: guess.status,\n confidence: guess.confidence,\n classifierVersion: guess.classifierVersion || undefined,\n })),\n }\n : {}),\n 'access-request-visibility-enabled': field.accessRequestVisibilityEnabled,\n 'erasure-request-redaction-enabled': field.erasureRequestRedactionEnabled,\n attributes:\n field.attributeValues !== undefined && field.attributeValues.length > 0\n ? formatAttributeValues(field.attributeValues)\n : undefined,\n }),\n )\n .sort((a, b) => a.key.localeCompare(b.key)),\n }\n : {}),\n 'privacy-actions': dataPoint.actionSettings\n .filter(({ active }) => active)\n .map(({ type }) => type),\n }),\n )\n .sort((a, b) =>\n [...(a.path ?? []), a.key]\n .join('.')\n .localeCompare([...(b.path ?? []), b.key].join('.')),\n ),\n }),\n );\n }\n return result;\n}\n/* eslint-enable max-lines */\n"],"mappings":"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"}
|