@currents/cmd 1.1.0-beta.15 → 1.1.0-beta.17

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/bin/index.js CHANGED
@@ -1,69 +1,69 @@
1
1
  #! /usr/bin/env node
2
- "use strict";var Lo=Object.create;var Ae=Object.defineProperty;var Bo=Object.getOwnPropertyDescriptor;var Mo=Object.getOwnPropertyNames;var Go=Object.getPrototypeOf,Fo=Object.prototype.hasOwnProperty;var ko=(e,t)=>{for(var r in t)Ae(e,r,{get:t[r],enumerable:!0})},Ho=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Mo(t))!Fo.call(e,n)&&n!==r&&Ae(e,n,{get:()=>t[n],enumerable:!(o=Bo(t,n))||o.enumerable});return e};var c=(e,t,r)=>(r=e!=null?Lo(Go(e)):{},Ho(t||!e||!e.__esModule?Ae(r,"default",{value:e,enumerable:!0}):r,e));var Dd=require("source-map-support/register");var Do=require("@commander-js/extra-typings");var ct={name:"@currents/cmd",version:"1.1.0-beta.15",main:"./dist/index.js",author:"Currents Software Inc",license:"GPL-3.0-or-later",description:"Currents CLI tools",scripts:{test:"vitest",rm:"rimraf dist",lint:'TIMING=1 eslint "**/*.ts*"',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":"^7.0.2","@types/archiver":"^6.0.2","@types/async-retry":"^1.4.8","@types/debug":"^4.1.12","@types/fs-extra":"^11.0.4","@types/getos":"^3.0.4","@types/lodash":"^4.17.5","@types/node":"^20.14.2","@types/proxy-from-env":"^1.0.4","@types/semver":"^7.5.8","@types/tmp":"^0.2.6","@types/unzipper":"^0.10.10","@types/uuid":"^9.0.8",jest:"^29.7.0",rimraf:"^5.0.7",tsup:"^8.1.0",typescript:"^5.4.5",vitest:"^1.3.0"},dependencies:{"@commander-js/extra-typings":"^11.1.0","@currents/commit-info":"1.0.1-beta.0",archiver:"^7.0.1","async-retry":"^1.3.3",axios:"^1.7.2","axios-retry":"^4.4.0",commander:"^11.1.0",debug:"^4.3.5",dotenv:"^16.0.3",execa:"^8.0.1","fs-extra":"^11.2.0",getos:"^3.2.1","jest-cli":"^29.7.0","jest-config":"^29.7.0","https-proxy-agent":"^7.0.4",lodash:"^4.17.21",nanoid:"^3.3.4","pretty-ms":"^7.0.1","proxy-from-env":"^1.1.0",semver:"^7.6.0","source-map-support":"^0.5.21",tmp:"^0.2.3","tmp-promise":"^3.0.3","ts-pattern":"^5.2.0",unzipper:"^0.12.3"},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 re=ct.version;var st=require("@commander-js/extra-typings");var Ko=[];function Ue(e){Ko.push(e)}var I=c(require("chalk")),V=c(require("util"));var we=require("debug"),$o=c(require("fs-extra")),s=(0,we.debug)("currents"),Vo=null;function v(){we.debug.enable("currents,currents:*")}function pt(e){Vo=e}var mt=[],dt=[];var Se=(...e)=>{let t=V.default.format(...e);Ue(t),console.log(t)},Jo=(...e)=>{let t=V.default.format(...e);Ue(t),console.error(t)},k=Se,f=(...e)=>{let t=V.default.format(...e);return dt.push(t),s("WARNING: ",t),Se(I.default.bgYellow.black(" WARNING "),t)},xe=(...e)=>{let t=V.default.format(...e);return s("WARNING: ",t),Se(I.default.bgYellow.black(" WARNING "),t)};var l=(...e)=>{let t=V.default.format(...e);return mt.push(t),s("ERROR: ",t),Jo(I.default.bgRed.white(" ERROR "),t)};var oe=(e=2)=>console.log(Array(e).fill("").join(`
3
- `)),xi=I.default.cyan,Di=I.default.blueBright,Ni=I.default.red,vi=I.default.yellow,Li=I.default.green,Bi=I.default.gray,Mi=I.default.white,Gi=I.default.black,Fi=I.default.magenta,E=I.default.dim,ki=I.default.bold;var po=c(require("chalk"));var J=class extends Error{};function ut(e){return Object.entries(e??{}).reduce((t,[r,o])=>o===void 0?t:{...t,[r]:o},{})}function R(e,t){return"env"in e[t]&&e[t].env?e[t].env:""}function qo(e,t){return e[t].cli}function Wo(e,t){return e[t].name}function H(e,t,r,o){let n={...ut(o),...ut(r())};return t.forEach(a=>{if(!n[a])throw l(`${Wo(e,a)} is required for Currents Reporter. Use the following methods to set the value:
4
- - as environment variable: ${E(R(e,a))}
5
- - as CLI flag of the command: ${E(qo(e,a))}`),new J("Missing required config variable")}),n}var Qo={apiKey:{name:"Api Key",env:"CURRENTS_API_KEY",cli:"--api-key"},debug:{name:"Debug",env:"CURRENTS_DEBUG",cli:"--debug"}},zo={branch:{name:"Run Branch",cli:"--branch"},output:{name:"Output Path",env:"CURRENTS_OUTPUT",cli:"--output"},ciBuildId:{name:"CI Build ID",cli:"--ci-build-id"},projectId:{name:"Project ID",env:"CURRENTS_PROJECT_ID",cli:"--project-id"},tag:{name:"Run Tag",cli:"--tag"}},x={...Qo,...zo};function lt(){return{apiKey:process.env[x.apiKey.env],debug:!!process.env[x.debug.env]}}var Xo=s.extend("config"),Zo=["apiKey","projectId"],De=null;function ft(e){De=H(x,Zo,lt,e),Xo("Resolved config: %o",De)}function ne(){return De}var ie=c(require("fs-extra")),gt=require("path");async function j(e){try{return await ie.default.readJson(e)}catch(t){throw l("Error while reading JSON file: %s",e,t),l}}async function Y(e,t){try{return await ie.default.writeFile(e,t,"utf8"),e}catch(r){throw l(`Error writing file at ${e}:`,r),r}}async function Ct(e){let t=(0,gt.dirname)(e);await ie.default.ensureDir(t)}var se={};ko(se,{getNanoid:()=>en,userFacingNanoid:()=>ve});var Ne=require("nanoid"),Et="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",en=(e=16)=>(0,Ne.customAlphabet)(Et,e)(),ve=(0,Ne.customAlphabet)(Et,12);var Vt=require("fs/promises");var Lt=c(require("lodash"));var Pt=c(require("axios")),bt=c(require("axios-retry")),At=c(require("lodash"));var Le=()=>process.env.CURRENTS_API_URL??"https://cy.currents.dev",ht=()=>process.env.CURRENTS_REST_API_URL??"https://api.currents.dev",Rt=()=>3e4;var Be=require("axios"),Me=c(require("pretty-ms"));var _t=s.extend("http"),ae=e=>[3*1e3,15*1e3,30*1e3][e-1],It=e=>(_t("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,Be.isAxiosError)(e)}),"code"in e&&e.code&&["ECONNABORTED","ECONNREFUSED","ECONNRESET","ETIMEDOUT","ENETRESET"].includes(e.code)?!0:(0,Be.isAxiosError)(e)?[429,502,503,504].includes(e.response?.status??0):!1),ce=()=>3;function Tt(e,t,r){_t("Network request '%s' failed: '%s'. Next attempt is in %s (%d/%d).",`${r.method?.toUpperCase()} ${r.url}`,t.message,(0,Me.default)(ae(e)),e,ce()),f("Network request '%s' failed: '%s'. Next attempt is in %s (%d/%d).",`${r.method?.toUpperCase()} ${r.url}`,t.message,(0,Me.default)(ae(e)),e,ce())}var Ot=s.extend("http");var Ge={api:null,restApi:null};function tn(e){let t=Pt.default.create({baseURL:e==="api"?Le():ht(),timeout:Rt(),transitional:{clarifyTimeoutError:!0}});return t.interceptors.request.use(r=>{let o=r["axios-retry"]?.retryCount??0;r.headers.get("Content-Type")||r.headers.set("Content-Type","application/json");let n={...At.default.pick(r,"method","url","headers"),data:Buffer.isBuffer(r.data)?"buffer":r.data};return o?Ot("network request retry: %o",yt({...n,isRetry:!0})):Ot("network request: %o",yt(n)),r}),(0,bt.default)(t,{retries:ce(),retryCondition:It,retryDelay:ae,shouldResetTimeout:!0,onRetry:Tt}),t}function Ut(e){return Ge[e]===null&&(Ge[e]=tn(e)),Ge[e]}function yt(e){return{method:e.method,baseUrl:Le(),url:e.url,data:e.isRetry?"<retry>":rn(e.data),headers:{...e.headers,"x-currents-key":"***"}}}function rn(e){return e?.results?.raw?{...e,results:{...e.results,raw:"***"}}:e}var xt=require("axios"),Dt=c(require("lodash")),T=require("ts-pattern");function Nt(e){(0,T.match)(e).when(xt.isAxiosError,on).otherwise(()=>{f("Unexpected error while sending network request: %s",e)})}function on(e){return(0,T.match)(e).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:T.P.not(T.P.nullish)},t=>{nn(t,{status:t.response.status,data:t.response.data})}).otherwise(t=>{f(`[currents] Unexpected network error: %s
6
- %O`,e.message,{method:e.response?.config.method,url:e.response?.config.url,status:e.response?.status,payload:e.response?.config.data})})}function nn(e,{status:t,data:r}){(0,T.match)(t).with(401,()=>{f(`[currents] ${e.response?.config.method} ${e.response?.config.url}} - 401 Unauthorized Request from cloud service`)}).with(400,()=>{f(`[currents] ${e.response?.config.method} ${e.response?.config.url} - 400 Bad Request from cloud service:
7
- %o`,r)}).with(429,()=>{f(`[currents] ${e.response?.config.method} ${e.response?.config.url} - 429 Too Many Requests from cloud service`)}).with(422,()=>{sn(e,r)}).otherwise(()=>{f(`[currents] Unexpected network response: %s
8
- %O`,e.message,{method:e.response?.config.method,url:e.response?.config.url,status:e.response?.status})})}function sn(e,t){(0,T.match)(t).with({code:wt.MISSING_SUITE,message:T.P.string,errors:T.P.array(T.P.string)},async r=>{let{message:o,errors:n}=r;oe(1),l(...St(o,n))}).with({code:wt.RUN_EXPIRED,message:T.P.string},r=>{f(r.message)}).with({message:T.P.string,errors:T.P.array(T.P.string)},r=>{let{message:o,errors:n}=r;oe(1),f(...St(o,n)),oe(1)}).otherwise(()=>{f(`[currents] Unexpected network response: %s
9
- %O`,e.message,{method:e.response?.config.method,url:e.response?.config.url,status:e.response?.status})})}var wt={RUN_CANCELLED:"RUN_CANCELLED",RUN_EXPIRED:"RUN_EXPIRED",MISSING_SUITE:"MISSING_SUITE"};function St(e,t){return Dt.default.isString(e)?t?.length===0?[e]:[e,`
2
+ "use strict";var Ho=Object.create;var Ue=Object.defineProperty;var jo=Object.getOwnPropertyDescriptor;var Ko=Object.getOwnPropertyNames;var $o=Object.getPrototypeOf,Vo=Object.prototype.hasOwnProperty;var Jo=(e,t)=>{for(var r in t)Ue(e,r,{get:t[r],enumerable:!0})},Yo=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Ko(t))!Vo.call(e,n)&&n!==r&&Ue(e,n,{get:()=>t[n],enumerable:!(o=jo(t,n))||o.enumerable});return e};var p=(e,t,r)=>(r=e!=null?Ho($o(e)):{},Yo(t||!e||!e.__esModule?Ue(r,"default",{value:e,enumerable:!0}):r,e));var Hd=require("source-map-support/register");var Go=require("@commander-js/extra-typings");var pt={name:"@currents/cmd",version:"1.1.0-beta.17",main:"./dist/index.js",author:"Currents Software Inc",license:"GPL-3.0-or-later",description:"Currents CLI tools",scripts:{test:"vitest",rm:"rimraf dist",lint:'TIMING=1 eslint "**/*.ts*"',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":"^7.0.2","@types/archiver":"^6.0.2","@types/async-retry":"^1.4.8","@types/debug":"^4.1.12","@types/fs-extra":"^11.0.4","@types/getos":"^3.0.4","@types/lodash":"^4.17.5","@types/node":"^20.14.2","@types/proxy-from-env":"^1.0.4","@types/semver":"^7.5.8","@types/tmp":"^0.2.6","@types/unzipper":"^0.10.10","@types/uuid":"^9.0.8",jest:"^29.7.0",rimraf:"^5.0.7",tsup:"^8.1.0",typescript:"^5.4.5",vitest:"^1.3.0"},dependencies:{"@commander-js/extra-typings":"^11.1.0","@currents/commit-info":"1.0.1-beta.0",archiver:"^7.0.1","async-retry":"^1.3.3",axios:"^1.7.2","axios-retry":"^4.4.0",commander:"^11.1.0",debug:"^4.3.5",dotenv:"^16.0.3",execa:"^8.0.1","fs-extra":"^11.2.0",getos:"^3.2.1","jest-cli":"^29.7.0","jest-config":"^29.7.0","https-proxy-agent":"^7.0.4",lodash:"^4.17.21",nanoid:"^3.3.4","pretty-ms":"^7.0.1","proxy-from-env":"^1.1.0",semver:"^7.6.0","source-map-support":"^0.5.21",tmp:"^0.2.3","tmp-promise":"^3.0.3","ts-pattern":"^5.2.0",unzipper:"^0.12.3"},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 te=pt.version;var st=require("@commander-js/extra-typings");var Wo=[];function we(e){Wo.push(e)}var T=p(require("chalk")),$=p(require("util"));var Se=require("debug"),Qo=p(require("fs-extra")),a=(0,Se.debug)("currents"),zo=null;function v(){Se.debug.enable("currents,currents:*")}function mt(e){zo=e}var dt=[],ut=[];var De=(...e)=>{let t=$.default.format(...e);we(t),console.log(t)},Xo=(...e)=>{let t=$.default.format(...e);we(t),console.error(t)},k=De,f=(...e)=>{let t=$.default.format(...e);return ut.push(t),a("WARNING: ",t),De(T.default.bgYellow.black(" WARNING "),t)},X=(...e)=>{let t=$.default.format(...e);return a("WARNING: ",t),De(T.default.bgYellow.black(" WARNING "),t)};var l=(...e)=>{let t=$.default.format(...e);return dt.push(t),a("ERROR: ",t),Xo(T.default.bgRed.white(" ERROR "),t)};var re=(e=2)=>console.log(Array(e).fill("").join(`
3
+ `)),Mi=T.default.cyan,Gi=T.default.blueBright,Fi=T.default.red,ki=T.default.yellow,Hi=T.default.green,ji=T.default.gray,Ki=T.default.white,$i=T.default.black,Vi=T.default.magenta,E=T.default.dim,Ji=T.default.bold;var Co=p(require("chalk"));var V=class extends Error{};function lt(e){return Object.entries(e??{}).reduce((t,[r,o])=>o===void 0?t:{...t,[r]:o},{})}function _(e,t){return"env"in e[t]&&e[t].env?e[t].env:""}function en(e,t){return e[t].cli}function tn(e,t){return e[t].name}function H(e,t,r,o){let n={...lt(o),...lt(r())};return t.forEach(s=>{if(!n[s])throw l(`${tn(e,s)} is required for Currents Reporter. Use the following methods to set the value:
4
+ - as environment variable: ${E(_(e,s))}
5
+ - as CLI flag of the command: ${E(en(e,s))}`),new V("Missing required config variable")}),n}var rn={apiKey:{name:"Api Key",env:"CURRENTS_API_KEY",cli:"--api-key"},debug:{name:"Debug",env:"CURRENTS_DEBUG",cli:"--debug"}},on={branch:{name:"Run Branch",cli:"--branch"},output:{name:"Output Path",env:"CURRENTS_OUTPUT",cli:"--output"},ciBuildId:{name:"CI Build ID",cli:"--ci-build-id"},projectId:{name:"Project ID",env:"CURRENTS_PROJECT_ID",cli:"--project-id"},tag:{name:"Run Tag",cli:"--tag"}},S={...rn,...on};function ft(){return{apiKey:process.env[S.apiKey.env],debug:!!process.env[S.debug.env]}}var nn=a.extend("config"),an=["apiKey","projectId"],Ne=null;function gt(e){Ne=H(S,an,ft,e),nn("Resolved config: %o",Ne)}function oe(){return Ne}var ne=p(require("fs-extra")),Ct=require("path");async function j(e){try{return await ne.default.readJson(e)}catch(t){throw l("Error while reading JSON file: %s",e,t),l}}async function J(e,t){try{return await ne.default.writeFile(e,t,"utf8"),e}catch(r){throw l(`Error writing file at ${e}:`,r),r}}async function Et(e){let t=(0,Ct.dirname)(e);await ne.default.ensureDir(t)}var ie={};Jo(ie,{getNanoid:()=>sn,userFacingNanoid:()=>Le});var ve=require("nanoid"),Rt="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",sn=(e=16)=>(0,ve.customAlphabet)(Rt,e)(),Le=(0,ve.customAlphabet)(Rt,12);var Jt=require("fs/promises");var Bt=p(require("lodash"));var bt=p(require("axios")),At=p(require("axios-retry")),xt=p(require("lodash"));var Be=()=>process.env.CURRENTS_API_URL??"https://cy.currents.dev",ht=()=>process.env.CURRENTS_REST_API_URL??"https://api.currents.dev",It=()=>3e4;var Me=require("axios"),Ge=p(require("pretty-ms"));var _t=a.extend("http"),ae=e=>[3*1e3,15*1e3,30*1e3][e-1],Tt=e=>(_t("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,Me.isAxiosError)(e)}),"code"in e&&e.code&&["ECONNABORTED","ECONNREFUSED","ECONNRESET","ETIMEDOUT","ENETRESET"].includes(e.code)?!0:(0,Me.isAxiosError)(e)?[429,502,503,504].includes(e.response?.status??0):!1),se=()=>3;function Ot(e,t,r){_t("Network request '%s' failed: '%s'. Next attempt is in %s (%d/%d).",`${r.method?.toUpperCase()} ${r.url}`,t.message,(0,Ge.default)(ae(e)),e,se()),f("Network request '%s' failed: '%s'. Next attempt is in %s (%d/%d).",`${r.method?.toUpperCase()} ${r.url}`,t.message,(0,Ge.default)(ae(e)),e,se())}var Pt=a.extend("http");var Fe={api:null,restApi:null};function cn(e){let t=bt.default.create({baseURL:e==="api"?Be():ht(),timeout:It(),transitional:{clarifyTimeoutError:!0}});return t.interceptors.request.use(r=>{let o=r["axios-retry"]?.retryCount??0;r.headers.get("Content-Type")||r.headers.set("Content-Type","application/json");let n={...xt.default.pick(r,"method","url","headers"),data:Buffer.isBuffer(r.data)?"buffer":r.data};return o?Pt("network request retry: %o",yt({...n,isRetry:!0})):Pt("network request: %o",yt(n)),r}),(0,At.default)(t,{retries:se(),retryCondition:Tt,retryDelay:ae,shouldResetTimeout:!0,onRetry:Ot}),t}function Ut(e){return Fe[e]===null&&(Fe[e]=cn(e)),Fe[e]}function yt(e){return{method:e.method,baseUrl:Be(),url:e.url,data:e.isRetry?"<retry>":pn(e.data),headers:{...e.headers,"x-currents-key":"***"}}}function pn(e){return e?.results?.raw?{...e,results:{...e.results,raw:"***"}}:e}var Dt=require("axios"),Nt=p(require("lodash")),O=require("ts-pattern");function vt(e){(0,O.match)(e).when(Dt.isAxiosError,mn).otherwise(()=>{f("Unexpected error while sending network request: %s",e)})}function mn(e){return(0,O.match)(e).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:O.P.not(O.P.nullish)},t=>{dn(t,{status:t.response.status,data:t.response.data})}).otherwise(t=>{f(`[currents] Unexpected network error: %s
6
+ %O`,e.message,{method:e.response?.config.method,url:e.response?.config.url,status:e.response?.status,payload:e.response?.config.data})})}function dn(e,{status:t,data:r}){(0,O.match)(t).with(401,()=>{f(`[currents] ${e.response?.config.method} ${e.response?.config.url}} - 401 Unauthorized Request from cloud service`)}).with(400,()=>{f(`[currents] ${e.response?.config.method} ${e.response?.config.url} - 400 Bad Request from cloud service:
7
+ %o`,r)}).with(429,()=>{f(`[currents] ${e.response?.config.method} ${e.response?.config.url} - 429 Too Many Requests from cloud service`)}).with(422,()=>{un(e,r)}).otherwise(()=>{f(`[currents] Unexpected network response: %s
8
+ %O`,e.message,{method:e.response?.config.method,url:e.response?.config.url,status:e.response?.status})})}function un(e,t){(0,O.match)(t).with({code:wt.MISSING_SUITE,message:O.P.string,errors:O.P.array(O.P.string)},async r=>{let{message:o,errors:n}=r;re(1),l(...St(o,n))}).with({code:wt.RUN_EXPIRED,message:O.P.string},r=>{f(r.message)}).with({message:O.P.string,errors:O.P.array(O.P.string)},r=>{let{message:o,errors:n}=r;re(1),f(...St(o,n)),re(1)}).otherwise(()=>{f(`[currents] Unexpected network response: %s
9
+ %O`,e.message,{method:e.response?.config.method,url:e.response?.config.url,status:e.response?.status})})}var wt={RUN_CANCELLED:"RUN_CANCELLED",RUN_EXPIRED:"RUN_EXPIRED",MISSING_SUITE:"MISSING_SUITE"};function St(e,t){return Nt.default.isString(e)?t?.length===0?[e]:[e,`
10
10
  ${(t??[]).map(r=>` - ${r}`).join(`
11
11
  `)}
12
- `]:["Unexpected network error"]}var vt=s.extend("http");async function K(e,t,r=Ut){try{let o=await r(e).request(t);return vt("network response: %o",{...Lt.default.omit(o,"request","config"),url:o.config.url,method:o.config.method}),o}catch(o){let n=o;throw vt("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}),Nt(n),n}}var pe=s.extend("api");async function Mt(e){try{return pe("Request params: %o",e),K("api",{url:"cache/upload",method:"POST",data:e}).then(t=>t.data)}catch(t){throw pe("Failed to create cache:",t),t}}async function Gt(e){try{return pe("Request params: %o",e),K("api",{url:"cache/download",method:"POST",data:e}).then(t=>t.data)}catch(t){throw pe("Failed to retrieve cache:",t),t}}var kt=require("util"),Ht=require("zlib");var Ft=s.extend("api"),an=(0,kt.promisify)(Ht.gzip);async function jt(e){try{Ft("Run params: %o",e);let t=await cn(JSON.stringify(e));return K("api",{url:"v1/runs",method:"POST",headers:{"Content-Type":"application/json","Content-Encoding":"gzip"},data:t}).then(r=>r.data)}catch(t){throw Ft("Failed to create the run:",t),t}}async function cn(e){try{return await an(e)}catch(t){throw l("Failed to compress run payload:",t),t}}var Kt=s.extend("api");async function $t(e,t){try{return Kt("Run params: %o",t),K("restApi",{url:"v1/runs/previous",params:t,method:"GET",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`}}).then(r=>r.data)}catch(r){throw Kt("Failed to obtain run data:",r),r}}async function Fe(){try{let e=ne();if(!e)throw new Error("Config is missing!");e.debug&&v();let t=e.ciBuildId?{projectId:e.projectId,ciBuildId:e.ciBuildId,pwLastRun:e.pwLastRun}:{projectId:e.projectId,branch:e.branch,tag:e.tag,pwLastRun:e.pwLastRun},r=await $t(e.apiKey,t);await pn(e.pwLastRun&&r.data.pwLastRun?r.data.pwLastRun:r.data,e)}catch(e){throw s("Failed to get run data"),e}}async function pn(e,t){let r=JSON.stringify(e,null,2);t.output?(await Ct(t.output),await(0,Vt.writeFile)(t.output,r,"utf-8")):k(r)}var U=require("@commander-js/extra-typings");var mn={recordKey:{name:"Record Key",env:"CURRENTS_RECORD_KEY",cli:"--key"},debug:{name:"Debug",env:"CURRENTS_DEBUG",cli:"--debug"}},dn={id:{name:"Cache id",cli:"--id"},preset:{name:"Preset",cli:"--preset"},pwOutputDir:{name:"Playwright output directory",cli:"--pw-output-dir"},pwConfigDump:{name:"Playwright config dump",cli:"--pw-config-dump"},paths:{name:"Paths to cache",cli:"--paths"}},un={id:{name:"Cache id",cli:"--id"},preset:{name:"Preset",cli:"--preset"},pwOutputDir:{name:"Playwright output directory",cli:"--pw-output-dir"},outputDir:{name:"Custom directory to write output",cli:"--output-dir"}},L={...mn,...dn,...un};function ke(){return{recordKey:process.env[L.recordKey.env],debug:!!process.env[L.debug.env]}}var Jt=s.extend("config"),Yt=["recordKey"],ee;function qt(e){ee={type:"SET_COMMAND_CONFIG",values:H(L,Yt,ke,e)},Jt("Resolved config: %o",ee)}function Wt(e){ee={type:"GET_COMMAND_CONFIG",values:H(L,Yt,ke,e)},Jt("Resolved config: %o",ee)}function B(){return ee}function Qt(e){return{recordKey:e.key,id:e.id,preset:e.preset,outputDir:e.outputDir,pwConfigDump:e.pwConfigDump,debug:e.debug}}function zt(e){return{recordKey:e.key,id:e.id,preset:e.preset,pwOutputDir:e.pwOutputDir,paths:e.paths,includeHidden:e.includeHidden,debug:e.debug}}var Xt=require("@commander-js/extra-typings");var Zt=require("axios");function q(e,t=[]){return e?t.concat(e.split(",").map(r=>r.trim())):t}async function M(e,t){try{await e(t),process.exit(0)}catch(r){r instanceof Xt.CommanderError&&(l(r.message),process.exit(r.exitCode)),r instanceof J&&(l(r.message),process.exit(1)),(0,Zt.isAxiosError)(r)&&(l(r.message),process.exit(1)),l("Script execution failed: %o",r),process.exit(1)}}var He=new U.Option("-k, --key <record-key>","Your secret Record Key obtained from Currents").env(R(L,"recordKey")),je=new U.Option("--debug","Enable debug logging").env(R(L,"debug")).default(!1),Ke=new U.Option("--id <id>","The ID the data is saved under in the cache"),er=new U.Option("--paths <paths>","Comma-separated list of paths to cache").argParser(q),me=(t=>(t.lastRun="last-run",t))(me||{}),$e=new U.Option("--preset <preset-name>",'A set of predefined options. Use "last-run" to get the last run data').choices(Object.values(me)),tr=new U.Option("--output-dir <dir>","Path to the directory where output will be written"),Ve=new U.Option("--pw-output-dir <dir>","Directory for artifacts produced by Playwright tests").default("test-results"),rr=new U.Option("--include-hidden","Include hidden files in the cache").hideHelp().default(!1),de=".currents_env",or=new U.Option("--pw-config-dump <path>","Path to the file containing the Playwright configuration dump").default(de);var C=require("lodash");var ue=s.extend("ci"),ln=(e,...t)=>(0,C.chain)(t).compact().join(e).value(),fn=(e,t)=>(0,C.set)(e,(0,C.camelCase)(t),process.env[t]),g=e=>(0,C.transform)(e,fn,{}),gn=()=>process.env.TF_BUILD&&process.env.TF_BUILD_BUILDNUMBER,Cn=()=>process.env.TF_BUILD&&process.env.AZURE_HTTP_USER_AGENT,En=()=>(0,C.some)(process.env,(e,t)=>/^CODEBUILD_/.test(t)),hn=()=>process.env.bamboo_buildNumber,Rn=()=>process.env.CI_NAME&&process.env.CI_NAME==="codeship"&&process.env.CODESHIP,_n=()=>process.env.CI_NAME&&process.env.CI_NAME==="codeship"&&!process.env.CODESHIP,In=()=>(0,C.some)(process.env,(e,t)=>/^CONCOURSE_/.test(t)),Tn=()=>process.env.GITLAB_CI||process.env.CI_SERVER_NAME&&/^GitLab/.test(process.env.CI_SERVER_NAME),On=()=>process.env.GCP_PROJECT||process.env.GCLOUD_PROJECT||process.env.GOOGLE_CLOUD_PROJECT,yn=()=>process.env.JENKINS_URL||process.env.JENKINS_HOME||process.env.JENKINS_VERSION||process.env.HUDSON_URL||process.env.HUDSON_HOME,Pn=()=>process.env.WERCKER||process.env.WERCKER_MAIN_PIPELINE_STARTED,bn={appveyor:"APPVEYOR",azure:Cn,awsCodeBuild:En,bamboo:hn,bitbucket:"BITBUCKET_BUILD_NUMBER",buildkite:"BUILDKITE",circle:"CIRCLECI",codeshipBasic:Rn,codeshipPro:_n,concourse:In,codeFresh:"CF_BUILD_ID",drone:"DRONE",githubActions:"GITHUB_ACTIONS",gitlab:Tn,goCD:"GO_JOB_NAME",googleCloud:On,jenkins:yn,semaphore:"SEMAPHORE",shippable:"SHIPPABLE",teamcity:"TEAMCITY_VERSION",teamfoundation:gn,travis:"TRAVIS",wercker:Pn,netlify:"NETLIFY",layerci:"LAYERCI"};function An(){let{env:e}=process;return(0,C.findKey)(bn,t=>{if((0,C.isString)(t))return e[t];if((0,C.isFunction)(t))return t()})}var nr=()=>({appveyor:g(["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:g(["BUILD_BUILDID","BUILD_BUILDNUMBER","BUILD_CONTAINERID","BUILD_REPOSITORY_URI","SYSTEM_TEAMPROJECT","SYSTEM_COLLECTIONURI"]),awsCodeBuild:g(["CODEBUILD_BUILD_ID","CODEBUILD_BUILD_NUMBER","CODEBUILD_RESOLVED_SOURCE_VERSION","CODEBUILD_SOURCE_REPO_URL","CODEBUILD_SOURCE_VERSION"]),bamboo:g(["bamboo_buildNumber","bamboo_buildResultsUrl","bamboo_planRepository_repositoryUrl","bamboo_buildKey"]),bitbucket:g(["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:g(["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:g(["CIRCLE_JOB","CIRCLE_BUILD_NUM","CIRCLE_BUILD_URL","CIRCLE_PR_NUMBER","CIRCLE_PR_REPONAME","CIRCLE_PR_USERNAME","CIRCLE_COMPARE_URL","CIRCLE_WORKFLOW_ID","CIRCLE_PULL_REQUEST","CIRCLE_REPOSITORY_URL","CI_PULL_REQUEST"]),codeshipBasic:g(["CI_BUILD_ID","CI_REPO_NAME","CI_BUILD_URL","CI_PROJECT_ID","CI_BUILD_NUMBER","CI_PULL_REQUEST"]),codeshipPro:g(["CI_BUILD_ID","CI_REPO_NAME","CI_PROJECT_ID"]),concourse:g(["BUILD_ID","BUILD_NAME","BUILD_JOB_NAME","BUILD_PIPELINE_NAME","BUILD_TEAM_NAME","ATC_EXTERNAL_URL"]),codeFresh:g(["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:g(["DRONE_JOB_NUMBER","DRONE_BUILD_LINK","DRONE_BUILD_NUMBER","DRONE_PULL_REQUEST"]),githubActions:g(["GITHUB_WORKFLOW","GITHUB_ACTION","GITHUB_EVENT_NAME","GITHUB_RUN_ID","GITHUB_RUN_ATTEMPT","GITHUB_REPOSITORY","GH_STRATEGY_JOB_INDEX","GH_STRATEGY_JOB_TOTAL"]),gitlab:g(["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:g(["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:g(["BUILD_ID","PROJECT_ID","REPO_NAME","BRANCH_NAME","TAG_NAME","COMMIT_SHA","SHORT_SHA"]),jenkins:g(["BUILD_ID","BUILD_URL","BUILD_NUMBER","ghprbPullId"]),semaphore:g(["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:g(["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:g(["BUILD_BUILDID","BUILD_BUILDNUMBER","BUILD_CONTAINERID"]),travis:g(["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:g(["BUILD_ID","CONTEXT","URL","DEPLOY_URL","DEPLOY_PRIME_URL","DEPLOY_ID"]),layerci:g(["LAYERCI_JOB_ID","LAYERCI_RUNNER_ID","RETRY_INDEX","LAYERCI_PULL_REQUEST","LAYERCI_REPO_NAME","LAYERCI_REPO_OWNER","LAYERCI_BRANCH","GIT_TAG"])}),Un=()=>{let{env:e}=process;return{appveyor:{sha:e.APPVEYOR_REPO_COMMIT,branch:e.APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH||e.APPVEYOR_REPO_BRANCH,message:ln(`
13
- `,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}}},ir=e=>{let t=sr();return t?(0,C.chain)(e()).get(t).value():{}};function wn(){return(0,C.chain)(nr()).omitBy(C.isNull).keys().value()}function Sn(e){return e&&wn().includes(e)}function sr(){let e=An();return ue("detected CI provider name: %s",e),e||null}function xn(){return ir(nr)}function ar(){return ir(Un)}function W(e){let t=xn(),r=sr(),o=Dn(e,r);return ue("detected CI provider: %s",r),ue("detected CI params: %O",t),ue("detected CI build ID: %o",o),{params:t,provider:r,ciBuildId:o}}function Dn(e,t){return e?{source:"user",value:e}:Sn(t)?{source:"server",value:null}:{source:"random",value:`auto:${ve()}`}}var cr=c(require("archiver")),Je=c(require("fs-extra")),G=c(require("path")),pr=c(require("unzipper"));var Nn=50*1024*1024;async function mr(e,t={},r=Nn){return new Promise((o,n)=>{let a=(0,cr.default)("zip",{zlib:{level:9}}),p=[],d=0;a.on("data",m=>{p.push(m),d+=m.length,d>r&&n(new Error(`Zip size exceeded the limit of ${r} bytes`))}),a.on("warning",m=>{m.code==="ENOENT"?f(m):n(m)}),a.on("error",m=>n(m)),a.on("end",()=>{let m=Buffer.concat(p);o(m)});let u=async m=>{let P=process.cwd(),S=G.default.normalize(m),_=G.default.relative(P,S),O=await Je.default.stat(_),b=G.default.dirname(_),$=b==="."?void 0:b;O.isDirectory()?a.directory(_,_,{prefix:$,stats:O}):a.file(S,{name:G.default.basename(_),prefix:$,stats:O})};(async m=>{for(let P of m)if(P==="."){let S=await Je.default.readdir(P);for(let _ of S)await u(_)}else await u(P);a.finalize()})(e).catch(n)})}async function dr(e,t){return pr.default.Open.buffer(e).then(r=>r.extract({path:t,concurrency:3}))}function ur(e){let t=process.cwd();return e.filter(r=>{let o=G.default.resolve(r),n=G.default.relative(t,o);return r.startsWith("..")||G.default.isAbsolute(n)?(f(`Invalid path: "${r}". Path traversal detected. The path was skipped.`),!1):!0})}var lr=c(require("path"));function fr({config:e,cacheId:t,orgId:r,paths:o,ci:n}){let a={id:t,orgId:r,config:e,paths:o,ci:n,createdAt:new Date().toISOString()};return Buffer.from(JSON.stringify(a))}var gr=e=>lr.default.resolve(e??"test-results",".last-run.json");function le(e,t){e instanceof Error?xe("%s. %s.",t,e.message):xe("%s. %s.",t,"Unknown error")}var _r=c(require("async-retry"));var Cr=c(require("axios")),Er=require("https-proxy-agent"),hr=c(require("proxy-from-env"));var vn=s.extend("axios");function Ye(e={}){let t=Cr.default.create(e);return t.interceptors.request.use(r=>{let o={...r},n=t.getUri(r),a=hr.default.getProxyForUrl(n);return a&&(vn("Using HTTP proxy %s for %s ",a,n),o.proxy=!1,o.httpsAgent=Ln(a)),o}),t}var fe=null;function Ln(e){return fe||(fe=new Er.HttpsProxyAgent(e),fe)}var qe=s.extend("upload"),ge=5;async function We(e,t,r){return qe("Uploading buffer %s",e.name,{buffer:Buffer.byteLength(e.buffer)}),Mn(e.buffer,e.uploadUrl,t,r)}async function Bn(e,t,r,o){return Ye().request({method:"put",url:t,data:e,onUploadProgress:o,headers:{"Content-Disposition":"inline","Content-Type":r}})}async function Qe(e,t){let r=await Ye().get(e,{responseType:"arraybuffer",onDownloadProgress:t});return Buffer.from(r.data)}async function Mn(...e){await(0,_r.default)(async()=>{await Bn(...e)},{retries:ge,onRetry:(t,r)=>{if(qe("Upload failed %d out of %d attempts: %s",r,ge,t.message),r===ge){l(`Cannot upload after ${r} times: ${t.message}`);return}f(`Upload failed ${r} out of ${ge} attempts: ${t.message}`)}})}var ze=e=>({total:t,loaded:r})=>{};function Rr(e){return e/1e3/1e3}var Xe=c(require("lodash"));async function Ir(e,t){switch(t.provider){case"githubActions":await Gn(e,t);break;case"gitlab":await Or(e,t);break;default:break}}async function Tr(e,t,r){switch(t.provider){case"gitlab":await Or(e,t,r);break;default:break}}async function Or(e,t,r=null){let o=t.params,n=r?.ci.params,p=(n?Q(n.runAttempt,0):0)+1,d=Q(o.ciNodeIndex,1),u=Q(o.ciNodeTotal,1),y=p>1?"--last-failed":"",m="";u>1&&(m=p>1?"--shard=1/1":`--shard=${d}/${u}`);let P=[y,m].filter(Boolean).join(" ");await Y(e.pwConfigDump??de,`EXTRA_PW_FLAGS="${P}"
14
- EXTRA_PWCP_FLAGS="${y}"
15
- RUN_ATTEMPT="${p}"
16
- `)}async function Gn(e,t){let r=t.params,o=Q(r.githubRunAttempt,1),n=Q(r.ghStrategyJobIndex,0),a=Q(r.ghStrategyJobTotal,1),p=o>1?"--last-failed":"",d="";if(a>1){let m=n+1;d=o>1?"--shard=1/1":`--shard=${m}/${a}`}let u=[p,d].filter(Boolean).join(" "),y=e.pwConfigDump??de;await Y(y,u),s('Dumped PW config: "%s" for GHA to %s',u,y)}var Q=(e,t)=>{let r=Xe.default.toNumber(e);return Xe.default.isNaN(r)?t:r};async function Ze(){try{let e=B();if(e.type!=="GET_COMMAND_CONFIG"||!e.values)throw new Error("Config is missing!");let{recordKey:t,id:r,preset:o}=e.values,n=e.values.outputDir??e.values.pwOutputDir;e.values.debug&&v();let a=W();o==="last-run"&&await Ir(e.values,a);let p=await Gt({recordKey:t,ci:a,id:r});await Fn({readUrl:p.readUrl,outputDir:n});let d=await kn(p.metaReadUrl);o==="last-run"&&await Tr(e.values,a,d)}catch(e){le(e,"Failed to obtain cache")}}async function Fn({readUrl:e,outputDir:t}){try{let r=await Qe(e);await dr(r,t||"."),s("Cache downloaded")}catch(r){throw s("Failed to recreate cache from archive"),r}}async function kn(e){try{let t=await Qe(e),r=JSON.parse(t.toString("utf-8"));return s("Meta file: %O",r),r}catch(t){throw s("Failed to handle the meta"),t}}async function et(){try{let e=B();if(e.type!=="SET_COMMAND_CONFIG"||!e.values)throw new Error("Config is missing!");let{recordKey:t,id:r,debug:o,preset:n,pwOutputDir:a,includeHidden:p}=e.values;o&&v();let d=e.values.paths?ur(e.values.paths):[],u=[];d&&d.length>0&&u.push(...d);let y=W();if(n==="last-run"){let P=gr(a);u.push(P)}if(u.length===0)throw new Error("No paths available to upload");let m=await Mt({recordKey:t,ci:y,id:r});await Hn({archive:await mr(u,{includeHidden:p}),cacheId:m.cacheId,uploadUrl:m.uploadUrl}),await jn({meta:fr({cacheId:m.cacheId,config:e.values,ci:y,orgId:m.orgId,paths:u}),cacheId:m.cacheId,uploadUrl:m.metaUploadUrl})}catch(e){le(e,"Failed to save cache")}}async function Hn({archive:e,cacheId:t,uploadUrl:r}){try{let o="application/zip";await We({buffer:e,contentType:o,name:t,uploadUrl:r},o,ze(t)),s("Cache archive uploaded",{cacheId:t})}catch(o){throw s("Failed to upload cache archive",o),o}}async function jn({meta:e,cacheId:t,uploadUrl:r}){try{let o=`${t}_meta`,n="application/json";await We({buffer:e,contentType:n,name:o,uploadUrl:r},n,ze(o)),s("Cache meta uploaded",{cacheId:t})}catch(o){throw s("Failed to upload cache meta",o),o}}var Pr=require("@currents/commit-info"),br=require("lodash");var Ce=require("lodash");var tt=s.extend("ci-git");function yr(e){tt("git commit existing info: %O",e);let t=ar();tt("commit info from provider environment variables: %O",t);let r=(0,Ce.transform)(e,(o,n,a)=>{let p=n||(t?t[a]:null);return o[a]=(0,Ce.defaultTo)(p,null)});return tt("combined git and environment variables from provider: %O",r),r}var Kn=async()=>{let e=await(0,Pr.commitInfo)();return yr({branch:e.branch,remoteOrigin:e.remote,authorEmail:e.email,authorName:e.author,message:e.message,sha:e.sha,ghaEventData:e.ghaEventData})},Ar=(0,br.memoize)(Kn);var Ur=c(require("getos")),wr=require("lodash"),A=require("os"),Sr=require("util"),$n=async()=>{if((0,A.platform)()==="linux")try{let e=await(0,Sr.promisify)(Ur.default)();return"dist"in e&&"release"in e?[e.dist,e.release].join(" - "):(0,A.release)()}catch{return(0,A.release)()}return(0,A.release)()},Vn=async()=>{let e=await $n();return{osName:(0,A.platform)(),osVersion:e,osCpus:[],osMemory:{free:(0,A.freemem)(),total:(0,A.totalmem)()}}},xr=(0,wr.memoize)(Vn);var Xr=require("lodash"),Te=c(require("path")),Zr=c(require("semver"));var h={debug:{name:"Debug",env:"CURRENTS_DEBUG",cli:"--debug"},ciBuildId:{name:"CI Build ID",env:"CURRENTS_CI_BUILD_ID",cli:"--ci-build-id"},recordKey:{name:"Record Key",env:"CURRENTS_RECORD_KEY",cli:"--key"},projectId:{name:"Project ID",env:"CURRENTS_PROJECT_ID",cli:"--project-id"},tag:{name:"Currents Tag",env:"CURRENTS_TAG",cli:"--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"},machineId:{name:"Machine ID",env:"CURRENTS_MACHINE_ID",cli:"--machine-id"},reportDir:{name:"Report Directory",env:"CURRENTS_REPORT_DIR",cli:"--report-dir"}};function Dr(){return{projectId:process.env[h.projectId.env],recordKey:process.env[h.recordKey.env],ciBuildId:process.env[h.ciBuildId.env],tag:process.env[h.tag.env]?process.env[h.tag.env]?.split(",").map(e=>e.trim()):void 0,disableTitleTags:!!process.env[h.disableTitleTags.env],removeTitleTags:!!process.env[h.removeTitleTags.env],debug:!!process.env[h.debug.env],machineId:process.env[h.machineId.env]}}var Jn=s.extend("config"),Yn=["projectId","recordKey"],rt=null;function Nr(e){rt=H(h,Yn,Dr,e),Jn("Resolved Currents config: %o",rt)}function Ee(){return rt}function vr(e){return{ciBuildId:e.ciBuildId,projectId:e.projectId,recordKey:e.key,tag:e.tag,removeTitleTags:e.removeTitleTags,disableTitleTags:e.disableTitleTags,debug:e.debug,machineId:e.machineId,reportDir:e.reportDir}}var Vr=c(require("fs-extra")),Jr=require("jest-cli"),Yr=c(require("tmp"));var Kr=require("lodash");var Lr=require("lodash"),qn=["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 Br(e){return(0,Lr.omit)(e,...qn)}function Mr(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 kr=c(require("fs")),Hr=require("jest-config"),ot=require("lodash"),nt=c(require("path"));function he(e,t){return(...r)=>new Promise((o,n)=>{let a=0,p=()=>{a++;try{let d=e(...r);o(d)}catch(d){if(a>=t.length)n(d);else{let u=t[a-1];setTimeout(p,u)}}};p()})}var Gr=c(require("fs-extra")),Wn=c(require("path"));async function Re(e){let t=await Gr.default.pathExists(e);if(!t)throw new Error("File does not exist");return t}var Fr=s.extend("jest-discovery");async function jr(e){try{let{config:t,configPath:r}=await(0,Hr.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,ot.omit)(t,o);if(a.projects&&(a.projects=a.projects.map(u=>typeof u!="string"?(0,ot.omit)(u,n):u)),a.rootDir&&Object.keys(a).length===1)return null;let p=nt.default.resolve(r?nt.default.dirname(r):process.cwd(),`.jest-scanner-${new Date().getTime()}.config.js`),d=`module.exports=${JSON.stringify(a,null,2)}`;return Fr("configFileContent: %O",d),kr.default.writeFileSync(p,d),await he(Re,[200,200,200,200,200,1e3])(p),p}catch(t){return l("Failed to recreate the config file"),Fr("error %o",t),null}}async function $r(e){let t="!!##ThisPatternWillNotMatchAnyTestName##!!",r=e.options,o=Br(r),n=Mr(o),a=r.config,p=await jr(a);return{cliArgs:[n,"--testNamePattern",t,"--reporters","@currents/cmd/discovery/jest","--shard=1/1",p?`--config=${p}`:"",...e.args].filter(u=>!(0,Kr.isEmpty)(u)),configFilePath:p}}var Qn=s.extend("jest-discovery");async function qr(e,t){console.time(E("@currents/jest:fullTestSuite-ready"));let{cliArgs:r,configFilePath:o}=await $r(t);try{let n=Yr.default.fileSync({postfix:".json"});return Qn("running scanner: %o",r),process.env.CURRENTS_DISCOVERY_PATH=n.name,await(0,Jr.run)(r.concat(["--openHandlesTimeout=0"])),await he(Re,Array.from({length:300},()=>100))(n.name),console.timeEnd(E("@currents/jest:fullTestSuite-ready")),await j(n.name)}catch(n){return l("Failed to obtain the jest full test suite:",n),[]}finally{o&&Vr.default.unlinkSync(o)}}var z=class{constructor(t){this.config=t}async getFullTestSuite(){return[]}};var _e=class extends z{constructor(t){super(t)}async getFullTestSuite(){return qr(this.config.frameworkConfig,this.config.cliArgs)}};function Wr(e){switch(e.framework){case"jest":return new _e(e);default:return new z(e)}}var X=c(require("fs-extra")),D=c(require("path"));async function Qr(e){let t=await zn(e?.reportDir);if(!t)throw new Error("Failed to find the report dir");return{reportDir:t,configFilePath:e?.configFilePath??D.default.join(t,"config.json")}}async function zn(e){return e?(await Ie(e),e):Xn((0,D.join)(process.cwd(),".currents"))}async function Xn(e){let t=await X.default.readdir(e),r=null;for(let o of t){let n=D.default.join(e,o),a=await X.default.stat(n);a.isDirectory()&&(!r||a.birthtime>r.birthtime)&&(r={name:o,birthtime:a.birthtime})}return r?(0,D.resolve)(e,r.name):null}async function Ie(e){try{return await X.default.pathExists(e)}catch{return l("Error checking if path exists:",l),!1}}async function zr(e){let t=D.default.join(e,"instances");return Zn(t)}async function Zn(e){let t=await X.default.readdir(e),r=[];for(let o of t){let n=D.default.join(e,o);(await X.default.stat(n)).isFile()&&r.push(n)}return r}async function it(){let e=Ee();if(!e)throw new Error("Currents config is missing!");e.debug&&v();let t=await Qr(e);pt(oi(t.reportDir)),s("Reporter options: %o",t),k("Report directory: %s",t.reportDir);let r=await j(t.configFilePath);s("Report config: %o",r);let o=await zr(t.reportDir);s("Found %d instance results in the reportDir: %s",o.length,t.reportDir);let n=ti(t.reportDir),a=await Ie(n),p=ri(t.reportDir),d=null;if(a){let O=await j(n);f("Marker file detected. The report was already uploaded: %o",{runUrl:O.response.runUrl,isoDate:O.isoDate}),await Ie(p)&&(d=await j(p),s("Full test suite file detected: %s",p))}if(d)s("The discovery stage was skipped");else{if(d=await Wr(r).getFullTestSuite(),ni(d))throw new Error("Failed to discover the full test suite!");await Y(p,JSON.stringify(d))}let u=d.length===1?d[0].name:null,y={currents:e},m={type:r.framework,version:r.frameworkVersion,clientVersion:re},P=se.userFacingNanoid(),S=W(e.ciBuildId),_={};for await(let O of o){let b=await j(O);_[b.groupId]||(_[b.groupId]=[]),_[b.groupId].push(b)}for await(let O of Object.keys(_)){let b=_[O],$=O;u&&(s("Default group found: %s, overwriting the group in the results",u),$=u,b=b.map(F=>({...F,groupId:u})));try{let F=await ei({ci:S,group:$,instances:b,fullTestSuite:d,config:y,machineId:P,framework:m});s("Api response: %o",F),k("[%s] Run created: %s",$,F.runUrl);let vo={response:F,isoDate:new Date().toISOString()};await Y(n,JSON.stringify(vo)),s("Marker file %s: %s",a?"overwritten":"created",n)}catch(F){throw s("Failed to upload the results to the dashboard"),F}}}async function ei({ci:e,group:t,instances:r,fullTestSuite:o,config:n,machineId:a,framework:p}){let d=await Ar(),u=await xr(),y={browserName:"node",browserVersion:Zr.default.coerce(process.version)?.version},{currents:m}=n,S={platform:{...y,...u},ci:e,commit:d,group:t,fullTestSuite:o,config:n,projectId:m.projectId,recordKey:m.recordKey,ciBuildId:e.ciBuildId.value??void 0,tags:m.tag??[],machineId:m.machineId??a,framework:p,instances:r};return s("Creating run: %o",(0,Xr.mapValues)(S,(_,O)=>O==="recordKey"?"******":_)),jt(S)}function ti(e){return Te.default.join(e,"upload.marker.json")}function ri(e){return Te.default.join(e,"fullTestSuite.json")}function oi(e){return Te.default.join(e,`.debug-${new Date().toISOString()}.log`)}function ni(e){return e.length===0||e.some(t=>t.tests.length===0)}var ii=s.extend("cli");async function eo(e){await M(async t=>{ft(t);let r=ne();ii("Config: %o",r),await Fe()},e)}var N=require("@commander-js/extra-typings");var to=new N.Option("--api-key <api-key>","API key from Currents dashboard for authentication").env(R(x,"apiKey")),ro=new N.Option("-o, --output <path>","Path to the file where output will be written").env(R(x,"output")),oo=new N.Option("--ci-build-id <id>","Unique identifier for the run"),no=new N.Option("-p, --project-id <project>","Project ID from Currents associated with the run").env(R(x,"projectId")),io=new N.Option("-t, --tag <tag>","Comma-separated list of tags for the run").argParser(q),so=new N.Option("--debug","Enable debug logging").env(R(x,"debug")).default(!1),ao=new N.Option("-b, --branch <branch>","Branch name for the recorded run"),co=new N.Option("--pw-last-run",'Generate output formatted for Playwright ".last-run.json"');var Oe="api",si=e=>`
12
+ `]:["Unexpected network error"]}var Lt=a.extend("http");async function K(e,t,r=Ut){try{let o=await r(e).request(t);return Lt("network response: %o",{...Bt.default.omit(o,"request","config"),url:o.config.url,method:o.config.method}),o}catch(o){let n=o;throw Lt("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}),vt(n),n}}var ce=a.extend("api");async function Gt(e){try{return ce("Request params: %o",e),K("api",{url:"cache/upload",method:"POST",data:e}).then(t=>t.data)}catch(t){throw ce("Failed to create cache:",t),t}}async function Ft(e){try{return ce("Request params: %o",e),K("api",{url:"cache/download",method:"POST",data:e}).then(t=>t.data)}catch(t){throw ce("Failed to retrieve cache:",t),t}}var Ht=require("util"),jt=require("zlib");var kt=a.extend("api"),ln=(0,Ht.promisify)(jt.gzip);async function Kt(e){try{kt("Run params: %o",e);let t=await fn(JSON.stringify(e));return K("api",{url:"v1/runs",method:"POST",headers:{"Content-Type":"application/json","Content-Encoding":"gzip"},data:t}).then(r=>r.data)}catch(t){throw kt("Failed to create the run:",t),t}}async function fn(e){try{return await ln(e)}catch(t){throw l("Failed to compress run payload:",t),t}}var $t=a.extend("api");async function Vt(e,t){try{return $t("Run params: %o",t),K("restApi",{url:"v1/runs/previous",params:t,method:"GET",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`}}).then(r=>r.data)}catch(r){throw $t("Failed to obtain run data:",r),r}}async function ke(){try{let e=oe();if(!e)throw new Error("Config is missing!");e.debug&&v();let t=e.ciBuildId?{projectId:e.projectId,ciBuildId:e.ciBuildId,pwLastRun:e.pwLastRun}:{projectId:e.projectId,branch:e.branch,tag:e.tag,pwLastRun:e.pwLastRun},r=await Vt(e.apiKey,t);await gn(e.pwLastRun&&r.data.pwLastRun?r.data.pwLastRun:r.data,e)}catch(e){throw a("Failed to get run data"),e}}async function gn(e,t){let r=JSON.stringify(e,null,2);t.output?(await Et(t.output),await(0,Jt.writeFile)(t.output,r,"utf-8")):k(r)}var xr=require("axios");var b=require("@commander-js/extra-typings");var Cn={recordKey:{name:"Record Key",env:"CURRENTS_RECORD_KEY",cli:"--key"},debug:{name:"Debug",env:"CURRENTS_DEBUG",cli:"--debug"}},En={id:{name:"Cache id",cli:"--id"},preset:{name:"Preset",cli:"--preset"},pwOutputDir:{name:"Playwright output directory",cli:"--pw-output-dir"},presetOutput:{name:"Preset output path",cli:"--preset-output"},paths:{name:"Paths to cache",cli:"--paths"},matrixIndex:{name:"Matrix index",cli:"--matrix-index"},matrixTotal:{name:"Matrix total",cli:"--matrix-total"}},Rn={id:{name:"Cache id",cli:"--id"},preset:{name:"Preset",cli:"--preset"},outputDir:{name:"Custom directory to write output",cli:"--output-dir"},matrixIndex:{name:"Matrix index",cli:"--matrix-index"},matrixTotal:{name:"Matrix total",cli:"--matrix-total"}},L={...Cn,...En,...Rn};function He(){return{recordKey:process.env[L.recordKey.env],debug:!!process.env[L.debug.env]}}var Yt=a.extend("config"),qt=["recordKey"],Z;function Wt(e){Z={type:"SET_COMMAND_CONFIG",values:H(L,qt,He,e)},Yt("Resolved config: %o",Z)}function Qt(e){Z={type:"GET_COMMAND_CONFIG",values:H(L,qt,He,e)},Yt("Resolved config: %o",Z)}function B(){return Z}function zt(e){return{recordKey:e.key,id:e.id,preset:e.preset,outputDir:e.outputDir,presetOutput:e.presetOutput,debug:e.debug,matrixIndex:e.matrixIndex,matrixTotal:e.matrixTotal}}function Xt(e){return{recordKey:e.key,id:e.id,preset:e.preset,pwOutputDir:e.pwOutputDir,paths:e.paths,debug:e.debug,matrixIndex:e.matrixIndex,matrixTotal:e.matrixTotal}}var Zt=require("@commander-js/extra-typings");var er=require("axios");function Y(e,t=[]){return e?t.concat(e.split(",").map(r=>r.trim())):t}async function M(e,t){try{await e(t),process.exit(0)}catch(r){r instanceof Zt.CommanderError&&(l(r.message),process.exit(r.exitCode)),r instanceof V&&(l(r.message),process.exit(1)),(0,er.isAxiosError)(r)&&(l(r.message),process.exit(1)),l("Script execution failed: %o",r),process.exit(1)}}var je=new b.Option("-k, --key <record-key>","Your secret Record Key obtained from Currents").env(_(L,"recordKey")),Ke=new b.Option("--debug","Enable debug logging").env(_(L,"debug")).default(!1),$e=new b.Option("--id <id>","The ID the data is saved under in the cache"),tr=new b.Option("--paths <paths>","Comma-separated list of paths to cache").argParser(Y),pe=(t=>(t.lastRun="last-run",t))(pe||{}),Ve=new b.Option("--preset <preset-name>",'A set of predefined options. Use "last-run" to get the last run data').choices(Object.values(pe)),rr=new b.Option("--output-dir <dir>","Path to the directory where output will be written"),or=new b.Option("--pw-output-dir <dir>","Directory for artifacts produced by Playwright tests").default("test-results"),me=".currents_env",nr=new b.Option("--preset-output <path>","Path to the file containing the preset output").default(me),Je=new b.Option("--matrix-index <number>","The index of the matrix to use").default(1).argParser(ir),Ye=new b.Option("--matrix-total <number>","The total number of matrices available").default(1).argParser(ir);function ir(e){let t=parseInt(e,10);if(isNaN(t)||t<=0||!Number.isInteger(t))throw new b.InvalidArgumentError("A positive integer is expected.");return t}var C=require("lodash");var de=a.extend("ci"),hn=(e,...t)=>(0,C.chain)(t).compact().join(e).value(),In=(e,t)=>(0,C.set)(e,(0,C.camelCase)(t),process.env[t]),g=e=>(0,C.transform)(e,In,{}),_n=()=>process.env.TF_BUILD&&process.env.TF_BUILD_BUILDNUMBER,Tn=()=>process.env.TF_BUILD&&process.env.AZURE_HTTP_USER_AGENT,On=()=>(0,C.some)(process.env,(e,t)=>/^CODEBUILD_/.test(t)),Pn=()=>process.env.bamboo_buildNumber,yn=()=>process.env.CI_NAME&&process.env.CI_NAME==="codeship"&&process.env.CODESHIP,bn=()=>process.env.CI_NAME&&process.env.CI_NAME==="codeship"&&!process.env.CODESHIP,An=()=>(0,C.some)(process.env,(e,t)=>/^CONCOURSE_/.test(t)),xn=()=>process.env.GITLAB_CI||process.env.CI_SERVER_NAME&&/^GitLab/.test(process.env.CI_SERVER_NAME),Un=()=>process.env.GCP_PROJECT||process.env.GCLOUD_PROJECT||process.env.GOOGLE_CLOUD_PROJECT,wn=()=>process.env.JENKINS_URL||process.env.JENKINS_HOME||process.env.JENKINS_VERSION||process.env.HUDSON_URL||process.env.HUDSON_HOME,Sn=()=>process.env.WERCKER||process.env.WERCKER_MAIN_PIPELINE_STARTED,Dn={appveyor:"APPVEYOR",azure:Tn,awsCodeBuild:On,bamboo:Pn,bitbucket:"BITBUCKET_BUILD_NUMBER",buildkite:"BUILDKITE",circle:"CIRCLECI",codeshipBasic:yn,codeshipPro:bn,concourse:An,codeFresh:"CF_BUILD_ID",drone:"DRONE",githubActions:"GITHUB_ACTIONS",gitlab:xn,goCD:"GO_JOB_NAME",googleCloud:Un,jenkins:wn,semaphore:"SEMAPHORE",shippable:"SHIPPABLE",teamcity:"TEAMCITY_VERSION",teamfoundation:_n,travis:"TRAVIS",wercker:Sn,netlify:"NETLIFY",layerci:"LAYERCI"};function Nn(){let{env:e}=process;return(0,C.findKey)(Dn,t=>{if((0,C.isString)(t))return e[t];if((0,C.isFunction)(t))return t()})}var ar=()=>({appveyor:g(["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:g(["BUILD_BUILDID","BUILD_BUILDNUMBER","BUILD_CONTAINERID","BUILD_REPOSITORY_URI","SYSTEM_TEAMPROJECT","SYSTEM_COLLECTIONURI"]),awsCodeBuild:g(["CODEBUILD_BUILD_ID","CODEBUILD_BUILD_NUMBER","CODEBUILD_RESOLVED_SOURCE_VERSION","CODEBUILD_SOURCE_REPO_URL","CODEBUILD_SOURCE_VERSION"]),bamboo:g(["bamboo_buildNumber","bamboo_buildResultsUrl","bamboo_planRepository_repositoryUrl","bamboo_buildKey"]),bitbucket:g(["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:g(["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:g(["CIRCLE_JOB","CIRCLE_BUILD_NUM","CIRCLE_BUILD_URL","CIRCLE_PR_NUMBER","CIRCLE_PR_REPONAME","CIRCLE_PR_USERNAME","CIRCLE_COMPARE_URL","CIRCLE_WORKFLOW_ID","CIRCLE_PULL_REQUEST","CIRCLE_REPOSITORY_URL","CI_PULL_REQUEST"]),codeshipBasic:g(["CI_BUILD_ID","CI_REPO_NAME","CI_BUILD_URL","CI_PROJECT_ID","CI_BUILD_NUMBER","CI_PULL_REQUEST"]),codeshipPro:g(["CI_BUILD_ID","CI_REPO_NAME","CI_PROJECT_ID"]),concourse:g(["BUILD_ID","BUILD_NAME","BUILD_JOB_NAME","BUILD_PIPELINE_NAME","BUILD_TEAM_NAME","ATC_EXTERNAL_URL"]),codeFresh:g(["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:g(["DRONE_JOB_NUMBER","DRONE_BUILD_LINK","DRONE_BUILD_NUMBER","DRONE_PULL_REQUEST"]),githubActions:g(["GITHUB_WORKFLOW","GITHUB_ACTION","GITHUB_EVENT_NAME","GITHUB_RUN_ID","GITHUB_RUN_ATTEMPT","GITHUB_REPOSITORY"]),gitlab:g(["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:g(["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:g(["BUILD_ID","PROJECT_ID","REPO_NAME","BRANCH_NAME","TAG_NAME","COMMIT_SHA","SHORT_SHA"]),jenkins:g(["BUILD_ID","BUILD_URL","BUILD_NUMBER","ghprbPullId"]),semaphore:g(["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:g(["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:g(["BUILD_BUILDID","BUILD_BUILDNUMBER","BUILD_CONTAINERID"]),travis:g(["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:g(["BUILD_ID","CONTEXT","URL","DEPLOY_URL","DEPLOY_PRIME_URL","DEPLOY_ID"]),layerci:g(["LAYERCI_JOB_ID","LAYERCI_RUNNER_ID","RETRY_INDEX","LAYERCI_PULL_REQUEST","LAYERCI_REPO_NAME","LAYERCI_REPO_OWNER","LAYERCI_BRANCH","GIT_TAG"])}),vn=()=>{let{env:e}=process;return{appveyor:{sha:e.APPVEYOR_REPO_COMMIT,branch:e.APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH||e.APPVEYOR_REPO_BRANCH,message:hn(`
13
+ `,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}}},sr=e=>{let t=cr();return t?(0,C.chain)(e()).get(t).value():{}};function Ln(){return(0,C.chain)(ar()).omitBy(C.isNull).keys().value()}function Bn(e){return e&&Ln().includes(e)}function cr(){let e=Nn();return de("detected CI provider name: %s",e),e||null}function Mn(){return sr(ar)}function pr(){return sr(vn)}function q(e){let t=Mn(),r=cr(),o=Gn(e,r);return de("detected CI provider: %s",r),de("detected CI params: %O",t),de("detected CI build ID: %o",o),{params:t,provider:r,ciBuildId:o}}function Gn(e,t){return e?{source:"user",value:e}:Bn(t)?{source:"server",value:null}:{source:"random",value:`auto:${Le()}`}}var mr=p(require("archiver")),qe=p(require("fs-extra")),G=p(require("path")),dr=p(require("unzipper"));var Fn=50*1024*1024;async function ur(e,t=Fn){return new Promise((r,o)=>{let n=(0,mr.default)("zip",{zlib:{level:9}}),s=[],m=0;n.on("data",c=>{s.push(c),m+=c.length,m>t&&o(new Error(`Zip size exceeded the limit of ${t} bytes`))}),n.on("warning",c=>{c.code==="ENOENT"?f(c):o(c)}),n.on("error",c=>o(c)),n.on("end",()=>{let c=Buffer.concat(s);r(c)});let d=async c=>{let R=process.cwd(),I=G.default.normalize(c),P=G.default.relative(R,I),x=await qe.default.stat(P),y=G.default.dirname(P),A=y==="."?void 0:y;x.isDirectory()?n.directory(P,P,{prefix:A,stats:x}):n.file(I,{name:G.default.basename(P),prefix:A,stats:x})};(async c=>{for(let R of c)if(R==="."){let I=await qe.default.readdir(R);for(let P of I)await d(P)}else await d(R);n.finalize()})(e).catch(o)})}async function lr(e,t){return dr.default.Open.buffer(e).then(r=>r.extract({path:t,concurrency:3}))}function fr(e){let t=process.cwd();return e.filter(r=>{let o=G.default.resolve(r),n=G.default.relative(t,o);return r.startsWith("..")||G.default.isAbsolute(n)?(f(`Invalid path: "${r}". Path traversal detected. The path was skipped.`),!1):!0})}var gr=p(require("path"));var Cr=require("lodash");function Er({config:e,cacheId:t,orgId:r,paths:o,ci:n}){let s={id:t,orgId:r,config:(0,Cr.omit)(e,"recordKey"),paths:o,ci:n,createdAt:new Date().toISOString()};return Buffer.from(JSON.stringify(s))}var Rr=e=>gr.default.resolve(e??"test-results",".last-run.json");function ue(e,t){e instanceof Error?X("%s. %s.",t,e.message):X("%s. %s.",t,"Unknown error")}var Or=p(require("async-retry")),Pr=require("axios");var hr=p(require("axios")),Ir=require("https-proxy-agent"),_r=p(require("proxy-from-env"));var kn=a.extend("axios");function We(e={}){let t=hr.default.create(e);return t.interceptors.request.use(r=>{let o={...r},n=t.getUri(r),s=_r.default.getProxyForUrl(n);return s&&(kn("Using HTTP proxy %s for %s ",s,n),o.proxy=!1,o.httpsAgent=Hn(s)),o}),t}var le=null;function Hn(e){return le||(le=new Ir.HttpsProxyAgent(e),le)}var ge=a.extend("upload"),fe=5;async function Qe(e,t,r){return ge("Uploading buffer %s",e.name,{buffer:Buffer.byteLength(e.buffer)}),Kn(e.buffer,e.uploadUrl,t,r)}async function jn(e,t,r,o){return We().request({method:"put",url:t,data:e,onUploadProgress:o,headers:{"Content-Disposition":"inline","Content-Type":r}})}async function ze(e,t){try{let r=await We().get(e,{responseType:"arraybuffer",onDownloadProgress:t});return Buffer.from(r.data)}catch(r){throw(0,Pr.isAxiosError)(r)&&ge("Failed to download %s: %s",e,r.message),r}}async function Kn(...e){await(0,Or.default)(async()=>{await jn(...e)},{retries:fe,onRetry:(t,r)=>{if(ge("Upload failed %d out of %d attempts: %s",r,fe,t.message),r===fe){l(`Cannot upload after ${r} times: ${t.message}`);return}f(`Upload failed ${r} out of ${fe} attempts: ${t.message}`)}})}var Xe=e=>({total:t,loaded:r})=>{};function Tr(e){return e/1e3/1e3}var Ze=p(require("lodash"));async function yr(e,t){switch(t.provider){case"githubActions":await $n(e,t);break;case"gitlab":await Ar(e,t);break;default:break}}async function br(e,t,r){switch(t.provider){case"gitlab":await Ar(e,t,r);break;default:break}}async function Ar(e,t,r=null){let o=t.params,n=r?.ci.params,m=(n?Ce(n.runAttempt,0):0)+1,d=Ce(o.ciNodeIndex,1),u=Ce(o.ciNodeTotal,1),c=m>1?"--last-failed":"",R="";u>1&&(R=m>1?"--shard=1/1":`--shard=${d}/${u}`);let I=[c,R].filter(Boolean).join(" ");await J(e.presetOutput??me,`EXTRA_PW_FLAGS="${I}"
14
+ EXTRA_PWCP_FLAGS="${c}"
15
+ RUN_ATTEMPT="${m}"
16
+ `)}async function $n(e,t){let{matrixIndex:r,matrixTotal:o}=e,n=t.params,s=Ce(n.githubRunAttempt,1),m=s>1?"--last-failed":"",d="";o>1&&(d=s>1?"--shard=1/1":`--shard=${r}/${o}`);let u=[m,d].filter(Boolean).join(" "),c=e.presetOutput??me;await J(c,u),a('Dumped PW config: "%s" for GHA to %s',u,c)}var Ce=(e,t)=>{let r=Ze.default.toNumber(e);return Ze.default.isNaN(r)?t:r};async function et(){try{let e=B();if(e.type!=="GET_COMMAND_CONFIG"||!e.values)throw new Error("Config is missing!");let{recordKey:t,id:r,preset:o,matrixIndex:n,matrixTotal:s}=e.values,m=e.values.outputDir;e.values.debug&&v();let d=q();o==="last-run"&&await yr(e.values,d);let u=await Ft({recordKey:t,ci:d,id:r,config:{matrixIndex:n,matrixTotal:s}});try{await Vn({readUrl:u.readUrl,outputDir:m});let c=await Jn(u.metaReadUrl);o==="last-run"&&await br(e.values,d,c)}catch(c){if((0,xr.isAxiosError)(c)&&c.response?.status&&c.response?.status<500){X(`Cache with ID "${u.cacheId}" not found`);return}throw c}}catch(e){ue(e,"Failed to obtain cache")}}async function Vn({readUrl:e,outputDir:t}){let r=await ze(e);await lr(r,t||"."),a("Cache downloaded")}async function Jn(e){let t=await ze(e),r=JSON.parse(t.toString("utf-8"));return a("Meta file: %O",r),r}var Ur=require("lodash");async function tt(){try{let e=B();if(e.type!=="SET_COMMAND_CONFIG"||!e.values)throw new Error("Config is missing!");let{recordKey:t,id:r,debug:o,preset:n,pwOutputDir:s,matrixIndex:m,matrixTotal:d}=e.values;o&&v();let u=e.values.paths?fr(e.values.paths):[],c=[];u&&u.length>0&&c.push(...u);let R=q();if(n==="last-run"){let P=Rr(s);c.push(P)}if(c.length===0)throw new Error("No paths available to upload");let I=await Gt({recordKey:t,ci:R,id:r,config:{matrixIndex:m,matrixTotal:d}});await Yn({archive:await ur(c),cacheId:I.cacheId,uploadUrl:I.uploadUrl}),await qn({meta:Er({cacheId:I.cacheId,config:(0,Ur.omit)(e.values,["recordKey"]),ci:R,orgId:I.orgId,paths:c}),cacheId:I.cacheId,uploadUrl:I.metaUploadUrl})}catch(e){ue(e,"Failed to save cache")}}async function Yn({archive:e,cacheId:t,uploadUrl:r}){try{let o="application/zip";await Qe({buffer:e,contentType:o,name:t,uploadUrl:r},o,Xe(t)),a("Cache archive uploaded",{cacheId:t})}catch(o){throw a("Failed to upload cache archive",o),o}}async function qn({meta:e,cacheId:t,uploadUrl:r}){try{let o=`${t}_meta`,n="application/json";await Qe({buffer:e,contentType:n,name:o,uploadUrl:r},n,Xe(o)),a("Cache meta uploaded",{cacheId:t})}catch(o){throw a("Failed to upload cache meta",o),o}}var Sr=require("@currents/commit-info"),Dr=require("lodash");var Ee=require("lodash");var rt=a.extend("ci-git");function wr(e){rt("git commit existing info: %O",e);let t=pr();rt("commit info from provider environment variables: %O",t);let r=(0,Ee.transform)(e,(o,n,s)=>{let m=n||(t?t[s]:null);return o[s]=(0,Ee.defaultTo)(m,null)});return rt("combined git and environment variables from provider: %O",r),r}var Wn=async()=>{let e=await(0,Sr.commitInfo)();return wr({branch:e.branch,remoteOrigin:e.remote,authorEmail:e.email,authorName:e.author,message:e.message,sha:e.sha,ghaEventData:e.ghaEventData})},Nr=(0,Dr.memoize)(Wn);var vr=p(require("getos")),Lr=require("lodash"),U=require("os"),Br=require("util"),Qn=async()=>{if((0,U.platform)()==="linux")try{let e=await(0,Br.promisify)(vr.default)();return"dist"in e&&"release"in e?[e.dist,e.release].join(" - "):(0,U.release)()}catch{return(0,U.release)()}return(0,U.release)()},zn=async()=>{let e=await Qn();return{osName:(0,U.platform)(),osVersion:e,osCpus:[],osMemory:{free:(0,U.freemem)(),total:(0,U.totalmem)()}}},Mr=(0,Lr.memoize)(zn);var no=require("lodash"),Oe=p(require("path")),io=p(require("semver"));var h={debug:{name:"Debug",env:"CURRENTS_DEBUG",cli:"--debug"},ciBuildId:{name:"CI Build ID",env:"CURRENTS_CI_BUILD_ID",cli:"--ci-build-id"},recordKey:{name:"Record Key",env:"CURRENTS_RECORD_KEY",cli:"--key"},projectId:{name:"Project ID",env:"CURRENTS_PROJECT_ID",cli:"--project-id"},tag:{name:"Currents Tag",env:"CURRENTS_TAG",cli:"--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"},machineId:{name:"Machine ID",env:"CURRENTS_MACHINE_ID",cli:"--machine-id"},reportDir:{name:"Report Directory",env:"CURRENTS_REPORT_DIR",cli:"--report-dir"}};function Gr(){return{projectId:process.env[h.projectId.env],recordKey:process.env[h.recordKey.env],ciBuildId:process.env[h.ciBuildId.env],tag:process.env[h.tag.env]?process.env[h.tag.env]?.split(",").map(e=>e.trim()):void 0,disableTitleTags:!!process.env[h.disableTitleTags.env],removeTitleTags:!!process.env[h.removeTitleTags.env],debug:!!process.env[h.debug.env],machineId:process.env[h.machineId.env]}}var Xn=a.extend("config"),Zn=["projectId","recordKey"],ot=null;function Fr(e){ot=H(h,Zn,Gr,e),Xn("Resolved Currents config: %o",ot)}function Re(){return ot}function kr(e){return{ciBuildId:e.ciBuildId,projectId:e.projectId,recordKey:e.key,tag:e.tag,removeTitleTags:e.removeTitleTags,disableTitleTags:e.disableTitleTags,debug:e.debug,machineId:e.machineId,reportDir:e.reportDir}}var zr=p(require("fs-extra")),Xr=require("jest-cli"),Zr=p(require("tmp"));var Wr=require("lodash");var Hr=require("lodash"),ei=["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 jr(e){return(0,Hr.omit)(e,...ei)}function Kr(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 Jr=p(require("fs")),Yr=require("jest-config"),nt=require("lodash"),it=p(require("path"));function he(e,t){return(...r)=>new Promise((o,n)=>{let s=0,m=()=>{s++;try{let d=e(...r);o(d)}catch(d){if(s>=t.length)n(d);else{let u=t[s-1];setTimeout(m,u)}}};m()})}var $r=p(require("fs-extra")),ti=p(require("path"));async function Ie(e){let t=await $r.default.pathExists(e);if(!t)throw new Error("File does not exist");return t}var Vr=a.extend("jest-discovery");async function qr(e){try{let{config:t,configPath:r}=await(0,Yr.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"],s=(0,nt.omit)(t,o);if(s.projects&&(s.projects=s.projects.map(u=>typeof u!="string"?(0,nt.omit)(u,n):u)),s.rootDir&&Object.keys(s).length===1)return null;let m=it.default.resolve(r?it.default.dirname(r):process.cwd(),`.jest-scanner-${new Date().getTime()}.config.js`),d=`module.exports=${JSON.stringify(s,null,2)}`;return Vr("configFileContent: %O",d),Jr.default.writeFileSync(m,d),await he(Ie,[200,200,200,200,200,1e3])(m),m}catch(t){return l("Failed to recreate the config file"),Vr("error %o",t),null}}async function Qr(e){let t="!!##ThisPatternWillNotMatchAnyTestName##!!",r=e.options,o=jr(r),n=Kr(o),s=r.config,m=await qr(s);return{cliArgs:[n,"--testNamePattern",t,"--reporters","@currents/cmd/discovery/jest","--shard=1/1",m?`--config=${m}`:"",...e.args].filter(u=>!(0,Wr.isEmpty)(u)),configFilePath:m}}var ri=a.extend("jest-discovery");async function eo(e,t){console.time(E("@currents/jest:fullTestSuite-ready"));let{cliArgs:r,configFilePath:o}=await Qr(t);try{let n=Zr.default.fileSync({postfix:".json"});return ri("running scanner: %o",r),process.env.CURRENTS_DISCOVERY_PATH=n.name,await(0,Xr.run)(r.concat(["--openHandlesTimeout=0"])),await he(Ie,Array.from({length:300},()=>100))(n.name),console.timeEnd(E("@currents/jest:fullTestSuite-ready")),await j(n.name)}catch(n){return l("Failed to obtain the jest full test suite:",n),[]}finally{o&&zr.default.unlinkSync(o)}}var W=class{constructor(t){this.config=t}async getFullTestSuite(){return[]}};var _e=class extends W{constructor(t){super(t)}async getFullTestSuite(){return eo(this.config.frameworkConfig,this.config.cliArgs)}};function to(e){switch(e.framework){case"jest":return new _e(e);default:return new W(e)}}var Q=p(require("fs-extra")),D=p(require("path"));async function ro(e){let t=await oi(e?.reportDir);if(!t)throw new Error("Failed to find the report dir");return{reportDir:t,configFilePath:e?.configFilePath??D.default.join(t,"config.json")}}async function oi(e){return e?(await Te(e),e):ni((0,D.join)(process.cwd(),".currents"))}async function ni(e){let t=await Q.default.readdir(e),r=null;for(let o of t){let n=D.default.join(e,o),s=await Q.default.stat(n);s.isDirectory()&&(!r||s.birthtime>r.birthtime)&&(r={name:o,birthtime:s.birthtime})}return r?(0,D.resolve)(e,r.name):null}async function Te(e){try{return await Q.default.pathExists(e)}catch{return l("Error checking if path exists:",l),!1}}async function oo(e){let t=D.default.join(e,"instances");return ii(t)}async function ii(e){let t=await Q.default.readdir(e),r=[];for(let o of t){let n=D.default.join(e,o);(await Q.default.stat(n)).isFile()&&r.push(n)}return r}async function at(){let e=Re();if(!e)throw new Error("Currents config is missing!");e.debug&&v();let t=await ro(e);mt(pi(t.reportDir)),a("Reporter options: %o",t),k("Report directory: %s",t.reportDir);let r=await j(t.configFilePath);a("Report config: %o",r);let o=await oo(t.reportDir);a("Found %d instance results in the reportDir: %s",o.length,t.reportDir);let n=si(t.reportDir),s=await Te(n),m=ci(t.reportDir),d=null;if(s){let y=await j(n);f("Marker file detected. The report was already uploaded: %o",{runUrl:y.response.runUrl,isoDate:y.isoDate}),await Te(m)&&(d=await j(m),a("Full test suite file detected: %s",m))}if(d)a("The discovery stage was skipped");else{if(d=await to(r).getFullTestSuite(),mi(d))throw new Error("Failed to discover the full test suite!");await J(m,JSON.stringify(d))}let u=d.length===1?d[0].name:null,c={currents:e},R={type:r.framework,version:r.frameworkVersion,clientVersion:te},I=ie.userFacingNanoid(),P=q(e.ciBuildId),x={};for await(let y of o){let A=await j(y);x[A.groupId]||(x[A.groupId]=[]),x[A.groupId].push(A)}for await(let y of Object.keys(x)){let A=x[y],xe=y;u&&(a("Default group found: %s, overwriting the group in the results",u),xe=u,A=A.map(F=>({...F,groupId:u})));try{let F=await ai({ci:P,group:xe,instances:A,fullTestSuite:d,config:c,machineId:I,framework:R});a("Api response: %o",F),k("[%s] Run created: %s",xe,F.runUrl);let ko={response:F,isoDate:new Date().toISOString()};await J(n,JSON.stringify(ko)),a("Marker file %s: %s",s?"overwritten":"created",n)}catch(F){throw a("Failed to upload the results to the dashboard"),F}}}async function ai({ci:e,group:t,instances:r,fullTestSuite:o,config:n,machineId:s,framework:m}){let d=await Nr(),u=await Mr(),c={browserName:"node",browserVersion:io.default.coerce(process.version)?.version},{currents:R}=n,P={platform:{...c,...u},ci:e,commit:d,group:t,fullTestSuite:o,config:n,projectId:R.projectId,recordKey:R.recordKey,ciBuildId:e.ciBuildId.value??void 0,tags:R.tag??[],machineId:R.machineId??s,framework:m,instances:r};return a("Creating run: %o",(0,no.mapValues)(P,(x,y)=>y==="recordKey"?"******":x)),Kt(P)}function si(e){return Oe.default.join(e,"upload.marker.json")}function ci(e){return Oe.default.join(e,"fullTestSuite.json")}function pi(e){return Oe.default.join(e,`.debug-${new Date().toISOString()}.log`)}function mi(e){return e.length===0||e.some(t=>t.tests.length===0)}var di=a.extend("cli");async function ao(e){await M(async t=>{gt(t);let r=oe();di("Config: %o",r),await ke()},e)}var N=require("@commander-js/extra-typings");var so=new N.Option("--api-key <api-key>","API key from Currents dashboard for authentication").env(_(S,"apiKey")),co=new N.Option("-o, --output <path>","Path to the file where output will be written").env(_(S,"output")),po=new N.Option("--ci-build-id <id>","Unique identifier for the run"),mo=new N.Option("-p, --project-id <project>","Project ID from Currents associated with the run").env(_(S,"projectId")),uo=new N.Option("-t, --tag <tag>","Comma-separated list of tags for the run").argParser(Y),lo=new N.Option("--debug","Enable debug logging").env(_(S,"debug")).default(!1),fo=new N.Option("-b, --branch <branch>","Branch name for the recorded run"),go=new N.Option("--pw-last-run",'Generate output formatted for Playwright ".last-run.json"');var Pe="api",ui=e=>`
17
17
 
18
- ${po.default.bold("Examples")}
18
+ ${Co.default.bold("Examples")}
19
19
 
20
20
  Obtain run data by --ci-build-id:
21
- ${E(`${e} ${Oe} get-run --api-key <api-key> --ci-build-id <ci-build-id>`)}
21
+ ${E(`${e} ${Pe} get-run --api-key <api-key> --ci-build-id <ci-build-id>`)}
22
22
 
23
23
  Obtain most recent run data by filters:
24
- ${E(`${e} ${Oe} get-run --api-key <api-key> --project-id <project-id> --branch <branch> --tag tagA,tagB`)}
24
+ ${E(`${e} ${Pe} get-run --api-key <api-key> --project-id <project-id> --branch <branch> --tag tagA,tagB`)}
25
25
 
26
26
  Obtain last run data that matches the Playwright "test-results/.last-run.json":
27
- ${E(`${e} ${Oe} get-run --api-key <api-key> --ci-build-id <ci-build-id> --pw-last-run --output <output-path>`)}
27
+ ${E(`${e} ${Pe} get-run --api-key <api-key> --ci-build-id <ci-build-id> --pw-last-run --output <output-path>`)}
28
28
 
29
- `,mo=e=>new st.Command().command(Oe).description(`Receive information from Currents API ${si(e)}`).showHelpAfterError("(add --help for additional information)").allowUnknownOption().addCommand(ai()),ai=()=>new st.Command().name("get-run").allowUnknownOption().addOption(to).addOption(so).addOption(oo).addOption(no).addOption(ao).addOption(io).addOption(ro).addOption(co).action(eo);var ye=require("@commander-js/extra-typings");var fo=c(require("chalk"));var ci=s.extend("cli");async function uo(e){await M(async t=>{Wt(Qt(t));let r=B();ci("Config: %o",{...r.values,recordKey:r.values?.recordKey?"*****":void 0}),await Ze()},e)}var pi=s.extend("cli");async function lo(e){await M(async t=>{qt(zt(t));let r=B();pi("Config: %o",{...r.values,recordKey:r.values?.recordKey?"*****":void 0}),await et()},e)}var Z="cache",mi=e=>`
29
+ `,Eo=e=>new st.Command().command(Pe).description(`Receive information from Currents API ${ui(e)}`).showHelpAfterError("(add --help for additional information)").allowUnknownOption().addCommand(li()),li=()=>new st.Command().name("get-run").allowUnknownOption().addOption(so).addOption(lo).addOption(po).addOption(mo).addOption(fo).addOption(uo).addOption(co).addOption(go).action(ao);var ye=require("@commander-js/extra-typings");var Io=p(require("chalk"));var fi=a.extend("cli");async function Ro(e){await M(async t=>{Qt(zt(t));let r=B();fi("Config: %o",{...r.values,recordKey:r.values?.recordKey?"*****":void 0}),await et()},e)}var gi=a.extend("cli");async function ho(e){await M(async t=>{Wt(Xt(t));let r=B();gi("Config: %o",{...r.values,recordKey:r.values?.recordKey?"*****":void 0}),await tt()},e)}var z="cache",Ci=e=>`
30
30
 
31
- ${fo.default.bold("Examples")}
31
+ ${Io.default.bold("Examples")}
32
32
 
33
33
  Save files to the cache under a specific ID:
34
- ${E(`${e} ${Z} set --key <record-key> --id <id> --paths <path-1,path-2,...path-n>`)}
34
+ ${E(`${e} ${z} set --key <record-key> --id <id> --paths <path-1,path-2,...path-n>`)}
35
35
 
36
36
  Retrieve files from the cache saved under a specific ID:
37
- ${E(`${e} ${Z} get --key <record-key> --id <id>`)}
37
+ ${E(`${e} ${z} get --key <record-key> --id <id>`)}
38
38
 
39
39
  Store the last run data in the cache:
40
- ${E(`${e} ${Z} set --key <record-key> --preset last-failed-sharding`)}
40
+ ${E(`${e} ${z} set --key <record-key> --preset last-run`)}
41
41
 
42
42
  Retrieve the last run data from the cache:
43
- ${E(`${e} ${Z} get --key <record-key> --preset last-failed-sharding`)}
43
+ ${E(`${e} ${z} get --key <record-key> --preset last-run`)}
44
44
 
45
45
  Retrieve the last run data from the cache and save it to a custom directory:
46
- ${E(`${e} ${Z} get --key <record-key> --preset last-failed-sharding --outputDir <outputDir>`)}
46
+ ${E(`${e} ${z} get --key <record-key> --preset last-run --output-dir <outputDir>`)}
47
47
 
48
- `,go=e=>new ye.Command().command(Z).description(`Cache data to Currents ${mi(e)}`).showHelpAfterError("(add --help for additional information)").allowUnknownOption().addCommand(di()).addCommand(ui()),di=()=>new ye.Command().name("set").allowUnknownOption().addOption(He).addOption(Ke).addOption($e).addOption(er).addOption(rr).addOption(je).addOption(Ve).action(lo),ui=()=>new ye.Command().name("get").allowUnknownOption().addOption(He).addOption(Ke).addOption($e).addOption(tr).addOption(Ve.conflicts("output-dir")).addOption(or).addOption(je).action(uo);var wo=require("@commander-js/extra-typings"),So=c(require("chalk"));var w=require("@commander-js/extra-typings");var Co=new w.Option("--ci-build-id <id>","the unique identifier for the recorded build (run)").env(R(h,"ciBuildId")),Eo=new w.Option("-k, --key <record-key>","your secret Record Key obtained from Currents").env(R(h,"recordKey")),ho=new w.Option("-p, --project-id <project>","the project ID for results reporting obtained from Currents").env(R(h,"projectId")),Ro=new w.Option("-t, --tag <tag>","comma-separated tag(s) for recorded runs in Currents").argParser(q),_o=new w.Option("--remove-title-tags","remove tags from test names in Currents, e.g. `Test name @smoke` becomes `Test name` in the dashboard").default(!1),Io=new w.Option("--disable-title-tags","disable parsing tags from test title, e.g. `Test name @smoke` would not be tagged with `smoke` in the dashboard").default(!1),To=new w.Option("--machine-id <string>","unique identifier of the machine running the tests. If not provided, it will be generated automatically. See: https://docs.currents.dev/?q=machineId").env(R(h,"machineId")),Oo=new w.Option("--report-dir <string>","explicit path to the report directory").env(R(h,"reportDir")),yo=new w.Option("--debug","enable debug logs").env(R(h,"debug")).default(!1);var Ao=c(require("fs"));var Po=require("tmp-promise"),bo=async()=>{let{path:e}=await(0,Po.file)();return e};var at=s.extend("cli"),Pe=class{constructor(t){this.configFilePath=null;this.cliOptions=t,at("CLI options: %o",this.cliOptions),this.parsedConfig=vr(this.cliOptions),at("Parsed config from CLI options: %o",this.parsedConfig)}async getConfigFilePath(){if(this.configFilePath)return this.configFilePath;let t=await bo();return Ao.default.writeFileSync(t,JSON.stringify(this.parsedConfig)),at("CLI options temp file path: %s",t),this.configFilePath=t,t}};async function Uo(e){await M(async t=>{let r=new Pe(t);Nr(r.parsedConfig);let o=Ee();k("Currents config: %o",{...o,recordKey:o?.recordKey?"*****":void 0}),await it()},e)}var te="upload",li=e=>`
48
+ `,_o=e=>new ye.Command().command(z).description(`Cache data to Currents ${Ci(e)}`).showHelpAfterError("(add --help for additional information)").allowUnknownOption().addCommand(Ei()).addCommand(Ri()),Ei=()=>new ye.Command().name("set").allowUnknownOption().addOption(je).addOption($e).addOption(Ve).addOption(tr).addOption(Ke).addOption(or).addOption(Je).addOption(Ye).action(ho),Ri=()=>new ye.Command().name("get").allowUnknownOption().addOption(je).addOption($e).addOption(Ve).addOption(rr).addOption(nr).addOption(Ke).addOption(Je).addOption(Ye).action(Ro);var Lo=require("@commander-js/extra-typings"),Bo=p(require("chalk"));var w=require("@commander-js/extra-typings");var To=new w.Option("--ci-build-id <id>","the unique identifier for the recorded build (run)").env(_(h,"ciBuildId")),Oo=new w.Option("-k, --key <record-key>","your secret Record Key obtained from Currents").env(_(h,"recordKey")),Po=new w.Option("-p, --project-id <project>","the project ID for results reporting obtained from Currents").env(_(h,"projectId")),yo=new w.Option("-t, --tag <tag>","comma-separated tag(s) for recorded runs in Currents").argParser(Y),bo=new w.Option("--remove-title-tags","remove tags from test names in Currents, e.g. `Test name @smoke` becomes `Test name` in the dashboard").default(!1),Ao=new w.Option("--disable-title-tags","disable parsing tags from test title, e.g. `Test name @smoke` would not be tagged with `smoke` in the dashboard").default(!1),xo=new w.Option("--machine-id <string>","unique identifier of the machine running the tests. If not provided, it will be generated automatically. See: https://docs.currents.dev/?q=machineId").env(_(h,"machineId")),Uo=new w.Option("--report-dir <string>","explicit path to the report directory").env(_(h,"reportDir")),wo=new w.Option("--debug","enable debug logs").env(_(h,"debug")).default(!1);var No=p(require("fs"));var So=require("tmp-promise"),Do=async()=>{let{path:e}=await(0,So.file)();return e};var ct=a.extend("cli"),be=class{constructor(t){this.configFilePath=null;this.cliOptions=t,ct("CLI options: %o",this.cliOptions),this.parsedConfig=kr(this.cliOptions),ct("Parsed config from CLI options: %o",this.parsedConfig)}async getConfigFilePath(){if(this.configFilePath)return this.configFilePath;let t=await Do();return No.default.writeFileSync(t,JSON.stringify(this.parsedConfig)),ct("CLI options temp file path: %s",t),this.configFilePath=t,t}};async function vo(e){await M(async t=>{let r=new be(t);Fr(r.parsedConfig);let o=Re();k("Currents config: %o",{...o,recordKey:o?.recordKey?"*****":void 0}),await at()},e)}var ee="upload",hi=e=>`
49
49
 
50
- ${So.default.bold("Examples")}
50
+ ${Bo.default.bold("Examples")}
51
51
 
52
52
  Upload test results to Currents:
53
- ${E(`${e} ${te} --key <record-key> --project-id <id> --ci-build-id <build-id>`)}
53
+ ${E(`${e} ${ee} --key <record-key> --project-id <id> --ci-build-id <build-id>`)}
54
54
 
55
55
  Upload test results to Currents, add tags "tagA", "tagB" to the recorded run:
56
- ${E(`${e} ${te} --key <record-key> --project-id <id> --ci-build-id <build-id> --tag tagA --tag tagB`)}
56
+ ${E(`${e} ${ee} --key <record-key> --project-id <id> --ci-build-id <build-id> --tag tagA --tag tagB`)}
57
57
 
58
58
  Provide a custom path to the reports directory:
59
- ${E(`${e} ${te} --key <record-key> --project-id <id> --ci-build-id <build-id> --report-dir <report-dir>`)}
59
+ ${E(`${e} ${ee} --key <record-key> --project-id <id> --ci-build-id <build-id> --report-dir <report-dir>`)}
60
60
 
61
- `,xo=e=>new wo.Command().name(te).command(te).showHelpAfterError("(add --help for additional information)").allowUnknownOption().description(`Upload test results generated by Currents reporters to https://currents.dev
62
- ${li(e)}`).addOption(Co).addOption(Eo).addOption(ho).addOption(Ro).addOption(_o).addOption(Io).addOption(To).addOption(yo).addOption(Oo).action(r=>Uo(r));var fi=`
61
+ `,Mo=e=>new Lo.Command().name(ee).command(ee).showHelpAfterError("(add --help for additional information)").allowUnknownOption().description(`Upload test results generated by Currents reporters to https://currents.dev
62
+ ${hi(e)}`).addOption(To).addOption(Oo).addOption(Po).addOption(yo).addOption(bo).addOption(Ao).addOption(xo).addOption(wo).addOption(Uo).action(r=>vo(r));var Ii=`
63
63
  ----------------------------------------------------
64
64
  \u{1F4D6} Documentation: https://docs.currents.dev
65
65
  \u{1F919} Support: support@currents.dev
66
66
  ----------------------------------------------------
67
- `,be="currents",No=()=>new Do.Command(be).version(re).description(`Currents CLI ${fi}`).addCommand(xo(be),{isDefault:!0}).addCommand(go(be)).addCommand(mo(be));import("dotenv/config");function gi(){No().parse()}gi();
67
+ `,Ae="currents",Fo=()=>new Go.Command(Ae).version(te).description(`Currents CLI ${Ii}`).addCommand(Mo(Ae),{isDefault:!0}).addCommand(_o(Ae)).addCommand(Eo(Ae));import("dotenv/config");function _i(){Fo().parse()}_i();
68
68
  /*! For license information please see index.js.LEGAL.txt */
69
69
  //# sourceMappingURL=index.js.map
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
- "use strict";var Tt=Object.create;var D=Object.defineProperty;var ht=Object.getOwnPropertyDescriptor;var Ot=Object.getOwnPropertyNames;var Pt=Object.getPrototypeOf,Ut=Object.prototype.hasOwnProperty;var ae=(e,t)=>{for(var r in t)D(e,r,{get:t[r],enumerable:!0})},ce=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Ot(t))!Ut.call(e,o)&&o!==r&&D(e,o,{get:()=>t[o],enumerable:!(n=ht(t,o))||n.enumerable});return e};var u=(e,t,r)=>(r=e!=null?Tt(Pt(e)):{},ce(t||!e||!e.__esModule?D(r,"default",{value:e,enumerable:!0}):r,e)),At=e=>ce(D({},"__esModule",{value:!0}),e);var Or={};ae(Or,{handleCurrentsReport:()=>ft});module.exports=At(Or);var Y=require("debug"),St=u(require("fs-extra")),i=(0,Y.debug)("currents"),Lt=null;function ue(){Y.debug.enable("currents,currents:*")}function me(e){Lt=e}var B={};ae(B,{getNanoid:()=>Nt,userFacingNanoid:()=>q});var $=require("nanoid"),pe="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Nt=(e=16)=>(0,$.customAlphabet)(pe,e)(),q=(0,$.customAlphabet)(pe,12);var m=require("lodash");var y=i.extend("ci"),Dt=(e,...t)=>(0,m.chain)(t).compact().join(e).value(),Bt=(e,t)=>(0,m.set)(e,(0,m.camelCase)(t),process.env[t]),c=e=>(0,m.transform)(e,Bt,{}),yt=()=>process.env.TF_BUILD&&process.env.TF_BUILD_BUILDNUMBER,bt=()=>process.env.TF_BUILD&&process.env.AZURE_HTTP_USER_AGENT,Mt=()=>(0,m.some)(process.env,(e,t)=>/^CODEBUILD_/.test(t)),vt=()=>process.env.bamboo_buildNumber,xt=()=>process.env.CI_NAME&&process.env.CI_NAME==="codeship"&&process.env.CODESHIP,wt=()=>process.env.CI_NAME&&process.env.CI_NAME==="codeship"&&!process.env.CODESHIP,Ht=()=>(0,m.some)(process.env,(e,t)=>/^CONCOURSE_/.test(t)),Ft=()=>process.env.GITLAB_CI||process.env.CI_SERVER_NAME&&/^GitLab/.test(process.env.CI_SERVER_NAME),Gt=()=>process.env.GCP_PROJECT||process.env.GCLOUD_PROJECT||process.env.GOOGLE_CLOUD_PROJECT,kt=()=>process.env.JENKINS_URL||process.env.JENKINS_HOME||process.env.JENKINS_VERSION||process.env.HUDSON_URL||process.env.HUDSON_HOME,jt=()=>process.env.WERCKER||process.env.WERCKER_MAIN_PIPELINE_STARTED,Vt={appveyor:"APPVEYOR",azure:bt,awsCodeBuild:Mt,bamboo:vt,bitbucket:"BITBUCKET_BUILD_NUMBER",buildkite:"BUILDKITE",circle:"CIRCLECI",codeshipBasic:xt,codeshipPro:wt,concourse:Ht,codeFresh:"CF_BUILD_ID",drone:"DRONE",githubActions:"GITHUB_ACTIONS",gitlab:Ft,goCD:"GO_JOB_NAME",googleCloud:Gt,jenkins:kt,semaphore:"SEMAPHORE",shippable:"SHIPPABLE",teamcity:"TEAMCITY_VERSION",teamfoundation:yt,travis:"TRAVIS",wercker:jt,netlify:"NETLIFY",layerci:"LAYERCI"};function Kt(){let{env:e}=process;return(0,m.findKey)(Vt,t=>{if((0,m.isString)(t))return e[t];if((0,m.isFunction)(t))return t()})}var le=()=>({appveyor:c(["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:c(["BUILD_BUILDID","BUILD_BUILDNUMBER","BUILD_CONTAINERID","BUILD_REPOSITORY_URI","SYSTEM_TEAMPROJECT","SYSTEM_COLLECTIONURI"]),awsCodeBuild:c(["CODEBUILD_BUILD_ID","CODEBUILD_BUILD_NUMBER","CODEBUILD_RESOLVED_SOURCE_VERSION","CODEBUILD_SOURCE_REPO_URL","CODEBUILD_SOURCE_VERSION"]),bamboo:c(["bamboo_buildNumber","bamboo_buildResultsUrl","bamboo_planRepository_repositoryUrl","bamboo_buildKey"]),bitbucket:c(["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:c(["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:c(["CIRCLE_JOB","CIRCLE_BUILD_NUM","CIRCLE_BUILD_URL","CIRCLE_PR_NUMBER","CIRCLE_PR_REPONAME","CIRCLE_PR_USERNAME","CIRCLE_COMPARE_URL","CIRCLE_WORKFLOW_ID","CIRCLE_PULL_REQUEST","CIRCLE_REPOSITORY_URL","CI_PULL_REQUEST"]),codeshipBasic:c(["CI_BUILD_ID","CI_REPO_NAME","CI_BUILD_URL","CI_PROJECT_ID","CI_BUILD_NUMBER","CI_PULL_REQUEST"]),codeshipPro:c(["CI_BUILD_ID","CI_REPO_NAME","CI_PROJECT_ID"]),concourse:c(["BUILD_ID","BUILD_NAME","BUILD_JOB_NAME","BUILD_PIPELINE_NAME","BUILD_TEAM_NAME","ATC_EXTERNAL_URL"]),codeFresh:c(["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:c(["DRONE_JOB_NUMBER","DRONE_BUILD_LINK","DRONE_BUILD_NUMBER","DRONE_PULL_REQUEST"]),githubActions:c(["GITHUB_WORKFLOW","GITHUB_ACTION","GITHUB_EVENT_NAME","GITHUB_RUN_ID","GITHUB_RUN_ATTEMPT","GITHUB_REPOSITORY","GH_STRATEGY_JOB_INDEX","GH_STRATEGY_JOB_TOTAL"]),gitlab:c(["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:c(["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:c(["BUILD_ID","PROJECT_ID","REPO_NAME","BRANCH_NAME","TAG_NAME","COMMIT_SHA","SHORT_SHA"]),jenkins:c(["BUILD_ID","BUILD_URL","BUILD_NUMBER","ghprbPullId"]),semaphore:c(["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:c(["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:c(["BUILD_BUILDID","BUILD_BUILDNUMBER","BUILD_CONTAINERID"]),travis:c(["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:c(["BUILD_ID","CONTEXT","URL","DEPLOY_URL","DEPLOY_PRIME_URL","DEPLOY_ID"]),layerci:c(["LAYERCI_JOB_ID","LAYERCI_RUNNER_ID","RETRY_INDEX","LAYERCI_PULL_REQUEST","LAYERCI_REPO_NAME","LAYERCI_REPO_OWNER","LAYERCI_BRANCH","GIT_TAG"])}),Jt=()=>{let{env:e}=process;return{appveyor:{sha:e.APPVEYOR_REPO_COMMIT,branch:e.APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH||e.APPVEYOR_REPO_BRANCH,message:Dt(`
2
- `,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}}},Ee=e=>{let t=de();return t?(0,m.chain)(e()).get(t).value():{}};function Yt(){return(0,m.chain)(le()).omitBy(m.isNull).keys().value()}function $t(e){return e&&Yt().includes(e)}function de(){let e=Kt();return y("detected CI provider name: %s",e),e||null}function qt(){return Ee(le)}function ge(){return Ee(Jt)}function _e(e){let t=qt(),r=de(),n=Qt(e,r);return y("detected CI provider: %s",r),y("detected CI params: %O",t),y("detected CI build ID: %o",n),{params:t,provider:r,ciBuildId:n}}function Qt(e,t){return e?{source:"user",value:e}:$t(t)?{source:"server",value:null}:{source:"random",value:`auto:${q()}`}}var Ie=require("@currents/commit-info"),fe=require("lodash");var b=require("lodash");var Q=i.extend("ci-git");function Re(e){Q("git commit existing info: %O",e);let t=ge();Q("commit info from provider environment variables: %O",t);let r=(0,b.transform)(e,(n,o,a)=>{let p=o||(t?t[a]:null);return n[a]=(0,b.defaultTo)(p,null)});return Q("combined git and environment variables from provider: %O",r),r}var Wt=async()=>{let e=await(0,Ie.commitInfo)();return Re({branch:e.branch,remoteOrigin:e.remote,authorEmail:e.email,authorName:e.author,message:e.message,sha:e.sha,ghaEventData:e.ghaEventData})},Ce=(0,fe.memoize)(Wt);var Te=u(require("getos")),he=require("lodash"),I=require("os"),Oe=require("util"),zt=async()=>{if((0,I.platform)()==="linux")try{let e=await(0,Oe.promisify)(Te.default)();return"dist"in e&&"release"in e?[e.dist,e.release].join(" - "):(0,I.release)()}catch{return(0,I.release)()}return(0,I.release)()},Xt=async()=>{let e=await zt();return{osName:(0,I.platform)(),osVersion:e,osCpus:[],osMemory:{free:(0,I.freemem)(),total:(0,I.totalmem)()}}},Pe=(0,he.memoize)(Xt);var Ue={name:"@currents/cmd",version:"1.1.0-beta.15",main:"./dist/index.js",author:"Currents Software Inc",license:"GPL-3.0-or-later",description:"Currents CLI tools",scripts:{test:"vitest",rm:"rimraf dist",lint:'TIMING=1 eslint "**/*.ts*"',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":"^7.0.2","@types/archiver":"^6.0.2","@types/async-retry":"^1.4.8","@types/debug":"^4.1.12","@types/fs-extra":"^11.0.4","@types/getos":"^3.0.4","@types/lodash":"^4.17.5","@types/node":"^20.14.2","@types/proxy-from-env":"^1.0.4","@types/semver":"^7.5.8","@types/tmp":"^0.2.6","@types/unzipper":"^0.10.10","@types/uuid":"^9.0.8",jest:"^29.7.0",rimraf:"^5.0.7",tsup:"^8.1.0",typescript:"^5.4.5",vitest:"^1.3.0"},dependencies:{"@commander-js/extra-typings":"^11.1.0","@currents/commit-info":"1.0.1-beta.0",archiver:"^7.0.1","async-retry":"^1.3.3",axios:"^1.7.2","axios-retry":"^4.4.0",commander:"^11.1.0",debug:"^4.3.5",dotenv:"^16.0.3",execa:"^8.0.1","fs-extra":"^11.2.0",getos:"^3.2.1","jest-cli":"^29.7.0","jest-config":"^29.7.0","https-proxy-agent":"^7.0.4",lodash:"^4.17.21",nanoid:"^3.3.4","pretty-ms":"^7.0.1","proxy-from-env":"^1.1.0",semver:"^7.6.0","source-map-support":"^0.5.21",tmp:"^0.2.3","tmp-promise":"^3.0.3","ts-pattern":"^5.2.0",unzipper:"^0.12.3"},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 Ae=Ue.version;var er=[];function W(e){er.push(e)}var R=u(require("chalk")),L=u(require("util"));var Se=[],Le=[];var Ne=(...e)=>{let t=L.default.format(...e);W(t),console.log(t)},tr=(...e)=>{let t=L.default.format(...e);W(t),console.error(t)},z=Ne,E=(...e)=>{let t=L.default.format(...e);return Le.push(t),i("WARNING: ",t),Ne(R.default.bgYellow.black(" WARNING "),t)};var d=(...e)=>{let t=L.default.format(...e);return Se.push(t),i("ERROR: ",t),tr(R.default.bgRed.white(" ERROR "),t)};var M=(e=2)=>console.log(Array(e).fill("").join(`
1
+ "use strict";var Tt=Object.create;var D=Object.defineProperty;var ht=Object.getOwnPropertyDescriptor;var Ot=Object.getOwnPropertyNames;var Pt=Object.getPrototypeOf,Ut=Object.prototype.hasOwnProperty;var ae=(e,t)=>{for(var r in t)D(e,r,{get:t[r],enumerable:!0})},ce=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Ot(t))!Ut.call(e,o)&&o!==r&&D(e,o,{get:()=>t[o],enumerable:!(n=ht(t,o))||n.enumerable});return e};var u=(e,t,r)=>(r=e!=null?Tt(Pt(e)):{},ce(t||!e||!e.__esModule?D(r,"default",{value:e,enumerable:!0}):r,e)),At=e=>ce(D({},"__esModule",{value:!0}),e);var Or={};ae(Or,{handleCurrentsReport:()=>ft});module.exports=At(Or);var Y=require("debug"),St=u(require("fs-extra")),i=(0,Y.debug)("currents"),Lt=null;function ue(){Y.debug.enable("currents,currents:*")}function me(e){Lt=e}var B={};ae(B,{getNanoid:()=>Nt,userFacingNanoid:()=>q});var $=require("nanoid"),pe="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Nt=(e=16)=>(0,$.customAlphabet)(pe,e)(),q=(0,$.customAlphabet)(pe,12);var m=require("lodash");var y=i.extend("ci"),Dt=(e,...t)=>(0,m.chain)(t).compact().join(e).value(),Bt=(e,t)=>(0,m.set)(e,(0,m.camelCase)(t),process.env[t]),c=e=>(0,m.transform)(e,Bt,{}),yt=()=>process.env.TF_BUILD&&process.env.TF_BUILD_BUILDNUMBER,bt=()=>process.env.TF_BUILD&&process.env.AZURE_HTTP_USER_AGENT,Mt=()=>(0,m.some)(process.env,(e,t)=>/^CODEBUILD_/.test(t)),vt=()=>process.env.bamboo_buildNumber,xt=()=>process.env.CI_NAME&&process.env.CI_NAME==="codeship"&&process.env.CODESHIP,wt=()=>process.env.CI_NAME&&process.env.CI_NAME==="codeship"&&!process.env.CODESHIP,Ht=()=>(0,m.some)(process.env,(e,t)=>/^CONCOURSE_/.test(t)),Ft=()=>process.env.GITLAB_CI||process.env.CI_SERVER_NAME&&/^GitLab/.test(process.env.CI_SERVER_NAME),Gt=()=>process.env.GCP_PROJECT||process.env.GCLOUD_PROJECT||process.env.GOOGLE_CLOUD_PROJECT,kt=()=>process.env.JENKINS_URL||process.env.JENKINS_HOME||process.env.JENKINS_VERSION||process.env.HUDSON_URL||process.env.HUDSON_HOME,jt=()=>process.env.WERCKER||process.env.WERCKER_MAIN_PIPELINE_STARTED,Vt={appveyor:"APPVEYOR",azure:bt,awsCodeBuild:Mt,bamboo:vt,bitbucket:"BITBUCKET_BUILD_NUMBER",buildkite:"BUILDKITE",circle:"CIRCLECI",codeshipBasic:xt,codeshipPro:wt,concourse:Ht,codeFresh:"CF_BUILD_ID",drone:"DRONE",githubActions:"GITHUB_ACTIONS",gitlab:Ft,goCD:"GO_JOB_NAME",googleCloud:Gt,jenkins:kt,semaphore:"SEMAPHORE",shippable:"SHIPPABLE",teamcity:"TEAMCITY_VERSION",teamfoundation:yt,travis:"TRAVIS",wercker:jt,netlify:"NETLIFY",layerci:"LAYERCI"};function Kt(){let{env:e}=process;return(0,m.findKey)(Vt,t=>{if((0,m.isString)(t))return e[t];if((0,m.isFunction)(t))return t()})}var le=()=>({appveyor:c(["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:c(["BUILD_BUILDID","BUILD_BUILDNUMBER","BUILD_CONTAINERID","BUILD_REPOSITORY_URI","SYSTEM_TEAMPROJECT","SYSTEM_COLLECTIONURI"]),awsCodeBuild:c(["CODEBUILD_BUILD_ID","CODEBUILD_BUILD_NUMBER","CODEBUILD_RESOLVED_SOURCE_VERSION","CODEBUILD_SOURCE_REPO_URL","CODEBUILD_SOURCE_VERSION"]),bamboo:c(["bamboo_buildNumber","bamboo_buildResultsUrl","bamboo_planRepository_repositoryUrl","bamboo_buildKey"]),bitbucket:c(["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:c(["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:c(["CIRCLE_JOB","CIRCLE_BUILD_NUM","CIRCLE_BUILD_URL","CIRCLE_PR_NUMBER","CIRCLE_PR_REPONAME","CIRCLE_PR_USERNAME","CIRCLE_COMPARE_URL","CIRCLE_WORKFLOW_ID","CIRCLE_PULL_REQUEST","CIRCLE_REPOSITORY_URL","CI_PULL_REQUEST"]),codeshipBasic:c(["CI_BUILD_ID","CI_REPO_NAME","CI_BUILD_URL","CI_PROJECT_ID","CI_BUILD_NUMBER","CI_PULL_REQUEST"]),codeshipPro:c(["CI_BUILD_ID","CI_REPO_NAME","CI_PROJECT_ID"]),concourse:c(["BUILD_ID","BUILD_NAME","BUILD_JOB_NAME","BUILD_PIPELINE_NAME","BUILD_TEAM_NAME","ATC_EXTERNAL_URL"]),codeFresh:c(["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:c(["DRONE_JOB_NUMBER","DRONE_BUILD_LINK","DRONE_BUILD_NUMBER","DRONE_PULL_REQUEST"]),githubActions:c(["GITHUB_WORKFLOW","GITHUB_ACTION","GITHUB_EVENT_NAME","GITHUB_RUN_ID","GITHUB_RUN_ATTEMPT","GITHUB_REPOSITORY"]),gitlab:c(["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:c(["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:c(["BUILD_ID","PROJECT_ID","REPO_NAME","BRANCH_NAME","TAG_NAME","COMMIT_SHA","SHORT_SHA"]),jenkins:c(["BUILD_ID","BUILD_URL","BUILD_NUMBER","ghprbPullId"]),semaphore:c(["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:c(["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:c(["BUILD_BUILDID","BUILD_BUILDNUMBER","BUILD_CONTAINERID"]),travis:c(["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:c(["BUILD_ID","CONTEXT","URL","DEPLOY_URL","DEPLOY_PRIME_URL","DEPLOY_ID"]),layerci:c(["LAYERCI_JOB_ID","LAYERCI_RUNNER_ID","RETRY_INDEX","LAYERCI_PULL_REQUEST","LAYERCI_REPO_NAME","LAYERCI_REPO_OWNER","LAYERCI_BRANCH","GIT_TAG"])}),Jt=()=>{let{env:e}=process;return{appveyor:{sha:e.APPVEYOR_REPO_COMMIT,branch:e.APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH||e.APPVEYOR_REPO_BRANCH,message:Dt(`
2
+ `,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}}},Ee=e=>{let t=de();return t?(0,m.chain)(e()).get(t).value():{}};function Yt(){return(0,m.chain)(le()).omitBy(m.isNull).keys().value()}function $t(e){return e&&Yt().includes(e)}function de(){let e=Kt();return y("detected CI provider name: %s",e),e||null}function qt(){return Ee(le)}function ge(){return Ee(Jt)}function _e(e){let t=qt(),r=de(),n=Qt(e,r);return y("detected CI provider: %s",r),y("detected CI params: %O",t),y("detected CI build ID: %o",n),{params:t,provider:r,ciBuildId:n}}function Qt(e,t){return e?{source:"user",value:e}:$t(t)?{source:"server",value:null}:{source:"random",value:`auto:${q()}`}}var Ie=require("@currents/commit-info"),fe=require("lodash");var b=require("lodash");var Q=i.extend("ci-git");function Re(e){Q("git commit existing info: %O",e);let t=ge();Q("commit info from provider environment variables: %O",t);let r=(0,b.transform)(e,(n,o,a)=>{let p=o||(t?t[a]:null);return n[a]=(0,b.defaultTo)(p,null)});return Q("combined git and environment variables from provider: %O",r),r}var Wt=async()=>{let e=await(0,Ie.commitInfo)();return Re({branch:e.branch,remoteOrigin:e.remote,authorEmail:e.email,authorName:e.author,message:e.message,sha:e.sha,ghaEventData:e.ghaEventData})},Ce=(0,fe.memoize)(Wt);var Te=u(require("getos")),he=require("lodash"),I=require("os"),Oe=require("util"),zt=async()=>{if((0,I.platform)()==="linux")try{let e=await(0,Oe.promisify)(Te.default)();return"dist"in e&&"release"in e?[e.dist,e.release].join(" - "):(0,I.release)()}catch{return(0,I.release)()}return(0,I.release)()},Xt=async()=>{let e=await zt();return{osName:(0,I.platform)(),osVersion:e,osCpus:[],osMemory:{free:(0,I.freemem)(),total:(0,I.totalmem)()}}},Pe=(0,he.memoize)(Xt);var Ue={name:"@currents/cmd",version:"1.1.0-beta.17",main:"./dist/index.js",author:"Currents Software Inc",license:"GPL-3.0-or-later",description:"Currents CLI tools",scripts:{test:"vitest",rm:"rimraf dist",lint:'TIMING=1 eslint "**/*.ts*"',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":"^7.0.2","@types/archiver":"^6.0.2","@types/async-retry":"^1.4.8","@types/debug":"^4.1.12","@types/fs-extra":"^11.0.4","@types/getos":"^3.0.4","@types/lodash":"^4.17.5","@types/node":"^20.14.2","@types/proxy-from-env":"^1.0.4","@types/semver":"^7.5.8","@types/tmp":"^0.2.6","@types/unzipper":"^0.10.10","@types/uuid":"^9.0.8",jest:"^29.7.0",rimraf:"^5.0.7",tsup:"^8.1.0",typescript:"^5.4.5",vitest:"^1.3.0"},dependencies:{"@commander-js/extra-typings":"^11.1.0","@currents/commit-info":"1.0.1-beta.0",archiver:"^7.0.1","async-retry":"^1.3.3",axios:"^1.7.2","axios-retry":"^4.4.0",commander:"^11.1.0",debug:"^4.3.5",dotenv:"^16.0.3",execa:"^8.0.1","fs-extra":"^11.2.0",getos:"^3.2.1","jest-cli":"^29.7.0","jest-config":"^29.7.0","https-proxy-agent":"^7.0.4",lodash:"^4.17.21",nanoid:"^3.3.4","pretty-ms":"^7.0.1","proxy-from-env":"^1.1.0",semver:"^7.6.0","source-map-support":"^0.5.21",tmp:"^0.2.3","tmp-promise":"^3.0.3","ts-pattern":"^5.2.0",unzipper:"^0.12.3"},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 Ae=Ue.version;var er=[];function W(e){er.push(e)}var R=u(require("chalk")),L=u(require("util"));var Se=[],Le=[];var Ne=(...e)=>{let t=L.default.format(...e);W(t),console.log(t)},tr=(...e)=>{let t=L.default.format(...e);W(t),console.error(t)},z=Ne,E=(...e)=>{let t=L.default.format(...e);return Le.push(t),i("WARNING: ",t),Ne(R.default.bgYellow.black(" WARNING "),t)};var d=(...e)=>{let t=L.default.format(...e);return Se.push(t),i("ERROR: ",t),tr(R.default.bgRed.white(" ERROR "),t)};var M=(e=2)=>console.log(Array(e).fill("").join(`
3
3
  `)),oo=R.default.cyan,no=R.default.blueBright,so=R.default.red,io=R.default.yellow,ao=R.default.green,co=R.default.gray,uo=R.default.white,mo=R.default.black,po=R.default.magenta,v=R.default.dim,lo=R.default.bold;var X=u(require("fs-extra")),or=require("path");async function P(e){try{return await X.default.readJson(e)}catch(t){throw d("Error while reading JSON file: %s",e,t),d}}async function Z(e,t){try{return await X.default.writeFile(e,t,"utf8"),e}catch(r){throw d(`Error writing file at ${e}:`,r),r}}var Rt=require("lodash"),V=u(require("path")),It=u(require("semver"));var $e=u(require("lodash"));var we=u(require("axios")),He=u(require("axios-retry")),Fe=u(require("lodash"));var ee=()=>process.env.CURRENTS_API_URL??"https://cy.currents.dev",De=()=>process.env.CURRENTS_REST_API_URL??"https://api.currents.dev",Be=()=>3e4;var te=require("axios"),re=u(require("pretty-ms"));var ye=i.extend("http"),x=e=>[3*1e3,15*1e3,30*1e3][e-1],be=e=>(ye("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,te.isAxiosError)(e)}),"code"in e&&e.code&&["ECONNABORTED","ECONNREFUSED","ECONNRESET","ETIMEDOUT","ENETRESET"].includes(e.code)?!0:(0,te.isAxiosError)(e)?[429,502,503,504].includes(e.response?.status??0):!1),w=()=>3;function Me(e,t,r){ye("Network request '%s' failed: '%s'. Next attempt is in %s (%d/%d).",`${r.method?.toUpperCase()} ${r.url}`,t.message,(0,re.default)(x(e)),e,w()),E("Network request '%s' failed: '%s'. Next attempt is in %s (%d/%d).",`${r.method?.toUpperCase()} ${r.url}`,t.message,(0,re.default)(x(e)),e,w())}var ve=i.extend("http");var oe={api:null,restApi:null};function nr(e){let t=we.default.create({baseURL:e==="api"?ee():De(),timeout:Be(),transitional:{clarifyTimeoutError:!0}});return t.interceptors.request.use(r=>{let n=r["axios-retry"]?.retryCount??0;r.headers.get("Content-Type")||r.headers.set("Content-Type","application/json");let o={...Fe.default.pick(r,"method","url","headers"),data:Buffer.isBuffer(r.data)?"buffer":r.data};return n?ve("network request retry: %o",xe({...o,isRetry:!0})):ve("network request: %o",xe(o)),r}),(0,He.default)(t,{retries:w(),retryCondition:be,retryDelay:x,shouldResetTimeout:!0,onRetry:Me}),t}function Ge(e){return oe[e]===null&&(oe[e]=nr(e)),oe[e]}function xe(e){return{method:e.method,baseUrl:ee(),url:e.url,data:e.isRetry?"<retry>":sr(e.data),headers:{...e.headers,"x-currents-key":"***"}}}function sr(e){return e?.results?.raw?{...e,results:{...e.results,raw:"***"}}:e}var Ve=require("axios"),Ke=u(require("lodash")),g=require("ts-pattern");function Je(e){(0,g.match)(e).when(Ve.isAxiosError,ir).otherwise(()=>{E("Unexpected error while sending network request: %s",e)})}function ir(e){return(0,g.match)(e).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:g.P.not(g.P.nullish)},t=>{ar(t,{status:t.response.status,data:t.response.data})}).otherwise(t=>{E(`[currents] Unexpected network error: %s
4
4
  %O`,e.message,{method:e.response?.config.method,url:e.response?.config.url,status:e.response?.status,payload:e.response?.config.data})})}function ar(e,{status:t,data:r}){(0,g.match)(t).with(401,()=>{E(`[currents] ${e.response?.config.method} ${e.response?.config.url}} - 401 Unauthorized Request from cloud service`)}).with(400,()=>{E(`[currents] ${e.response?.config.method} ${e.response?.config.url} - 400 Bad Request from cloud service:
5
5
  %o`,r)}).with(429,()=>{E(`[currents] ${e.response?.config.method} ${e.response?.config.url} - 429 Too Many Requests from cloud service`)}).with(422,()=>{cr(e,r)}).otherwise(()=>{E(`[currents] Unexpected network response: %s
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@currents/cmd",
3
- "version": "1.1.0-beta.15",
3
+ "version": "1.1.0-beta.17",
4
4
  "main": "./dist/index.js",
5
5
  "author": "Currents Software Inc",
6
6
  "license": "GPL-3.0-or-later",