{"version":3,"file":"skipPreflightJobs-GymxkAla.mjs","names":[],"sources":["../src/lib/requests/skipPreflightJobs.ts"],"sourcesContent":["import { RequestEnricherStatus, RequestStatus } from '@transcend-io/privacy-types';\nimport {\n  buildTranscendGraphQLClient,\n  fetchAllRequestEnrichers,\n  makeGraphQLRequest,\n  SKIP_REQUEST_ENRICHER,\n} from '@transcend-io/sdk';\nimport { mapSeries, 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 * Given an enricher ID, mark all open request enrichers as skipped\n *\n * @param options - Options\n * @returns Number of items skipped\n */\nexport async function skipPreflightJobs({\n  enricherIds,\n  auth,\n  concurrency = 100,\n  transcendUrl = DEFAULT_TRANSCEND_API,\n}: {\n  /** Transcend API key authentication */\n  auth: string;\n  /** Enricher IDs to pull down jobs for */\n  enricherIds: string[];\n  /** Upload concurrency */\n  concurrency?: number;\n  /** API URL for Transcend backend */\n  transcendUrl?: string;\n  /** Request statuses to mark as completed */\n  requestStatuses?: RequestStatus[];\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\n  // fetch all RequestDataSilos that are open\n  const requests = await fetchAllRequests(client, {\n    statuses: [RequestStatus.Enriching],\n  });\n\n  // Notify Transcend\n  logger.info(\n    colors.magenta(\n      `Processing enricher: \"${enricherIds.join(',')}\" fetched \"${\n        requests.length\n      }\" in enriching status.`,\n    ),\n  );\n\n  // create a new progress bar instance and use shades_classic theme\n  const progressBar = new cliProgress.SingleBar({}, cliProgress.Presets.shades_classic);\n\n  let total = 0;\n  progressBar.start(requests.length, 0);\n  let totalSkipped = 0;\n  await map(\n    requests,\n    async (request) => {\n      // TODO dont pull all in\n      const requestEnrichers = await fetchAllRequestEnrichers(client, {\n        filterBy: { requestId: request.id },\n        logger,\n      });\n      const requestEnrichersFiltered = requestEnrichers.filter(\n        (enricher) =>\n          enricherIds.includes(enricher.enricher.id) &&\n          ![\n            RequestEnricherStatus.Resolved,\n            RequestEnricherStatus.Skipped,\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n          ].includes(enricher.status as any),\n      );\n\n      // TODO\n      if (requestEnrichersFiltered.length > 0) {\n        await mapSeries(requestEnrichersFiltered, async (requestEnricher) => {\n          try {\n            await makeGraphQLRequest<{\n              /** Whether we successfully uploaded the results */\n              success: boolean;\n            }>(client, SKIP_REQUEST_ENRICHER, {\n              variables: { requestEnricherId: requestEnricher.id },\n              logger,\n            });\n            totalSkipped += 1;\n          } catch (err) {\n            if (\n              !err.message.includes(\n                'Client error: Cannot skip Request enricher because it has already completed',\n              )\n            ) {\n              throw err;\n            }\n          }\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 skipped \"${totalSkipped}\" for  \"${\n        requests.length\n      }\" requests in \"${totalTime / 1000}\" seconds!`,\n    ),\n  );\n  return requests.length;\n}\n"],"mappings":"ydAqBA,eAAsB,EAAkB,CACtC,cACA,OACA,cAAc,IACd,eAAe,GAYG,CAElB,IAAM,EAAS,EAA4B,EAAc,EAAK,CAGxD,EAAK,IAAI,MAAM,CAAC,SAAS,CAGzB,EAAW,MAAM,EAAiB,EAAQ,CAC9C,SAAU,CAAC,EAAc,UAAU,CACpC,CAAC,CAGF,EAAO,KACL,EAAO,QACL,yBAAyB,EAAY,KAAK,IAAI,CAAC,aAC7C,EAAS,OACV,wBACF,CACF,CAGD,IAAM,EAAc,IAAI,EAAY,UAAU,EAAE,CAAE,EAAY,QAAQ,eAAe,CAEjF,EAAQ,EACZ,EAAY,MAAM,EAAS,OAAQ,EAAE,CACrC,IAAI,EAAe,EACnB,MAAM,EACJ,EACA,KAAO,IAAY,CAMjB,IAAM,GAA2B,MAJF,EAAyB,EAAQ,CAC9D,SAAU,CAAE,UAAW,EAAQ,GAAI,CACnC,SACD,CAAC,EACgD,OAC/C,GACC,EAAY,SAAS,EAAS,SAAS,GAAG,EAC1C,CAAC,CACC,EAAsB,SACtB,EAAsB,QAEvB,CAAC,SAAS,EAAS,OAAc,CACrC,CAGG,EAAyB,OAAS,GACpC,MAAM,EAAU,EAA0B,KAAO,IAAoB,CACnE,GAAI,CACF,MAAM,EAGH,EAAQ,EAAuB,CAChC,UAAW,CAAE,kBAAmB,EAAgB,GAAI,CACpD,SACD,CAAC,CACF,GAAgB,QACT,EAAK,CACZ,GACE,CAAC,EAAI,QAAQ,SACX,8EACD,CAED,MAAM,IAGV,CAEJ,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,yBAAyB,EAAa,UACpC,EAAS,OACV,iBAAiB,EAAY,IAAK,YACpC,CACF,CACM,EAAS"}