{"version":3,"file":"removeUnverifiedRequestIdentifiers-CDYC_eeP.mjs","names":[],"sources":["../src/lib/requests/removeUnverifiedRequestIdentifiers.ts"],"sourcesContent":["import { RequestAction, RequestStatus } from '@transcend-io/privacy-types';\nimport {\n  buildTranscendGraphQLClient,\n  fetchAllRequestIdentifierMetadata,\n  makeGraphQLRequest,\n  REMOVE_REQUEST_IDENTIFIERS,\n} from '@transcend-io/sdk';\nimport { map } from '@transcend-io/utils';\nimport cliProgress from 'cli-progress';\nimport colors from 'colors';\n\nimport { DEFAULT_TRANSCEND_API } from '../../constants.js';\nimport { logger } from '../../logger.js';\nimport { fetchAllRequests } from '../graphql/index.js';\n\n/**\n * Remove a set of unverified request identifier\n *\n * @param options - Options\n * @returns Number of items marked as completed\n */\nexport async function removeUnverifiedRequestIdentifiers({\n  requestActions,\n  identifierNames,\n  auth,\n  concurrency = 20,\n  transcendUrl = DEFAULT_TRANSCEND_API,\n}: {\n  /** The request actions that should be restarted */\n  requestActions: RequestAction[];\n  /** Transcend API key authentication */\n  auth: string;\n  /** The set of identifier names to remove */\n  identifierNames: string[];\n  /** Concurrency to upload requests in parallel */\n  concurrency?: number;\n  /** API URL for Transcend backend */\n  transcendUrl?: string;\n}): Promise<number> {\n  // Find all requests made before createdAt that are in a removing data state\n  const client = buildTranscendGraphQLClient(transcendUrl, auth);\n\n  // Time duration\n  const t0 = new Date().getTime();\n  // create a new progress bar instance and use shades_classic theme\n  const progressBar = new cliProgress.SingleBar({}, cliProgress.Presets.shades_classic);\n\n  // Pull in the requests\n  const allRequests = await fetchAllRequests(client, {\n    actions: requestActions,\n    statuses: [RequestStatus.Enriching],\n  });\n\n  // Notify Transcend\n  logger.info(colors.magenta('Fetched requests in preflight/enriching state.'));\n\n  let total = 0;\n  let processed = 0;\n  progressBar.start(allRequests.length, 0);\n  await map(\n    allRequests,\n    async (requestToRestart) => {\n      const requestIdentifiers = await fetchAllRequestIdentifierMetadata(client, {\n        filterBy: { requestId: requestToRestart.id },\n        logger,\n      });\n      const clearOut = requestIdentifiers\n        .filter(\n          ({ isVerifiedAtLeastOnce, name }) =>\n            isVerifiedAtLeastOnce === false && identifierNames.includes(name),\n        )\n        .map(({ id }) => id);\n\n      if (clearOut.length > 0) {\n        await makeGraphQLRequest<{\n          /** Whether we successfully uploaded the results */\n          success: boolean;\n        }>(client, REMOVE_REQUEST_IDENTIFIERS, {\n          variables: {\n            input: {\n              requestId: requestToRestart.id,\n              requestIdentifierIds: clearOut,\n            },\n          },\n          logger,\n        });\n        processed += clearOut.length;\n      }\n\n      total += 1;\n      progressBar.update(total);\n    },\n    { concurrency },\n  );\n\n  progressBar.stop();\n  const t1 = new Date().getTime();\n  const totalTime = t1 - t0;\n\n  logger.info(\n    colors.green(\n      `Successfully cleared out unverified identifiers \"${\n        totalTime / 1000\n      }\" seconds for ${total} requests, ${processed} identifiers were cleared out!`,\n    ),\n  );\n  return allRequests.length;\n}\n"],"mappings":"6bAqBA,eAAsB,EAAmC,CACvD,iBACA,kBACA,OACA,cAAc,GACd,eAAe,GAYG,CAElB,IAAM,EAAS,EAA4B,EAAc,EAAK,CAGxD,EAAK,IAAI,MAAM,CAAC,SAAS,CAEzB,EAAc,IAAI,EAAY,UAAU,EAAE,CAAE,EAAY,QAAQ,eAAe,CAG/E,EAAc,MAAM,EAAiB,EAAQ,CACjD,QAAS,EACT,SAAU,CAAC,EAAc,UAAU,CACpC,CAAC,CAGF,EAAO,KAAK,EAAO,QAAQ,iDAAiD,CAAC,CAE7E,IAAI,EAAQ,EACR,EAAY,EAChB,EAAY,MAAM,EAAY,OAAQ,EAAE,CACxC,MAAM,EACJ,EACA,KAAO,IAAqB,CAK1B,IAAM,GAAW,MAJgB,EAAkC,EAAQ,CACzE,SAAU,CAAE,UAAW,EAAiB,GAAI,CAC5C,SACD,CAAC,EAEC,QACE,CAAE,wBAAuB,UACxB,IAA0B,IAAS,EAAgB,SAAS,EAAK,CACpE,CACA,KAAK,CAAE,QAAS,EAAG,CAElB,EAAS,OAAS,IACpB,MAAM,EAGH,EAAQ,EAA4B,CACrC,UAAW,CACT,MAAO,CACL,UAAW,EAAiB,GAC5B,qBAAsB,EACvB,CACF,CACD,SACD,CAAC,CACF,GAAa,EAAS,QAGxB,GAAS,EACT,EAAY,OAAO,EAAM,EAE3B,CAAE,cAAa,CAChB,CAED,EAAY,MAAM,CAElB,IAAM,EADK,IAAI,MAAM,CAAC,SACF,CAAG,EASvB,OAPA,EAAO,KACL,EAAO,MACL,oDACE,EAAY,IACb,gBAAgB,EAAM,aAAa,EAAU,gCAC/C,CACF,CACM,EAAY"}