@currents/cmd 2.0.0 → 2.0.2

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/dist/index.js CHANGED
@@ -1,11 +1,12 @@
1
- "use strict";var Er=Object.create;var j=Object.defineProperty;var mr=Object.getOwnPropertyDescriptor;var lr=Object.getOwnPropertyNames;var fr=Object.getPrototypeOf,dr=Object.prototype.hasOwnProperty;var yt=(t,e)=>{for(var r in e)j(t,r,{get:e[r],enumerable:!0})},Lt=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of lr(e))!dr.call(t,o)&&o!==r&&j(t,o,{get:()=>e[o],enumerable:!(n=mr(e,o))||n.enumerable});return t};var u=(t,e,r)=>(r=t!=null?Er(fr(t)):{},Lt(e||!t||!t.__esModule?j(r,"default",{value:t,enumerable:!0}):r,t)),gr=t=>Lt(j({},"__esModule",{value:!0}),t);var jn={};yt(jn,{handleCurrentsReport:()=>pr});module.exports=gr(jn);var Bt=require("debug"),Ir=u(require("fs-extra")),a=(0,Bt.debug)("currents"),_r=null;function xt(t){_r=t}var Y={};yt(Y,{getNanoid:()=>Tr,userFacingNanoid:()=>ut});var pt=require("nanoid"),Pt="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Tr=(t=16)=>(0,pt.customAlphabet)(Pt,t)(),ut=(0,pt.customAlphabet)(Pt,12);var E=require("lodash");function Mt(t){return t.replace(/^([a-z][a-z0-9+.-]*:\/\/)[^/?#\s]*@/i,"$1")}var $=a.extend("ci"),Rr=(t,e)=>(0,E.set)(t,(0,E.camelCase)(e),process.env[e]),I=t=>(0,E.transform)(t,Rr,{}),Cr=()=>process.env.TF_BUILD&&process.env.AZURE_HTTP_USER_AGENT,Ur=()=>(0,E.some)(process.env,(t,e)=>/^CODEBUILD_/.test(e)),Dr=()=>process.env.bamboo_buildNumber,hr=()=>(0,E.some)(process.env,(t,e)=>/^CONCOURSE_/.test(e)),Ar=()=>process.env.GITLAB_CI||process.env.CI_SERVER_NAME&&/^GitLab/.test(process.env.CI_SERVER_NAME),Or=()=>!!(process.env.BUILD_ID&&process.env.PROJECT_ID&&process.env.PROJECT_NUMBER||process.env.GCP_PROJECT||process.env.GCLOUD_PROJECT||process.env.GOOGLE_CLOUD_PROJECT),Sr=()=>process.env.JENKINS_URL||process.env.JENKINS_HOME||process.env.JENKINS_VERSION||process.env.HUDSON_URL||process.env.HUDSON_HOME,Nr={appveyor:"APPVEYOR",azure:Cr,awsCodeBuild:Ur,bamboo:Dr,bitbucket:"BITBUCKET_BUILD_NUMBER",buildkite:"BUILDKITE",circle:"CIRCLECI",concourse:hr,codeFresh:"CF_BUILD_ID",drone:"DRONE",githubActions:"GITHUB_ACTIONS",gitlab:Ar,goCD:"GO_JOB_NAME",jenkins:Sr,googleCloud:Or,semaphore:"SEMAPHORE",teamcity:"TEAMCITY_VERSION",travis:"TRAVIS",netlify:"NETLIFY"};function yr(){let{env:t}=process;return(0,E.findKey)(Nr,e=>{if((0,E.isString)(e))return t[e];if((0,E.isFunction)(e))return e()})}var wt=()=>({appveyor:I(["APPVEYOR_JOB_ID","APPVEYOR_ACCOUNT_NAME","APPVEYOR_PROJECT_SLUG","APPVEYOR_BUILD_NUMBER","APPVEYOR_BUILD_VERSION","APPVEYOR_PULL_REQUEST_NUMBER","APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH"]),azure:I(["AGENT_BUILDDIRECTORY","AGENT_ID","AGENT_JOBNAME","AGENT_JOBSTATUS","AGENT_MACHINENAME","AGENT_NAME","AGENT_OS","AGENT_OSARCHITECTURE","BUILD_BUILDID","BUILD_BUILDNUMBER","BUILD_BUILDURI","BUILD_CONTAINERID","BUILD_CRONSCHEDULE_DISPLAYNAME","BUILD_DEFINITIONNAME","BUILD_DEFINITIONVERSION","BUILD_QUEUEDBY","BUILD_QUEUEDBYID","BUILD_REASON","BUILD_REPOSITORY_ID","BUILD_REPOSITORY_NAME","BUILD_REPOSITORY_PROVIDER","BUILD_REPOSITORY_URI","BUILD_REQUESTEDFOR","BUILD_REQUESTEDFOREMAIL","BUILD_REQUESTEDFORID","BUILD_SOURCEBRANCH","BUILD_SOURCEBRANCHNAME","BUILD_SOURCESDIRECTORY","BUILD_SOURCEVERSION","BUILD_SOURCEVERSIONAUTHOR","BUILD_SOURCEVERSIONMESSAGE","BUILD_STAGINGDIRECTORY","BUILD_TRIGGEREDBY_BUILDID","BUILD_TRIGGEREDBY_BUILDNUMBER","BUILD_TRIGGEREDBY_DEFINITIONID","BUILD_TRIGGEREDBY_DEFINITIONNAME","BUILD_TRIGGEREDBY_PROJECTID","COMMON_TESTRESULTSDIRECTORY","PIPELINE_WORKSPACE","SYSTEM_COLLECTIONID","SYSTEM_COLLECTIONURI","SYSTEM_DEFAULTWORKINGDIRECTORY","SYSTEM_DEFINITIONID","SYSTEM_HOSTTYPE","SYSTEM_JOBATTEMPT","SYSTEM_JOBDISPLAYNAME","SYSTEM_JOBID","SYSTEM_JOBNAME","SYSTEM_PHASEATTEMPT","SYSTEM_PHASEDISPLAYNAME","SYSTEM_PHASENAME","SYSTEM_PLANID","SYSTEM_PULLREQUEST_ISFORK","SYSTEM_PULLREQUEST_PULLREQUESTID","SYSTEM_PULLREQUEST_PULLREQUESTNUMBER","SYSTEM_PULLREQUEST_SOURCEREPOSITORYURI","SYSTEM_PULLREQUEST_SOURCEBRANCH","SYSTEM_PULLREQUEST_SOURCECOMMITID","SYSTEM_PULLREQUEST_TARGETBRANCH","SYSTEM_PULLREQUEST_TARGETBRANCHNAME","SYSTEM_STAGEATTEMPT","SYSTEM_STAGEDISPLAYNAME","SYSTEM_STAGENAME","SYSTEM_TEAMFOUNDATIONCOLLECTIONURI","SYSTEM_TEAMPROJECT","SYSTEM_TEAMPROJECTID","SYSTEM_TIMELINEID"]),awsCodeBuild:I(["AWS_DEFAULT_REGION","AWS_REGION","CODEBUILD_BATCH_BUILD_IDENTIFIER","CODEBUILD_BUILD_ARN","CODEBUILD_BUILD_ID","CODEBUILD_BUILD_IMAGE","CODEBUILD_BUILD_NUMBER","CODEBUILD_BUILD_SUCCEEDING","CODEBUILD_BUILD_URL","CODEBUILD_INITIATOR","CODEBUILD_PROJECT_ARN","CODEBUILD_PUBLIC_BUILD_URL","CODEBUILD_RESOLVED_SOURCE_VERSION","CODEBUILD_SOURCE_REPO_URL","CODEBUILD_SOURCE_VERSION","CODEBUILD_SRC_DIR","CODEBUILD_START_TIME","CODEBUILD_WEBHOOK_ACTOR_ACCOUNT_ID","CODEBUILD_WEBHOOK_BASE_REF","CODEBUILD_WEBHOOK_EVENT","CODEBUILD_WEBHOOK_HEAD_REF","CODEBUILD_WEBHOOK_MERGE_COMMIT","CODEBUILD_WEBHOOK_PREV_COMMIT","CODEBUILD_WEBHOOK_TRIGGER","CODEBUILD_WEBHOOK_LABEL","CODEBUILD_WEBHOOK_RUN_ID","CODEBUILD_WEBHOOK_JOB_ID","CODEBUILD_WEBHOOK_WORKFLOW_NAME","CODEBUILD_RUNNER_OWNER","CODEBUILD_RUNNER_REPO","CODEBUILD_RUNNER_REPO_DOMAIN","CODEBUILD_RUNNER_WITH_BUILDSPEC"]),bamboo:I(["bamboo_buildNumber","bamboo_buildResultsUrl","bamboo_planRepository_repositoryUrl","bamboo_buildKey"]),bitbucket:I(["CI","BITBUCKET_WORKSPACE","BITBUCKET_REPO_SLUG","BITBUCKET_REPO_UUID","BITBUCKET_REPO_FULL_NAME","BITBUCKET_REPO_IS_PRIVATE","BITBUCKET_REPO_OWNER","BITBUCKET_REPO_OWNER_UUID","BITBUCKET_PROJECT_KEY","BITBUCKET_PROJECT_UUID","BITBUCKET_BUILD_NUMBER","BITBUCKET_PIPELINE_UUID","BITBUCKET_STEP_UUID","BITBUCKET_STEP_RUN_NUMBER","BITBUCKET_STEP_TRIGGERER_UUID","BITBUCKET_PARALLEL_STEP","BITBUCKET_PARALLEL_STEP_COUNT","BITBUCKET_CLONE_DIR","BITBUCKET_COMMIT","BITBUCKET_BRANCH","BITBUCKET_TAG","BITBUCKET_BOOKMARK","BITBUCKET_GIT_HTTP_ORIGIN","BITBUCKET_GIT_SSH_ORIGIN","BITBUCKET_PR_ID","BITBUCKET_PR_DESTINATION_BRANCH","BITBUCKET_PR_DESTINATION_COMMIT","BITBUCKET_DEPLOYMENT_ENVIRONMENT","BITBUCKET_DEPLOYMENT_ENVIRONMENT_UUID","BITBUCKET_EXIT_CODE"]),buildkite:I(["BUILDKITE_ORGANIZATION_SLUG","BUILDKITE_PIPELINE_ID","BUILDKITE_PIPELINE_NAME","BUILDKITE_PIPELINE_SLUG","BUILDKITE_PIPELINE_DEFAULT_BRANCH","BUILDKITE_REPO","BUILDKITE_SOURCE","BUILDKITE_BRANCH","BUILDKITE_TAG","BUILDKITE_COMMIT","BUILDKITE_MESSAGE","BUILDKITE_BUILD_AUTHOR","BUILDKITE_BUILD_AUTHOR_EMAIL","BUILDKITE_JOB_ID","BUILDKITE_BUILD_ID","BUILDKITE_BUILD_URL","BUILDKITE_BUILD_NUMBER","BUILDKITE_LABEL","BUILDKITE_COMMAND","BUILDKITE_STEP_ID","BUILDKITE_STEP_KEY","BUILDKITE_PARALLEL_JOB","BUILDKITE_PARALLEL_JOB_COUNT","BUILDKITE_RETRY_COUNT","BUILDKITE_COMPUTE_TYPE","BUILDKITE_CLUSTER_NAME","BUILDKITE_PULL_REQUEST","BUILDKITE_PULL_REQUEST_REPO","BUILDKITE_PULL_REQUEST_BASE_BRANCH","BUILDKITE_PULL_REQUEST_DRAFT","BUILDKITE_PULL_REQUEST_LABELS","BUILDKITE_MERGE_QUEUE_BASE_BRANCH","BUILDKITE_MERGE_QUEUE_BASE_COMMIT","BUILDKITE_REBUILT_FROM_BUILD_ID","BUILDKITE_REBUILT_FROM_BUILD_NUMBER","BUILDKITE_TRIGGERED_FROM_BUILD_ID","BUILDKITE_TRIGGERED_FROM_BUILD_NUMBER","BUILDKITE_TRIGGERED_FROM_BUILD_PIPELINE_SLUG"]),circle:I(["CI","CIRCLECI","CIRCLE_BRANCH","CIRCLE_BUILD_NUM","CIRCLE_BUILD_URL","CIRCLE_PREVIOUS_BUILD_NUM","CIRCLE_JOB","CIRCLE_WORKFLOW_ID","CIRCLE_WORKFLOW_JOB_ID","CIRCLE_WORKFLOW_WORKSPACE_ID","CIRCLE_PIPELINE_ID","CIRCLE_ORGANIZATION_ID","CIRCLE_PROJECT_ID","CIRCLE_PROJECT_REPONAME","CIRCLE_PROJECT_USERNAME","CIRCLE_REPOSITORY_URL","CIRCLE_WORKING_DIRECTORY","CIRCLE_SHA1","CIRCLE_TAG","CIRCLE_USERNAME","CIRCLE_NODE_INDEX","CIRCLE_NODE_TOTAL","CIRCLE_PR_NUMBER","CIRCLE_PR_REPONAME","CIRCLE_PR_USERNAME","CIRCLE_PULL_REQUEST","CIRCLE_PULL_REQUESTS","CI_PULL_REQUEST"]),concourse:I(["BUILD_ID","BUILD_NAME","BUILD_JOB_NAME","BUILD_PIPELINE_NAME","BUILD_TEAM_NAME","ATC_EXTERNAL_URL"]),codeFresh:I(["CF_BUILD_ID","CF_BUILD_URL","CF_CURRENT_ATTEMPT","CF_STEP_NAME","CF_PIPELINE_NAME","CF_PIPELINE_TRIGGER_ID","CF_PULL_REQUEST_ID","CF_PULL_REQUEST_IS_FORK","CF_PULL_REQUEST_NUMBER","CF_PULL_REQUEST_TARGET"]),drone:I(["DRONE_BUILD_LINK","DRONE_BUILD_NUMBER","DRONE_PULL_REQUEST"]),githubActions:I(["CI","GITHUB_ACTIONS","GITHUB_WORKFLOW","GITHUB_WORKFLOW_REF","GITHUB_WORKFLOW_SHA","GITHUB_ACTION","GITHUB_ACTION_PATH","GITHUB_ACTION_REPOSITORY","GITHUB_JOB","GITHUB_EVENT_NAME","GITHUB_EVENT_PATH","GITHUB_RUN_ID","GITHUB_RUN_NUMBER","GITHUB_RUN_ATTEMPT","GITHUB_REPOSITORY","GITHUB_REPOSITORY_ID","GITHUB_REPOSITORY_OWNER","GITHUB_REPOSITORY_OWNER_ID","GITHUB_REF","GITHUB_REF_NAME","GITHUB_REF_TYPE","GITHUB_REF_PROTECTED","GITHUB_BASE_REF","GITHUB_HEAD_REF","GITHUB_SHA","GITHUB_ACTOR","GITHUB_ACTOR_ID","GITHUB_TRIGGERING_ACTOR","GITHUB_SERVER_URL","GITHUB_API_URL","GITHUB_GRAPHQL_URL","GITHUB_WORKSPACE","GITHUB_RETENTION_DAYS","RUNNER_OS","RUNNER_ARCH","RUNNER_NAME","RUNNER_ENVIRONMENT","RUNNER_DEBUG"]),gitlab:I(["CI_PIPELINE_ID","CI_PIPELINE_URL","CI_BUILD_ID","CI_JOB_ID","CI_JOB_URL","CI_JOB_NAME","CI_NODE_INDEX","CI_NODE_TOTAL","GITLAB_HOST","CI_PROJECT_ID","CI_PROJECT_URL","CI_REPOSITORY_URL","CI_ENVIRONMENT_URL","CI_DEFAULT_BRANCH","RUN_ATTEMPT","CI_MERGE_REQUEST_IID","CI_MERGE_REQUEST_PROJECT_URL","CI_MERGE_REQUEST_TITLE","CI_MERGE_REQUEST_SOURCE_BRANCH_NAME","CI_MERGE_REQUEST_TARGET_BRANCH_NAME","CI_OPEN_MERGE_REQUESTS"]),goCD:I(["GO_SERVER_URL","GO_ENVIRONMENT_NAME","GO_PIPELINE_NAME","GO_PIPELINE_COUNTER","GO_PIPELINE_LABEL","GO_STAGE_NAME","GO_STAGE_COUNTER","GO_JOB_NAME","GO_TRIGGER_USER","GO_REVISION","GO_TO_REVISION","GO_FROM_REVISION","GO_MATERIAL_HAS_CHANGED"]),googleCloud:I(["BUILD_ID","PROJECT_ID","REPO_NAME","BRANCH_NAME","TAG_NAME","COMMIT_SHA","SHORT_SHA"]),jenkins:I(["BRANCH_NAME","BUILD_DISPLAY_NAME","BUILD_ID","BUILD_NUMBER","BUILD_TAG","BUILD_URL","CHANGE_AUTHOR","CHANGE_AUTHOR_DISPLAY_NAME","CHANGE_AUTHOR_EMAIL","CHANGE_BRANCH","CHANGE_FORK","CHANGE_ID","CHANGE_TARGET","CHANGE_TITLE","CHANGE_URL","CI","EXECUTOR_NUMBER","JAVA_HOME","JENKINS_HOME","JENKINS_URL","JOB_BASE_NAME","JOB_NAME","JOB_URL","NODE_LABELS","NODE_NAME","RUN_ARTIFACTS_DISPLAY_URL","RUN_CHANGES_DISPLAY_URL","TAG_NAME","WORKSPACE","WORKSPACE_TMP","GIT_AUTHOR_EMAIL","GIT_AUTHOR_NAME","GIT_BRANCH","GIT_COMMIT","GIT_COMMITTER_EMAIL","GIT_COMMITTER_NAME","GIT_LOCAL_BRANCH","GIT_PREVIOUS_COMMIT","GIT_PREVIOUS_SUCCESSFUL_COMMIT","GIT_URL","ghprbActualCommit","ghprbGhRepository","ghprbPullId","ghprbPullLink","ghprbSourceBranch","ghprbTargetBranch","ghprbTriggerAuthorLogin"]),semaphore:I(["SEMAPHORE_BRANCH_ID","SEMAPHORE_BUILD_NUMBER","SEMAPHORE_CURRENT_JOB","SEMAPHORE_CURRENT_THREAD","SEMAPHORE_EXECUTABLE_UUID","SEMAPHORE_GIT_BRANCH","SEMAPHORE_GIT_DIR","SEMAPHORE_GIT_REF","SEMAPHORE_GIT_REF_TYPE","SEMAPHORE_GIT_REPO_SLUG","SEMAPHORE_GIT_SHA","SEMAPHORE_GIT_URL","SEMAPHORE_JOB_COUNT","SEMAPHORE_JOB_ID","SEMAPHORE_JOB_NAME","SEMAPHORE_JOB_UUID","SEMAPHORE_PIPELINE_ID","SEMAPHORE_PLATFORM","SEMAPHORE_PROJECT_DIR","SEMAPHORE_PROJECT_HASH_ID","SEMAPHORE_PROJECT_ID","SEMAPHORE_PROJECT_NAME","SEMAPHORE_PROJECT_UUID","SEMAPHORE_REPO_SLUG","SEMAPHORE_TRIGGER_SOURCE","SEMAPHORE_WORKFLOW_ID","PULL_REQUEST_NUMBER"]),teamcity:null,travis:I(["TRAVIS_JOB_ID","TRAVIS_BUILD_ID","TRAVIS_BUILD_WEB_URL","TRAVIS_REPO_SLUG","TRAVIS_JOB_NUMBER","TRAVIS_EVENT_TYPE","TRAVIS_COMMIT_RANGE","TRAVIS_BUILD_NUMBER","TRAVIS_PULL_REQUEST","TRAVIS_PULL_REQUEST_BRANCH","TRAVIS_PULL_REQUEST_SHA"]),netlify:I(["BUILD_ID","CONTEXT","URL","DEPLOY_URL","DEPLOY_PRIME_URL","DEPLOY_ID"])}),Lr=t=>{let e=bt();return e?(0,E.chain)(t()).get(e).value():{}};function Br(){return(0,E.chain)(wt()).omitBy(E.isNull).keys().value()}function xr(t){return t&&Br().includes(t)}function bt(){let t=yr();return $("detected CI provider name: %s",t),t||null}function Pr(){let t=Lr(wt);return(0,E.mapValues)(t,e=>(0,E.isString)(e)?Mt(e):e)}function vt(t){let e=Pr(),r=bt(),n=Mr(t,r);return $("detected CI provider: %s",r),$("detected CI params: %O",e),$("detected CI build ID: %o",n),{params:e,provider:r,ciBuildId:n}}function Mr(t,e){return t?{source:"user",value:t}:xr(e)?{source:"server",value:null}:{source:"random",value:`auto:${ut()}`}}var Ft=require("@currents/commit-info"),Gt=require("lodash");var wr=a.extend("git"),br=async()=>{let t=await(0,Ft.commitInfo)();return wr("commit: %O",t),{branch:t.branch,remoteOrigin:t.remote,authorEmail:t.email,authorName:t.author,message:t.message,sha:t.sha,ghaEventData:t.ghaEventData??null}},Ht=(0,Gt.memoize)(br);var kt=u(require("getos")),Kt=require("lodash"),O=require("os"),jt=require("util"),vr=async()=>{if((0,O.platform)()==="linux")try{let t=await(0,jt.promisify)(kt.default)();return"dist"in t&&"release"in t?[t.dist,t.release].join(" - "):(0,O.release)()}catch{return(0,O.release)()}return(0,O.release)()},Fr=async()=>{let t=await vr();return{osName:(0,O.platform)(),osVersion:t,osCpus:[],osMemory:{free:(0,O.freemem)(),total:(0,O.totalmem)()}}},Yt=(0,Kt.memoize)(Fr);var $t={name:"@currents/cmd",version:"2.0.0",main:"./dist/index.js",author:{name:"Currents Software Inc",email:"hello@currents.dev"},license:"MIT",repository:{type:"git",url:"https://github.com/currents-dev/currents-reporter"},description:"Currents CLI tools",engines:{node:">=20"},scripts:{test:"vitest",rm:"rimraf dist",lint:'TIMING=1 eslint "**/*.ts*"',types:"tsc --noEmit",build:"tsup-node --minify --dts",dev:"tsup-node --watch --dts",release:"release-it","publish:npm":"npm run rm && npm run build && ./publish.js"},devDependencies:{"@jest/reporters":"^30.4.1","@jest/types":"^30.4.1","@release-it/conventional-changelog":"^12.0.0","release-it":"^21.0.2","@types/archiver":"^6.0.3","@types/async-retry":"^1.4.9","@types/debug":"^4.1.12","@types/fs-extra":"^11.0.4","@types/getos":"^3.0.4","@types/lodash":"^4.17.16","@types/node":"^25.5.0","@types/proxy-from-env":"^1.0.4","@types/semver":"^7.5.8","@types/tmp":"^0.2.6","@types/unzipper":"^0.10.11","@types/uuid":"^10.0.0","@types/xml2js":"^0.4.14","@types/xxhashjs":"^0.2.4",jest:"^30.4.2",rimraf:"^6.0.1",tsup:"^8.3.5",typescript:"^5.9.3",vitest:"^4.1.0"},dependencies:{"@commander-js/extra-typings":"^14.0.0","@currents/commit-info":"2.0.0",archiver:"^7.0.1","async-retry":"^1.3.3",axios:"1.18.1","axios-retry":"4.5.0",chalk:"^4.1.2",commander:"^14.0.0",debug:"^4.4.0",dotenv:"^17.4.2",execa:"^9.5.1","fs-extra":"^11.3.4",getos:"^3.2.1",globby:"^11.1.0","https-proxy-agent":"^7.0.4","jest-cli":"^30.2.0","jest-config":"^30.3.0",lodash:"^4.18.1",nanoid:"^3.3.8","pretty-ms":"^7.0.1","proxy-from-env":"^1.1.0",semver:"^7.8.5","source-map-support":"^0.5.21",tmp:"^0.2.7","tmp-promise":"^3.0.3","ts-pattern":"^5.8.0",unzipper:"^0.12.3",uuid:"11.1.1",xml2js:"^0.6.2",xxhashjs:"^0.2.2"},bin:{currents:"./dist/bin/index.js","currents-cli":"./dist/bin/index.js"},files:["dist","!**/*.map","!**/*/*.map"],keywords:["cloud test dashboard","test reporter","test results","currents","currents dashboard","ci"],exports:{".":{import:"./dist/index.js",require:"./dist/index.js",types:"./dist/index.d.ts"},"./discovery/jest":{import:"./dist/services/upload/discovery/jest/reporter.js",require:"./dist/services/upload/discovery/jest/reporter.js",types:"./dist/services/upload/discovery/jest/reporter.d.ts"},"./package.json":"./package.json"},"release-it":{npm:{publish:!1},github:{release:!0,releaseName:"${npm.name} v${version}"},plugins:{"@release-it/conventional-changelog":{preset:{name:"conventionalcommits"},header:"# Changelog",ignoreVersion:!0,infile:"./CHANGELOG.md"}},git:{commitMessage:"chore: release ${npm.name} v${version}",tagName:"${npm.name}-v${version}"}}};var V=$t.version;var Et=u(require("lodash")),Hr=["apiKey","recordKey","key"];function Vt(t,e){return Et.default.isPlainObject(t)?Et.default.mapValues(t,(r,n)=>e.includes(n)&&r!==void 0?"*****":Vt(r,e)):t}function S(t){return Vt(t,Hr)}var kr=[];function mt(t){kr.push(t)}var T=u(require("chalk")),b=u(require("util"));var Jt=[],Wt=[];var qt=(...t)=>{let e=b.default.format(...t);mt(e),console.log(e)},Kr=(...t)=>{let e=b.default.format(...t);mt(e),console.error(e)},J=qt,f=(...t)=>{let e=b.default.format(...t);return Wt.push(e),a("WARNING: ",e),qt(T.default.bgYellow.black(" WARNING "),e)};var d=(...t)=>{let e=b.default.format(...jr(t));return Jt.push(e),a("ERROR: ",b.default.format(...t)),Kr(T.default.bgRed.white(" ERROR "),e)};var jr=t=>t.map(e=>e instanceof Error?e.message:e),W=(t=2)=>console.log(Array(t).fill("").join(`
2
- `)),Ao=T.default.cyan,Oo=T.default.blueBright,So=T.default.red,No=T.default.yellow,yo=T.default.green,Lo=T.default.gray,Bo=T.default.white,xo=T.default.black,Po=T.default.magenta,v=T.default.dim,Mo=T.default.bold;var F=u(require("fs-extra")),lt=require("path"),$r=require("uuid");async function M(t){try{return await F.default.readJson(t)}catch(e){throw d("Error while reading JSON file: %s",t,e),d}}async function ft(t,e){try{return await F.default.writeFile(t,e,"utf8"),t}catch(r){throw d(`Error writing file at ${t}:`,r),r}}async function Qt(t){try{return await F.default.ensureDir(t),a("Folder created",t),t}catch(e){throw d(`Failed to create folder at ${t}:`,e),e}}async function Xt(t,e){try{return await F.default.ensureDir((0,lt.dirname)(e)),await F.default.copy(t,e),a("File copied from %s to %s",t,e),e}catch(r){throw d(`Failed to copy file from ${t} to ${e}:`,r),r}}var zt=u(require("crypto"));function Zt(t){return zt.createHash("sha256").update(t).digest("base64").slice(0,8).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}var ar=u(require("axios")),St=u(require("fs-extra")),it=u(require("path")),cr=u(require("semver"));var Ie=u(require("lodash"));var pe=u(require("axios")),ue=u(require("axios-retry")),Rt=u(require("lodash"));var te=()=>process.env.CURRENTS_API_URL??"https://cy.currents.dev",ee=()=>process.env.CURRENTS_REST_API_URL??"https://api.currents.dev",re=()=>3e4;var q=require("axios"),dt=u(require("pretty-ms"));var oe=a.extend("http"),ne=[3*1e3,15*1e3,30*1e3],se=60*1e3;function gt(t,e=Date.now()){let r=t?.response?.headers?.["retry-after"];if(r==null||r==="")return;let n=Number(r);if(Number.isFinite(n))return Math.max(0,n*1e3);let o=Date.parse(String(r));return Number.isNaN(o)?void 0:Math.max(0,o-e)}var Q=(t,e)=>{let r=ne[Math.min(t,ne.length)-1],n=gt(e);return n===void 0?r:Math.min(Math.max(n,r),se)},It=t=>(oe("isRetriableError: %o",{message:t.message,code:"code"in t?t.code:void 0,status:"response"in t?t.response?.status:void 0,headers:"response"in t?t.response?.headers:void 0,data:"response"in t?t.response?.data:void 0,isAxiosError:(0,q.isAxiosError)(t)}),"code"in t&&t.code&&["ECONNABORTED","ECONNREFUSED","ECONNRESET","ETIMEDOUT","ENETRESET"].includes(t.code)?!0:(0,q.isAxiosError)(t)?[408,429,502,503,504].includes(t.response?.status??0):!1),Vr=["get","head","options","put","delete"],ie=t=>{if(!(0,q.isAxiosError)(t))return!1;let e=t.response?.status;if(e===429){let r=gt(t);return r===void 0||r<=se}return Vr.includes(t.config?.method?.toLowerCase()??"get")?It(t):e===408||t.code==="ECONNREFUSED"||t.code==="ENOTFOUND"},X=()=>3;function ae(t,e,r){oe("Network request '%s' failed: '%s'. Next attempt is in %s (%d/%d).",`${r.method?.toUpperCase()} ${r.url}`,e.message,(0,dt.default)(Q(t,e)??0),t,X()),f("Network request '%s' failed: '%s'. Next attempt is in %s (%d/%d).",`${r.method?.toUpperCase()} ${r.url}`,e.message,(0,dt.default)(Q(t,e)??0),t,X())}var _t=a.extend("http");var Tt={api:null,restApi:null};function Jr(t){let e=t==="api"?te():ee();_t("client base url: %s",e);let r=pe.default.create({baseURL:e,timeout:re(),transitional:{clarifyTimeoutError:!0}});return r.interceptors.request.use(n=>{let o=n["axios-retry"]?.retryCount??0;n.headers.set({"x-cmd-version":V}),n.headers.get("Content-Type")||n.headers.set("Content-Type","application/json");let s={...Rt.default.pick(n,"method","url","headers"),baseURL:e,data:Buffer.isBuffer(n.data)?"buffer":n.data,params:n.params};return o?_t("network request retry: %o",ce({...s,baseURL:e,isRetry:!0})):_t("network request: %o",ce(s)),n}),(0,ue.default)(r,{retries:X(),retryCondition:t==="restApi"?ie:It,retryDelay:(n,o)=>Q(n,o),shouldResetTimeout:!0,onRetry:ae}),r}function z(t){return Tt[t]===null&&(Tt[t]=Jr(t)),Tt[t]}function ce(t){return{method:t.method,baseURL:t.baseURL,url:t.url,data:t.isRetry?"<retry>":Wr(t.data),params:t.isRetry?"<retry>":t.params,headers:{...t.headers,Authorization:"Bearer ***","x-currents-key":"***"}}}function Wr(t){if(t?.results?.raw)return S({...t,results:{...t.results,raw:"***"}});if(typeof t=="string")try{return S(JSON.parse(t))}catch{return t}return Rt.default.isPlainObject(t)?S(t):t}var le=require("axios"),fe=u(require("lodash")),_=require("ts-pattern");function de(t){(0,_.match)(t).when(le.isAxiosError,qr).otherwise(()=>{f("Unexpected error while sending network request: %s",t)})}function qr(t){return(0,_.match)(t).with({code:"ECONNABORTED"},()=>{f("Network connection aborted")}).with({code:"ECONNREFUSED"},()=>{f("Network connection aborted")}).with({code:"ECONNRESET"},()=>{f("Network connection reset")}).with({code:"ETIMEDOUT"},()=>{f("Network connection timeout")}).with({response:_.P.not(_.P.nullish)},e=>{Qr(e,{status:e.response.status,data:e.response.data})}).otherwise(e=>{f(`[currents] Unexpected network error: %s
3
- %O`,t.message,{method:t.response?.config.method,url:t.response?.config.url,status:t.response?.status,payload:t.response?.config.data})})}function Qr(t,{status:e,data:r}){(0,_.match)(e).with(401,()=>{f(`[currents] ${t.response?.config.method} ${t.response?.config.url} - 401 Unauthorized Request from cloud service`)}).with(400,()=>{f(`[currents] ${t.response?.config.method} ${t.response?.config.url} - 400 Bad Request from cloud service:
4
- %o`,r)}).with(404,()=>{f(`[currents] ${t.response?.config.method} ${t.response?.config.url} - 404 Not Found from cloud service`)}).with(429,()=>{f(`[currents] ${t.response?.config.method} ${t.response?.config.url} - 429 Too Many Requests from cloud service`)}).with(422,()=>{Xr(t,r)}).otherwise(()=>{f(`[currents] Unexpected network response: %s
5
- %O`,t.message,{method:t.response?.config.method,url:t.response?.config.url,status:t.response?.status})})}function Xr(t,e){(0,_.match)(e).with({code:Ee.MISSING_SUITE,message:_.P.string,errors:_.P.array(_.P.string)},async r=>{let{message:n,errors:o}=r;W(1),d(...me(n,o))}).with({code:Ee.RUN_EXPIRED,message:_.P.string},r=>{f(r.message)}).with({message:_.P.string,errors:_.P.array(_.P.string)},r=>{let{message:n,errors:o}=r;W(1),f(...me(n,o)),W(1)}).otherwise(()=>{f(`[currents] Unexpected network response: %s
6
- %O`,t.message,{method:t.response?.config.method,url:t.response?.config.url,status:t.response?.status})})}var Ee={RUN_CANCELLED:"RUN_CANCELLED",RUN_EXPIRED:"RUN_EXPIRED",MISSING_SUITE:"MISSING_SUITE"};function me(t,e){return fe.default.isString(t)?e?.length===0?[t]:[t,`
1
+ "use strict";var Or=Object.create;var K=Object.defineProperty;var Sr=Object.getOwnPropertyDescriptor;var yr=Object.getOwnPropertyNames;var Nr=Object.getPrototypeOf,Lr=Object.prototype.hasOwnProperty;var Bt=(t,e)=>{for(var r in e)K(t,r,{get:e[r],enumerable:!0})},Pt=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of yr(e))!Lr.call(t,o)&&o!==r&&K(t,o,{get:()=>e[o],enumerable:!(n=Sr(e,o))||n.enumerable});return t};var u=(t,e,r)=>(r=t!=null?Or(Nr(t)):{},Pt(e||!t||!t.__esModule?K(r,"default",{value:t,enumerable:!0}):r,t)),xr=t=>Pt(K({},"__esModule",{value:!0}),t);var uo={};Bt(uo,{handleCurrentsReport:()=>hr});module.exports=xr(uo);var wt=require("debug"),Br=u(require("fs-extra")),a=(0,wt.debug)("currents"),Pr=null;function Mt(t){Pr=t}var J={};Bt(J,{getNanoid:()=>wr,userFacingNanoid:()=>Et});var lt=require("nanoid"),bt="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",wr=(t=16)=>(0,lt.customAlphabet)(bt,t)(),Et=(0,lt.customAlphabet)(bt,12);var d=require("lodash");function vt(t){return t.replace(/^([a-z][a-z0-9+.-]*:\/\/)[^/?#\s]*@/i,"$1")}var Y=a.extend("ci"),Mr=(t,e)=>(0,d.set)(t,(0,d.camelCase)(e),process.env[e]),_=t=>(0,d.transform)(t,Mr,{}),br=()=>process.env.TF_BUILD&&process.env.AZURE_HTTP_USER_AGENT,vr=()=>(0,d.some)(process.env,(t,e)=>/^CODEBUILD_/.test(e)),Fr=()=>process.env.bamboo_buildNumber,Gr=()=>(0,d.some)(process.env,(t,e)=>/^CONCOURSE_/.test(e)),kr=()=>process.env.GITLAB_CI||process.env.CI_SERVER_NAME&&/^GitLab/.test(process.env.CI_SERVER_NAME),Hr=()=>!!(process.env.BUILD_ID&&process.env.PROJECT_ID&&process.env.PROJECT_NUMBER||process.env.GCP_PROJECT||process.env.GCLOUD_PROJECT||process.env.GOOGLE_CLOUD_PROJECT),jr=()=>process.env.JENKINS_URL||process.env.JENKINS_HOME||process.env.JENKINS_VERSION||process.env.HUDSON_URL||process.env.HUDSON_HOME,Kr={appveyor:"APPVEYOR",azure:br,awsCodeBuild:vr,bamboo:Fr,bitbucket:"BITBUCKET_BUILD_NUMBER",buildkite:"BUILDKITE",circle:"CIRCLECI",concourse:Gr,codeFresh:"CF_BUILD_ID",drone:"DRONE",githubActions:"GITHUB_ACTIONS",gitlab:kr,goCD:"GO_JOB_NAME",jenkins:jr,googleCloud:Hr,semaphore:"SEMAPHORE",teamcity:"TEAMCITY_VERSION",travis:"TRAVIS",netlify:"NETLIFY"};function Jr(){let{env:t}=process;return(0,d.findKey)(Kr,e=>{if((0,d.isString)(e))return t[e];if((0,d.isFunction)(e))return e()})}var Ft=()=>({appveyor:_(["APPVEYOR_JOB_ID","APPVEYOR_ACCOUNT_NAME","APPVEYOR_PROJECT_SLUG","APPVEYOR_BUILD_NUMBER","APPVEYOR_BUILD_VERSION","APPVEYOR_PULL_REQUEST_NUMBER","APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH"]),azure:_(["AGENT_BUILDDIRECTORY","AGENT_ID","AGENT_JOBNAME","AGENT_JOBSTATUS","AGENT_MACHINENAME","AGENT_NAME","AGENT_OS","AGENT_OSARCHITECTURE","BUILD_BUILDID","BUILD_BUILDNUMBER","BUILD_BUILDURI","BUILD_CONTAINERID","BUILD_CRONSCHEDULE_DISPLAYNAME","BUILD_DEFINITIONNAME","BUILD_DEFINITIONVERSION","BUILD_QUEUEDBY","BUILD_QUEUEDBYID","BUILD_REASON","BUILD_REPOSITORY_ID","BUILD_REPOSITORY_NAME","BUILD_REPOSITORY_PROVIDER","BUILD_REPOSITORY_URI","BUILD_REQUESTEDFOR","BUILD_REQUESTEDFOREMAIL","BUILD_REQUESTEDFORID","BUILD_SOURCEBRANCH","BUILD_SOURCEBRANCHNAME","BUILD_SOURCESDIRECTORY","BUILD_SOURCEVERSION","BUILD_SOURCEVERSIONAUTHOR","BUILD_SOURCEVERSIONMESSAGE","BUILD_STAGINGDIRECTORY","BUILD_TRIGGEREDBY_BUILDID","BUILD_TRIGGEREDBY_BUILDNUMBER","BUILD_TRIGGEREDBY_DEFINITIONID","BUILD_TRIGGEREDBY_DEFINITIONNAME","BUILD_TRIGGEREDBY_PROJECTID","COMMON_TESTRESULTSDIRECTORY","PIPELINE_WORKSPACE","SYSTEM_COLLECTIONID","SYSTEM_COLLECTIONURI","SYSTEM_DEFAULTWORKINGDIRECTORY","SYSTEM_DEFINITIONID","SYSTEM_HOSTTYPE","SYSTEM_JOBATTEMPT","SYSTEM_JOBDISPLAYNAME","SYSTEM_JOBID","SYSTEM_JOBNAME","SYSTEM_PHASEATTEMPT","SYSTEM_PHASEDISPLAYNAME","SYSTEM_PHASENAME","SYSTEM_PLANID","SYSTEM_PULLREQUEST_ISFORK","SYSTEM_PULLREQUEST_PULLREQUESTID","SYSTEM_PULLREQUEST_PULLREQUESTNUMBER","SYSTEM_PULLREQUEST_SOURCEREPOSITORYURI","SYSTEM_PULLREQUEST_SOURCEBRANCH","SYSTEM_PULLREQUEST_SOURCECOMMITID","SYSTEM_PULLREQUEST_TARGETBRANCH","SYSTEM_PULLREQUEST_TARGETBRANCHNAME","SYSTEM_STAGEATTEMPT","SYSTEM_STAGEDISPLAYNAME","SYSTEM_STAGENAME","SYSTEM_TEAMFOUNDATIONCOLLECTIONURI","SYSTEM_TEAMPROJECT","SYSTEM_TEAMPROJECTID","SYSTEM_TIMELINEID"]),awsCodeBuild:_(["AWS_DEFAULT_REGION","AWS_REGION","CODEBUILD_BATCH_BUILD_IDENTIFIER","CODEBUILD_BUILD_ARN","CODEBUILD_BUILD_ID","CODEBUILD_BUILD_IMAGE","CODEBUILD_BUILD_NUMBER","CODEBUILD_BUILD_SUCCEEDING","CODEBUILD_BUILD_URL","CODEBUILD_INITIATOR","CODEBUILD_PROJECT_ARN","CODEBUILD_PUBLIC_BUILD_URL","CODEBUILD_RESOLVED_SOURCE_VERSION","CODEBUILD_SOURCE_REPO_URL","CODEBUILD_SOURCE_VERSION","CODEBUILD_SRC_DIR","CODEBUILD_START_TIME","CODEBUILD_WEBHOOK_ACTOR_ACCOUNT_ID","CODEBUILD_WEBHOOK_BASE_REF","CODEBUILD_WEBHOOK_EVENT","CODEBUILD_WEBHOOK_HEAD_REF","CODEBUILD_WEBHOOK_MERGE_COMMIT","CODEBUILD_WEBHOOK_PREV_COMMIT","CODEBUILD_WEBHOOK_TRIGGER","CODEBUILD_WEBHOOK_LABEL","CODEBUILD_WEBHOOK_RUN_ID","CODEBUILD_WEBHOOK_JOB_ID","CODEBUILD_WEBHOOK_WORKFLOW_NAME","CODEBUILD_RUNNER_OWNER","CODEBUILD_RUNNER_REPO","CODEBUILD_RUNNER_REPO_DOMAIN","CODEBUILD_RUNNER_WITH_BUILDSPEC"]),bamboo:_(["bamboo_buildNumber","bamboo_buildResultsUrl","bamboo_planRepository_repositoryUrl","bamboo_buildKey"]),bitbucket:_(["CI","BITBUCKET_WORKSPACE","BITBUCKET_REPO_SLUG","BITBUCKET_REPO_UUID","BITBUCKET_REPO_FULL_NAME","BITBUCKET_REPO_IS_PRIVATE","BITBUCKET_REPO_OWNER","BITBUCKET_REPO_OWNER_UUID","BITBUCKET_PROJECT_KEY","BITBUCKET_PROJECT_UUID","BITBUCKET_BUILD_NUMBER","BITBUCKET_PIPELINE_UUID","BITBUCKET_STEP_UUID","BITBUCKET_STEP_RUN_NUMBER","BITBUCKET_STEP_TRIGGERER_UUID","BITBUCKET_PARALLEL_STEP","BITBUCKET_PARALLEL_STEP_COUNT","BITBUCKET_CLONE_DIR","BITBUCKET_COMMIT","BITBUCKET_BRANCH","BITBUCKET_TAG","BITBUCKET_BOOKMARK","BITBUCKET_GIT_HTTP_ORIGIN","BITBUCKET_GIT_SSH_ORIGIN","BITBUCKET_PR_ID","BITBUCKET_PR_DESTINATION_BRANCH","BITBUCKET_PR_DESTINATION_COMMIT","BITBUCKET_DEPLOYMENT_ENVIRONMENT","BITBUCKET_DEPLOYMENT_ENVIRONMENT_UUID","BITBUCKET_EXIT_CODE"]),buildkite:_(["BUILDKITE_ORGANIZATION_SLUG","BUILDKITE_PIPELINE_ID","BUILDKITE_PIPELINE_NAME","BUILDKITE_PIPELINE_SLUG","BUILDKITE_PIPELINE_DEFAULT_BRANCH","BUILDKITE_REPO","BUILDKITE_SOURCE","BUILDKITE_BRANCH","BUILDKITE_TAG","BUILDKITE_COMMIT","BUILDKITE_MESSAGE","BUILDKITE_BUILD_AUTHOR","BUILDKITE_BUILD_AUTHOR_EMAIL","BUILDKITE_JOB_ID","BUILDKITE_BUILD_ID","BUILDKITE_BUILD_URL","BUILDKITE_BUILD_NUMBER","BUILDKITE_LABEL","BUILDKITE_COMMAND","BUILDKITE_STEP_ID","BUILDKITE_STEP_KEY","BUILDKITE_PARALLEL_JOB","BUILDKITE_PARALLEL_JOB_COUNT","BUILDKITE_RETRY_COUNT","BUILDKITE_COMPUTE_TYPE","BUILDKITE_CLUSTER_NAME","BUILDKITE_PULL_REQUEST","BUILDKITE_PULL_REQUEST_REPO","BUILDKITE_PULL_REQUEST_BASE_BRANCH","BUILDKITE_PULL_REQUEST_DRAFT","BUILDKITE_PULL_REQUEST_LABELS","BUILDKITE_MERGE_QUEUE_BASE_BRANCH","BUILDKITE_MERGE_QUEUE_BASE_COMMIT","BUILDKITE_REBUILT_FROM_BUILD_ID","BUILDKITE_REBUILT_FROM_BUILD_NUMBER","BUILDKITE_TRIGGERED_FROM_BUILD_ID","BUILDKITE_TRIGGERED_FROM_BUILD_NUMBER","BUILDKITE_TRIGGERED_FROM_BUILD_PIPELINE_SLUG"]),circle:_(["CI","CIRCLECI","CIRCLE_BRANCH","CIRCLE_BUILD_NUM","CIRCLE_BUILD_URL","CIRCLE_PREVIOUS_BUILD_NUM","CIRCLE_JOB","CIRCLE_WORKFLOW_ID","CIRCLE_WORKFLOW_JOB_ID","CIRCLE_WORKFLOW_WORKSPACE_ID","CIRCLE_PIPELINE_ID","CIRCLE_ORGANIZATION_ID","CIRCLE_PROJECT_ID","CIRCLE_PROJECT_REPONAME","CIRCLE_PROJECT_USERNAME","CIRCLE_REPOSITORY_URL","CIRCLE_WORKING_DIRECTORY","CIRCLE_SHA1","CIRCLE_TAG","CIRCLE_USERNAME","CIRCLE_NODE_INDEX","CIRCLE_NODE_TOTAL","CIRCLE_PR_NUMBER","CIRCLE_PR_REPONAME","CIRCLE_PR_USERNAME","CIRCLE_PULL_REQUEST","CIRCLE_PULL_REQUESTS","CI_PULL_REQUEST"]),concourse:_(["BUILD_ID","BUILD_NAME","BUILD_JOB_NAME","BUILD_PIPELINE_NAME","BUILD_TEAM_NAME","ATC_EXTERNAL_URL"]),codeFresh:_(["CF_BUILD_ID","CF_BUILD_URL","CF_CURRENT_ATTEMPT","CF_STEP_NAME","CF_PIPELINE_NAME","CF_PIPELINE_TRIGGER_ID","CF_PULL_REQUEST_ID","CF_PULL_REQUEST_IS_FORK","CF_PULL_REQUEST_NUMBER","CF_PULL_REQUEST_TARGET"]),drone:_(["DRONE_BUILD_LINK","DRONE_BUILD_NUMBER","DRONE_PULL_REQUEST"]),githubActions:_(["CI","GITHUB_ACTIONS","GITHUB_WORKFLOW","GITHUB_WORKFLOW_REF","GITHUB_WORKFLOW_SHA","GITHUB_ACTION","GITHUB_ACTION_PATH","GITHUB_ACTION_REPOSITORY","GITHUB_JOB","GITHUB_EVENT_NAME","GITHUB_EVENT_PATH","GITHUB_RUN_ID","GITHUB_RUN_NUMBER","GITHUB_RUN_ATTEMPT","GITHUB_REPOSITORY","GITHUB_REPOSITORY_ID","GITHUB_REPOSITORY_OWNER","GITHUB_REPOSITORY_OWNER_ID","GITHUB_REF","GITHUB_REF_NAME","GITHUB_REF_TYPE","GITHUB_REF_PROTECTED","GITHUB_BASE_REF","GITHUB_HEAD_REF","GITHUB_SHA","GITHUB_ACTOR","GITHUB_ACTOR_ID","GITHUB_TRIGGERING_ACTOR","GITHUB_SERVER_URL","GITHUB_API_URL","GITHUB_GRAPHQL_URL","GITHUB_WORKSPACE","GITHUB_RETENTION_DAYS","RUNNER_OS","RUNNER_ARCH","RUNNER_NAME","RUNNER_ENVIRONMENT","RUNNER_DEBUG"]),gitlab:_(["CI_PIPELINE_ID","CI_PIPELINE_URL","CI_BUILD_ID","CI_JOB_ID","CI_JOB_URL","CI_JOB_NAME","CI_NODE_INDEX","CI_NODE_TOTAL","GITLAB_HOST","CI_PROJECT_ID","CI_PROJECT_URL","CI_REPOSITORY_URL","CI_ENVIRONMENT_URL","CI_DEFAULT_BRANCH","RUN_ATTEMPT","CI_MERGE_REQUEST_IID","CI_MERGE_REQUEST_PROJECT_URL","CI_MERGE_REQUEST_TITLE","CI_MERGE_REQUEST_SOURCE_BRANCH_NAME","CI_MERGE_REQUEST_TARGET_BRANCH_NAME","CI_OPEN_MERGE_REQUESTS"]),goCD:_(["GO_SERVER_URL","GO_ENVIRONMENT_NAME","GO_PIPELINE_NAME","GO_PIPELINE_COUNTER","GO_PIPELINE_LABEL","GO_STAGE_NAME","GO_STAGE_COUNTER","GO_JOB_NAME","GO_TRIGGER_USER","GO_REVISION","GO_TO_REVISION","GO_FROM_REVISION","GO_MATERIAL_HAS_CHANGED"]),googleCloud:_(["BUILD_ID","PROJECT_ID","REPO_NAME","BRANCH_NAME","TAG_NAME","COMMIT_SHA","SHORT_SHA"]),jenkins:_(["BRANCH_NAME","BUILD_DISPLAY_NAME","BUILD_ID","BUILD_NUMBER","BUILD_TAG","BUILD_URL","CHANGE_AUTHOR","CHANGE_AUTHOR_DISPLAY_NAME","CHANGE_AUTHOR_EMAIL","CHANGE_BRANCH","CHANGE_FORK","CHANGE_ID","CHANGE_TARGET","CHANGE_TITLE","CHANGE_URL","CI","EXECUTOR_NUMBER","JAVA_HOME","JENKINS_HOME","JENKINS_URL","JOB_BASE_NAME","JOB_NAME","JOB_URL","NODE_LABELS","NODE_NAME","RUN_ARTIFACTS_DISPLAY_URL","RUN_CHANGES_DISPLAY_URL","TAG_NAME","WORKSPACE","WORKSPACE_TMP","GIT_AUTHOR_EMAIL","GIT_AUTHOR_NAME","GIT_BRANCH","GIT_COMMIT","GIT_COMMITTER_EMAIL","GIT_COMMITTER_NAME","GIT_LOCAL_BRANCH","GIT_PREVIOUS_COMMIT","GIT_PREVIOUS_SUCCESSFUL_COMMIT","GIT_URL","ghprbActualCommit","ghprbGhRepository","ghprbPullId","ghprbPullLink","ghprbSourceBranch","ghprbTargetBranch","ghprbTriggerAuthorLogin"]),semaphore:_(["SEMAPHORE_BRANCH_ID","SEMAPHORE_BUILD_NUMBER","SEMAPHORE_CURRENT_JOB","SEMAPHORE_CURRENT_THREAD","SEMAPHORE_EXECUTABLE_UUID","SEMAPHORE_GIT_BRANCH","SEMAPHORE_GIT_DIR","SEMAPHORE_GIT_REF","SEMAPHORE_GIT_REF_TYPE","SEMAPHORE_GIT_REPO_SLUG","SEMAPHORE_GIT_SHA","SEMAPHORE_GIT_URL","SEMAPHORE_JOB_COUNT","SEMAPHORE_JOB_ID","SEMAPHORE_JOB_NAME","SEMAPHORE_JOB_UUID","SEMAPHORE_PIPELINE_ID","SEMAPHORE_PLATFORM","SEMAPHORE_PROJECT_DIR","SEMAPHORE_PROJECT_HASH_ID","SEMAPHORE_PROJECT_ID","SEMAPHORE_PROJECT_NAME","SEMAPHORE_PROJECT_UUID","SEMAPHORE_REPO_SLUG","SEMAPHORE_TRIGGER_SOURCE","SEMAPHORE_WORKFLOW_ID","PULL_REQUEST_NUMBER"]),teamcity:null,travis:_(["TRAVIS_JOB_ID","TRAVIS_BUILD_ID","TRAVIS_BUILD_WEB_URL","TRAVIS_REPO_SLUG","TRAVIS_JOB_NUMBER","TRAVIS_EVENT_TYPE","TRAVIS_COMMIT_RANGE","TRAVIS_BUILD_NUMBER","TRAVIS_PULL_REQUEST","TRAVIS_PULL_REQUEST_BRANCH","TRAVIS_PULL_REQUEST_SHA"]),netlify:_(["BUILD_ID","CONTEXT","URL","DEPLOY_URL","DEPLOY_PRIME_URL","DEPLOY_ID"])}),Yr=t=>{let e=Gt();return e?(0,d.chain)(t()).get(e).value():{}};function $r(){return(0,d.chain)(Ft()).omitBy(d.isNull).keys().value()}function Vr(t){return t&&$r().includes(t)}function Gt(){let t=Jr();return Y("detected CI provider name: %s",t),t||null}function Wr(){let t=Yr(Ft);return(0,d.mapValues)(t,e=>(0,d.isString)(e)?vt(e):e)}function kt(t){let e=Wr(),r=Gt(),n=qr(t,r);return Y("detected CI provider: %s",r),Y("detected CI params: %O",e),Y("detected CI build ID: %o",n),{params:e,provider:r,ciBuildId:n}}function qr(t,e){return t?{source:"user",value:t}:Vr(e)?{source:"server",value:null}:{source:"random",value:`auto:${Et()}`}}var Ht=require("@currents/commit-info"),jt=require("lodash");var Qr=a.extend("git"),Xr=async()=>{let t=await(0,Ht.commitInfo)();return Qr("commit: %O",t),{branch:t.branch,remoteOrigin:t.remote,authorEmail:t.email,authorName:t.author,message:t.message,sha:t.sha,ghaEventData:t.ghaEventData??null}},Kt=(0,jt.memoize)(Xr);var Jt=u(require("getos")),Yt=require("lodash"),A=require("os"),$t=require("util"),zr=async()=>{if((0,A.platform)()==="linux")try{let t=await(0,$t.promisify)(Jt.default)();return"dist"in t&&"release"in t?[t.dist,t.release].join(" - "):(0,A.release)()}catch{return(0,A.release)()}return(0,A.release)()},Zr=async()=>{let t=await zr();return{osName:(0,A.platform)(),osVersion:t,osCpus:[],osMemory:{free:(0,A.freemem)(),total:(0,A.totalmem)()}}},Vt=(0,Yt.memoize)(Zr);var Wt={name:"@currents/cmd",version:"2.0.2",main:"./dist/index.js",author:{name:"Currents Software Inc",email:"hello@currents.dev"},license:"MIT",repository:{type:"git",url:"https://github.com/currents-dev/currents-reporter"},description:"Currents CLI tools",engines:{node:">=20"},scripts:{test:"vitest",rm:"rimraf dist",lint:'TIMING=1 eslint "**/*.ts*"',types:"tsc --noEmit",build:"tsup-node --minify --dts",dev:"tsup-node --watch --dts",release:"release-it","publish:npm":"npm run rm && npm run build && ./publish.js"},devDependencies:{"@jest/reporters":"^30.4.1","@jest/types":"^30.4.1","@release-it/conventional-changelog":"^12.0.0","release-it":"^21.0.2","@types/archiver":"^6.0.3","@types/async-retry":"^1.4.9","@types/debug":"^4.1.12","@types/fs-extra":"^11.0.4","@types/getos":"^3.0.4","@types/lodash":"^4.17.16","@types/node":"^25.5.0","@types/proxy-from-env":"^1.0.4","@types/semver":"^7.5.8","@types/tmp":"^0.2.6","@types/unzipper":"^0.10.11","@types/uuid":"^10.0.0","@types/xml2js":"^0.4.14","@types/xxhashjs":"^0.2.4",jest:"^30.4.2","jest-cli":"^30.4.2","jest-config":"^30.4.2",rimraf:"^6.0.1",tsup:"^8.3.5",typescript:"^5.9.3",vitest:"^4.1.11"},dependencies:{"@commander-js/extra-typings":"^14.0.0","@currents/commit-info":"2.0.0",archiver:"^7.0.1","async-retry":"^1.3.3",axios:"1.20.0","axios-retry":"4.5.0",chalk:"^4.1.2",commander:"^14.0.0",debug:"^4.4.0",dotenv:"^17.4.2",execa:"^9.5.1","fs-extra":"^11.3.4",getos:"^3.2.1",globby:"^11.1.0","https-proxy-agent":"^7.0.4",lodash:"^4.18.1",nanoid:"^3.3.8","pretty-ms":"^7.0.1","proxy-from-env":"^1.1.0",semver:"^7.8.5","source-map-support":"^0.5.21",tmp:"^0.2.7","tmp-promise":"^3.0.3","ts-pattern":"^5.8.0",unzipper:"^0.12.3",uuid:"11.1.1",xml2js:"^0.6.2",xxhashjs:"^0.2.2"},bin:{currents:"./dist/bin/index.js","currents-cli":"./dist/bin/index.js"},files:["dist","!**/*.map","!**/*/*.map"],keywords:["cloud test dashboard","test reporter","test results","currents","currents dashboard","ci"],exports:{".":{import:"./dist/index.js",require:"./dist/index.js",types:"./dist/index.d.ts"},"./discovery/jest":{import:"./dist/services/upload/discovery/jest/reporter.js",require:"./dist/services/upload/discovery/jest/reporter.js",types:"./dist/services/upload/discovery/jest/reporter.d.ts"},"./package.json":"./package.json"},"release-it":{npm:{publish:!1},github:{release:!0,releaseName:"${npm.name} v${version}"},plugins:{"@release-it/conventional-changelog":{preset:{name:"conventionalcommits"},header:"# Changelog",ignoreVersion:!0,infile:"./CHANGELOG.md"}},git:{commitMessage:"chore: release ${npm.name} v${version}",tagName:"${npm.name}-v${version}"}}};var $=Wt.version;var ft=u(require("lodash")),en=["apiKey","recordKey","key"];function qt(t,e){return ft.default.isPlainObject(t)?ft.default.mapValues(t,(r,n)=>e.includes(n)&&r!==void 0?"*****":qt(r,e)):t}function O(t){return qt(t,en)}var rn=[];function dt(t){rn.push(t)}var h=u(require("chalk")),b=u(require("util"));var Qt=[],Xt=[];var zt=(...t)=>{let e=b.default.format(...t);dt(e),console.log(e)},nn=(...t)=>{let e=b.default.format(...t);dt(e),console.error(e)},V=zt,E=(...t)=>{let e=b.default.format(...t);return Xt.push(e),a("WARNING: ",e),zt(h.default.bgYellow.black(" WARNING "),e)};var I=(...t)=>{let e=b.default.format(...on(t));return Qt.push(e),a("ERROR: ",b.default.format(...t)),nn(h.default.bgRed.white(" ERROR "),e)};var on=t=>t.map(e=>e instanceof Error?e.message:e),W=(t=2)=>console.log(Array(t).fill("").join(`
2
+ `)),$o=h.default.cyan,Vo=h.default.blueBright,Wo=h.default.red,qo=h.default.yellow,Qo=h.default.green,Xo=h.default.gray,zo=h.default.white,Zo=h.default.black,ts=h.default.magenta,v=h.default.dim,es=h.default.bold;var F=u(require("fs-extra")),gt=require("path"),an=require("uuid");async function M(t){try{return await F.default.readJson(t)}catch(e){throw I("Error while reading JSON file: %s",t,e),I}}async function It(t,e){try{return await F.default.writeFile(t,e,"utf8"),t}catch(r){throw I(`Error writing file at ${t}:`,r),r}}async function Zt(t){try{return await F.default.ensureDir(t),a("Folder created",t),t}catch(e){throw I(`Failed to create folder at ${t}:`,e),e}}async function te(t,e){try{return await F.default.ensureDir((0,gt.dirname)(e)),await F.default.copy(t,e),a("File copied from %s to %s",t,e),e}catch(r){throw I(`Failed to copy file from ${t} to ${e}:`,r),r}}var ee=u(require("crypto"));function re(t){return ee.createHash("sha256").update(t).digest("base64").slice(0,8).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}var Rr=u(require("axios")),Lt=u(require("fs-extra")),pt=u(require("path")),Cr=u(require("semver"));var Re=u(require("lodash"));var le=u(require("axios")),Ee=u(require("axios-retry")),Ut=u(require("lodash"));var ne=()=>process.env.CURRENTS_API_URL??"https://cy.currents.dev",oe=()=>process.env.CURRENTS_REST_API_URL??"https://api.currents.dev",se=()=>3e4;var q=require("axios"),Tt=u(require("pretty-ms"));var ae=a.extend("http"),ie=[3*1e3,15*1e3,30*1e3],ce=60*1e3;function _t(t,e=Date.now()){let r=t?.response?.headers?.["retry-after"];if(r==null||r==="")return;let n=Number(r);if(Number.isFinite(n))return Math.max(0,n*1e3);let o=Date.parse(String(r));return Number.isNaN(o)?void 0:Math.max(0,o-e)}var Q=(t,e)=>{let r=ie[Math.min(t,ie.length)-1],n=_t(e);return n===void 0?r:Math.min(Math.max(n,r),ce)},Rt=t=>(ae("isRetriableError: %o",{message:t.message,code:"code"in t?t.code:void 0,status:"response"in t?t.response?.status:void 0,headers:"response"in t?t.response?.headers:void 0,data:"response"in t?t.response?.data:void 0,isAxiosError:(0,q.isAxiosError)(t)}),"code"in t&&t.code&&["ECONNABORTED","ECONNREFUSED","ECONNRESET","ETIMEDOUT","ENETRESET"].includes(t.code)?!0:(0,q.isAxiosError)(t)?[408,429,502,503,504].includes(t.response?.status??0):!1),cn=["get","head","options","put","delete"],pe=t=>{if(!(0,q.isAxiosError)(t))return!1;let e=t.response?.status;if(e===429){let r=_t(t);return r===void 0||r<=ce}return cn.includes(t.config?.method?.toLowerCase()??"get")?Rt(t):e===408||t.code==="ECONNREFUSED"||t.code==="ENOTFOUND"},X=()=>3;function ue(t,e,r){ae("Network request '%s' failed: '%s'. Next attempt is in %s (%d/%d).",`${r.method?.toUpperCase()} ${r.url}`,e.message,(0,Tt.default)(Q(t,e)??0),t,X()),E("Network request '%s' failed: '%s'. Next attempt is in %s (%d/%d).",`${r.method?.toUpperCase()} ${r.url}`,e.message,(0,Tt.default)(Q(t,e)??0),t,X())}var Ct=a.extend("http");var ht={api:null,restApi:null};function pn(t){let e=t==="api"?ne():oe();Ct("client base url: %s",e);let r=le.default.create({baseURL:e,timeout:se(),transitional:{clarifyTimeoutError:!0}});return r.interceptors.request.use(n=>{let o=n["axios-retry"]?.retryCount??0;n.headers.set({"x-cmd-version":$}),n.headers.get("Content-Type")||n.headers.set("Content-Type","application/json");let s={...Ut.default.pick(n,"method","url","headers"),baseURL:e,data:Buffer.isBuffer(n.data)?"buffer":n.data,params:n.params};return o?Ct("network request retry: %o",me({...s,baseURL:e,isRetry:!0})):Ct("network request: %o",me(s)),n}),(0,Ee.default)(r,{retries:X(),retryCondition:t==="restApi"?pe:Rt,retryDelay:(n,o)=>Q(n,o),shouldResetTimeout:!0,onRetry:ue}),r}function z(t){return ht[t]===null&&(ht[t]=pn(t)),ht[t]}function me(t){return{method:t.method,baseURL:t.baseURL,url:t.url,data:t.isRetry?"<retry>":un(t.data),params:t.isRetry?"<retry>":t.params,headers:{...t.headers,Authorization:"Bearer ***","x-currents-key":"***"}}}function un(t){if(t?.results?.raw)return O({...t,results:{...t.results,raw:"***"}});if(typeof t=="string")try{return O(JSON.parse(t))}catch{return t}return Ut.default.isPlainObject(t)?O(t):t}var ge=require("axios"),Ie=u(require("lodash")),C=require("ts-pattern");function Te(t){(0,C.match)(t).when(ge.isAxiosError,mn).otherwise(()=>{E("Unexpected error while sending network request: %s",t)})}function mn(t){return(0,C.match)(t).with({code:"ECONNABORTED"},()=>{E("Network connection aborted")}).with({code:"ECONNREFUSED"},()=>{E("Network connection aborted")}).with({code:"ECONNRESET"},()=>{E("Network connection reset")}).with({code:"ETIMEDOUT"},()=>{E("Network connection timeout")}).with({response:C.P.not(C.P.nullish)},e=>{ln(e,{status:e.response.status,data:e.response.data})}).otherwise(e=>{E(`[currents] Unexpected network error: %s
3
+ %O`,t.message,{method:t.response?.config.method,url:t.response?.config.url,status:t.response?.status,payload:t.response?.config.data})})}function ln(t,{status:e,data:r}){(0,C.match)(e).with(401,()=>{E(`[currents] ${t.response?.config.method} ${t.response?.config.url} - 401 Unauthorized Request from cloud service`)}).with(400,()=>{E(`[currents] ${t.response?.config.method} ${t.response?.config.url} - 400 Bad Request from cloud service:
4
+ %o`,r)}).with(404,()=>{E(`[currents] ${t.response?.config.method} ${t.response?.config.url} - 404 Not Found from cloud service`)}).with(429,()=>{E(`[currents] ${t.response?.config.method} ${t.response?.config.url} - 429 Too Many Requests from cloud service`)}).with(422,()=>{En(t,r)}).otherwise(()=>{E(`[currents] Unexpected network response: %s
5
+ %O`,t.message,{method:t.response?.config.method,url:t.response?.config.url,status:t.response?.status})})}function En(t,e){(0,C.match)(e).with({code:fe.MISSING_SUITE,message:C.P.string,errors:C.P.array(C.P.string)},async r=>{let{message:n,errors:o}=r;W(1),I(...de(n,o))}).with({code:fe.RUN_EXPIRED,message:C.P.string},r=>{E(r.message)}).with({message:C.P.string,errors:C.P.array(C.P.string)},r=>{let{message:n,errors:o}=r;W(1),E(...de(n,o)),W(1)}).otherwise(()=>{E(`[currents] Unexpected network response: %s
6
+ %O`,t.message,{method:t.response?.config.method,url:t.response?.config.url,status:t.response?.status})})}var fe={RUN_CANCELLED:"RUN_CANCELLED",RUN_EXPIRED:"RUN_EXPIRED",MISSING_SUITE:"MISSING_SUITE"};function de(t,e){return Ie.default.isString(t)?e?.length===0?[t]:[t,`
7
7
  ${(e??[]).map(r=>` - ${r}`).join(`
8
8
  `)}
9
- `]:["Unexpected network error"]}var ge=a.extend("http");async function G(t,e,r=z){try{let n=await r(t).request(e);return ge("network response: %o",{...Ie.default.omit(n,"request","config"),url:n.config.url,method:n.config.method}),n}catch(n){let o=n;throw ge("network error: %o",{code:o.code,message:o.message,url:o.config?.url,method:o.config?.method,status:o.response?.status,headers:o.response?.headers,data:o.response?.data}),de(o),o}}var Ms=a.extend("api");var ks=a.extend("api");var Te=require("util"),Re=require("zlib");var _e=a.extend("api"),zr=(0,Te.promisify)(Re.gzip);async function Ce(t){try{_e("Run params: %o",S(t));let e=await Zr(JSON.stringify(t));return G("api",{url:"v1/runs",method:"POST",headers:{"Content-Type":"application/json","Content-Encoding":"gzip"},data:e}).then(r=>r.data)}catch(e){throw _e("Failed to create the run:",e),e}}async function Zr(t){try{return await zr(t)}catch(e){throw d("Failed to compress run payload:",e),e}}var ei=a.extend("api");var tn=require("axios");var ui=a.extend("api");var Ct={apiKey:{name:"API key",env:"CURRENTS_API_KEY",cli:"--api-key"},recordKey:{name:"Record key",env:"CURRENTS_RECORD_KEY",cli:"--key"},projectId:{name:"Project ID",env:"CURRENTS_PROJECT_ID",cli:"--project-id"},ciBuildId:{name:"CI build ID",env:"CURRENTS_CI_BUILD_ID",cli:"--ci-build-id"},machineId:{name:"Machine ID",env:"CURRENTS_MACHINE_ID",cli:"--machine-id"},tag:{name:"Tag",cli:"--tag"},debug:{name:"Debug",env:"CURRENTS_DEBUG",cli:"--debug"}};var{debug:en,ciBuildId:rn,recordKey:nn,projectId:on,machineId:sn}=Ct,an={debug:en,ciBuildId:rn,recordKey:nn,projectId:on,machineId:sn,tag:{...Ct.tag,env:"CURRENTS_TAG"},disableTitleTags:{name:"Disable title tags",env:"CURRENTS_DISABLE_TITLE_TAGS",cli:"--disable-title-tags"},removeTitleTags:{name:"Remove title tags",env:"CURRENTS_REMOVE_TITLE_TAGS",cli:"--remove-title-tags"},reportDir:{name:"Report folder",env:"CURRENTS_REPORT_DIR",cli:"--report-dir"}};var ki=a.extend("config");var cn=null;function De(){return cn}var Dt=u(require("fs-extra")),N=require("path");var pn=u(require("path")),he={".png":{type:"screenshot",contentType:"image/png"},".jpg":{type:"screenshot",contentType:"image/jpeg"},".jpeg":{type:"screenshot",contentType:"image/jpeg"},".webp":{type:"screenshot",contentType:"image/webp"},".gif":{type:"screenshot",contentType:"image/gif"},".mp4":{type:"video",contentType:"video/mp4"},".webm":{type:"video",contentType:"video/webm"},".svg":{type:"attachment",contentType:"image/svg+xml"},".log":{type:"attachment",contentType:"text/plain"},".txt":{type:"attachment",contentType:"text/plain"},".yml":{type:"attachment",contentType:"text/plain"},".yaml":{type:"attachment",contentType:"text/plain"},".md":{type:"attachment",contentType:"text/markdown"},".html":{type:"attachment",contentType:"text/html"},".csv":{type:"attachment",contentType:"text/csv"},".json":{type:"attachment",contentType:"application/json"},".pdf":{type:"attachment",contentType:"application/pdf"},".gz":{type:"attachment",contentType:"application/gzip"},".viewhierarchy":{type:"attachment",contentType:"application/xml"}};var Ae=u(require("fs-extra")),Oe=require("path"),Ut=a.extend("detox"),un="detox.json";function Se(t){return[...t].sort((e,r)=>(e.session??0)-(r.session??0)||e.invocations-r.invocations)}async function Ne(t){let e=(0,Oe.join)(t,un);try{let r=await Ae.default.readJson(e);if(typeof r?.artifactsRootDir!="string"||!Array.isArray(r?.tests)){Ut("Unexpected Detox manifest contents at %s",e);return}return Ut("Detox manifest: %o",r),r}catch{Ut("No Detox manifest at %s",e);return}}var Z=require("path"),En=a.extend("detox"),ye=255,mn=/[/\\?<>:*|"$\u0000-\u001f]/g,Le=4;function Be(t){return ln(t)??fn(t)}function ln({rootDir:t,fullName:e,status:r,invocations:n}){try{let o=require.resolve("detox/src/artifacts/utils/ArtifactPathBuilder",{paths:[process.cwd()]}),s=require(o),c=new s({rootDir:t});return(0,Z.dirname)(c.buildPathForTestArtifact("test.mp4",{fullName:e,status:r,invocations:n}))}catch(o){En("Detox path builder is not available: %o",o);return}}function fn({rootDir:t,fullName:e,status:r,invocations:n}){let o=gn(r),s=n>1?` (${n})`:"",c=e.slice(-ye+o.length+s.length),p=`${o}${c}${s}`.replace(mn,"_");return(0,Z.join)(t,dn(p,ye))}function dn(t,e){let r=Buffer.from(t,"utf8");return r.length<=e?t:r.subarray(0,e).toString("utf8").replace(/\uFFFD$/,"")}function gn(t){switch(t){case"passed":return"\u2713 ";case"failed":return"\u2717 ";default:return""}}var Pe=u(require("fs-extra")),Me=require("path"),xe=a.extend("detox"),tt="detox.trace.json",In="ws-client-invocation";async function we(t){let e=(0,Me.join)(t,tt),r=new Map,n;try{n=await Pe.default.readJson(e)}catch{return xe("No Detox trace at %s",e),r}if(!Array.isArray(n))return xe("Unexpected Detox trace contents at %s",e),r;let o=_n(n);return Rn(n).forEach(({pid:c,ts:p,step:m})=>{o.filter(g=>g.pid===c&&p>=g.startTs&&p<=g.endTs).sort((g,R)=>g.startTs-R.startTs).pop()?.steps.push(m)}),o.forEach(({fullName:c,invocations:p,steps:m})=>{let l=r.get(c)??[];l.push({fullName:c,invocations:p,steps:m.sort((g,R)=>+new Date(g.startTime)-+new Date(R.startTime))}),r.set(c,l)}),r}function _n(t){let e=new Map,r=[];t.forEach(o=>{let s=`${o.pid}:${o.tid}`,c=e.get(s)??[];if(e.set(s,c),o.ph==="B"){c.push(Tn(o));return}if(o.ph==="E"){let p=c.pop();p&&r.push({...p,endTs:Number(o.ts)})}});let n=[...e.values()].flatMap(o=>o.filter(s=>s!==void 0));return[...r,...n]}function Tn(t){let e=t.args?.fullName;if(!(t.args?.context!=="test"||typeof e!="string"))return{fullName:e,invocations:Number(t.args?.invocations??1),pid:Number(t.pid),startTs:Number(t.ts),endTs:Number.MAX_SAFE_INTEGER,steps:[]}}function Rn(t){let e=new Map,r=[];return t.forEach(n=>{if(!n.cat?.includes(In))return;let o=`${n.pid}:${n.tid}`,s=e.get(o)??[];if(n.ph==="B"){s.push({name:n.name??"action",cat:n.cat,ts:Number(n.ts)}),e.set(o,s);return}if(n.ph==="E"){let c=s.pop();if(!c)return;r.push({pid:Number(n.pid),ts:c.ts,step:{title:c.name,category:"detox",startTime:new Date(c.ts/1e3).toISOString(),duration:Math.round((Number(n.ts)-c.ts)/1e3),steps:[]}})}}),r}var k=a.extend("detox"),be="artifacts",Cn=[".mp4",".png",".jpg",".log",".txt",".json",".viewhierarchy"],Un=t=>{let e=(0,N.extname)(t);return Cn.includes(e)?he[e]:void 0};async function ve({instances:t,reportDir:e,manifest:r}){let n=hn(r),o=await we(r.artifactsRootDir),s=await Qt((0,N.join)(e,be)),c={artifacts:0,steps:0};for(let p of t)for(let m of p.results.tests){let l=n.get(m.testId);if(!l){k("No Detox manifest entry for %s",m.testId);continue}await An({test:m,manifestTest:l,rootDir:r.artifactsRootDir,artifactsDir:s,traceSlices:o.get(l.fullName)??[],result:c})}return c.artifacts+=await Dn({instances:t,rootDir:r.artifactsRootDir,artifactsDir:s}),c}async function Dn({instances:t,rootDir:e,artifactsDir:r}){if(!await Dt.default.pathExists((0,N.join)(e,tt)))return 0;let[n]=await Fe(e,[tt],r),o=t.map(s=>s.results.tests[0]).filter(s=>s!==void 0);return o.forEach(s=>{s.artifacts=[...s.artifacts??[],n]}),o.length}function hn(t){let e=new Map;return t.tests.forEach(r=>{e.set(r.fullName,[...e.get(r.fullName)??[],r.testId])}),new Map(t.tests.filter(r=>{let n=e.get(r.fullName)?.length===1;return n||k("Ambiguous Detox test name, skipping: %s",r.fullName),n}).map(r=>[r.testId,r]))}async function An({test:t,manifestTest:e,rootDir:r,artifactsDir:n,traceSlices:o,result:s}){let c=[...t.attempts].sort((l,g)=>l.attempt-g.attempt),p=Se(e.attempts),m=1;for(let[l,g]of p.entries()){let R=c[l];if(!R){k("No reported attempt %d of %s",l,e.fullName);continue}let D=await On({fullName:e.fullName,status:g.status,rootDir:r,artifactsDir:n,fromInvocation:m});D&&(m=D.invocation+1,R.artifacts=[...R.artifacts??[],...D.artifacts],s.artifacts+=D.artifacts.length);let w=Nn(o,l,D?.invocation);w.length&&(R.steps=[...R.steps??[],...w],s.steps+=w.length)}}async function On({fullName:t,status:e,rootDir:r,artifactsDir:n,fromInvocation:o}){for(let s=o;s<o+Le;s++){let c=Be({rootDir:r,fullName:t,status:e,invocations:s}),p=await Sn(c);if(p)return{invocation:s,artifacts:await Fe(c,p,n)}}k("No Detox artifacts for %s [%s]",t,e)}async function Sn(t){try{return(await Dt.default.readdir(t)).sort()}catch{return}}async function Fe(t,e,r){let n=[];for(let o of e){let s=Un(o);if(!s){k("Skipping unsupported Detox artifact %s",o);continue}let c=(0,N.join)(t,o),p=`${Zt(c)}${(0,N.extname)(o)}`;await Xt(c,(0,N.join)(r,p)),n.push({...s,path:(0,N.join)(be,p),name:o})}return n}function Nn(t,e,r){return((r===void 0?void 0:t.find(s=>s.invocations===r))??[...t].sort((s,c)=>s.invocations-c.invocations)[e])?.steps??[]}var L=class{constructor(e){this.config=e}async getFullTestSuite(){return[]}};var qe=u(require("fs-extra")),Qe=require("jest-cli"),Xe=u(require("tmp"));var Je=require("lodash");function Ge(t){let e=[];for(let[r,n]of Object.entries(t))r==="_"||r==="$0"||r.includes("-")||(typeof n=="boolean"?n&&e.push(`--${r}`):Array.isArray(n)?n.forEach(o=>{e.push(`--${r}=${o}`)}):e.push(`--${r}=${n}`));return e.join(" ")}var He=require("lodash"),yn=["bail","clearCache","collectCoverage","collectCoverageFrom","color","colors","config","coverage","coverageDirectory","coveragePathIgnorePatterns","coverageProvider","coverageReporters","coverageThreshold","debug","detectLeaks","detectOpenHandles","errorOnDeprecated","expand","forceExit","json","listTests","logHeapUsage","noStackTrace","notify","notifyMode","openHandlesTimeout","outputFile","reporters","runner","shard","showConfig","showSeed","silent","testNamePattern","verbose","waitNextEventLoopTurnForUnhandledRejectionEvents","watch","watchAll","watchPathIgnorePatterns","watchman"];function ke(t){return(0,He.omit)(t,...yn)}var Ye=u(require("fs")),$e=require("jest-config"),ht=require("lodash"),At=u(require("path"));function et(t,e){return(...r)=>new Promise((n,o)=>{let s=0,c=()=>{s++;try{let p=t(...r);n(p)}catch(p){if(s>=e.length)o(p);else{let m=e[s-1];setTimeout(c,m)}}};c()})}var Ke=u(require("fs-extra")),Ln=u(require("path"));async function rt(t){let e=await Ke.default.pathExists(t);if(!e)throw new Error("File does not exist");return e}var je=a.extend("jest-discovery");async function Ve(t){try{let{config:e,configPath:r}=await(0,$e.readInitialOptions)(t),n=["collectCoverage","collectCoverageFrom","coverageDirectory","coveragePathIgnorePatterns","coverageProvider","coverageReporters","coverageThreshold","errorOnDeprecated","forceCoverageMatch","notify","notifyMode","openHandlesTimeout","reporters","runner","showSeed","testFailureExitCode","verbose","watchPathIgnorePatterns","watchPlugins","watchman","bail","clearCache","color","colors","debug","detectLeaks","detectOpenHandles","expand","forceExit","json","listTests","logHeapUsage","noStackTrace","outputFile","shard","showConfig","silent","testNamePattern","waitNextEventLoopTurnForUnhandledRejectionEvents","watch","watchAll"],o=["collectCoverageFrom","coverageDirectory","coveragePathIgnorePatterns","detectLeaks","detectOpenHandles","errorOnDeprecated","forceCoverageMatch","openHandlesTimeout","runner","watchPathIgnorePatterns"],s=(0,ht.omit)(e,n);if(s.projects&&(s.projects=s.projects.map(m=>typeof m!="string"?(0,ht.omit)(m,o):m)),s.rootDir&&Object.keys(s).length===1)return null;let c=At.default.resolve(r?At.default.dirname(r):process.cwd(),`.jest-scanner-${new Date().getTime()}.config.cjs`),p=`module.exports=${JSON.stringify(s,null,2)}`;return je("configFileContent: %O",p),Ye.default.writeFileSync(c,p),await et(rt,[200,200,200,200,200,1e3])(c),c}catch(e){return d("Failed to recreate the config file"),je("error %o",e),null}}async function We(t){let e="!!##ThisPatternWillNotMatchAnyTestName##!!",r=t.options,n=ke(r),o=Ge(n),s=r.config,c=await Ve(s);return{cliArgs:[o,"--testNamePattern",e,"--reporters","@currents/cmd/discovery/jest","--shard=1/1",c?`--config=${c}`:"",...t.args].filter(m=>!(0,Je.isEmpty)(m)),configFilePath:c}}var Bn=a.extend("jest-discovery");async function ze(t,e){console.time(v("@currents/jest:fullTestSuite-ready"));let{cliArgs:r,configFilePath:n}=await We(e);try{let o=Xe.default.fileSync({postfix:".json"});return Bn("running scanner: %o",r),process.env.CURRENTS_DISCOVERY_PATH=o.name,await(0,Qe.run)(r.concat(["--openHandlesTimeout=0"])),await et(rt,Array.from({length:300},()=>100))(o.name),console.timeEnd(v("@currents/jest:fullTestSuite-ready")),await M(o.name)}catch(o){return d("Failed to obtain the jest full test suite:",o),[]}finally{n&&qe.default.unlinkSync(n)}}var nt=class extends L{constructor(e){super(e)}async getFullTestSuite(){return ze(this.config.frameworkConfig,this.config.cliArgs)}};var tr=u(require("fs-extra"));var Ze=u(require("path"));function ot(t){return Ze.default.join(t,"fullTestSuite.json")}var xn=a.extend("junit-discovery");async function er(t){console.time(v("@currents/junit:fullTestSuite-ready"));try{xn("running scanner: %o",t);let e=ot(t);process.env.CURRENTS_DISCOVERY_PATH=e;let r=tr.default.readFileSync(e,"utf-8");return JSON.parse(r)}catch(e){return d("Failed to obtain the junit full test suite:",e),[]}}var st=class extends L{constructor(e,r){super(e),this.reportDir=r}async getFullTestSuite(){return er(this.reportDir)}};function rr(t,e){switch(t.framework){case"jest":return new nt(t);case"junit":return new st(t,e);default:return new L(t)}}var B=u(require("fs-extra")),y=u(require("path"));async function nr(t){let e=await Pn(t?.reportDir);return{reportDir:e,configFilePath:t?.configFilePath??y.default.join(e,"config.json")}}async function Pn(t){if(t){if(!await B.default.pathExists(t))throw new Error(`No reports found: the folder "${t}" does not exist.`);return t}let e=(0,y.join)(process.cwd(),".currents"),r=await B.default.pathExists(e)?await Mn(e):null;if(!r)throw new Error(`No reports found: there is no report folder in "${e}". Run the tests with a Currents reporter first, or pass --report-dir with the folder of the reports.`);return r}async function Mn(t){let e=await B.default.readdir(t),r=null;for(let n of e){let o=y.default.join(t,n),s=await B.default.stat(o);s.isDirectory()&&(!r||s.birthtime>r.birthtime)&&(r={name:n,birthtime:s.birthtime})}return r?(0,y.resolve)(t,r.name):null}async function Ot(t){try{return await B.default.pathExists(t)}catch{return d("Error checking if path exists:",d),!1}}async function or(t){let e=y.default.join(t,"instances");return wn(e)}async function wn(t){let e=await B.default.readdir(t),r=[];for(let n of e){let o=y.default.join(t,n);(await B.default.stat(o)).isFile()&&r.push(o)}return r}var bn=t=>Buffer.byteLength(JSON.stringify(t),"utf8"),sr=(t,e=1048576)=>{let r=[],n=[],o=0;for(let s of t){let c=bn(s);o+c>e&&(r.push(n),n=[],o=0),n.push(s),o+=c}return n.length>0&&r.push(n),r};var vn=3e4;async function pr(){let t=De();if(!t)throw new Error("Currents config is missing!");let e=await nr(t);xt(Gn(e.reportDir)),a("Reporter options: %o",e),J("Report directory: %s",e.reportDir);let r=await M(e.configFilePath);a("Report config: %o",r);let n=await or(e.reportDir);a("Found %d instance results in the reportDir: %s",n.length,e.reportDir);let o=Fn(e.reportDir),s=await Ot(o),c=ot(e.reportDir),p=null;if(s){let C=await M(o);f("Marker file detected. The report was already uploaded: %o",{runUrl:C.response.runUrl,isoDate:C.isoDate})}if(await Ot(c)&&(p=await M(c),a("Full test suite file detected: %s",c)),p)a("The discovery stage was skipped");else{if(p=await rr(r,e.reportDir).getFullTestSuite(),Hn(p))throw new Error("Failed to discover the full test suite!");await ft(c,JSON.stringify(p))}let l=p.length===1?p[0].name:null,g={currents:t},R={type:r.framework,version:r.frameworkVersion,clientVersion:V,frameworkConfig:{originFramework:r.frameworkConfig?.originFramework,originFrameworkVersion:r.frameworkConfig?.originFrameworkVersion}},D=Y.userFacingNanoid(),w=vt(t.ciBuildId),x={};for await(let C of n){let h=await M(C);x[h.groupId]||(x[h.groupId]=[]),x[h.groupId].push(h)}let Nt=await Ne(e.reportDir);if(Nt){let C=await ve({instances:Object.values(x).flat(),reportDir:e.reportDir,manifest:Nt});J("[currents] Attached %d Detox artifacts and %d steps",C.artifacts,C.steps)}let K=new Map;Object.values(x).forEach(C=>{C.forEach(h=>{h.artifacts?.forEach(A=>{A&&K.set(A.path,A.contentType)}),h.results.tests.forEach(A=>{A.artifacts?.forEach(U=>{U&&K.set(U.path,U.contentType)}),A.attempts.forEach(U=>{U.artifacts?.forEach(P=>{P&&K.set(P.path,P.contentType)})})})})});for await(let C of Object.keys(x)){let h=x[C],A=C;l&&(a("Default group found: %s, overwriting the group in the results",l),A=l,h=h.map(U=>({...U,groupId:l})));try{let U=sr(h),P=await ir({ci:w,group:A,instances:[],fullTestSuite:p,config:g,machineId:D,framework:R});for(let at=0;at<U.length;at++){let ct=await ir({ci:w,group:A,instances:U[at],fullTestSuite:[],config:g,machineId:D,framework:R});ct.artifactUploadUrls&&ct.artifactUploadUrls.length>0&&await kn(ct.artifactUploadUrls,e.reportDir,K)}a("Api response: %o",P),J("[%s] Run created: %s",A,P.runUrl);let ur={response:P,isoDate:new Date().toISOString()};await ft(o,JSON.stringify(ur)),a("Marker file %s: %s",s?"overwritten":"created",o)}catch(U){throw a("Failed to upload the results to the dashboard"),U}}}async function ir({ci:t,group:e,instances:r,fullTestSuite:n,config:o,machineId:s,framework:c}){let p=await Ht(),m=await Yt(),l={browserName:"node",browserVersion:cr.default.coerce(process.version)?.version},{currents:g}=o,D={platform:{...l,...m},ci:t,commit:p,group:e,fullTestSuite:n,config:o,projectId:g.projectId,recordKey:g.recordKey,ciBuildId:t.ciBuildId.value??void 0,tags:g.tag??[],machineId:g.machineId??s,framework:c,instances:r,previousCiBuildId:process.env.CURRENTS_PREVIOUS_CI_BUILD_ID};return a("Creating run: %o",S(D)),Ce(D)}function Fn(t){return it.default.join(t,"upload.marker.json")}function Gn(t){return it.default.join(t,`.debug-${new Date().toISOString()}.log`)}function Hn(t){return t.length===0||t.some(e=>e.tests.length===0)}async function kn(t,e,r){a("Uploading %d artifacts",t.length),await Promise.all(t.map(n=>{let o=it.default.join(e,n.path),s=r.get(n.path)||"application/octet-stream";return Kn(o,s,n.uploadUrl)}))}var Kn=async(t,e,r)=>{try{if(!await St.default.pathExists(t)){f("Artifact file not found: %s",t);return}let n=await St.default.readFile(t);await ar.default.put(r,n,{headers:{"Content-Type":e},timeout:vn})}catch(n){a("Failed to upload artifact %s: %o",t,n)}};0&&(module.exports={handleCurrentsReport});
9
+ `]:["Unexpected network error"]}var _e=a.extend("http");async function G(t,e,r=z){try{let n=await r(t).request(e);return _e("network response: %o",{...Re.default.omit(n,"request","config"),url:n.config.url,method:n.config.method}),n}catch(n){let o=n;throw _e("network error: %o",{code:o.code,message:o.message,url:o.config?.url,method:o.config?.method,status:o.response?.status,headers:o.response?.headers,data:o.response?.data}),Te(o),o}}var ei=a.extend("api");var ci=a.extend("api");var he=require("util"),Ue=require("zlib");var Ce=a.extend("api"),fn=(0,he.promisify)(Ue.gzip);async function De(t){try{Ce("Run params: %o",O(t));let e=await dn(JSON.stringify(t));return G("api",{url:"v1/runs",method:"POST",headers:{"Content-Type":"application/json","Content-Encoding":"gzip"},data:e}).then(r=>r.data)}catch(e){throw Ce("Failed to create the run:",e),e}}async function dn(t){try{return await fn(t)}catch(e){throw I("Failed to compress run payload:",e),e}}var hi=a.extend("api");var gn=require("axios");var xi=a.extend("api");var Dt={apiKey:{name:"API key",env:"CURRENTS_API_KEY",cli:"--api-key"},recordKey:{name:"Record key",env:"CURRENTS_RECORD_KEY",cli:"--key"},projectId:{name:"Project ID",env:"CURRENTS_PROJECT_ID",cli:"--project-id"},ciBuildId:{name:"CI build ID",env:"CURRENTS_CI_BUILD_ID",cli:"--ci-build-id"},machineId:{name:"Machine ID",env:"CURRENTS_MACHINE_ID",cli:"--machine-id"},tag:{name:"Tag",cli:"--tag"},debug:{name:"Debug",env:"CURRENTS_DEBUG",cli:"--debug"}};var{debug:In,ciBuildId:Tn,recordKey:_n,projectId:Rn,machineId:Cn}=Dt,hn={debug:In,ciBuildId:Tn,recordKey:_n,projectId:Rn,machineId:Cn,tag:{...Dt.tag,env:"CURRENTS_TAG"},disableTitleTags:{name:"Disable title tags",env:"CURRENTS_DISABLE_TITLE_TAGS",cli:"--disable-title-tags"},removeTitleTags:{name:"Remove title tags",env:"CURRENTS_REMOVE_TITLE_TAGS",cli:"--remove-title-tags"},reportDir:{name:"Report folder",env:"CURRENTS_REPORT_DIR",cli:"--report-dir"}};var ca=a.extend("config");var Un=null;function Oe(){return Un}var Ot=u(require("fs-extra")),N=require("path");var Dn=u(require("path")),Se={".png":{type:"screenshot",contentType:"image/png"},".jpg":{type:"screenshot",contentType:"image/jpeg"},".jpeg":{type:"screenshot",contentType:"image/jpeg"},".webp":{type:"screenshot",contentType:"image/webp"},".gif":{type:"screenshot",contentType:"image/gif"},".mp4":{type:"video",contentType:"video/mp4"},".webm":{type:"video",contentType:"video/webm"},".svg":{type:"attachment",contentType:"image/svg+xml"},".log":{type:"attachment",contentType:"text/plain"},".txt":{type:"attachment",contentType:"text/plain"},".yml":{type:"attachment",contentType:"text/plain"},".yaml":{type:"attachment",contentType:"text/plain"},".md":{type:"attachment",contentType:"text/markdown"},".html":{type:"attachment",contentType:"text/html"},".csv":{type:"attachment",contentType:"text/csv"},".json":{type:"attachment",contentType:"application/json"},".pdf":{type:"attachment",contentType:"application/pdf"},".gz":{type:"attachment",contentType:"application/gzip"},".viewhierarchy":{type:"attachment",contentType:"application/xml"}};var ye=u(require("fs-extra")),Ne=require("path"),At=a.extend("detox"),An="detox.json";function Le(t){return[...t].sort((e,r)=>(e.session??0)-(r.session??0)||e.invocations-r.invocations)}async function xe(t){let e=(0,Ne.join)(t,An);try{let r=await ye.default.readJson(e);if(typeof r?.artifactsRootDir!="string"||!Array.isArray(r?.tests)){At("Unexpected Detox manifest contents at %s",e);return}return At("Detox manifest: %o",r),r}catch{At("No Detox manifest at %s",e);return}}var Z=require("path"),On=a.extend("detox"),Be=255,Sn=/[/\\?<>:*|"$\u0000-\u001f]/g,Pe=4;function we(t){return yn(t)??Nn(t)}function yn({rootDir:t,fullName:e,status:r,invocations:n}){try{let o=require.resolve("detox/src/artifacts/utils/ArtifactPathBuilder",{paths:[process.cwd()]}),s=require(o),c=new s({rootDir:t});return(0,Z.dirname)(c.buildPathForTestArtifact("test.mp4",{fullName:e,status:r,invocations:n}))}catch(o){On("Detox path builder is not available: %o",o);return}}function Nn({rootDir:t,fullName:e,status:r,invocations:n}){let o=xn(r),s=n>1?` (${n})`:"",c=e.slice(-Be+o.length+s.length),p=`${o}${c}${s}`.replace(Sn,"_");return(0,Z.join)(t,Ln(p,Be))}function Ln(t,e){let r=Buffer.from(t,"utf8");return r.length<=e?t:r.subarray(0,e).toString("utf8").replace(/\uFFFD$/,"")}function xn(t){switch(t){case"passed":return"\u2713 ";case"failed":return"\u2717 ";default:return""}}var be=u(require("fs-extra")),ve=require("path"),Me=a.extend("detox"),tt="detox.trace.json",Bn="ws-client-invocation";async function Fe(t){let e=(0,ve.join)(t,tt),r=new Map,n;try{n=await be.default.readJson(e)}catch{return Me("No Detox trace at %s",e),r}if(!Array.isArray(n))return Me("Unexpected Detox trace contents at %s",e),r;let o=Pn(n);return Mn(n).forEach(({pid:c,ts:p,step:l})=>{o.filter(f=>f.pid===c&&p>=f.startTs&&p<=f.endTs).sort((f,R)=>f.startTs-R.startTs).pop()?.steps.push(l)}),o.forEach(({fullName:c,invocations:p,steps:l})=>{let m=r.get(c)??[];m.push({fullName:c,invocations:p,steps:l.sort((f,R)=>+new Date(f.startTime)-+new Date(R.startTime))}),r.set(c,m)}),r}function Pn(t){let e=new Map,r=[];t.forEach(o=>{let s=`${o.pid}:${o.tid}`,c=e.get(s)??[];if(e.set(s,c),o.ph==="B"){c.push(wn(o));return}if(o.ph==="E"){let p=c.pop();p&&r.push({...p,endTs:Number(o.ts)})}});let n=[...e.values()].flatMap(o=>o.filter(s=>s!==void 0));return[...r,...n]}function wn(t){let e=t.args?.fullName;if(!(t.args?.context!=="test"||typeof e!="string"))return{fullName:e,invocations:Number(t.args?.invocations??1),pid:Number(t.pid),startTs:Number(t.ts),endTs:Number.MAX_SAFE_INTEGER,steps:[]}}function Mn(t){let e=new Map,r=[];return t.forEach(n=>{if(!n.cat?.includes(Bn))return;let o=`${n.pid}:${n.tid}`,s=e.get(o)??[];if(n.ph==="B"){s.push({name:n.name??"action",cat:n.cat,ts:Number(n.ts)}),e.set(o,s);return}if(n.ph==="E"){let c=s.pop();if(!c)return;r.push({pid:Number(n.pid),ts:c.ts,step:{title:c.name,category:"detox",startTime:new Date(c.ts/1e3).toISOString(),duration:Math.round((Number(n.ts)-c.ts)/1e3),steps:[]}})}}),r}var H=a.extend("detox"),Ge="artifacts",bn=[".mp4",".png",".jpg",".log",".txt",".json",".viewhierarchy"],vn=t=>{let e=(0,N.extname)(t);return bn.includes(e)?Se[e]:void 0};async function ke({instances:t,reportDir:e,manifest:r}){let n=Gn(r),o=await Fe(r.artifactsRootDir),s=await Zt((0,N.join)(e,Ge)),c={artifacts:0,steps:0};for(let p of t)for(let l of p.results.tests){let m=n.get(l.testId);if(!m){H("No Detox manifest entry for %s",l.testId);continue}await kn({test:l,manifestTest:m,rootDir:r.artifactsRootDir,artifactsDir:s,traceSlices:o.get(m.fullName)??[],result:c})}return c.artifacts+=await Fn({instances:t,rootDir:r.artifactsRootDir,artifactsDir:s}),c}async function Fn({instances:t,rootDir:e,artifactsDir:r}){if(!await Ot.default.pathExists((0,N.join)(e,tt)))return 0;let[n]=await He(e,[tt],r),o=t.map(s=>s.results.tests[0]).filter(s=>s!==void 0);return o.forEach(s=>{s.artifacts=[...s.artifacts??[],n]}),o.length}function Gn(t){let e=new Map;return t.tests.forEach(r=>{e.set(r.fullName,[...e.get(r.fullName)??[],r.testId])}),new Map(t.tests.filter(r=>{let n=e.get(r.fullName)?.length===1;return n||H("Ambiguous Detox test name, skipping: %s",r.fullName),n}).map(r=>[r.testId,r]))}async function kn({test:t,manifestTest:e,rootDir:r,artifactsDir:n,traceSlices:o,result:s}){let c=[...t.attempts].sort((m,f)=>m.attempt-f.attempt),p=Le(e.attempts),l=1;for(let[m,f]of p.entries()){let R=c[m];if(!R){H("No reported attempt %d of %s",m,e.fullName);continue}let g=await Hn({fullName:e.fullName,status:f.status,rootDir:r,artifactsDir:n,fromInvocation:l});g&&(l=g.invocation+1,R.artifacts=[...R.artifacts??[],...g.artifacts],s.artifacts+=g.artifacts.length);let S=Kn(o,m,g?.invocation);S.length&&(R.steps=[...R.steps??[],...S],s.steps+=S.length)}}async function Hn({fullName:t,status:e,rootDir:r,artifactsDir:n,fromInvocation:o}){for(let s=o;s<o+Pe;s++){let c=we({rootDir:r,fullName:t,status:e,invocations:s}),p=await jn(c);if(p)return{invocation:s,artifacts:await He(c,p,n)}}H("No Detox artifacts for %s [%s]",t,e)}async function jn(t){try{return(await Ot.default.readdir(t)).sort()}catch{return}}async function He(t,e,r){let n=[];for(let o of e){let s=vn(o);if(!s){H("Skipping unsupported Detox artifact %s",o);continue}let c=(0,N.join)(t,o),p=`${re(c)}${(0,N.extname)(o)}`;await te(c,(0,N.join)(r,p)),n.push({...s,path:(0,N.join)(Ge,p),name:o})}return n}function Kn(t,e,r){return((r===void 0?void 0:t.find(s=>s.invocations===r))??[...t].sort((s,c)=>s.invocations-c.invocations)[e])?.steps??[]}var x=class{constructor(e){this.config=e}async getFullTestSuite(){return[]}};var Yn=u(require("crypto"));var je=u(require("fs-extra")),Jn=u(require("path"));async function et(t){let e=await je.default.pathExists(t);if(!e)throw new Error("File does not exist");return e}function Ke(){return"root"}function Je(t){let e=(t.join(" ").match(/@(\S+)/g)??[]).filter(Boolean).map(r=>r);return Array.from(new Set([...e].map(r=>r.trim()).map(r=>r.replace("@",""))))}var $n=/^[0-9a-f]{32}$/;function Ye(t){let e=[];for(let r of t){let n=e.find(o=>o.name===r.groupId);n||(n={name:r.groupId,tags:[],tests:[]},e.push(n)),n.tests.push(...Ve(r))}return e.length===1&&$n.test(e[0].name)&&(e[0].name=Ke()),e}function $e(t,e,r){let n=[];for(let{projectId:o,spec:s}of e){let c=r.find(l=>l.spec===s&&l.groupId===o)??(t.length===1?r.find(l=>l.spec===s):void 0);if(!c){n.push(s);continue}let p=t.length===1?t[0]:t.find(l=>l.name===o);p||(p={name:o,tags:[],tests:[]},t.push(p)),p.tests.push(...Ve(c))}return n}function Ve(t){return t.results.tests.map(e=>({spec:t.spec,testId:e.testId,title:e.title,tags:e.tags??Je(e.title)}))}var cr=u(require("fs-extra")),pr=u(require("tmp"));var ir=require("lodash");function We(t){let e=[];for(let[r,n]of Object.entries(t))r==="_"||r==="$0"||r.includes("-")||(typeof n=="boolean"?n&&e.push(`--${r}`):Array.isArray(n)?n.forEach(o=>{e.push(`--${r}=${o}`)}):e.push(`--${r}=${n}`));return e.join(" ")}var qe=require("lodash"),Vn=["bail","clearCache","collectCoverage","collectCoverageFrom","color","colors","config","coverage","coverageDirectory","coveragePathIgnorePatterns","coverageProvider","coverageReporters","coverageThreshold","debug","detectLeaks","detectOpenHandles","errorOnDeprecated","expand","forceExit","json","listTests","logHeapUsage","noStackTrace","notify","notifyMode","openHandlesTimeout","outputFile","reporters","runner","shard","showConfig","showSeed","silent","testFailureExitCode","testNamePattern","verbose","waitNextEventLoopTurnForUnhandledRejectionEvents","watch","watchAll","watchPathIgnorePatterns","watchman"];function Qe(t){return(0,qe.omit)(t,...Vn)}var or=u(require("fs")),st=require("lodash"),yt=u(require("path"));var St=u(require("fs")),rt=require("module"),nt=u(require("path")),Xe=u(require("semver")),Wn=">=29.5.0";function qn(){let t=(0,rt.createRequire)(nt.default.join(process.cwd(),"package.json"));if(Qn(t)==="jest-cli")return t.resolve("jest-cli");try{return(0,rt.createRequire)(t.resolve("jest")).resolve("jest-cli")}catch{}try{return t.resolve("jest-cli")}catch{throw new Error(`Jest discovery needs the "jest" package, and it is not installed in ${process.cwd()}. Run the command from the folder of the project that ran the tests, or install Jest 29.5 or later: npm install --save-dev jest`)}}function Qn(t){for(let e of t.resolve.paths("jest")??[]){if(St.default.existsSync(nt.default.join(e,"jest","package.json")))return"jest";if(St.default.existsSync(nt.default.join(e,"jest-cli","package.json")))return"jest-cli"}return null}function ze(){let t=(0,rt.createRequire)(qn()),{version:e}=t("jest-cli/package.json");if(!Xe.default.satisfies(e,Wn,{includePrerelease:!0}))throw new Error(`Jest discovery needs Jest 29.5 or later, and ${process.cwd()} has Jest ${e}. Update Jest: npm install --save-dev jest@latest`);return t}function Ze(){return ze()("jest-cli")}function tr(){return ze()("jest-config")}function ot(t,e){return(...r)=>new Promise((n,o)=>{let s=0,c=()=>{s++;try{let p=t(...r);n(p)}catch(p){if(s>=e.length)o(p);else{let l=e[s-1];setTimeout(c,l)}}};c()})}var er=a.extend("jest-discovery");function rr(t){return["testEnvironment","globalSetup","globalTeardown"].some(e=>String(t[e]??"").includes("detox"))}function nr(t){return{...(0,st.omit)(t,["globalSetup","globalTeardown","testEnvironmentOptions"]),testEnvironment:"node"}}async function sr(t,e){let r=e.detox;try{let{readInitialOptions:n}=tr(),{config:o,configPath:s}=await n(t);r||=[o,...o.projects??[]].some(g=>typeof g!="string"&&rr(g));let c=["collectCoverage","collectCoverageFrom","coverageDirectory","coveragePathIgnorePatterns","coverageProvider","coverageReporters","coverageThreshold","errorOnDeprecated","forceCoverageMatch","notify","notifyMode","openHandlesTimeout","reporters","runner","showSeed","testFailureExitCode","verbose","watchPathIgnorePatterns","watchPlugins","watchman","bail","clearCache","color","colors","debug","detectLeaks","detectOpenHandles","expand","forceExit","json","listTests","logHeapUsage","noStackTrace","outputFile","shard","showConfig","silent","testNamePattern","waitNextEventLoopTurnForUnhandledRejectionEvents","watch","watchAll"],p=["collectCoverageFrom","coverageDirectory","coveragePathIgnorePatterns","detectLeaks","detectOpenHandles","errorOnDeprecated","forceCoverageMatch","openHandlesTimeout","runner","watchPathIgnorePatterns"],l=g=>e.detox||rr(g),m=(0,st.omit)(o,c);if(l(m)&&(m=nr(m)),m.projects&&(m.projects=m.projects.map(g=>{if(typeof g=="string")return g;let S=(0,st.omit)(g,p);return l(S)?nr(S):S})),m.rootDir&&Object.keys(m).length===1)return null;let f=yt.default.resolve(s?yt.default.dirname(s):process.cwd(),`.jest-scanner-${new Date().getTime()}.config.cjs`),R=`module.exports=${JSON.stringify(m,null,2)}`;return er("configFileContent: %O",R),or.default.writeFileSync(f,R),await ot(et,[200,200,200,200,200,1e3])(f),f}catch(n){if(er("error %o",n),r)throw new Error(`Failed to recreate the Jest config for discovery: ${n.message}`);return I("Failed to recreate the config file"),null}}async function ar(t,e){let r="!!##ThisPatternWillNotMatchAnyTestName##!!",n=t.options,o=Qe(n),s=We(o),c=n.config,p=await sr(c,e);return{cliArgs:[s,"--testNamePattern",r,"--reporters",require.resolve("@currents/cmd/discovery/jest"),"--shard=1/1","--testFailureExitCode=0",p?`--config=${p}`:"",...t.args].filter(m=>!(0,ir.isEmpty)(m)),configFilePath:p}}var Xn=a.extend("jest-discovery");async function ur(t,e){console.time(v("@currents/jest:fullTestSuite-ready"));let{run:r}=Ze(),{cliArgs:n,configFilePath:o}=await ar(t,e);try{let s=pr.default.fileSync({postfix:".json"});return Xn("running scanner: %o",n),process.env.CURRENTS_DISCOVERY_PATH=s.name,await r(n.concat(["--openHandlesTimeout=0"])),await ot(et,Array.from({length:300},()=>100))(s.name),console.timeEnd(v("@currents/jest:fullTestSuite-ready")),await M(s.name)}catch(s){return I("Failed to obtain the jest full test suite:",s),{fullTestSuite:[],specsWithoutResults:[]}}finally{o&&cr.default.unlinkSync(o)}}var mr=a.extend("jest-discovery"),it=class extends x{constructor(r,n){super(r);this.instances=n}async getFullTestSuite(){if(!this.config.frameworkConfig?.shard)return mr("Not a sharded run, listing the tests of the results"),Ye(this.instances);let{fullTestSuite:r,specsWithoutResults:n}=await ur(this.config.cliArgs,{detox:this.config.frameworkConfig.originFramework==="detox"});if(n.length===0)return r;for(let{spec:s,message:c}of n)E("Discovery could not load %s: %s",s,zn(c));let o=$e(r,n,this.instances);return E("The tests of these files are listed from the results of the shard that ran them. Currents can show the run as finished before the other shards upload."),mr("Files that did not run on this shard: %o",o),r.filter(s=>s.tests.length>0)}};function zn(t){return t.split(`
10
+ `).map(e=>e.trim()).find(e=>e&&!e.startsWith("\u25CF"))??""}var Er=u(require("fs-extra"));var lr=u(require("path"));function at(t){return lr.default.join(t,"fullTestSuite.json")}var Zn=a.extend("junit-discovery");async function fr(t){console.time(v("@currents/junit:fullTestSuite-ready"));try{Zn("running scanner: %o",t);let e=at(t);process.env.CURRENTS_DISCOVERY_PATH=e;let r=Er.default.readFileSync(e,"utf-8");return JSON.parse(r)}catch(e){return I("Failed to obtain the junit full test suite:",e),[]}}var ct=class extends x{constructor(e,r){super(e),this.reportDir=r}async getFullTestSuite(){return fr(this.reportDir)}};function dr(t,e,r){switch(t.framework){case"jest":return new it(t,r);case"junit":return new ct(t,e);default:return new x(t)}}var B=u(require("fs-extra")),L=u(require("path"));async function gr(t){let e=await to(t?.reportDir);return{reportDir:e,configFilePath:t?.configFilePath??L.default.join(e,"config.json")}}async function to(t){if(t){if(!await B.default.pathExists(t))throw new Error(`No reports found: the folder "${t}" does not exist.`);return t}let e=(0,L.join)(process.cwd(),".currents"),r=await B.default.pathExists(e)?await eo(e):null;if(!r)throw new Error(`No reports found: there is no report folder in "${e}". Run the tests with a Currents reporter first, or pass --report-dir with the folder of the reports.`);return r}async function eo(t){let e=await B.default.readdir(t),r=null;for(let n of e){let o=L.default.join(t,n),s=await B.default.stat(o);s.isDirectory()&&(!r||s.birthtime>r.birthtime)&&(r={name:n,birthtime:s.birthtime})}return r?(0,L.resolve)(t,r.name):null}async function Nt(t){try{return await B.default.pathExists(t)}catch{return I("Error checking if path exists:",I),!1}}async function Ir(t){let e=L.default.join(t,"instances");return ro(e)}async function ro(t){let e=await B.default.readdir(t),r=[];for(let n of e){let o=L.default.join(t,n);(await B.default.stat(o)).isFile()&&r.push(o)}return r}var no=t=>Buffer.byteLength(JSON.stringify(t),"utf8"),Tr=(t,e=1048576)=>{let r=[],n=[],o=0;for(let s of t){let c=no(s);o+c>e&&(r.push(n),n=[],o=0),n.push(s),o+=c}return n.length>0&&r.push(n),r};var oo=3e4;async function hr(){let t=Oe();if(!t)throw new Error("Currents config is missing!");let e=await gr(t);Mt(io(e.reportDir)),a("Reporter options: %o",e),V("Report directory: %s",e.reportDir);let r=await M(e.configFilePath);a("Report config: %o",r);let n=await Ir(e.reportDir);a("Found %d instance results in the reportDir: %s",n.length,e.reportDir);let o=so(e.reportDir),s=await Nt(o),c=at(e.reportDir),p=null;if(s){let T=await M(o);E("Marker file detected. The report was already uploaded: %o",{runUrl:T.response.runUrl,isoDate:T.isoDate})}let l=[];for(let T of n)l.push(await M(T));if(p=await ao(c),p)a("Full test suite file detected: %s",c);else{let y=await dr(r,e.reportDir,l).getFullTestSuite();if(!Ur(y)||Dr(y))throw new Error("Failed to discover the full test suite!");p=y,await It(c,JSON.stringify(p))}let m=p.length===1?p[0].name:null,f={currents:t},R={type:r.framework,version:r.frameworkVersion,clientVersion:$,frameworkConfig:{originFramework:r.frameworkConfig?.originFramework,originFrameworkVersion:r.frameworkConfig?.originFrameworkVersion}},g=J.userFacingNanoid(),S=kt(t.ciBuildId),P={};for(let T of l)P[T.groupId]||(P[T.groupId]=[]),P[T.groupId].push(T);let xt=await xe(e.reportDir);if(xt){let T=await ke({instances:Object.values(P).flat(),reportDir:e.reportDir,manifest:xt});V("[currents] Attached %d Detox artifacts and %d steps",T.artifacts,T.steps)}let j=new Map;Object.values(P).forEach(T=>{T.forEach(y=>{y.artifacts?.forEach(D=>{D&&j.set(D.path,D.contentType)}),y.results.tests.forEach(D=>{D.artifacts?.forEach(U=>{U&&j.set(U.path,U.contentType)}),D.attempts.forEach(U=>{U.artifacts?.forEach(w=>{w&&j.set(w.path,w.contentType)})})})})});for await(let T of Object.keys(P)){let y=P[T],D=T;m&&(a("Default group found: %s, overwriting the group in the results",m),D=m,y=y.map(U=>({...U,groupId:m})));try{let U=Tr(y),w=await _r({ci:S,group:D,instances:[],fullTestSuite:p,config:f,machineId:g,framework:R});for(let ut=0;ut<U.length;ut++){let mt=await _r({ci:S,group:D,instances:U[ut],fullTestSuite:[],config:f,machineId:g,framework:R});mt.artifactUploadUrls&&mt.artifactUploadUrls.length>0&&await co(mt.artifactUploadUrls,e.reportDir,j)}a("Api response: %o",w),V("[%s] Run created: %s",D,w.runUrl);let Ar={response:w,isoDate:new Date().toISOString()};await It(o,JSON.stringify(Ar)),a("Marker file %s: %s",s?"overwritten":"created",o)}catch(U){throw a("Failed to upload the results to the dashboard"),U}}}async function _r({ci:t,group:e,instances:r,fullTestSuite:n,config:o,machineId:s,framework:c}){let p=await Kt(),l=await Vt(),m={browserName:"node",browserVersion:Cr.default.coerce(process.version)?.version},{currents:f}=o,g={platform:{...m,...l},ci:t,commit:p,group:e,fullTestSuite:n,config:o,projectId:f.projectId,recordKey:f.recordKey,ciBuildId:t.ciBuildId.value??void 0,tags:f.tag??[],machineId:f.machineId??s,framework:c,instances:r,previousCiBuildId:process.env.CURRENTS_PREVIOUS_CI_BUILD_ID};return a("Creating run: %o",O(g)),De(g)}function so(t){return pt.default.join(t,"upload.marker.json")}function io(t){return pt.default.join(t,`.debug-${new Date().toISOString()}.log`)}async function ao(t){if(!await Nt(t))return null;try{let e=await M(t);return!Ur(e)||Dr(e)?(E("Ignoring %s, it is not a list of projects and tests",t),null):e}catch(e){return E("Ignoring %s, it is not valid JSON: %s",t,e),null}}function Ur(t){return Array.isArray(t)&&t.every(e=>typeof e?.name=="string"&&Array.isArray(e.tests)&&e.tests.every(r=>typeof r?.spec=="string"&&typeof r.testId=="string"&&Array.isArray(r.title)&&r.title.every(n=>typeof n=="string")))}function Dr(t){return t.length===0||t.some(e=>e.tests.length===0)}async function co(t,e,r){a("Uploading %d artifacts",t.length),await Promise.all(t.map(n=>{let o=pt.default.join(e,n.path),s=r.get(n.path)||"application/octet-stream";return po(o,s,n.uploadUrl)}))}var po=async(t,e,r)=>{try{if(!await Lt.default.pathExists(t)){E("Artifact file not found: %s",t);return}let n=await Lt.default.readFile(t);await Rr.default.put(r,n,{headers:{"Content-Type":e},timeout:oo})}catch(n){a("Failed to upload artifact %s: %o",t,n)}};0&&(module.exports={handleCurrentsReport});
10
11
  /*! For license information please see index.js.LEGAL.txt */
11
12
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  import { Reporter, AggregatedResult, Test, TestResult, TestContext } from '@jest/reporters';
2
2
 
3
3
  declare class DiscoveryReporter implements Reporter {
4
- private specsWithoutResultsCount;
4
+ private specsWithoutResults;
5
5
  private fullTestSuite;
6
6
  onRunStart(results: AggregatedResult): void;
7
7
  onTestFileResult(test: Test, testResult: TestResult): Promise<void> | void;
@@ -1,2 +1,2 @@
1
- "use strict";var E=Object.create;var a=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var D=Object.getPrototypeOf,W=Object.prototype.hasOwnProperty;var O=(t,e)=>{for(var o in e)a(t,o,{get:e[o],enumerable:!0})},R=(t,e,o,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of P(e))!W.call(t,r)&&r!==o&&a(t,r,{get:()=>e[r],enumerable:!(n=v(e,r))||n.enumerable});return t};var i=(t,e,o)=>(o=t!=null?E(D(t)):{},R(e||!t||!t.__esModule?a(o,"default",{value:t,enumerable:!0}):o,t)),_=t=>R(a({},"__esModule",{value:!0}),t);var B={};O(B,{default:()=>m});module.exports=_(B);var b=require("debug"),$=i(require("fs-extra")),c=(0,b.debug)("currents");var A=i(require("fs-extra"));var w=i(require("crypto"));var H=i(require("fs-extra")),u=i(require("path"));function S(t,e){return L(u.default.relative(e,t))}function L(t){return t.split(u.default.sep).join(u.default.posix.sep)}function C(){return"root"}function y(t){return t.context.config.displayName?.name??t.context.config.id}function x(t){return[...t.ancestorTitles,t.title]}function T(t){return S(t.path,t.context.config.rootDir)}function I(t,e){let o=x(e),n=T(t),r=o.join(" ")+n;return w.default.createHash("sha256").update(r).digest("hex").substring(0,16)}function j(t){let e=(t.join(" ").match(/@(\S+)/g)??[]).filter(Boolean).map(o=>o);return Array.from(new Set([...e].map(o=>o.trim()).map(o=>o.replace("@",""))))}var M=[];function k(t){M.push(t)}var s=i(require("chalk")),p=i(require("util"));var F=[];var G=(...t)=>{let e=p.default.format(...t);k(e),console.error(e)};var N=(...t)=>{let e=p.default.format(...Y(t));return F.push(e),c("ERROR: ",p.default.format(...t)),G(s.default.bgRed.white(" ERROR "),e)};var Y=t=>t.map(e=>e instanceof Error?e.message:e);var at=s.default.cyan,ct=s.default.blueBright,ut=s.default.red,pt=s.default.yellow,gt=s.default.green,mt=s.default.gray,ft=s.default.white,dt=s.default.black,xt=s.default.magenta,h=s.default.dim,Tt=s.default.bold;var g=c.extend("jest-discovery"),m=class{constructor(){this.specsWithoutResultsCount=0;this.fullTestSuite={}}onRunStart(e){g("onRunStart, results: %O",e),console.time(h("@currents/jest-discovery"))}onTestFileResult(e,o){let n=y(e);this.fullTestSuite[n]||(this.fullTestSuite[n]={name:n,tags:[],tests:[]});let r=T(e);g("onTestFileResult [%s][%s]",n,r),o.testResults.length===0?(g("Failed to obtain spec results, error:",r,o.failureMessage),this.specsWithoutResultsCount+=1):this.fullTestSuite[n].tests.push(...o.testResults.map(f=>{let d=x(f);return{spec:r,tags:j(d),testId:I(e,f),title:d}}))}async onRunComplete(e,o){let n=process.env.CURRENTS_DISCOVERY_PATH;if(!n)throw new Error("CURRENTS_DISCOVERY_PATH is not set");let r=[];this.specsWithoutResultsCount>0?N("Incomplete full test suite! Run the command with --debug flag."):(r=this.getFullTestSuite(e),g("onRunComplete %s, %o",n,r)),await A.default.writeFile(n,JSON.stringify(r),"utf8"),console.timeEnd(h("@currents/jest-discovery"))}getFullTestSuite(e){let o=Object.values(this.fullTestSuite),n=o.length===1,r=o.length>0&&e.size>0&&[...e][0].config.id===o[0].name;return n&&r&&(o[0].name=C()),o}};
1
+ "use strict";var k=Object.create;var a=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var F=Object.getOwnPropertyNames;var N=Object.getPrototypeOf,A=Object.prototype.hasOwnProperty;var D=(t,e)=>{for(var o in e)a(t,o,{get:e[o],enumerable:!0})},h=(t,e,o,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of F(e))!A.call(t,s)&&s!==o&&a(t,s,{get:()=>e[s],enumerable:!(r=v(e,s))||r.enumerable});return t};var i=(t,e,o)=>(o=t!=null?k(N(t)):{},h(e||!t||!t.__esModule?a(o,"default",{value:t,enumerable:!0}):o,t)),E=t=>h(a({},"__esModule",{value:!0}),t);var $={};D($,{default:()=>p});module.exports=E($);var R=require("debug"),P=i(require("fs-extra")),f=(0,R.debug)("currents");var I=i(require("fs-extra"));var S=i(require("crypto"));var W=i(require("fs-extra")),c=i(require("path"));function b(t,e){return O(c.default.relative(e,t))}function O(t){return t.split(c.default.sep).join(c.default.posix.sep)}function w(){return"root"}function y(t){return t.context.config.displayName?.name??t.context.config.id}function d(t){return[...t.ancestorTitles,t.title]}function x(t){return b(t.path,t.context.config.rootDir)}function C(t,e){let o=d(e),r=x(t),s=o.join(" ")+r;return S.default.createHash("sha256").update(s).digest("hex").substring(0,16)}function j(t){let e=(t.join(" ").match(/@(\S+)/g)??[]).filter(Boolean).map(o=>o);return Array.from(new Set([...e].map(o=>o.trim()).map(o=>o.replace("@",""))))}var n=i(require("chalk")),_=i(require("util"));var st=n.default.cyan,nt=n.default.blueBright,it=n.default.red,lt=n.default.yellow,at=n.default.green,ct=n.default.gray,ut=n.default.white,pt=n.default.black,gt=n.default.magenta,T=n.default.dim,mt=n.default.bold;var u=f.extend("jest-discovery"),p=class{constructor(){this.specsWithoutResults=[];this.fullTestSuite={}}onRunStart(e){u("onRunStart, results: %O",e),console.time(T("@currents/jest-discovery"))}onTestFileResult(e,o){let r=y(e);this.fullTestSuite[r]||(this.fullTestSuite[r]={name:r,tags:[],tests:[]});let s=x(e);u("onTestFileResult [%s][%s]",r,s),o.testResults.length===0?(u("Failed to obtain spec results, error:",s,o.failureMessage),this.specsWithoutResults.push({projectId:r,spec:s,message:o.failureMessage??""})):this.fullTestSuite[r].tests.push(...o.testResults.map(g=>{let m=d(g);return{spec:s,tags:j(m),testId:C(e,g),title:m}}))}async onRunComplete(e,o){let r=process.env.CURRENTS_DISCOVERY_PATH;if(!r)throw new Error("CURRENTS_DISCOVERY_PATH is not set");let s={fullTestSuite:this.getFullTestSuite(e),specsWithoutResults:this.specsWithoutResults};u("onRunComplete %s, %o",r,s),await I.default.writeFile(r,JSON.stringify(s),"utf8"),console.timeEnd(T("@currents/jest-discovery"))}getFullTestSuite(e){let o=Object.values(this.fullTestSuite),r=o.length===1,s=o.length>0&&e.size>0&&[...e][0].config.id===o[0].name;return r&&s&&(o[0].name=w()),o}};
2
2
  //# sourceMappingURL=reporter.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@currents/cmd",
3
- "version": "2.0.0",
3
+ "version": "2.0.2",
4
4
  "main": "./dist/index.js",
5
5
  "author": {
6
6
  "name": "Currents Software Inc",
@@ -45,17 +45,19 @@
45
45
  "@types/xml2js": "^0.4.14",
46
46
  "@types/xxhashjs": "^0.2.4",
47
47
  "jest": "^30.4.2",
48
+ "jest-cli": "^30.4.2",
49
+ "jest-config": "^30.4.2",
48
50
  "rimraf": "^6.0.1",
49
51
  "tsup": "^8.3.5",
50
52
  "typescript": "^5.9.3",
51
- "vitest": "^4.1.0"
53
+ "vitest": "^4.1.11"
52
54
  },
53
55
  "dependencies": {
54
56
  "@commander-js/extra-typings": "^14.0.0",
55
57
  "@currents/commit-info": "2.0.0",
56
58
  "archiver": "^7.0.1",
57
59
  "async-retry": "^1.3.3",
58
- "axios": "1.18.1",
60
+ "axios": "1.20.0",
59
61
  "axios-retry": "4.5.0",
60
62
  "chalk": "^4.1.2",
61
63
  "commander": "^14.0.0",
@@ -66,8 +68,6 @@
66
68
  "getos": "^3.2.1",
67
69
  "globby": "^11.1.0",
68
70
  "https-proxy-agent": "^7.0.4",
69
- "jest-cli": "^30.2.0",
70
- "jest-config": "^30.3.0",
71
71
  "lodash": "^4.18.1",
72
72
  "nanoid": "^3.3.8",
73
73
  "pretty-ms": "^7.0.1",