UNPKG

@currents/cmd

Version:

Currents CLI tools

12 lines 29.5 kB
"use strict";var Nr=Object.create;var x=Object.defineProperty;var Dr=Object.getOwnPropertyDescriptor;var Br=Object.getOwnPropertyNames;var br=Object.getPrototypeOf,xr=Object.prototype.hasOwnProperty;var le=(e,r)=>{for(var t in r)x(e,t,{get:r[t],enumerable:!0})},ge=(e,r,t,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of Br(r))!xr.call(e,n)&&n!==t&&x(e,n,{get:()=>r[n],enumerable:!(o=Dr(r,n))||o.enumerable});return e};var c=(e,r,t)=>(t=e!=null?Nr(br(e)):{},ge(r||!e||!e.__esModule?x(t,"default",{value:e,enumerable:!0}):t,e)),vr=e=>ge(x({},"__esModule",{value:!0}),e);var vt={};le(vt,{handleCurrentsReport:()=>yr});module.exports=vr(vt);var de=require("debug"),Mr=c(require("fs-extra")),i=(0,de.debug)("currents"),wr=null;function Ee(e){wr=e}var v={};le(v,{getNanoid:()=>Fr,userFacingNanoid:()=>Z});var X=require("nanoid"),Re="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Fr=(e=16)=>(0,X.customAlphabet)(Re,e)(),Z=(0,X.customAlphabet)(Re,12);var p=require("lodash");var M=i.extend("ci"),kr=(e,...r)=>(0,p.chain)(r).compact().join(e).value(),Hr=(e,r)=>(0,p.set)(e,(0,p.camelCase)(r),process.env[r]),u=e=>(0,p.transform)(e,Hr,{}),Gr=()=>process.env.TF_BUILD&&process.env.TF_BUILD_BUILDNUMBER,jr=()=>process.env.TF_BUILD&&process.env.AZURE_HTTP_USER_AGENT,Vr=()=>(0,p.some)(process.env,(e,r)=>/^CODEBUILD_/.test(r)),Kr=()=>process.env.bamboo_buildNumber,Jr=()=>process.env.CI_NAME&&process.env.CI_NAME==="codeship"&&process.env.CODESHIP,$r=()=>process.env.CI_NAME&&process.env.CI_NAME==="codeship"&&!process.env.CODESHIP,Yr=()=>(0,p.some)(process.env,(e,r)=>/^CONCOURSE_/.test(r)),qr=()=>process.env.GITLAB_CI||process.env.CI_SERVER_NAME&&/^GitLab/.test(process.env.CI_SERVER_NAME),Qr=()=>process.env.GCP_PROJECT||process.env.GCLOUD_PROJECT||process.env.GOOGLE_CLOUD_PROJECT,Wr=()=>process.env.JENKINS_URL||process.env.JENKINS_HOME||process.env.JENKINS_VERSION||process.env.HUDSON_URL||process.env.HUDSON_HOME,zr=()=>process.env.WERCKER||process.env.WERCKER_MAIN_PIPELINE_STARTED,Xr={appveyor:"APPVEYOR",azure:jr,awsCodeBuild:Vr,bamboo:Kr,bitbucket:"BITBUCKET_BUILD_NUMBER",buildkite:"BUILDKITE",circle:"CIRCLECI",codeshipBasic:Jr,codeshipPro:$r,concourse:Yr,codeFresh:"CF_BUILD_ID",drone:"DRONE",githubActions:"GITHUB_ACTIONS",gitlab:qr,goCD:"GO_JOB_NAME",googleCloud:Qr,jenkins:Wr,semaphore:"SEMAPHORE",shippable:"SHIPPABLE",teamcity:"TEAMCITY_VERSION",teamfoundation:Gr,travis:"TRAVIS",wercker:zr,netlify:"NETLIFY",layerci:"LAYERCI"};function Zr(){let{env:e}=process;return(0,p.findKey)(Xr,r=>{if((0,p.isString)(r))return e[r];if((0,p.isFunction)(r))return r()})}var _e=()=>({appveyor:u(["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:u(["BUILD_BUILDID","BUILD_BUILDNUMBER","BUILD_CONTAINERID","BUILD_REPOSITORY_URI","SYSTEM_TEAMPROJECT","SYSTEM_COLLECTIONURI"]),awsCodeBuild:u(["CODEBUILD_BUILD_ID","CODEBUILD_BUILD_NUMBER","CODEBUILD_RESOLVED_SOURCE_VERSION","CODEBUILD_SOURCE_REPO_URL","CODEBUILD_SOURCE_VERSION"]),bamboo:u(["bamboo_buildNumber","bamboo_buildResultsUrl","bamboo_planRepository_repositoryUrl","bamboo_buildKey"]),bitbucket:u(["BITBUCKET_REPO_SLUG","BITBUCKET_REPO_OWNER","BITBUCKET_BUILD_NUMBER","BITBUCKET_PARALLEL_STEP","BITBUCKET_STEP_RUN_NUMBER","BITBUCKET_PR_ID","BITBUCKET_PR_DESTINATION_BRANCH","BITBUCKET_PR_DESTINATION_COMMIT"]),buildkite:u(["BUILDKITE_REPO","BUILDKITE_SOURCE","BUILDKITE_JOB_ID","BUILDKITE_BUILD_ID","BUILDKITE_BUILD_URL","BUILDKITE_BUILD_NUMBER","BUILDKITE_PULL_REQUEST","BUILDKITE_PULL_REQUEST_REPO","BUILDKITE_PULL_REQUEST_BASE_BRANCH"]),circle:u(["CIRCLE_JOB","CIRCLE_BUILD_NUM","CIRCLE_BUILD_URL","CIRCLE_PR_NUMBER","CIRCLE_PR_REPONAME","CIRCLE_PR_USERNAME","CIRCLE_COMPARE_URL","CIRCLE_WORKFLOW_ID","CIRCLE_WORKFLOW_WORKSPACE_ID","CIRCLE_PULL_REQUEST","CIRCLE_REPOSITORY_URL","CI_PULL_REQUEST","CIRCLE_NODE_INDEX","CIRCLE_NODE_TOTAL"]),codeshipBasic:u(["CI_BUILD_ID","CI_REPO_NAME","CI_BUILD_URL","CI_PROJECT_ID","CI_BUILD_NUMBER","CI_PULL_REQUEST"]),codeshipPro:u(["CI_BUILD_ID","CI_REPO_NAME","CI_PROJECT_ID"]),concourse:u(["BUILD_ID","BUILD_NAME","BUILD_JOB_NAME","BUILD_PIPELINE_NAME","BUILD_TEAM_NAME","ATC_EXTERNAL_URL"]),codeFresh:u(["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:u(["DRONE_JOB_NUMBER","DRONE_BUILD_LINK","DRONE_BUILD_NUMBER","DRONE_PULL_REQUEST"]),githubActions:u(["GITHUB_WORKFLOW","GITHUB_ACTION","GITHUB_EVENT_NAME","GITHUB_RUN_ID","GITHUB_RUN_ATTEMPT","GITHUB_REPOSITORY"]),gitlab:u(["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"]),goCD:u(["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:u(["BUILD_ID","PROJECT_ID","REPO_NAME","BRANCH_NAME","TAG_NAME","COMMIT_SHA","SHORT_SHA"]),jenkins:u(["BUILD_ID","BUILD_URL","BUILD_NUMBER","ghprbPullId"]),semaphore:u(["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"]),shippable:u(["SHIPPABLE_BUILD_ID","SHIPPABLE_BUILD_NUMBER","SHIPPABLE_COMMIT_RANGE","SHIPPABLE_CONTAINER_NAME","SHIPPABLE_JOB_ID","SHIPPABLE_JOB_NUMBER","SHIPPABLE_REPO_SLUG","IS_FORK","IS_GIT_TAG","IS_PRERELEASE","IS_RELEASE","REPOSITORY_URL","REPO_FULL_NAME","REPO_NAME","BUILD_URL","BASE_BRANCH","HEAD_BRANCH","IS_PULL_REQUEST","PULL_REQUEST","PULL_REQUEST_BASE_BRANCH","PULL_REQUEST_REPO_FULL_NAME"]),teamcity:null,teamfoundation:u(["BUILD_BUILDID","BUILD_BUILDNUMBER","BUILD_CONTAINERID"]),travis:u(["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"]),wercker:null,netlify:u(["BUILD_ID","CONTEXT","URL","DEPLOY_URL","DEPLOY_PRIME_URL","DEPLOY_ID"]),layerci:u(["LAYERCI_JOB_ID","LAYERCI_RUNNER_ID","RETRY_INDEX","LAYERCI_PULL_REQUEST","LAYERCI_REPO_NAME","LAYERCI_REPO_OWNER","LAYERCI_BRANCH","GIT_TAG"])}),et=()=>{let{env:e}=process;return{appveyor:{sha:e.APPVEYOR_REPO_COMMIT,branch:e.APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH||e.APPVEYOR_REPO_BRANCH,message:kr(` `,e.APPVEYOR_REPO_COMMIT_MESSAGE,e.APPVEYOR_REPO_COMMIT_MESSAGE_EXTENDED),authorName:e.APPVEYOR_REPO_COMMIT_AUTHOR,authorEmail:e.APPVEYOR_REPO_COMMIT_AUTHOR_EMAIL},awsCodeBuild:{sha:e.CODEBUILD_RESOLVED_SOURCE_VERSION,remoteOrigin:e.CODEBUILD_SOURCE_REPO_URL},azure:{sha:e.BUILD_SOURCEVERSION,branch:e.BUILD_SOURCEBRANCHNAME,message:e.BUILD_SOURCEVERSIONMESSAGE,authorName:e.BUILD_SOURCEVERSIONAUTHOR,authorEmail:e.BUILD_REQUESTEDFOREMAIL},bamboo:{sha:e.bamboo_planRepository_revision,branch:e.bamboo_planRepository_branch,authorName:e.bamboo_planRepository_username,remoteOrigin:e.bamboo_planRepository_repositoryURL},bitbucket:{sha:e.BITBUCKET_COMMIT,branch:e.BITBUCKET_BRANCH},buildkite:{sha:e.BUILDKITE_COMMIT,branch:e.BUILDKITE_BRANCH,message:e.BUILDKITE_MESSAGE,authorName:e.BUILDKITE_BUILD_CREATOR,authorEmail:e.BUILDKITE_BUILD_CREATOR_EMAIL,remoteOrigin:e.BUILDKITE_REPO,defaultBranch:e.BUILDKITE_PIPELINE_DEFAULT_BRANCH},circle:{sha:e.CIRCLE_SHA1,branch:e.CIRCLE_BRANCH,authorName:e.CIRCLE_USERNAME,remoteOrigin:e.CIRCLE_REPOSITORY_URL},codeshipBasic:{sha:e.CI_COMMIT_ID,branch:e.CI_BRANCH,message:e.CI_COMMIT_MESSAGE,authorName:e.CI_COMMITTER_NAME,authorEmail:e.CI_COMMITTER_EMAIL},codeshipPro:{sha:e.CI_COMMIT_ID,branch:e.CI_BRANCH,message:e.CI_COMMIT_MESSAGE,authorName:e.CI_COMMITTER_NAME,authorEmail:e.CI_COMMITTER_EMAIL},codeFresh:{sha:e.CF_REVISION,branch:e.CF_BRANCH,message:e.CF_COMMIT_MESSAGE,authorName:e.CF_COMMIT_AUTHOR},drone:{sha:e.DRONE_COMMIT_SHA,branch:e.DRONE_SOURCE_BRANCH,message:e.DRONE_COMMIT_MESSAGE,authorName:e.DRONE_COMMIT_AUTHOR,authorEmail:e.DRONE_COMMIT_AUTHOR_EMAIL,remoteOrigin:e.DRONE_GIT_HTTP_URL,defaultBranch:e.DRONE_REPO_BRANCH},githubActions:{sha:e.GITHUB_SHA,branch:e.GH_BRANCH||e.GITHUB_REF,defaultBranch:e.GITHUB_BASE_REF,remoteBranch:e.GITHUB_HEAD_REF,runAttempt:e.GITHUB_RUN_ATTEMPT},gitlab:{sha:e.CI_COMMIT_SHA,branch:e.CI_COMMIT_REF_NAME,message:e.CI_COMMIT_MESSAGE,authorName:e.GITLAB_USER_NAME,authorEmail:e.GITLAB_USER_EMAIL,remoteOrigin:e.CI_REPOSITORY_URL,defaultBranch:e.CI_DEFAULT_BRANCH},googleCloud:{sha:e.COMMIT_SHA,branch:e.BRANCH_NAME},jenkins:{sha:e.GIT_COMMIT,branch:e.GIT_BRANCH},semaphore:{sha:e.SEMAPHORE_GIT_SHA,branch:e.SEMAPHORE_GIT_BRANCH,remoteOrigin:e.SEMAPHORE_GIT_REPO_SLUG},shippable:{sha:e.COMMIT,branch:e.BRANCH,message:e.COMMIT_MESSAGE,authorName:e.COMMITTER},snap:null,teamcity:null,teamfoundation:{sha:e.BUILD_SOURCEVERSION,branch:e.BUILD_SOURCEBRANCHNAME,message:e.BUILD_SOURCEVERSIONMESSAGE,authorName:e.BUILD_SOURCEVERSIONAUTHOR},travis:{sha:e.TRAVIS_PULL_REQUEST_SHA||e.TRAVIS_COMMIT,branch:e.TRAVIS_PULL_REQUEST_BRANCH||e.TRAVIS_BRANCH,message:e.TRAVIS_COMMIT_MESSAGE},wercker:null,netlify:{sha:e.COMMIT_REF,branch:e.BRANCH,remoteOrigin:e.REPOSITORY_URL},layerci:{sha:e.GIT_COMMIT,branch:e.LAYERCI_BRANCH,message:e.GIT_COMMIT_TITLE}}},fe=e=>{let r=Ie();return r?(0,p.chain)(e()).get(r).value():{}};function rt(){return(0,p.chain)(_e()).omitBy(p.isNull).keys().value()}function tt(e){return e&&rt().includes(e)}function Ie(){let e=Zr();return M("detected CI provider name: %s",e),e||null}function ot(){return fe(_e)}function Ce(){return fe(et)}function Te(e){let r=ot(),t=Ie(),o=nt(e,t);return M("detected CI provider: %s",t),M("detected CI params: %O",r),M("detected CI build ID: %o",o),{params:r,provider:t,ciBuildId:o}}function nt(e,r){return e?{source:"user",value:e}:tt(r)?{source:"server",value:null}:{source:"random",value:`auto:${Z()}`}}var Oe=require("@currents/commit-info"),Pe=require("lodash");var w=require("lodash");var ee=i.extend("ci-git");function he(e){ee("git commit existing info: %O",e);let r=Ce();ee("commit info from provider environment variables: %O",r);let t=(0,w.transform)(e,(o,n,a)=>{let m=n||(r?r[a]:null);return o[a]=(0,w.defaultTo)(m,null)});return ee("combined git and environment variables from provider: %O",t),t}var st=async()=>{let e=await(0,Oe.commitInfo)();return he({branch:e.branch,remoteOrigin:e.remote,authorEmail:e.email,authorName:e.author,message:e.message,sha:e.sha,ghaEventData:e.ghaEventData})},Ue=(0,Pe.memoize)(st);var Ae=c(require("getos")),Se=require("lodash"),f=require("os"),ye=require("util"),it=async()=>{if((0,f.platform)()==="linux")try{let e=await(0,ye.promisify)(Ae.default)();return"dist"in e&&"release"in e?[e.dist,e.release].join(" - "):(0,f.release)()}catch{return(0,f.release)()}return(0,f.release)()},at=async()=>{let e=await it();return{osName:(0,f.platform)(),osVersion:e,osCpus:[],osMemory:{free:(0,f.freemem)(),total:(0,f.totalmem)()}}},Le=(0,Se.memoize)(at);var Ne={name:"@currents/cmd",version:"1.9.4",main:"./dist/index.js",author:{name:"Currents Software Inc",email:"hello@currents.dev"},license:"MIT",description:"Currents CLI tools",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":"^29.7.0","@jest/types":"^29.6.3","@release-it/conventional-changelog":"^10.0.1","@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":"^22.13.14","@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",jest:"^29.7.0",rimraf:"^6.0.1",tsup:"^8.3.5",typescript:"^5.7.2",vitest:"^2.1.9"},dependencies:{"@commander-js/extra-typings":"^12.1.0","@currents/commit-info":"1.0.1-beta.0",archiver:"^7.0.1","async-retry":"^1.3.3",axios:"^1.8.4","axios-retry":"^4.5.0",chalk:"^4.1.2",commander:"^13.1.0",debug:"^4.4.0",dotenv:"^16.5.0",execa:"^9.5.1","fs-extra":"^11.3.0",getos:"^3.2.1",globby:"^11.1.0","https-proxy-agent":"^7.0.4","jest-cli":"^29.7.0","jest-config":"^29.7.0",lodash:"^4.17.21",nanoid:"^3.3.8","pretty-ms":"^7.0.1","proxy-from-env":"^1.1.0",semver:"^7.7.1","source-map-support":"^0.5.21",tmp:"^0.2.3","tmp-promise":"^3.0.3","ts-pattern":"^5.7.0",unzipper:"^0.12.3",uuid:"^11.1.0",xml2js:"^0.6.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:"angular",header:"# Changelog",ignoreVersion:!0,infile:"./CHANGELOG.md"}},git:{commitMessage:"chore: release ${npm.name} v${version}",tagName:"${npm.name}-v${version}"}}};var F=Ne.version;function ut(e,r){if(!e)return e;let t={...e};return r.forEach(o=>{t.hasOwnProperty(o)&&(t[o]="*****")}),t}function D(e){return ut(e,["recordKey","key"])}var mt=[];function re(e){mt.push(e)}var _=c(require("chalk")),A=c(require("util"));var De=[],Be=[];var be=(...e)=>{let r=A.default.format(...e);re(r),console.log(r)},pt=(...e)=>{let r=A.default.format(...e);re(r),console.error(r)},te=be,l=(...e)=>{let r=A.default.format(...e);return Be.push(r),i("WARNING: ",r),be(_.default.bgYellow.black(" WARNING "),r)};var d=(...e)=>{let r=A.default.format(...lt(e));return De.push(r),i("ERROR: ",A.default.format(...e)),pt(_.default.bgRed.white(" ERROR "),r)};var lt=e=>e.map(r=>r instanceof Error?r.message:r),k=(e=2)=>console.log(Array(e).fill("").join(` `)),fo=_.default.cyan,Io=_.default.blueBright,Co=_.default.red,To=_.default.yellow,ho=_.default.green,Oo=_.default.gray,Po=_.default.white,Uo=_.default.black,Ao=_.default.magenta,S=_.default.dim,So=_.default.bold;var oe=c(require("fs-extra")),xe=require("path"),dt=require("uuid");async function P(e){try{return await oe.default.readJson(e)}catch(r){throw d("Error while reading JSON file: %s",e,r),d}}async function ne(e,r){try{return await oe.default.writeFile(e,r,"utf8"),e}catch(t){throw d(`Error writing file at ${e}:`,t),t}}var Et=c(require("crypto"));var pe=c(require("path")),Sr=c(require("semver"));var Xe=c(require("lodash"));var je=c(require("axios")),Ve=c(require("axios-retry")),Ke=c(require("lodash"));var ve=()=>process.env.CURRENTS_API_URL??"https://cy.currents.dev",Me=()=>process.env.CURRENTS_REST_API_URL??"https://api.currents.dev",we=()=>3e4;var se=require("axios"),ie=c(require("pretty-ms"));var Fe=i.extend("http"),H=e=>[3*1e3,15*1e3,30*1e3][e-1],ke=e=>(Fe("isRetriableError: %o",{message:e.message,code:"code"in e?e.code:void 0,status:"response"in e?e.response?.status:void 0,headers:"response"in e?e.response?.headers:void 0,data:"response"in e?e.response?.data:void 0,isAxiosError:(0,se.isAxiosError)(e)}),"code"in e&&e.code&&["ECONNABORTED","ECONNREFUSED","ECONNRESET","ETIMEDOUT","ENETRESET"].includes(e.code)?!0:(0,se.isAxiosError)(e)?[429,502,503,504].includes(e.response?.status??0):!1),G=()=>3;function He(e,r,t){Fe("Network request '%s' failed: '%s'. Next attempt is in %s (%d/%d).",`${t.method?.toUpperCase()} ${t.url}`,r.message,(0,ie.default)(H(e)),e,G()),l("Network request '%s' failed: '%s'. Next attempt is in %s (%d/%d).",`${t.method?.toUpperCase()} ${t.url}`,r.message,(0,ie.default)(H(e)),e,G())}var ae=i.extend("http");var ce={api:null,restApi:null};function Rt(e){let r=e==="api"?ve():Me();ae("client base url: %s",r);let t=je.default.create({baseURL:r,timeout:we(),transitional:{clarifyTimeoutError:!0}});return t.interceptors.request.use(o=>{let n=o["axios-retry"]?.retryCount??0;o.headers.set({"x-cmd-version":F}),o.headers.get("Content-Type")||o.headers.set("Content-Type","application/json");let a={...Ke.default.pick(o,"method","url","headers"),baseURL:r,data:Buffer.isBuffer(o.data)?"buffer":o.data,params:o.params};return n?ae("network request retry: %o",Ge({...a,baseURL:r,isRetry:!0})):ae("network request: %o",Ge(a)),o}),(0,Ve.default)(t,{retries:G(),retryCondition:ke,retryDelay:H,shouldResetTimeout:!0,onRetry:He}),t}function Je(e){return ce[e]===null&&(ce[e]=Rt(e)),ce[e]}function Ge(e){return{method:e.method,baseURL:e.baseURL,url:e.url,data:e.isRetry?"<retry>":_t(e.data),params:e.isRetry?"<retry>":e.params,headers:{...e.headers,Authorization:"Bearer ***","x-currents-key":"***"}}}function _t(e){return e?.results?.raw?{...e,results:{...e.results,raw:"***"}}:e}var qe=require("axios"),Qe=c(require("lodash")),E=require("ts-pattern");function We(e){(0,E.match)(e).when(qe.isAxiosError,ft).otherwise(()=>{l("Unexpected error while sending network request: %s",e)})}function ft(e){return(0,E.match)(e).with({code:"ECONNABORTED"},()=>{l("Network connection aborted")}).with({code:"ECONNREFUSED"},()=>{l("Network connection aborted")}).with({code:"ECONNRESET"},()=>{l("Network connection reset")}).with({code:"ETIMEDOUT"},()=>{l("Network connection timeout")}).with({response:E.P.not(E.P.nullish)},r=>{It(r,{status:r.response.status,data:r.response.data})}).otherwise(r=>{l(`[currents] Unexpected network error: %s %O`,e.message,{method:e.response?.config.method,url:e.response?.config.url,status:e.response?.status,payload:e.response?.config.data})})}function It(e,{status:r,data:t}){(0,E.match)(r).with(401,()=>{l(`[currents] ${e.response?.config.method} ${e.response?.config.url}} - 401 Unauthorized Request from cloud service`)}).with(400,()=>{l(`[currents] ${e.response?.config.method} ${e.response?.config.url} - 400 Bad Request from cloud service: %o`,t)}).with(404,()=>{l(`[currents] ${e.response?.config.method} ${e.response?.config.url} - 404 Not Found from cloud service`)}).with(429,()=>{l(`[currents] ${e.response?.config.method} ${e.response?.config.url} - 429 Too Many Requests from cloud service`)}).with(422,()=>{Ct(e,t)}).otherwise(()=>{l(`[currents] Unexpected network response: %s %O`,e.message,{method:e.response?.config.method,url:e.response?.config.url,status:e.response?.status})})}function Ct(e,r){(0,E.match)(r).with({code:$e.MISSING_SUITE,message:E.P.string,errors:E.P.array(E.P.string)},async t=>{let{message:o,errors:n}=t;k(1),d(...Ye(o,n))}).with({code:$e.RUN_EXPIRED,message:E.P.string},t=>{l(t.message)}).with({message:E.P.string,errors:E.P.array(E.P.string)},t=>{let{message:o,errors:n}=t;k(1),l(...Ye(o,n)),k(1)}).otherwise(()=>{l(`[currents] Unexpected network response: %s %O`,e.message,{method:e.response?.config.method,url:e.response?.config.url,status:e.response?.status})})}var $e={RUN_CANCELLED:"RUN_CANCELLED",RUN_EXPIRED:"RUN_EXPIRED",MISSING_SUITE:"MISSING_SUITE"};function Ye(e,r){return Qe.default.isString(e)?r?.length===0?[e]:[e,` ${(r??[]).map(t=>` - ${t}`).join(` `)} `]:["Unexpected network error"]}var ze=i.extend("http");async function j(e,r,t=Je){try{let o=await t(e).request(r);return ze("network response: %o",{...Xe.default.omit(o,"request","config"),url:o.config.url,method:o.config.method}),o}catch(o){let n=o;throw ze("network error: %o",{code:n.code,message:n.message,url:n.config?.url,method:n.config?.method,status:n.response?.status,headers:n.response?.headers,data:n.response?.data}),We(n),n}}var Pn=i.extend("api");var rr=require("util"),tr=require("zlib");var er=i.extend("api"),Tt=(0,rr.promisify)(tr.gzip);async function or(e){try{er("Run params: %o",D(e));let r=await ht(JSON.stringify(e));return j("api",{url:"v1/runs",method:"POST",headers:{"Content-Type":"application/json","Content-Encoding":"gzip"},data:r}).then(t=>t.data)}catch(r){throw er("Failed to create the run:",r),r}}async function ht(e){try{return await Tt(e)}catch(r){throw d("Failed to compress run payload:",r),r}}var wn=i.extend("api");var ns=i.extend("config");var Ot=null;function nr(){return Ot}var h=class{constructor(r){this.config=r}async getFullTestSuite(){return[]}};var Er=c(require("fs-extra")),Rr=require("jest-cli"),_r=c(require("tmp"));var gr=require("lodash");function sr(e){let r=[];for(let[t,o]of Object.entries(e))t==="_"||t==="$0"||t.includes("-")||(typeof o=="boolean"?o&&r.push(`--${t}`):Array.isArray(o)?o.forEach(n=>{r.push(`--${t}=${n}`)}):r.push(`--${t}=${o}`));return r.join(" ")}var ir=require("lodash"),Pt=["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 ar(e){return(0,ir.omit)(e,...Pt)}var mr=c(require("fs")),pr=require("jest-config"),ue=require("lodash"),me=c(require("path"));function V(e,r){return(...t)=>new Promise((o,n)=>{let a=0,m=()=>{a++;try{let g=e(...t);o(g)}catch(g){if(a>=r.length)n(g);else{let R=r[a-1];setTimeout(m,R)}}};m()})}var cr=c(require("fs-extra")),Ut=c(require("path"));async function K(e){let r=await cr.default.pathExists(e);if(!r)throw new Error("File does not exist");return r}var ur=i.extend("jest-discovery");async function lr(e){try{let{config:r,configPath:t}=await(0,pr.readInitialOptions)(e),o=["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"],n=["collectCoverageFrom","coverageDirectory","coveragePathIgnorePatterns","detectLeaks","detectOpenHandles","errorOnDeprecated","forceCoverageMatch","openHandlesTimeout","runner","watchPathIgnorePatterns"],a=(0,ue.omit)(r,o);if(a.projects&&(a.projects=a.projects.map(R=>typeof R!="string"?(0,ue.omit)(R,n):R)),a.rootDir&&Object.keys(a).length===1)return null;let m=me.default.resolve(t?me.default.dirname(t):process.cwd(),`.jest-scanner-${new Date().getTime()}.config.js`),g=`module.exports=${JSON.stringify(a,null,2)}`;return ur("configFileContent: %O",g),mr.default.writeFileSync(m,g),await V(K,[200,200,200,200,200,1e3])(m),m}catch(r){return d("Failed to recreate the config file"),ur("error %o",r),null}}async function dr(e){let r="!!##ThisPatternWillNotMatchAnyTestName##!!",t=e.options,o=ar(t),n=sr(o),a=t.config,m=await lr(a);return{cliArgs:[n,"--testNamePattern",r,"--reporters","@currents/cmd/discovery/jest","--shard=1/1",m?`--config=${m}`:"",...e.args].filter(R=>!(0,gr.isEmpty)(R)),configFilePath:m}}var At=i.extend("jest-discovery");async function fr(e,r){console.time(S("@currents/jest:fullTestSuite-ready"));let{cliArgs:t,configFilePath:o}=await dr(r);try{let n=_r.default.fileSync({postfix:".json"});return At("running scanner: %o",t),process.env.CURRENTS_DISCOVERY_PATH=n.name,await(0,Rr.run)(t.concat(["--openHandlesTimeout=0"])),await V(K,Array.from({length:300},()=>100))(n.name),console.timeEnd(S("@currents/jest:fullTestSuite-ready")),await P(n.name)}catch(n){return d("Failed to obtain the jest full test suite:",n),[]}finally{o&&Er.default.unlinkSync(o)}}var J=class extends h{constructor(r){super(r)}async getFullTestSuite(){return fr(this.config.frameworkConfig,this.config.cliArgs)}};var Cr=c(require("fs-extra"));var Ir=c(require("path"));function $(e){return Ir.default.join(e,"fullTestSuite.json")}var St=i.extend("junit-discovery");async function Tr(e){console.time(S("@currents/junit:fullTestSuite-ready"));try{St("running scanner: %o",e);let r=$(e);process.env.CURRENTS_DISCOVERY_PATH=r;let t=Cr.default.readFileSync(r,"utf-8");return JSON.parse(t)}catch(r){return d("Failed to obtain the junit full test suite:",r),[]}}var Y=class extends h{constructor(r,t){super(r),this.reportDir=t}async getFullTestSuite(){return Tr(this.reportDir)}};function hr(e,r){switch(e.framework){case"jest":return new J(e);case"junit":return new Y(e,r);default:return new h(e)}}var y=c(require("fs-extra")),C=c(require("path"));async function Or(e){let r=await yt(e?.reportDir);if(!r)throw new Error("Failed to find the report dir");return{reportDir:r,configFilePath:e?.configFilePath??C.default.join(r,"config.json")}}async function yt(e){return e?(await q(e),e):Lt((0,C.join)(process.cwd(),".currents"))}async function Lt(e){let r=await y.default.readdir(e),t=null;for(let o of r){let n=C.default.join(e,o),a=await y.default.stat(n);a.isDirectory()&&(!t||a.birthtime>t.birthtime)&&(t={name:o,birthtime:a.birthtime})}return t?(0,C.resolve)(e,t.name):null}async function q(e){try{return await y.default.pathExists(e)}catch{return d("Error checking if path exists:",d),!1}}async function Pr(e){let r=C.default.join(e,"instances");return Nt(r)}async function Nt(e){let r=await y.default.readdir(e),t=[];for(let o of r){let n=C.default.join(e,o);(await y.default.stat(n)).isFile()&&t.push(n)}return t}var Dt=e=>Buffer.byteLength(JSON.stringify(e),"utf8"),Ur=(e,r=1048576)=>{let t=[],o=[],n=0;for(let a of e){let m=Dt(a);n+m>r&&(t.push(o),o=[],n=0),o.push(a),n+=m}return o.length>0&&t.push(o),t};async function yr(){let e=nr();if(!e)throw new Error("Currents config is missing!");let r=await Or(e);Ee(bt(r.reportDir)),i("Reporter options: %o",r),te("Report directory: %s",r.reportDir);let t=await P(r.configFilePath);i("Report config: %o",t);let o=await Pr(r.reportDir);i("Found %d instance results in the reportDir: %s",o.length,r.reportDir);let n=Bt(r.reportDir),a=await q(n),m=$(r.reportDir),g=null;if(a){let T=await P(n);l("Marker file detected. The report was already uploaded: %o",{runUrl:T.response.runUrl,isoDate:T.isoDate}),await q(m)&&(g=await P(m),i("Full test suite file detected: %s",m))}if(g)i("The discovery stage was skipped");else{if(g=await hr(t,r.reportDir).getFullTestSuite(),xt(g))throw new Error("Failed to discover the full test suite!");await ne(m,JSON.stringify(g))}let R=g.length===1?g[0].name:null,B={currents:e},O={type:t.framework,version:t.frameworkVersion,clientVersion:F,frameworkConfig:{originFramework:t.frameworkConfig?.originFramework,originFrameworkVersion:t.frameworkConfig?.originFrameworkVersion}},Q=v.userFacingNanoid(),L=Te(e.ciBuildId),N={};for await(let T of o){let I=await P(T);N[I.groupId]||(N[I.groupId]=[]),N[I.groupId].push(I)}for await(let T of Object.keys(N)){let I=N[T],b=T;R&&(i("Default group found: %s, overwriting the group in the results",R),b=R,I=I.map(U=>({...U,groupId:R})));try{let U=Ur(I),W=await Ar({ci:L,group:b,instances:[],fullTestSuite:g,config:B,machineId:Q,framework:O});for(let z=0;z<U.length;z++)await Ar({ci:L,group:b,instances:U[z],fullTestSuite:[],config:B,machineId:Q,framework:O});i("Api response: %o",W),te("[%s] Run created: %s",b,W.runUrl);let Lr={response:W,isoDate:new Date().toISOString()};await ne(n,JSON.stringify(Lr)),i("Marker file %s: %s",a?"overwritten":"created",n)}catch(U){throw i("Failed to upload the results to the dashboard"),U}}}async function Ar({ci:e,group:r,instances:t,fullTestSuite:o,config:n,machineId:a,framework:m}){let g=await Ue(),R=await Le(),B={browserName:"node",browserVersion:Sr.default.coerce(process.version)?.version},{currents:O}=n,L={platform:{...B,...R},ci:e,commit:g,group:r,fullTestSuite:o,config:n,projectId:O.projectId,recordKey:O.recordKey,ciBuildId:e.ciBuildId.value??void 0,tags:O.tag??[],machineId:O.machineId??a,framework:m,instances:t,previousCiBuildId:process.env.CURRENTS_PREVIOUS_CI_BUILD_ID};return i("Creating run: %o",D(L)),or(L)}function Bt(e){return pe.default.join(e,"upload.marker.json")}function bt(e){return pe.default.join(e,`.debug-${new Date().toISOString()}.log`)}function xt(e){return e.length===0||e.some(r=>r.tests.length===0)}0&&(module.exports={handleCurrentsReport}); /*! For license information please see index.js.LEGAL.txt */ //# sourceMappingURL=index.js.map