/**
 * Minified by jsDelivr using Terser v5.39.0.
 * Original file: /npm/@cumulus/discover-granules@21.3.3/index.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
"use strict";const curry=require("lodash/curry"),get=require("lodash/get"),groupBy=require("lodash/groupBy"),isBoolean=require("lodash/isBoolean"),map=require("lodash/map"),pick=require("lodash/pick"),pMap=require("p-map"),Logger=require("@cumulus/logger"),granules=require("@cumulus/api-client/granules"),{runCumulusTask:runCumulusTask}=require("@cumulus/cumulus-message-adapter-js"),{buildProviderClient:buildProviderClient}=require("@cumulus/ingest/providerClientUtils"),logger=e=>new Logger({executions:process.env.EXECUTIONS,granules:process.env.GRANULES?JSON.parse(process.env.GRANULES):void 0,parentArn:process.env.PARENTARN,sender:process.env.SENDER||"@cumulus/discover-granules",stackName:process.env.STACKNAME,version:process.env.TASKVERSION,...e}),listFiles=async e=>{const{providerConfig:r,useList:i,httpRequestTimeout:l=300,path:n}=e,o=buildProviderClient({...r,useList:i,httpRequestTimeout:l});try{return await o.connect(),await o.list(n)}finally{await o.end()}},granuleIdOfFile=curry(((e,{name:r})=>{const i=r.match(e);return i?i[1]:null})),groupFilesByGranuleId=(e,r)=>{const i=groupBy(r,granuleIdOfFile(e));return delete i.null,i},getCollectionFileConfig=(e,r)=>e.find((({regex:e})=>r.name.match(e))),fileHasCollectionFileConfig=curry(((e,r)=>void 0!==getCollectionFileConfig(e,r))),returnAllFiles=e=>isBoolean(e.ignoreFilesConfigForDiscovery)?e.ignoreFilesConfigForDiscovery:!!isBoolean(e.collection.ignoreFilesConfigForDiscovery)&&e.collection.ignoreFilesConfigForDiscovery,updateFileFromCollectionFileConfig=curry((({buckets:e,collection:r},i)=>{const l=getCollectionFileConfig(r.files,i);return void 0===l?i:{...i,bucket:e[l.bucket].name,url_path:l.url_path||r.url_path||"",type:l.type||""}})),buildGranule=curry(((e,r,i)=>{let l;return l=returnAllFiles(e)?r:r.filter(fileHasCollectionFileConfig(e.collection.files)).map(updateFileFromCollectionFileConfig(e)),{granuleId:i,dataType:e.collection.name,version:e.collection.version,files:l}})),checkGranuleHasNoDuplicate=async(e,r)=>{let i;try{i=await granules.getGranuleResponse({prefix:process.env.STACKNAME,expectedStatusCodes:[200,404],granuleId:e})}catch(e){throw new Error(`Unexpected error from Private API lambda: ${e.message}`)}if(200===i.statusCode){if("error"===r)throw new Error(`Duplicate granule found for ${e} with duplicate configuration set to error`);return!1}if(404===i.statusCode)return e;throw new Error(`Unexpected return from Private API lambda: ${JSON.stringify(i)}`)},filterDuplicates=async({granuleIds:e,duplicateHandling:r,concurrency:i})=>(await pMap(e,(e=>checkGranuleHasNoDuplicate(e,r)),{concurrency:i})).filter(Boolean),handleDuplicates=async({filesByGranuleId:e,duplicateHandling:r,concurrency:i})=>{if(logger().info(`Running discoverGranules with duplicateHandling set to ${r}`),["skip","error"].includes(r)){const l=await filterDuplicates({granuleIds:Object.keys(e),duplicateHandling:r,concurrency:i});return pick(e,l)}if(["replace","version"].includes(r))return e;throw new Error(`Invalid duplicate handling configuration encountered: ${JSON.stringify(r)}`)},discoverGranules=async({config:e})=>{const r=await listFiles({providerConfig:e.provider,useList:e.useList,httpRequestTimeout:e.httpRequestTimeout,path:e.provider_path});let i=groupFilesByGranuleId(e.collection.granuleIdExtraction,r);const l=e.duplicateGranuleHandling||"replace";i=await handleDuplicates({filesByGranuleId:i,duplicateHandling:l,concurrency:get(e,"concurrency",3)});const n=map(i,buildGranule(e));return logger({granules:n.map((e=>e.granuleId))}).info(`Discovered ${n.length} granules.`),{granules:n}},handler=async(e,r)=>await runCumulusTask(discoverGranules,e,r);module.exports={checkGranuleHasNoDuplicate:checkGranuleHasNoDuplicate,discoverGranules:discoverGranules,handler:handler,filterDuplicates:filterDuplicates,handleDuplicates:handleDuplicates};
//# sourceMappingURL=/sm/a9d5dc74850c5cf18e6be67e93fc1e53a7d89030f5313776ad4fed28eced686c.map