@currents/cmd
Version:
Currents CLI tools
12 lines • 34.1 kB
JavaScript
;var bt=Object.create;var v=Object.defineProperty;var vt=Object.getOwnPropertyDescriptor;var wt=Object.getOwnPropertyNames;var Gt=Object.getPrototypeOf,Ht=Object.prototype.hasOwnProperty;var le=(e,t)=>{for(var r in t)v(e,r,{get:t[r],enumerable:!0})},Te=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of wt(t))!Ht.call(e,n)&&n!==r&&v(e,n,{get:()=>t[n],enumerable:!(o=vt(t,n))||o.enumerable});return e};var E=(e,t,r)=>(r=e!=null?bt(Gt(e)):{},Te(t||!e||!e.__esModule?v(r,"default",{value:e,enumerable:!0}):r,e)),Ft=e=>Te(v({},"__esModule",{value:!0}),e);var Hr={};le(Hr,{handleCurrentsReport:()=>Mt});module.exports=Ft(Hr);var ge=require("debug"),Kt=E(require("fs-extra")),i=(0,ge.debug)("currents"),kt=null;function de(e){kt=e}var w={};le(w,{getNanoid:()=>jt,userFacingNanoid:()=>re});var te=require("nanoid"),fe="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",jt=(e=16)=>(0,te.customAlphabet)(fe,e)(),re=(0,te.customAlphabet)(fe,12);var _=require("lodash");var G=i.extend("ci"),Yt=(e,...t)=>(0,_.chain)(t).compact().join(e).value(),Vt=(e,t)=>(0,_.set)(e,(0,_.camelCase)(t),process.env[t]),p=e=>(0,_.transform)(e,Vt,{}),Jt=()=>process.env.TF_BUILD&&process.env.AZURE_HTTP_USER_AGENT,Wt=()=>(0,_.some)(process.env,(e,t)=>/^CODEBUILD_/.test(t)),$t=()=>process.env.bamboo_buildNumber,Qt=()=>(0,_.some)(process.env,(e,t)=>/^CONCOURSE_/.test(t)),qt=()=>process.env.GITLAB_CI||process.env.CI_SERVER_NAME&&/^GitLab/.test(process.env.CI_SERVER_NAME),zt=()=>!!(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),Xt=()=>process.env.JENKINS_URL||process.env.JENKINS_HOME||process.env.JENKINS_VERSION||process.env.HUDSON_URL||process.env.HUDSON_HOME,Zt={appveyor:"APPVEYOR",azure:Jt,awsCodeBuild:Wt,bamboo:$t,bitbucket:"BITBUCKET_BUILD_NUMBER",buildkite:"BUILDKITE",circle:"CIRCLECI",concourse:Qt,codeFresh:"CF_BUILD_ID",drone:"DRONE",githubActions:"GITHUB_ACTIONS",gitlab:qt,goCD:"GO_JOB_NAME",jenkins:Xt,googleCloud:zt,semaphore:"SEMAPHORE",teamcity:"TEAMCITY_VERSION",travis:"TRAVIS",netlify:"NETLIFY"};function er(){let{env:e}=process;return(0,_.findKey)(Zt,t=>{if((0,_.isString)(t))return e[t];if((0,_.isFunction)(t))return t()})}var Ce=()=>({appveyor:p(["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:p(["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:p(["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:p(["bamboo_buildNumber","bamboo_buildResultsUrl","bamboo_planRepository_repositoryUrl","bamboo_buildKey"]),bitbucket:p(["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:p(["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:p(["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:p(["BUILD_ID","BUILD_NAME","BUILD_JOB_NAME","BUILD_PIPELINE_NAME","BUILD_TEAM_NAME","ATC_EXTERNAL_URL"]),codeFresh:p(["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:p(["DRONE_BUILD_LINK","DRONE_BUILD_NUMBER","DRONE_PULL_REQUEST"]),githubActions:p(["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:p(["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:p(["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:p(["BUILD_ID","PROJECT_ID","REPO_NAME","BRANCH_NAME","TAG_NAME","COMMIT_SHA","SHORT_SHA"]),jenkins:p(["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:p(["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:p(["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:p(["BUILD_ID","CONTEXT","URL","DEPLOY_URL","DEPLOY_PRIME_URL","DEPLOY_ID"])}),tr=()=>{let{env:e}=process;return{appveyor:{sha:e.APPVEYOR_REPO_COMMIT,branch:e.APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH||e.APPVEYOR_REPO_BRANCH,message:Yt(`
`,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},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},snap:null,teamcity:null,travis:{sha:e.TRAVIS_PULL_REQUEST_SHA||e.TRAVIS_COMMIT,branch:e.TRAVIS_PULL_REQUEST_BRANCH||e.TRAVIS_BRANCH,message:e.TRAVIS_COMMIT_MESSAGE},netlify:{sha:e.COMMIT_REF,branch:e.BRANCH,remoteOrigin:e.REPOSITORY_URL}}},Ue=e=>{let t=Oe();return t?(0,_.chain)(e()).get(t).value():{}};function rr(){return(0,_.chain)(Ce()).omitBy(_.isNull).keys().value()}function or(e){return e&&rr().includes(e)}function Oe(){let e=er();return G("detected CI provider name: %s",e),e||null}function nr(){return Ue(Ce)}function De(){return Ue(tr)}function Ae(e){let t=nr(),r=Oe(),o=sr(e,r);return G("detected CI provider: %s",r),G("detected CI params: %O",t),G("detected CI build ID: %o",o),{params:t,provider:r,ciBuildId:o}}function sr(e,t){return e?{source:"user",value:e}:or(t)?{source:"server",value:null}:{source:"random",value:`auto:${re()}`}}var Le=require("@currents/commit-info"),Be=require("lodash");var H=require("lodash");var oe=i.extend("ci-git");function Se(e){oe("git commit existing info: %O",e);let t=De();oe("commit info from provider environment variables: %O",t);let r=(0,H.transform)(e,(o,n,a)=>{let c=n||(t?t[a]:null);return o[a]=(0,H.defaultTo)(c,null)});return oe("combined git and environment variables from provider: %O",r),r}var ir=async()=>{let e=await(0,Le.commitInfo)();return Se({branch:e.branch,remoteOrigin:e.remote,authorEmail:e.email,authorName:e.author,message:e.message,sha:e.sha,ghaEventData:e.ghaEventData})},he=(0,Be.memoize)(ir);var Ne=E(require("getos")),Pe=require("lodash"),f=require("os"),ye=require("util"),ar=async()=>{if((0,f.platform)()==="linux")try{let e=await(0,ye.promisify)(Ne.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)()},Er=async()=>{let e=await ar();return{osName:(0,f.platform)(),osVersion:e,osCpus:[],osMemory:{free:(0,f.freemem)(),total:(0,f.totalmem)()}}},Me=(0,Pe.memoize)(Er);var xe={name:"@currents/cmd",version:"1.9.9",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",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","release-it":"^19.2.4","@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:"^29.7.0",rimraf:"^6.0.1",tsup:"^8.3.5",typescript:"^5.9.3",vitest:"^2.1.9"},dependencies:{"@commander-js/extra-typings":"^13.1.0","@currents/commit-info":"1.0.1-beta.0",archiver:"^7.0.1","async-retry":"^1.3.3",axios:"1.15.0","axios-retry":"4.5.0",chalk:"^4.1.2",commander:"^13.1.0",debug:"^4.4.0",dotenv:"^17.2.3",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.7.1","source-map-support":"^0.5.21",tmp:"^0.2.5","tmp-promise":"^3.0.3","ts-pattern":"^5.8.0",unzipper:"^0.12.3",uuid:"11.1.0",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:"angular",header:"# Changelog",ignoreVersion:!0,infile:"./CHANGELOG.md"}},git:{commitMessage:"chore: release ${npm.name} v${version}",tagName:"${npm.name}-v${version}"}}};var F=xe.version;function _r(e,t){if(!e)return e;let r={...e};return t.forEach(o=>{r.hasOwnProperty(o)&&(r[o]="*****")}),r}function x(e){return _r(e,["recordKey","key"])}var ur=[];function ne(e){ur.push(e)}var l=E(require("chalk")),N=E(require("util"));var be=[],ve=[];var we=(...e)=>{let t=N.default.format(...e);ne(t),console.log(t)},Ir=(...e)=>{let t=N.default.format(...e);ne(t),console.error(t)},se=we,u=(...e)=>{let t=N.default.format(...e);return ve.push(t),i("WARNING: ",t),we(l.default.bgYellow.black(" WARNING "),t)};var R=(...e)=>{let t=N.default.format(...pr(e));return be.push(t),i("ERROR: ",N.default.format(...e)),Ir(l.default.bgRed.white(" ERROR "),t)};var pr=e=>e.map(t=>t instanceof Error?t.message:t),K=(e=2)=>console.log(Array(e).fill("").join(`
`)),Uo=l.default.cyan,Oo=l.default.blueBright,Do=l.default.red,Ao=l.default.yellow,So=l.default.green,Lo=l.default.gray,Bo=l.default.white,ho=l.default.black,No=l.default.magenta,P=l.default.dim,Po=l.default.bold;var ie=E(require("fs-extra")),Ge=require("path"),mr=require("uuid");async function L(e){try{return await ie.default.readJson(e)}catch(t){throw R("Error while reading JSON file: %s",e,t),R}}async function ae(e,t){try{return await ie.default.writeFile(e,t,"utf8"),e}catch(r){throw R(`Error writing file at ${e}:`,r),r}}var lr=E(require("crypto"));var Pt=E(require("axios")),Re=E(require("fs-extra")),z=E(require("path")),yt=E(require("semver"));var rt=E(require("lodash"));var Je=E(require("axios")),We=E(require("axios-retry")),$e=E(require("lodash"));var He=()=>process.env.CURRENTS_API_URL??"https://cy.currents.dev",Fe=()=>process.env.CURRENTS_REST_API_URL??"https://api.currents.dev",Ke=()=>3e4;var Ee=require("axios"),ce=E(require("pretty-ms"));var ke=i.extend("http"),k=e=>[3*1e3,15*1e3,30*1e3][e-1],je=e=>(ke("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,Ee.isAxiosError)(e)}),"code"in e&&e.code&&["ECONNABORTED","ECONNREFUSED","ECONNRESET","ETIMEDOUT","ENETRESET"].includes(e.code)?!0:(0,Ee.isAxiosError)(e)?[429,502,503,504].includes(e.response?.status??0):!1),j=()=>3;function Ye(e,t,r){ke("Network request '%s' failed: '%s'. Next attempt is in %s (%d/%d).",`${r.method?.toUpperCase()} ${r.url}`,t.message,(0,ce.default)(k(e)),e,j()),u("Network request '%s' failed: '%s'. Next attempt is in %s (%d/%d).",`${r.method?.toUpperCase()} ${r.url}`,t.message,(0,ce.default)(k(e)),e,j())}var _e=i.extend("http");var ue={api:null,restApi:null};function Tr(e){let t=e==="api"?He():Fe();_e("client base url: %s",t);let r=Je.default.create({baseURL:t,timeout:Ke(),transitional:{clarifyTimeoutError:!0}});return r.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={...$e.default.pick(o,"method","url","headers"),baseURL:t,data:Buffer.isBuffer(o.data)?"buffer":o.data,params:o.params};return n?_e("network request retry: %o",Ve({...a,baseURL:t,isRetry:!0})):_e("network request: %o",Ve(a)),o}),(0,We.default)(r,{retries:j(),retryCondition:je,retryDelay:k,shouldResetTimeout:!0,onRetry:Ye}),r}function Qe(e){return ue[e]===null&&(ue[e]=Tr(e)),ue[e]}function Ve(e){return{method:e.method,baseURL:e.baseURL,url:e.url,data:e.isRetry?"<retry>":gr(e.data),params:e.isRetry?"<retry>":e.params,headers:{...e.headers,Authorization:"Bearer ***","x-currents-key":"***"}}}function gr(e){return e?.results?.raw?{...e,results:{...e.results,raw:"***"}}:e}var Xe=require("axios"),Ze=E(require("lodash")),m=require("ts-pattern");function et(e){(0,m.match)(e).when(Xe.isAxiosError,dr).otherwise(()=>{u("Unexpected error while sending network request: %s",e)})}function dr(e){return(0,m.match)(e).with({code:"ECONNABORTED"},()=>{u("Network connection aborted")}).with({code:"ECONNREFUSED"},()=>{u("Network connection aborted")}).with({code:"ECONNRESET"},()=>{u("Network connection reset")}).with({code:"ETIMEDOUT"},()=>{u("Network connection timeout")}).with({response:m.P.not(m.P.nullish)},t=>{fr(t,{status:t.response.status,data:t.response.data})}).otherwise(t=>{u(`[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 fr(e,{status:t,data:r}){(0,m.match)(t).with(401,()=>{u(`[currents] ${e.response?.config.method} ${e.response?.config.url}} - 401 Unauthorized Request from cloud service`)}).with(400,()=>{u(`[currents] ${e.response?.config.method} ${e.response?.config.url} - 400 Bad Request from cloud service:
%o`,r)}).with(404,()=>{u(`[currents] ${e.response?.config.method} ${e.response?.config.url} - 404 Not Found from cloud service`)}).with(429,()=>{u(`[currents] ${e.response?.config.method} ${e.response?.config.url} - 429 Too Many Requests from cloud service`)}).with(422,()=>{Cr(e,r)}).otherwise(()=>{u(`[currents] Unexpected network response: %s
%O`,e.message,{method:e.response?.config.method,url:e.response?.config.url,status:e.response?.status})})}function Cr(e,t){(0,m.match)(t).with({code:qe.MISSING_SUITE,message:m.P.string,errors:m.P.array(m.P.string)},async r=>{let{message:o,errors:n}=r;K(1),R(...ze(o,n))}).with({code:qe.RUN_EXPIRED,message:m.P.string},r=>{u(r.message)}).with({message:m.P.string,errors:m.P.array(m.P.string)},r=>{let{message:o,errors:n}=r;K(1),u(...ze(o,n)),K(1)}).otherwise(()=>{u(`[currents] Unexpected network response: %s
%O`,e.message,{method:e.response?.config.method,url:e.response?.config.url,status:e.response?.status})})}var qe={RUN_CANCELLED:"RUN_CANCELLED",RUN_EXPIRED:"RUN_EXPIRED",MISSING_SUITE:"MISSING_SUITE"};function ze(e,t){return Ze.default.isString(e)?t?.length===0?[e]:[e,`
${(t??[]).map(r=>` - ${r}`).join(`
`)}
`]:["Unexpected network error"]}var tt=i.extend("http");async function Y(e,t,r=Qe){try{let o=await r(e).request(t);return tt("network response: %o",{...rt.default.omit(o,"request","config"),url:o.config.url,method:o.config.method}),o}catch(o){let n=o;throw tt("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}),et(n),n}}var Bn=i.extend("api");var st=require("util"),it=require("zlib");var nt=i.extend("api"),Ur=(0,st.promisify)(it.gzip);async function at(e){try{nt("Run params: %o",x(e));let t=await Or(JSON.stringify(e));return Y("api",{url:"v1/runs",method:"POST",headers:{"Content-Type":"application/json","Content-Encoding":"gzip"},data:t}).then(r=>r.data)}catch(t){throw nt("Failed to create the run:",t),t}}async function Or(e){try{return await Ur(e)}catch(t){throw R("Failed to compress run payload:",t),t}}var Kn=i.extend("api");var Es=i.extend("config");var Dr=null;function Et(){return Dr}var D=class{constructor(t){this.config=t}async getFullTestSuite(){return[]}};var dt=E(require("fs-extra")),ft=require("jest-cli"),Ct=E(require("tmp"));var Tt=require("lodash");function ct(e){let t=[];for(let[r,o]of Object.entries(e))r==="_"||r==="$0"||r.includes("-")||(typeof o=="boolean"?o&&t.push(`--${r}`):Array.isArray(o)?o.forEach(n=>{t.push(`--${r}=${n}`)}):t.push(`--${r}=${o}`));return t.join(" ")}var _t=require("lodash"),Ar=["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 ut(e){return(0,_t.omit)(e,...Ar)}var Rt=E(require("fs")),mt=require("jest-config"),Ie=require("lodash"),pe=E(require("path"));function V(e,t){return(...r)=>new Promise((o,n)=>{let a=0,c=()=>{a++;try{let I=e(...r);o(I)}catch(I){if(a>=t.length)n(I);else{let C=t[a-1];setTimeout(c,C)}}};c()})}var It=E(require("fs-extra")),Sr=E(require("path"));async function J(e){let t=await It.default.pathExists(e);if(!t)throw new Error("File does not exist");return t}var pt=i.extend("jest-discovery");async function lt(e){try{let{config:t,configPath:r}=await(0,mt.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,Ie.omit)(t,o);if(a.projects&&(a.projects=a.projects.map(C=>typeof C!="string"?(0,Ie.omit)(C,n):C)),a.rootDir&&Object.keys(a).length===1)return null;let c=pe.default.resolve(r?pe.default.dirname(r):process.cwd(),`.jest-scanner-${new Date().getTime()}.config.js`),I=`module.exports=${JSON.stringify(a,null,2)}`;return pt("configFileContent: %O",I),Rt.default.writeFileSync(c,I),await V(J,[200,200,200,200,200,1e3])(c),c}catch(t){return R("Failed to recreate the config file"),pt("error %o",t),null}}async function gt(e){let t="!!##ThisPatternWillNotMatchAnyTestName##!!",r=e.options,o=ut(r),n=ct(o),a=r.config,c=await lt(a);return{cliArgs:[n,"--testNamePattern",t,"--reporters","@currents/cmd/discovery/jest","--shard=1/1",c?`--config=${c}`:"",...e.args].filter(C=>!(0,Tt.isEmpty)(C)),configFilePath:c}}var Lr=i.extend("jest-discovery");async function Ut(e,t){console.time(P("@currents/jest:fullTestSuite-ready"));let{cliArgs:r,configFilePath:o}=await gt(t);try{let n=Ct.default.fileSync({postfix:".json"});return Lr("running scanner: %o",r),process.env.CURRENTS_DISCOVERY_PATH=n.name,await(0,ft.run)(r.concat(["--openHandlesTimeout=0"])),await V(J,Array.from({length:300},()=>100))(n.name),console.timeEnd(P("@currents/jest:fullTestSuite-ready")),await L(n.name)}catch(n){return R("Failed to obtain the jest full test suite:",n),[]}finally{o&&dt.default.unlinkSync(o)}}var W=class extends D{constructor(t){super(t)}async getFullTestSuite(){return Ut(this.config.frameworkConfig,this.config.cliArgs)}};var Dt=E(require("fs-extra"));var Ot=E(require("path"));function $(e){return Ot.default.join(e,"fullTestSuite.json")}var Br=i.extend("junit-discovery");async function At(e){console.time(P("@currents/junit:fullTestSuite-ready"));try{Br("running scanner: %o",e);let t=$(e);process.env.CURRENTS_DISCOVERY_PATH=t;let r=Dt.default.readFileSync(t,"utf-8");return JSON.parse(r)}catch(t){return R("Failed to obtain the junit full test suite:",t),[]}}var Q=class extends D{constructor(t,r){super(t),this.reportDir=r}async getFullTestSuite(){return At(this.reportDir)}};function St(e,t){switch(e.framework){case"jest":return new W(e);case"junit":return new Q(e,t);default:return new D(e)}}var y=E(require("fs-extra")),O=E(require("path"));async function Lt(e){let t=await hr(e?.reportDir);if(!t)throw new Error("Failed to find the report dir");return{reportDir:t,configFilePath:e?.configFilePath??O.default.join(t,"config.json")}}async function hr(e){return e?(await q(e),e):Nr((0,O.join)(process.cwd(),".currents"))}async function Nr(e){let t=await y.default.readdir(e),r=null;for(let o of t){let n=O.default.join(e,o),a=await y.default.stat(n);a.isDirectory()&&(!r||a.birthtime>r.birthtime)&&(r={name:o,birthtime:a.birthtime})}return r?(0,O.resolve)(e,r.name):null}async function q(e){try{return await y.default.pathExists(e)}catch{return R("Error checking if path exists:",R),!1}}async function Bt(e){let t=O.default.join(e,"instances");return Pr(t)}async function Pr(e){let t=await y.default.readdir(e),r=[];for(let o of t){let n=O.default.join(e,o);(await y.default.stat(n)).isFile()&&r.push(n)}return r}var yr=e=>Buffer.byteLength(JSON.stringify(e),"utf8"),ht=(e,t=1048576)=>{let r=[],o=[],n=0;for(let a of e){let c=yr(a);n+c>t&&(r.push(o),o=[],n=0),o.push(a),n+=c}return o.length>0&&r.push(o),r};var Mr=3e4;async function Mt(){let e=Et();if(!e)throw new Error("Currents config is missing!");let t=await Lt(e);de(br(t.reportDir)),i("Reporter options: %o",t),se("Report directory: %s",t.reportDir);let r=await L(t.configFilePath);i("Report config: %o",r);let o=await Bt(t.reportDir);i("Found %d instance results in the reportDir: %s",o.length,t.reportDir);let n=xr(t.reportDir),a=await q(n),c=$(t.reportDir),I=null;if(a){let U=await L(n);u("Marker file detected. The report was already uploaded: %o",{runUrl:U.response.runUrl,isoDate:U.isoDate})}if(await q(c)&&(I=await L(c),i("Full test suite file detected: %s",c)),I)i("The discovery stage was skipped");else{if(I=await St(r,t.reportDir).getFullTestSuite(),vr(I))throw new Error("Failed to discover the full test suite!");await ae(c,JSON.stringify(I))}let B=I.length===1?I[0].name:null,A={currents:e},X={type:r.framework,version:r.frameworkVersion,clientVersion:F,frameworkConfig:{originFramework:r.frameworkConfig?.originFramework,originFrameworkVersion:r.frameworkConfig?.originFrameworkVersion}},M=w.userFacingNanoid(),me=Ae(e.ciBuildId),h={};for await(let U of o){let g=await L(U);h[g.groupId]||(h[g.groupId]=[]),h[g.groupId].push(g)}let b=new Map;Object.values(h).forEach(U=>{U.forEach(g=>{g.artifacts?.forEach(d=>{d&&b.set(d.path,d.contentType)}),g.results.tests.forEach(d=>{d.artifacts?.forEach(T=>{T&&b.set(T.path,T.contentType)}),d.attempts.forEach(T=>{T.artifacts?.forEach(S=>{S&&b.set(S.path,S.contentType)})})})})});for await(let U of Object.keys(h)){let g=h[U],d=U;B&&(i("Default group found: %s, overwriting the group in the results",B),d=B,g=g.map(T=>({...T,groupId:B})));try{let T=ht(g),S=await Nt({ci:me,group:d,instances:[],fullTestSuite:I,config:A,machineId:M,framework:X});for(let Z=0;Z<T.length;Z++){let ee=await Nt({ci:me,group:d,instances:T[Z],fullTestSuite:[],config:A,machineId:M,framework:X});ee.artifactUploadUrls&&ee.artifactUploadUrls.length>0&&await wr(ee.artifactUploadUrls,t.reportDir,b)}i("Api response: %o",S),se("[%s] Run created: %s",d,S.runUrl);let xt={response:S,isoDate:new Date().toISOString()};await ae(n,JSON.stringify(xt)),i("Marker file %s: %s",a?"overwritten":"created",n)}catch(T){throw i("Failed to upload the results to the dashboard"),T}}}async function Nt({ci:e,group:t,instances:r,fullTestSuite:o,config:n,machineId:a,framework:c}){let I=await he(),C=await Me(),B={browserName:"node",browserVersion:yt.default.coerce(process.version)?.version},{currents:A}=n,M={platform:{...B,...C},ci:e,commit:I,group:t,fullTestSuite:o,config:n,projectId:A.projectId,recordKey:A.recordKey,ciBuildId:e.ciBuildId.value??void 0,tags:A.tag??[],machineId:A.machineId??a,framework:c,instances:r,previousCiBuildId:process.env.CURRENTS_PREVIOUS_CI_BUILD_ID};return i("Creating run: %o",x(M)),at(M)}function xr(e){return z.default.join(e,"upload.marker.json")}function br(e){return z.default.join(e,`.debug-${new Date().toISOString()}.log`)}function vr(e){return e.length===0||e.some(t=>t.tests.length===0)}async function wr(e,t,r){i("Uploading %d artifacts",e.length),await Promise.all(e.map(o=>{let n=z.default.join(t,o.path),a=r.get(o.path)||"application/octet-stream";return Gr(n,a,o.uploadUrl)}))}var Gr=async(e,t,r)=>{try{if(!await Re.default.pathExists(e)){u("Artifact file not found: %s",e);return}let o=await Re.default.readFile(e);await Pt.default.put(r,o,{headers:{"Content-Type":t},timeout:Mr})}catch(o){i("Failed to upload artifact %s: %o",e,o)}};0&&(module.exports={handleCurrentsReport});
/*! For license information please see index.js.LEGAL.txt */
//# sourceMappingURL=index.js.map