@transcend-io/cli 7.0.0-alpha.16 → 7.0.0-alpha.17
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 +6 -2
- package/dist/bin/bash-complete.cjs +1 -1
- package/dist/bin/cli.cjs +1 -1
- package/dist/bin/deprecated-command.cjs +3 -3
- package/dist/bin/deprecated-command.cjs.map +1 -1
- package/dist/{chunk-LOTSPQIR.cjs → chunk-2QSJ4MCG.cjs} +2 -2
- package/dist/chunk-2QSJ4MCG.cjs.map +1 -0
- package/dist/{chunk-LUPHUB5S.cjs → chunk-6SJ73MQ3.cjs} +2 -2
- package/dist/chunk-6SJ73MQ3.cjs.map +1 -0
- package/dist/{chunk-6KN3X573.cjs → chunk-AO3PNDFX.cjs} +2 -2
- package/dist/chunk-AO3PNDFX.cjs.map +1 -0
- package/dist/{chunk-DOIZVA4B.cjs → chunk-FI52H3TN.cjs} +3 -3
- package/dist/{chunk-DOIZVA4B.cjs.map → chunk-FI52H3TN.cjs.map} +1 -1
- package/dist/{chunk-TSMHNCA3.cjs → chunk-ITOED6PZ.cjs} +2 -2
- package/dist/{chunk-TSMHNCA3.cjs.map → chunk-ITOED6PZ.cjs.map} +1 -1
- package/dist/{chunk-A4YRBVOY.cjs → chunk-J7T7IIXE.cjs} +3 -3
- package/dist/chunk-J7T7IIXE.cjs.map +1 -0
- package/dist/{chunk-ERENJCIB.cjs → chunk-JOXVN7NL.cjs} +18 -18
- package/dist/chunk-JOXVN7NL.cjs.map +1 -0
- package/dist/{chunk-YRLY2LBO.cjs → chunk-JT2MPL2S.cjs} +3 -3
- package/dist/chunk-JT2MPL2S.cjs.map +1 -0
- package/dist/{chunk-BN6IBVPO.cjs → chunk-PI5KBGV2.cjs} +2 -2
- package/dist/{chunk-BN6IBVPO.cjs.map → chunk-PI5KBGV2.cjs.map} +1 -1
- package/dist/{chunk-X2GP7CVX.cjs → chunk-PZ7EJWTP.cjs} +2 -2
- package/dist/{chunk-X2GP7CVX.cjs.map → chunk-PZ7EJWTP.cjs.map} +1 -1
- package/dist/{chunk-LBXSI4WP.cjs → chunk-RGX6LSIS.cjs} +2 -2
- package/dist/chunk-RGX6LSIS.cjs.map +1 -0
- package/dist/{chunk-Y6ZO474T.cjs → chunk-RYDN7XHU.cjs} +2 -2
- package/dist/{chunk-Y6ZO474T.cjs.map → chunk-RYDN7XHU.cjs.map} +1 -1
- package/dist/{chunk-4RZR6BKZ.cjs → chunk-VFNVW4DQ.cjs} +2 -2
- package/dist/{chunk-4RZR6BKZ.cjs.map → chunk-VFNVW4DQ.cjs.map} +1 -1
- package/dist/{chunk-JULS5D46.cjs → chunk-VZW3HYB2.cjs} +4 -4
- package/dist/chunk-VZW3HYB2.cjs.map +1 -0
- package/dist/{impl-ARJGYYKC.cjs → impl-2AZIJABO.cjs} +4 -4
- package/dist/impl-2AZIJABO.cjs.map +1 -0
- package/dist/impl-2RWRR3MI.cjs +2 -0
- package/dist/impl-2RWRR3MI.cjs.map +1 -0
- package/dist/{impl-JK4GKU5G.cjs → impl-2WDJT2Q2.cjs} +3 -3
- package/dist/impl-2WDJT2Q2.cjs.map +1 -0
- package/dist/{impl-BMLQJ2PG.cjs → impl-3JNSTXDZ.cjs} +6 -6
- package/dist/impl-3JNSTXDZ.cjs.map +1 -0
- package/dist/impl-3SXWEDB4.cjs +2 -0
- package/dist/impl-3SXWEDB4.cjs.map +1 -0
- package/dist/{impl-OLBC6R7X.cjs → impl-3ZAPAWXO.cjs} +2 -2
- package/dist/impl-3ZAPAWXO.cjs.map +1 -0
- package/dist/impl-4ABLQOYK.cjs +2 -0
- package/dist/impl-4ABLQOYK.cjs.map +1 -0
- package/dist/{impl-Q5FPCG2W.cjs → impl-5T2EKHDA.cjs} +2 -2
- package/dist/impl-5T2EKHDA.cjs.map +1 -0
- package/dist/impl-6OC3FLK7.cjs +2 -0
- package/dist/impl-6OC3FLK7.cjs.map +1 -0
- package/dist/{impl-G3T6TIVT.cjs → impl-BI4QQAA7.cjs} +2 -2
- package/dist/impl-BI4QQAA7.cjs.map +1 -0
- package/dist/{impl-WGGFRAOA.cjs → impl-CKDNEFW2.cjs} +2 -2
- package/dist/impl-CKDNEFW2.cjs.map +1 -0
- package/dist/{impl-ZRSXZZ3W.cjs → impl-DSIRRIAF.cjs} +2 -2
- package/dist/impl-DSIRRIAF.cjs.map +1 -0
- package/dist/{impl-T65GSZQ5.cjs → impl-E3NLQD2N.cjs} +5 -5
- package/dist/impl-E3NLQD2N.cjs.map +1 -0
- package/dist/{impl-OD7OMRTV.cjs → impl-EJYIRESZ.cjs} +3 -3
- package/dist/impl-EJYIRESZ.cjs.map +1 -0
- package/dist/{impl-HWALUTZ3.cjs → impl-FAEAEOAF.cjs} +2 -2
- package/dist/impl-FAEAEOAF.cjs.map +1 -0
- package/dist/impl-FK6Q3MKX.cjs +2 -0
- package/dist/impl-FK6Q3MKX.cjs.map +1 -0
- package/dist/{impl-R3OSWDII.cjs → impl-H4P5W6SI.cjs} +2 -2
- package/dist/impl-H4P5W6SI.cjs.map +1 -0
- package/dist/{impl-6CBAKFI5.cjs → impl-J76MXHVV.cjs} +2 -2
- package/dist/impl-J76MXHVV.cjs.map +1 -0
- package/dist/{impl-VA3ZXZGY.cjs → impl-JS5NA5LB.cjs} +2 -2
- package/dist/impl-JS5NA5LB.cjs.map +1 -0
- package/dist/{impl-Y7HN4IHU.cjs → impl-K2C4VARC.cjs} +2 -2
- package/dist/impl-K2C4VARC.cjs.map +1 -0
- package/dist/{impl-ZBRBD4XX.cjs → impl-KTJJ5N2W.cjs} +2 -2
- package/dist/impl-KTJJ5N2W.cjs.map +1 -0
- package/dist/{impl-LIRYQEE2.cjs → impl-M25V32F5.cjs} +2 -2
- package/dist/impl-M25V32F5.cjs.map +1 -0
- package/dist/{impl-3GFHHD2W.cjs → impl-OFKKJKDV.cjs} +2 -2
- package/dist/impl-OFKKJKDV.cjs.map +1 -0
- package/dist/{impl-D5NY6GKI.cjs → impl-OLWLO32B.cjs} +2 -2
- package/dist/impl-OLWLO32B.cjs.map +1 -0
- package/dist/impl-OMR2QAUH.cjs +2 -0
- package/dist/impl-OMR2QAUH.cjs.map +1 -0
- package/dist/{impl-SSKSB6TT.cjs → impl-RMLOU67G.cjs} +2 -2
- package/dist/impl-RMLOU67G.cjs.map +1 -0
- package/dist/impl-RZTJXYKH.cjs +2 -0
- package/dist/impl-RZTJXYKH.cjs.map +1 -0
- package/dist/{impl-ON6OCEFQ.cjs → impl-SL56KMR6.cjs} +2 -2
- package/dist/impl-SL56KMR6.cjs.map +1 -0
- package/dist/impl-SVOWCRTT.cjs +2 -0
- package/dist/impl-SVOWCRTT.cjs.map +1 -0
- package/dist/{impl-VFS7VWDY.cjs → impl-T2L7XH3I.cjs} +2 -2
- package/dist/impl-T2L7XH3I.cjs.map +1 -0
- package/dist/{impl-QS7ZJTHC.cjs → impl-UXFJYLNS.cjs} +2 -2
- package/dist/impl-UXFJYLNS.cjs.map +1 -0
- package/dist/{impl-GW2HCZP5.cjs → impl-WID63NF4.cjs} +2 -2
- package/dist/impl-WID63NF4.cjs.map +1 -0
- package/dist/{impl-PKVWUYYX.cjs → impl-XRRNIJUK.cjs} +1 -1
- package/dist/impl-XRRNIJUK.cjs.map +1 -0
- package/dist/{impl-Y4BWBWF7.cjs → impl-XSSDVV3V.cjs} +2 -2
- package/dist/impl-XSSDVV3V.cjs.map +1 -0
- package/dist/impl-Y34WNCJH.cjs +2 -0
- package/dist/impl-Y34WNCJH.cjs.map +1 -0
- package/dist/impl-YF52HSOP.cjs +2 -0
- package/dist/impl-YF52HSOP.cjs.map +1 -0
- package/dist/{impl-LR5VVTTZ.cjs → impl-Z2HSVZEO.cjs} +2 -2
- package/dist/impl-Z2HSVZEO.cjs.map +1 -0
- package/dist/{impl-CW33RICS.cjs → impl-ZR2W2W3L.cjs} +2 -2
- package/dist/impl-ZR2W2W3L.cjs.map +1 -0
- package/dist/impl-ZWY23IKD.cjs +2 -0
- package/dist/impl-ZWY23IKD.cjs.map +1 -0
- package/dist/index.cjs +3 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +20 -5
- package/package.json +6 -6
- package/dist/chunk-6KN3X573.cjs.map +0 -1
- package/dist/chunk-A4YRBVOY.cjs.map +0 -1
- package/dist/chunk-ERENJCIB.cjs.map +0 -1
- package/dist/chunk-JULS5D46.cjs.map +0 -1
- package/dist/chunk-LBXSI4WP.cjs.map +0 -1
- package/dist/chunk-LOTSPQIR.cjs.map +0 -1
- package/dist/chunk-LUPHUB5S.cjs.map +0 -1
- package/dist/chunk-YRLY2LBO.cjs.map +0 -1
- package/dist/impl-26BOEXJQ.cjs +0 -2
- package/dist/impl-26BOEXJQ.cjs.map +0 -1
- package/dist/impl-2E4UWK5N.cjs +0 -2
- package/dist/impl-2E4UWK5N.cjs.map +0 -1
- package/dist/impl-3GFHHD2W.cjs.map +0 -1
- package/dist/impl-3OUKF3FC.cjs +0 -2
- package/dist/impl-3OUKF3FC.cjs.map +0 -1
- package/dist/impl-3VNVQM3M.cjs +0 -2
- package/dist/impl-3VNVQM3M.cjs.map +0 -1
- package/dist/impl-6CBAKFI5.cjs.map +0 -1
- package/dist/impl-ARJGYYKC.cjs.map +0 -1
- package/dist/impl-BMLQJ2PG.cjs.map +0 -1
- package/dist/impl-CW33RICS.cjs.map +0 -1
- package/dist/impl-D5NY6GKI.cjs.map +0 -1
- package/dist/impl-G3T6TIVT.cjs.map +0 -1
- package/dist/impl-G553WLOB.cjs +0 -2
- package/dist/impl-G553WLOB.cjs.map +0 -1
- package/dist/impl-GW2HCZP5.cjs.map +0 -1
- package/dist/impl-HWALUTZ3.cjs.map +0 -1
- package/dist/impl-JK4GKU5G.cjs.map +0 -1
- package/dist/impl-L3B6ZXYM.cjs +0 -2
- package/dist/impl-L3B6ZXYM.cjs.map +0 -1
- package/dist/impl-LIRYQEE2.cjs.map +0 -1
- package/dist/impl-LR5VVTTZ.cjs.map +0 -1
- package/dist/impl-NWLBX5V3.cjs +0 -2
- package/dist/impl-NWLBX5V3.cjs.map +0 -1
- package/dist/impl-OD7OMRTV.cjs.map +0 -1
- package/dist/impl-OLBC6R7X.cjs.map +0 -1
- package/dist/impl-ON6OCEFQ.cjs.map +0 -1
- package/dist/impl-ORLVBWNX.cjs +0 -2
- package/dist/impl-ORLVBWNX.cjs.map +0 -1
- package/dist/impl-PKVWUYYX.cjs.map +0 -1
- package/dist/impl-Q5FPCG2W.cjs.map +0 -1
- package/dist/impl-QS7ZJTHC.cjs.map +0 -1
- package/dist/impl-R3OSWDII.cjs.map +0 -1
- package/dist/impl-RF3SJWXA.cjs +0 -2
- package/dist/impl-RF3SJWXA.cjs.map +0 -1
- package/dist/impl-SSKSB6TT.cjs.map +0 -1
- package/dist/impl-T65GSZQ5.cjs.map +0 -1
- package/dist/impl-VA3ZXZGY.cjs.map +0 -1
- package/dist/impl-VFS7VWDY.cjs.map +0 -1
- package/dist/impl-VTJPVXZS.cjs +0 -2
- package/dist/impl-VTJPVXZS.cjs.map +0 -1
- package/dist/impl-WGGFRAOA.cjs.map +0 -1
- package/dist/impl-WXZ75SEC.cjs +0 -2
- package/dist/impl-WXZ75SEC.cjs.map +0 -1
- package/dist/impl-Y4BWBWF7.cjs.map +0 -1
- package/dist/impl-Y7HN4IHU.cjs.map +0 -1
- package/dist/impl-ZBRBD4XX.cjs.map +0 -1
- package/dist/impl-ZRSXZZ3W.cjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/benbrook/transcend/cli/dist/impl-Y7HN4IHU.cjs","../src/commands/request/approve/impl.ts"],"names":["approve","auth","actions","origins","silentModeBefore","createdAtBefore","createdAtAfter","transcendUrl","concurrency","approvePrivacyRequests"],"mappings":"AAAA,iIAAwC,gCAA6B,gCAA6B,gCAA6B,gCAA6B,gCAA6B,MCgBzL,SAAsBA,CAAAA,CAEpB,CACE,IAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,gBAAA,CAAAC,CAAAA,CACA,eAAA,CAAAC,CAAAA,CACA,cAAA,CAAAC,CAAAA,CACA,YAAA,CAAAC,CAAAA,CACA,WAAA,CAAAC,CACF,CAAA,CACe,CACf,MAAMC,iCAAAA,CACJ,YAAA,CAAAF,CAAAA,CACA,cAAA,CAAgBL,CAAAA,CAChB,IAAA,CAAAD,CAAAA,CACA,cAAA,CAAgBE,CAAAA,CAChB,WAAA,CAAAK,CAAAA,CACA,gBAAA,CAAAJ,CAAAA,CACA,eAAA,CAAAC,CAAAA,CACA,cAAA,CAAAC,CACF,CAAC,CACH,CAAA,oBAAA","file":"/Users/benbrook/transcend/cli/dist/impl-Y7HN4IHU.cjs","sourcesContent":[null,"import type { LocalContext } from '@/context';\n\nimport { RequestAction, RequestOrigin } from '@transcend-io/privacy-types';\nimport { approvePrivacyRequests } from '@/lib/requests';\n\ninterface ApproveCommandFlags {\n auth: string;\n actions: RequestAction[];\n origins?: RequestOrigin[];\n silentModeBefore?: Date;\n createdAtBefore?: Date;\n createdAtAfter?: Date;\n transcendUrl: string;\n concurrency: number;\n}\n\nexport async function approve(\n this: LocalContext,\n {\n auth,\n actions,\n origins,\n silentModeBefore,\n createdAtBefore,\n createdAtAfter,\n transcendUrl,\n concurrency,\n }: ApproveCommandFlags,\n): Promise<void> {\n await approvePrivacyRequests({\n transcendUrl,\n requestActions: actions,\n auth,\n requestOrigins: origins,\n concurrency,\n silentModeBefore,\n createdAtBefore,\n createdAtAfter,\n });\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/benbrook/transcend/cli/dist/impl-ZBRBD4XX.cjs","../src/commands/request/cron/pull-profiles/impl.ts"],"names":["pullProfiles","file","fileTarget","transcendUrl","auth","sombraAuth","cronDataSiloId","targetDataSiloId","actions","skipRequestCount","pageLimit","chunkSize","logger","colors","client","buildTranscendGraphQLClient","baseName","extension","parseFilePath","baseNameTarget","extensionTarget","allIdentifiersCount","allTargetIdentifiersCount","fileCount","pullChunkedCustomSiloOutstandingIdentifiers","chunk","requestIds","d","uniqueRequestIds","uniq_default","results","map","requestId","fetchRequestFilesForRequest","fileName","remoteId"],"mappings":"AAAA,quBAAwC,wDAA2C,gCAA6B,wDAAiE,wDAAyC,gCAA6B,gCAA6B,gCAA6B,gFCE9R,MA6BnB,SAAsBA,CAAAA,CAEpB,CACE,IAAA,CAAAC,CAAAA,CACA,UAAA,CAAAC,CAAAA,CACA,YAAA,CAAAC,CAAAA,CACA,IAAA,CAAAC,CAAAA,CACA,UAAA,CAAAC,CAAAA,CACA,cAAA,CAAAC,CAAAA,CACA,gBAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,gBAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,CACF,CAAA,CACe,CACXF,CAAAA,EACFG,mBAAAA,CAAO,IAAA,CACLC,gBAAAA,CAAO,MAAA,CACL,uEACF,CACF,CAAA,CAAA,CAIA,MAAA,CAAO,KAAA,CAAMF,CAAS,CAAA,EACtBA,CAAAA,EAAa,CAAA,EACbA,CAAAA,CAAYD,CAAAA,GAAc,CAAA,CAAA,EAAA,CAE1BE,mBAAAA,CAAO,KAAA,CACLC,gBAAAA,CAAO,GAAA,CACL,CAAA,qBAAA,EAAwBF,CAAS,CAAA,oDAAA,EAAuDD,CAAS,CAAA,CAAA,CACnG,CACF,CAAA,CACA,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAAA,CAIhB,IAAMI,CAAAA,CAASC,kCAAAA,CAA4BZ,CAAcC,CAAI,CAAA,CACvD,CAAE,QAAA,CAAAY,CAAAA,CAAU,SAAA,CAAAC,CAAU,CAAA,CAAIC,iCAAAA,CAAkB,CAAA,CAC5C,CAAE,QAAA,CAAUC,CAAAA,CAAgB,SAAA,CAAWC,CAAgB,CAAA,CAC3DF,iCAAAA,CAAwB,CAAA,CAEtBG,CAAAA,CAAsB,CAAA,CACtBC,CAAAA,CAA4B,CAAA,CAC5BC,CAAAA,CAAY,CAAA,CAwEhB,MAAMC,iCAAAA,CACJ,UAAA,CAAYlB,CAAAA,CACZ,IAAA,CAAAF,CAAAA,CACA,UAAA,CAAAC,CAAAA,CACA,OAAA,CAAAG,CAAAA,CACA,WAAA,CAAaE,CAAAA,CACb,YAAA,CAAcC,CAAAA,CACd,MAAA,CA7Ea,MAAOc,CAAAA,EAAmD,CAEvEJ,CAAAA,EAAuBI,CAAAA,CAAM,MAAA,CAG7B,IAAMC,CAAAA,CAAaD,CAAAA,CAAM,GAAA,CAAKE,CAAAA,EAAMA,CAAAA,CAAE,SAAmB,CAAA,CACnDC,CAAAA,CAAmBC,kCAAAA,CAAe,CAAA,CAGlCC,CAAAA,CAAU,MAAMC,iCAAAA,CACpBH,CACA,MAAOI,CAAAA,EAAAA,CACW,MAAMC,kCAAAA,CAA4BnB,CAAQ,CACxD,SAAA,CAAAkB,CAAAA,CACA,UAAA,CAAYzB,CACd,CAAC,CAAA,CAAA,CACc,GAAA,CAAI,CAAC,CAAE,QAAA,CAAA2B,CAAAA,CAAU,QAAA,CAAAC,CAAS,CAAA,CAAA,EAAM,CAC7C,EAAA,CAAI,CAACA,CAAAA,CACH,MAAM,IAAI,KAAA,CACR,CAAA,4BAAA,EAA+BD,CAAQ,CAAA,UAAA,EAAaF,CAAS,CAAA,CAAA","file":"/Users/benbrook/transcend/cli/dist/impl-ZBRBD4XX.cjs","sourcesContent":[null,"import type { RequestAction } from '@transcend-io/privacy-types';\nimport { logger } from '@/logger';\nimport colors from 'colors';\nimport { uniq } from 'lodash-es';\nimport { map } from '@/lib/bluebird-replace';\nimport {\n buildTranscendGraphQLClient,\n fetchRequestFilesForRequest,\n} from '@/lib/graphql';\nimport type { LocalContext } from '@/context';\nimport {\n parseFilePath,\n pullChunkedCustomSiloOutstandingIdentifiers,\n writeCsv,\n type CsvFormattedIdentifier,\n} from '@/lib/cron';\n\ninterface PullProfilesCommandFlags {\n file: string;\n fileTarget: string;\n transcendUrl: string;\n auth: string;\n sombraAuth?: string;\n cronDataSiloId: string;\n targetDataSiloId: string;\n actions: RequestAction[];\n skipRequestCount: boolean;\n pageLimit: number;\n chunkSize: number;\n}\n\nexport async function pullProfiles(\n this: LocalContext,\n {\n file,\n fileTarget,\n transcendUrl,\n auth,\n sombraAuth,\n cronDataSiloId,\n targetDataSiloId,\n actions,\n skipRequestCount,\n pageLimit,\n chunkSize,\n }: PullProfilesCommandFlags,\n): Promise<void> {\n if (skipRequestCount) {\n logger.info(\n colors.yellow(\n 'Skipping request count as requested. This may help speed up the call.',\n ),\n );\n }\n\n if (\n Number.isNaN(chunkSize) ||\n chunkSize <= 0 ||\n chunkSize % pageLimit !== 0\n ) {\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 process.exit(1);\n }\n\n // Create GraphQL client to connect to Transcend backend\n const client = buildTranscendGraphQLClient(transcendUrl, auth);\n const { baseName, extension } = parseFilePath(file);\n const { baseName: baseNameTarget, extension: extensionTarget } =\n parseFilePath(fileTarget);\n\n let allIdentifiersCount = 0;\n let allTargetIdentifiersCount = 0;\n let fileCount = 0;\n // Create onSave callback to handle chunked processing\n const onSave = async (chunk: CsvFormattedIdentifier[]): Promise<void> => {\n // Add to all identifiers\n allIdentifiersCount += chunk.length;\n\n // Get unique request IDs from this chunk\n const requestIds = chunk.map((d) => d.requestId as string);\n const uniqueRequestIds = uniq(requestIds);\n\n // Pull down target identifiers for this chunk\n const results = await map(\n uniqueRequestIds,\n async (requestId) => {\n const results = await fetchRequestFilesForRequest(client, {\n requestId,\n dataSiloId: targetDataSiloId,\n });\n return results.map(({ fileName, remoteId }) => {\n if (!remoteId) {\n throw new Error(\n `Failed to find remoteId for ${fileName} request: ${requestId}`,\n );\n }\n return {\n RecordId: remoteId,\n Object: fileName\n .replace('.json', '')\n .split('/')\n .pop()\n ?.replace(' Information', ''),\n Comment:\n 'Customer data deletion request submitted via transcend.io',\n };\n });\n },\n {\n concurrency: 10,\n },\n );\n\n allTargetIdentifiersCount += results.flat().length;\n\n // Write the identifiers and target identifiers to CSV\n const headers = uniq(chunk.map((d) => Object.keys(d)).flat());\n const numberedFileName = `${baseName}-${fileCount}${extension}`;\n const numberedFileNameTarget = `${baseNameTarget}-${fileCount}${extensionTarget}`;\n writeCsv(numberedFileName, chunk, headers);\n logger.info(\n colors.green(\n `Successfully wrote ${chunk.length} identifiers to file \"${file}\"`,\n ),\n );\n\n const targetIdentifiers = results.flat();\n const headers2 = uniq(targetIdentifiers.map((d) => Object.keys(d)).flat());\n writeCsv(numberedFileNameTarget, targetIdentifiers, headers2);\n logger.info(\n colors.green(\n `Successfully wrote ${targetIdentifiers.length} identifiers to file \"${fileTarget}\"`,\n ),\n );\n\n logger.info(\n colors.blue(\n `Processed chunk of ${chunk.length} identifiers, found ${targetIdentifiers.length} target identifiers`,\n ),\n );\n fileCount += 1;\n };\n\n // Pull down outstanding identifiers using the new chunked function\n await pullChunkedCustomSiloOutstandingIdentifiers({\n dataSiloId: cronDataSiloId,\n auth,\n sombraAuth,\n actions,\n apiPageSize: pageLimit,\n savePageSize: chunkSize,\n onSave,\n transcendUrl,\n skipRequestCount,\n });\n\n logger.info(\n colors.green(\n `Successfully wrote ${allIdentifiersCount} identifiers to file \"${file}\"`,\n ),\n );\n logger.info(\n colors.green(\n `Successfully wrote ${allTargetIdentifiersCount} identifiers to file \"${fileTarget}\"`,\n ),\n );\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/benbrook/transcend/cli/dist/impl-ZRSXZZ3W.cjs","../src/commands/inventory/push/impl.ts"],"names":["syncConfiguration","transcendUrl","auth","pageSize","publishToPrivacyCenter","contents","deleteExtraAttributeValues","classifyService","client","buildTranscendGraphQLClient","syncConfigurationToTranscend","err","logger","colors"],"mappings":"AAAA,quBAAwC,wDAAyC,wDAAyC,wDAAgD,gCAA6B,gCAA6B,wDAAyD,wDAAyC,wDAAyC,gCAA6B,gCAA6B,wBCInY,4BACjB,gFAEF,MAkBnB,SAAeA,CAAAA,CAAkB,CAC/B,YAAA,CAAAC,CAAAA,CACA,IAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,sBAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,0BAAA,CAAAC,CAAAA,CAA6B,CAAA,CAAA,CAC7B,eAAA,CAAAC,CAAAA,CAAkB,CAAA,CACpB,CAAA,CAeqB,CACnB,IAAMC,CAAAA,CAASC,kCAAAA,CAA4BR,CAAcC,CAAI,CAAA,CAG7D,GAAI,CAWF,MAAO,CAVkB,MAAMQ,kCAAAA,CAC7BL,CACAG,CAAAA,CACA,CACE,QAAA,CAAAL,CAAAA,CACA,sBAAA,CAAAC,CAAAA,CACA,eAAA,CAAAG,CAAAA,CACA,0BAAA,CAAAD,CACF,CACF,CAEF,CAAA,KAAA,CAASK,CAAAA,CAAK,CACZ,OAAAC,mBAAAA,CAAO,KAAA,CACLC,gBAAAA,CAAO,GAAA,CACL,CAAA,iDAAA,EAAoDF,CAAAA,CAAI,OAAO,CAAA,CAAA;AAoI7D;AAAgB;AAAA;AA8D1B,GAAA","file":"/Users/benbrook/transcend/cli/dist/impl-ZRSXZZ3W.cjs","sourcesContent":[null,"import type { LocalContext } from '@/context';\n\nimport { logger } from '@/logger';\nimport { mapSeries } from '@/lib/bluebird-replace';\nimport { existsSync, lstatSync } from 'fs';\nimport { join } from 'path';\nimport { readTranscendYaml } from '@/lib/readTranscendYaml';\nimport colors from 'colors';\nimport {\n buildTranscendGraphQLClient,\n syncConfigurationToTranscend,\n} from '@/lib/graphql';\n\nimport { ADMIN_DASH_INTEGRATIONS } from '@/constants';\nimport { TranscendInput } from '@/codecs';\nimport { validateTranscendAuth, listFiles } from '@/lib/api-keys';\nimport { mergeTranscendInputs } from '@/lib/mergeTranscendInputs';\nimport { parseVariablesFromString } from '@/lib/helpers/parseVariablesFromString';\n\n/**\n * Sync configuration to Transcend\n *\n * @param options - Options\n * @returns True if synced successfully, false if error occurs\n */\nasync function syncConfiguration({\n transcendUrl,\n auth,\n pageSize,\n publishToPrivacyCenter,\n contents,\n deleteExtraAttributeValues = false,\n classifyService = false,\n}: {\n /** Transcend YAML */\n contents: TranscendInput;\n /** Transcend URL */\n transcendUrl: string;\n /** API key */\n auth: string;\n /** Page size */\n pageSize: number;\n /** Skip privacy center publish step */\n publishToPrivacyCenter: boolean;\n /** classify data flow service if missing */\n classifyService?: boolean;\n /** Delete attributes when syncing */\n deleteExtraAttributeValues?: boolean;\n}): Promise<boolean> {\n const client = buildTranscendGraphQLClient(transcendUrl, auth);\n\n // Sync to Transcend\n try {\n const encounteredError = await syncConfigurationToTranscend(\n contents,\n client,\n {\n pageSize,\n publishToPrivacyCenter,\n classifyService,\n deleteExtraAttributeValues,\n },\n );\n return !encounteredError;\n } catch (err) {\n logger.error(\n colors.red(\n `An unexpected error occurred syncing the schema: ${err.message}`,\n ),\n );\n return false;\n }\n}\n\ninterface PushCommandFlags {\n auth: string;\n file: string;\n transcendUrl: string;\n pageSize: number;\n variables: string;\n publishToPrivacyCenter: boolean;\n classifyService: boolean;\n deleteExtraAttributeValues: boolean;\n}\n\nexport async function push(\n this: LocalContext,\n {\n file = './transcend.yml',\n transcendUrl,\n auth,\n variables,\n pageSize,\n publishToPrivacyCenter,\n classifyService,\n deleteExtraAttributeValues,\n }: PushCommandFlags,\n): Promise<void> {\n // Parse authentication as API key or path to list of API keys\n const apiKeyOrList = await validateTranscendAuth(auth);\n\n // Parse out the variables\n const vars = parseVariablesFromString(variables);\n\n // check if we are being passed a list of API keys and a list of files\n let fileList: string[];\n if (Array.isArray(apiKeyOrList) && lstatSync(file).isDirectory()) {\n fileList = listFiles(file).map((filePath) => join(file, filePath));\n } else {\n fileList = file.split(',');\n }\n\n // Ensure at least one file is parsed\n if (fileList.length < 1) {\n throw new Error('No file specified!');\n }\n\n // eslint-disable-next-line array-callback-return,consistent-return\n const transcendInputs = fileList.map((filePath) => {\n // Ensure yaml file exists on disk\n if (!existsSync(filePath)) {\n logger.error(\n colors.red(\n `The file path does not exist on disk: ${filePath}. You can specify the filepath using --file=./examples/transcend.yml`,\n ),\n );\n process.exit(1);\n } else {\n logger.info(colors.magenta(`Reading file \"${filePath}\"...`));\n }\n\n try {\n // Read in the yaml file and validate it's shape\n const newContents = readTranscendYaml(filePath, vars);\n logger.info(colors.green(`Successfully read in \"${filePath}\"`));\n return {\n content: newContents,\n name: filePath.split('/').pop()!.replace('.yml', ''),\n };\n } catch (err) {\n logger.error(\n colors.red(\n `The shape of your yaml file is invalid with the following errors: ${err.message}`,\n ),\n );\n process.exit(1);\n }\n });\n\n // process a single API key\n if (typeof apiKeyOrList === 'string') {\n // if passed multiple inputs, merge them together\n const [base, ...rest] = transcendInputs.map(({ content }) => content);\n const contents = mergeTranscendInputs(base, ...rest);\n\n // sync the configuration\n const success = await syncConfiguration({\n transcendUrl,\n auth: apiKeyOrList,\n contents,\n publishToPrivacyCenter,\n deleteExtraAttributeValues,\n pageSize,\n classifyService: !!classifyService,\n });\n\n // exist with error code\n if (!success) {\n logger.info(\n colors.red(\n `Sync encountered errors. View output above for more information, or check out ${ADMIN_DASH_INTEGRATIONS}`,\n ),\n );\n\n process.exit(1);\n }\n } else {\n // if passed multiple inputs, expect them to be one per instance\n if (\n transcendInputs.length !== 1 &&\n transcendInputs.length !== apiKeyOrList.length\n ) {\n throw new Error(\n 'Expected list of yml files to be equal to the list of API keys.' +\n `Got ${transcendInputs.length} YML file${\n transcendInputs.length === 1 ? '' : 's'\n } and ${apiKeyOrList.length} API key${\n apiKeyOrList.length === 1 ? '' : 's'\n }`,\n );\n }\n\n const encounteredErrors: string[] = [];\n await mapSeries(apiKeyOrList, async (apiKey, ind) => {\n const prefix = `[${ind + 1}/${apiKeyOrList.length}][${\n apiKey.organizationName\n }] `;\n logger.info(\n colors.magenta(\n `~~~\\n\\n${prefix}Attempting to push configuration...\\n\\n~~~`,\n ),\n );\n\n // use the merged contents if 1 yml passed, else use the contents that map to that organization\n const useContents =\n transcendInputs.length === 1\n ? transcendInputs[0].content\n : transcendInputs.find(\n (input) => input.name === apiKey.organizationName,\n )?.content;\n\n // Throw error if cannot find a yml file matching that organization name\n if (!useContents) {\n logger.error(\n colors.red(\n `${prefix}Failed to find transcend.yml file for organization: \"${apiKey.organizationName}\".`,\n ),\n );\n encounteredErrors.push(apiKey.organizationName);\n return;\n }\n\n const success = await syncConfiguration({\n transcendUrl,\n auth: apiKey.apiKey,\n contents: useContents,\n pageSize,\n publishToPrivacyCenter,\n deleteExtraAttributeValues,\n classifyService,\n });\n\n if (success) {\n logger.info(\n colors.green(`${prefix}Successfully pushed configuration!`),\n );\n } else {\n logger.error(colors.red(`${prefix}Failed to sync configuration.`));\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 process.exit(1);\n }\n }\n\n // Indicate success\n logger.info(\n colors.green(\n `Successfully synced yaml file to Transcend! View at ${ADMIN_DASH_INTEGRATIONS}`,\n ),\n );\n}\n"]}
|